diff --git a/Box/Main.cpp b/Box/Main.cpp
index 1a32cad49cf3eb41485e1c21738e7857a5a43a13..7362e783ec6296b89e108d26ed6ecb9707e8b192 100644
--- a/Box/Main.cpp
+++ b/Box/Main.cpp
@@ -1,13 +1,24 @@
-// $Id: Main.cpp,v 1.15 2002-02-13 09:17:48 stainier Exp $
-
-#include <signal.h>
-#include "ParUtil.h"
+// $Id: Main.cpp,v 1.16 2002-05-18 07:17:59 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 #include <signal.h>
 #if !defined(WIN32) || defined(__CYGWIN__)
-#ifdef __APPLE__
 #include <sys/time.h>
-#endif /* __APPLE__ */
 #include <sys/resource.h>
 #ifdef __APPLE__
 #define   RUSAGE_SELF      0
@@ -15,6 +26,7 @@
 #endif /* __APPLE__ */
 #endif
 
+#include "ParUtil.h"
 #include "PluginManager.h"
 #include "Gmsh.h"
 #include "GmshVersion.h"
@@ -28,31 +40,30 @@
 #include "OpenFile.h"
 #include "GetOptions.h"
 #include "MinMax.h"
-#include "Static.h"
 
-/* dummy defs for link purposes */
+char        yyname[256];
+int         yyerrorstate;
+Context_T   CTX ;
+Mesh        M, *THEM=NULL, *LOCAL=NULL;
+
+// Dummy definitions for link purposes. These should be removed as
+// soon as the library structure will be cleaned.
 
 void AddViewInUI(int, char *, int){}
 void draw_polygon_2d (double, double, double, int, double *, double *, double *){}
 void set_r(int, double){}
-void Draw(void){}
-void DrawUI(void){}
-void Replot(void){}
 void CreateOutputFile(char *, int){}
 
-/* ------------------------------------------------------------------------ */
-/*  I n f o                                                                 */
-/* ------------------------------------------------------------------------ */
+// Print some help/info messages
 
 void Info (int level, char *arg0){
   switch(level){
   case 0 :
-    if(ParUtil::Instance()->master())
-      {
-	fprintf(stderr, "%s\n", gmsh_progname);
-	fprintf(stderr, "%s\n", gmsh_copyright);
-	Print_Usage(arg0);
-      }
+    if(ParUtil::Instance()->master()){
+      fprintf(stderr, "%s\n", gmsh_progname);
+      fprintf(stderr, "%s\n", gmsh_copyright);
+      Print_Usage(arg0);
+    }
     ParUtil::Instance()->Exit();
   case 1:
     if(ParUtil::Instance()->master())
@@ -60,26 +71,23 @@ void Info (int level, char *arg0){
 	      GMSH_PATCH_VERSION);
     ParUtil::Instance()->Exit();
   case 2:
-    if(ParUtil::Instance()->master())
-      {
-	fprintf(stderr, "%s%d.%d.%d\n", gmsh_version, GMSH_MAJOR_VERSION, 
-		GMSH_MINOR_VERSION, GMSH_PATCH_VERSION);
-	fprintf(stderr, "%s\n", gmsh_os);
-	fprintf(stderr, "%s\n", gmsh_date);
-	fprintf(stderr, "%s\n", gmsh_host);
-	fprintf(stderr, "%s\n", gmsh_packager);
-	fprintf(stderr, "%s\n", gmsh_url);
-	fprintf(stderr, "%s\n", gmsh_email);
-      }
+    if(ParUtil::Instance()->master()){
+      fprintf(stderr, "%s%d.%d.%d\n", gmsh_version, GMSH_MAJOR_VERSION, 
+	      GMSH_MINOR_VERSION, GMSH_PATCH_VERSION);
+      fprintf(stderr, "%s\n", gmsh_os);
+      fprintf(stderr, "%s\n", gmsh_date);
+      fprintf(stderr, "%s\n", gmsh_host);
+      fprintf(stderr, "%s\n", gmsh_packager);
+      fprintf(stderr, "%s\n", gmsh_url);
+      fprintf(stderr, "%s\n", gmsh_email);
+    }
     ParUtil::Instance()->Exit();
   default :
     break;
   }
 }
 
-/* ------------------------------------------------------------------------ */
-/*  m a i n                                                                 */
-/* ------------------------------------------------------------------------ */
+// Main routine for the batch (black box) version
 
 int main(int argc, char *argv[]){
   int     i, nbf;
@@ -141,10 +149,7 @@ int main(int argc, char *argv[]){
 }
 
 
-/* ------------------------------------------------------------------------ */
-/*  S i g n a l                                                             */
-/* ------------------------------------------------------------------------ */
-
+// Handle signals. We should not use Msg functions in these...
 
 void Signal (int sig_num){
 
@@ -156,10 +161,7 @@ void Signal (int sig_num){
   }
 }
 
-
-/* ------------------------------------------------------------------------ */
-/*  M s g                                                                   */
-/* ------------------------------------------------------------------------ */
+// General purpose message routine
 
 void Msg(int level, char *fmt, ...){
 
@@ -245,9 +247,7 @@ void Msg(int level, char *fmt, ...){
 
 }
 
-/* ------------------------------------------------------------------------ */
-/*  C p u                                                                   */
-/* ------------------------------------------------------------------------ */
+// CPU time computation
 
 void GetResources(long *s, long *us, long *mem){
 #if !defined(WIN32) || defined(__CYGWIN__)
@@ -268,13 +268,3 @@ double Cpu(void){
   GetResources(&s, &us, &mem);
   return (double)s + (double)us/1.e6 ;
 }
-
-/* ------------------------------------------------------------------------ */
-/*  P r o g r e s s                                                         */
-/* ------------------------------------------------------------------------ */
-
-void Progress(int i){
-}
-
-void   AddALineInTheEditGeometryForm (char* line){
-};
diff --git a/Box/Makefile b/Box/Makefile
index f9e6bcee61ecf70ff3fc1f8936ab7d101824e2d0..e565d1b580595aae317b127b4acd7f42b5c60b15 100644
--- a/Box/Makefile
+++ b/Box/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.15 2002-05-18 00:55:14 geuzaine Exp $
+# $Id: Makefile,v 1.16 2002-05-18 07:17:59 geuzaine Exp $
 #
 # Makefile for "libGmshBox.a"
 #
@@ -10,8 +10,8 @@ AR       = ar ruvs
 RM       = rm
 RANLIB   = ranlib
 LIB      = ../lib/libGmshBox.a
-INCLUDE  = -I../Common -I../DataStr -I../Geo\
-           -I../Graphics -I../Mesh -I../Parser -I../Fltk -I../Plugin -I../Parallel
+INCLUDE  = -I../Common -I../DataStr -I../Geo -I../Graphics -I../Mesh -I../Numeric\
+           -I../Parser -I../Fltk -I../Plugin -I../Parallel
 
 OPT_FLAGS     = -g
 OS_FLAGS      = 
@@ -49,12 +49,11 @@ depend:
 
 # DO NOT DELETE THIS LINE
 Main.o: Main.cpp ../Parallel/ParUtil.h ../Plugin/PluginManager.h \
- ../Common/Gmsh.h ../Common/Message.h ../DataStr/Malloc.h \
- ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h \
- ../DataStr/Tools.h ../Common/GmshVersion.h ../Common/Numeric.h \
- ../Geo/Geo.h ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h \
- ../Mesh/Edge.h ../Geo/ExtrudeParams.h ../Mesh/Metric.h \
- ../Mesh/Matrix.h ../Common/Views.h ../Common/ColorTable.h \
- ../Parser/Parser.h ../Common/Context.h ../Common/Options.h \
- ../Parser/OpenFile.h ../Common/GetOptions.h ../Geo/MinMax.h \
- ../Common/Static.h
+  ../Common/Gmsh.h ../Common/Message.h ../DataStr/Malloc.h \
+  ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \
+  ../Common/GmshVersion.h ../Numeric/Numeric.h ../Geo/Geo.h \
+  ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
+  ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Mesh/Matrix.h \
+  ../Common/Views.h ../Common/ColorTable.h ../Parser/Parser.h \
+  ../Common/Context.h ../Common/Options.h ../Parser/OpenFile.h \
+  ../Common/GetOptions.h ../Geo/MinMax.h
diff --git a/Common/ColorTable.cpp b/Common/ColorTable.cpp
index 437066e00b7971c541d5f41ffcc8a30d8393f2f0..c5f40f672f096ff8195c440e73773cc4ae388a1f 100644
--- a/Common/ColorTable.cpp
+++ b/Common/ColorTable.cpp
@@ -1,4 +1,24 @@
-// $Id: ColorTable.cpp,v 1.8 2002-02-14 17:22:06 geuzaine Exp $
+// $Id: ColorTable.cpp,v 1.9 2002-05-18 07:17:59 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+// These routines are loosely based on code from the Vis5d program for
+// visualizing five dimensional gridded data sets Copyright (C) 1990 -
+// 1995 Bill Hibbard, Brian Paul, Dave Santek, and Andre Battaiola.
 
 #include "Gmsh.h"
 #include "ColorTable.h"
@@ -57,13 +77,13 @@ void ColorTable_Recompute(GmshColorTable *ct, int rgb_flag, int alpha_flag){
     if (rgb_flag) {
 
       switch(ct->ipar[COLORTABLE_NUMBER]){
-      case 1 : /* vis5d */
+      case 1 : // vis5d
         t = (curve+1.4) * (s - (1.+bias)/2.);
         r = (int)( 128.0 + 127.0 * atan( 7.0*t ) / 1.57  );
         g = (int)( 128.0 + 127.0 * (2 * exp(-7*t*t) - 1) );
         b = (int)( 128.0 + 127.0 * atan( -7.0*t ) / 1.57 );
         break;
-      case 2: /* samcef */
+      case 2: // samcef
         if (s-bias<=0.00){ 
           r = 0 ; g = 0 ; b = 255 ;
         }
@@ -80,7 +100,7 @@ void ColorTable_Recompute(GmshColorTable *ct, int rgb_flag, int alpha_flag){
           r = 255 ; g = 0 ; b = 0 ;
         }
         break;
-      case 3: /* rainbow (matlab, etc.) */
+      case 3: // rainbow (matlab, etc.)
         if (s-bias<=0.00) {
           r = 0 ; g = 0 ; b = 255 ; 
         }
@@ -105,7 +125,7 @@ void ColorTable_Recompute(GmshColorTable *ct, int rgb_flag, int alpha_flag){
           r = 255 ; g = 0 ; b = 0 ; 
         }
         break;
-      case 4: /* darkblue-red-yellow-white */
+      case 4: // darkblue-red-yellow-white
 #define myfct(a,b,c,d) ((a)+\
                         (b)*(s-bias)+\
                         (c)*(s-bias)*(s-bias)+\
@@ -118,15 +138,15 @@ void ColorTable_Recompute(GmshColorTable *ct, int rgb_flag, int alpha_flag){
 #undef myfct
 #undef clamp
         break;
-      case 5: /* grayscale */
+      case 5: // grayscale
         if      (s-bias<=0.00){ r = g = b = 0 ; }
         else if (s-bias<=1.00){ r = g = b = (int)(255*(s-bias)); }
         else                  { r = g = b = 255 ; }
         break;
-      case 6: /* monochrome */
+      case 6: // monochrome
         r = g = b = 0 ;
         break;
-      case 7: /* rainbow modified to add black and white , from EMC2000 */
+      case 7: // rainbow modified to add black and white , from EMC2000
         if (s-bias<=0.00) {
           r = 0 ; g = 0 ; b = 0 ; 
         }
@@ -154,7 +174,7 @@ void ColorTable_Recompute(GmshColorTable *ct, int rgb_flag, int alpha_flag){
           r = 255 ; g = 255 ; b = 255 ; 
         }
         break;
-      case 8:  /* grayscale, without white */
+      case 8:  // grayscale, without white
       default:
         if      (s-bias<=0.00){ r = g = b = 0 ; }
         else if (s-bias<=1.00){ r = g = b = (int)(220*(s-bias)); }
@@ -166,7 +186,7 @@ void ColorTable_Recompute(GmshColorTable *ct, int rgb_flag, int alpha_flag){
         if(ct->fpar[COLORTABLE_BETA] > 0.0)
           gamma = 1. - ct->fpar[COLORTABLE_BETA];
 	else 
-	  gamma = 1./(1.001 + ct->fpar[COLORTABLE_BETA]);//beta is thresholded to [-1,1]
+	  gamma = 1./(1.001 + ct->fpar[COLORTABLE_BETA]); // beta is thresholded to [-1,1]
         r = (int)( 255. * pow((double)r/255.,gamma) );
         g = (int)( 255. * pow((double)g/255.,gamma) );
         b = (int)( 255. * pow((double)b/255.,gamma) );
diff --git a/Common/ColorTable.h b/Common/ColorTable.h
index 99ec36fe51ab27d8f105946b7065f69171fe01c8..648481078cfd1ab07f0ca062040be5bc2973d368 100644
--- a/Common/ColorTable.h
+++ b/Common/ColorTable.h
@@ -1,6 +1,22 @@
 #ifndef _COLORTABLE_H_
 #define _COLORTABLE_H_
 
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
 #define COLORTABLE_NBMAX_PARAM 10
 #define COLORTABLE_NBMAX_COLOR 255
 
@@ -12,28 +28,28 @@ typedef struct{
 }GmshColorTable;
 
 
-/* COLORTABLE_MODE */
+// COLORTABLE_MODE
 
 #define COLORTABLE_RGB  1
 #define COLORTABLE_HSV  2
 
 
-/* integrer parameters indices */
+// integrer parameters indices
 
-#define COLORTABLE_NUMBER    0  /* predefined curve index */
-#define COLORTABLE_CHANGED   1  /* did the colortable change ? */
-#define COLORTABLE_INVERT    2  /* invert (rbg<->255-rgb) */
-#define COLORTABLE_SWAP      3  /* swap (min<->max) */
-#define COLORTABLE_ROTATE    4  /* rotate */
-#define COLORTABLE_MODE      5  /* mode (rgb, hsv) */
+#define COLORTABLE_NUMBER    0  // predefined curve index
+#define COLORTABLE_CHANGED   1  // did the colortable change ?
+#define COLORTABLE_INVERT    2  // invert (rbg<->255-rgb)
+#define COLORTABLE_SWAP      3  // swap (min<->max)
+#define COLORTABLE_ROTATE    4  // rotate
+#define COLORTABLE_MODE      5  // mode (rgb, hsv)
 
-/* float parameters indices */
+// float parameters indices
 
-#define COLORTABLE_CURVE     0  /* curvature */
-#define COLORTABLE_BIAS      1  /* offset */
-#define COLORTABLE_ALPHAPOW  2  /* alpha channel power */
-#define COLORTABLE_ALPHAVAL  3  /* alpha channel value */
-#define COLORTABLE_BETA      4  /* beta coeff for brighten */
+#define COLORTABLE_CURVE     0  // curvature */
+#define COLORTABLE_BIAS      1  // offset */
+#define COLORTABLE_ALPHAPOW  2  // alpha channel power
+#define COLORTABLE_ALPHAVAL  3  // alpha channel value
+#define COLORTABLE_BETA      4  // beta coeff for brighten
 
 void ColorTable_InitParam (int number, GmshColorTable * ct, int rgb_flag, int alpha_flag);
 void ColorTable_Recompute (GmshColorTable * ct, int rgb_flag, int alpha_flag);
diff --git a/Common/Colors.h b/Common/Colors.h
index 50266ba6bdb66973a0613e23554e170113597f0f..596929f348dcdd274959679e237736e9b764d4be 100644
--- a/Common/Colors.h
+++ b/Common/Colors.h
@@ -1,6 +1,22 @@
 #ifndef _COLORS_H_
 #define _COLORS_H_
 
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
 #include "Context.h"
 
 StringX4Int ColorString[] = {
diff --git a/Common/Context.cpp b/Common/Context.cpp
index 7abf5f45d4578c5f8877be1cea733dde2bef0707..5a78b962caeeb9a4cb06e4df7e3bcb4055785f24 100644
--- a/Common/Context.cpp
+++ b/Common/Context.cpp
@@ -1,4 +1,20 @@
-// $Id: Context.cpp,v 1.41 2001-10-29 08:52:19 geuzaine Exp $
+// $Id: Context.cpp,v 1.42 2002-05-18 07:17:59 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 #include "Gmsh.h"
 #include "Numeric.h"
@@ -8,10 +24,10 @@
 #include "Context.h"
 #include "Options.h"
 #include "DefaultOptions.h"
-#include "trackball.c"
+#include "Trackball.h"
 
 /*
-  3 rotations successives autour de x, y et z:
+  3 successive rotations along x, y and z:
 
            c(y)c(z)    s(x)s(y)c(z)+c(x)s(z)   -c(x)s(y)c(z)+s(x)s(z) 
   t[][] = -c(y)s(z)   -s(x)s(y)s(z)+c(x)c(z)    c(x)s(y)s(z)+s(x)c(z)
@@ -32,14 +48,17 @@
 
 */
 
-void Context_T::buildRotmatrix(void)
-{
+void Context_T::buildRotmatrix(void){
   double x, y, z;
   extern void set_r(int i, double val);
 
   if(useTrackball){
     build_rotmatrix(rot, quaternion);
-    // get the position angles
+    // We should reconstruct the Euler angles from the rotation
+    // matrix. I'm too lazy to do it :-(
+    set_r(0, 0.);
+    set_r(1, 0.);
+    set_r(2, 0.);
     /*
       double x=0., y=0., z=0.
 
@@ -71,12 +90,6 @@ void Context_T::buildRotmatrix(void)
     set_r(1, r1 * 180./(Pi));  // lazyyyyyy
     set_r(2, r2);
     */
-
-    // until we can compute this correctly
-    set_r(0, 0.);
-    set_r(1, 0.);
-    set_r(2, 0.);
-
   }
   else{
     x = r[0] * Pi / 180.;
@@ -102,25 +115,17 @@ void Context_T::buildRotmatrix(void)
     rot[3][1] = 0.0 ;
     rot[3][2] = 0.0 ;
     rot[3][3] = 1.0 ;
-    /*
-    printf("x=%g y=%g z=%g\n", r[0], r[1], r[2]);
-    printf("[%g %g %g]\n", rot[0][0], rot[0][1], rot[0][2]);
-    printf("[%g %g %g]\n", rot[1][0], rot[1][1], rot[1][2]);
-    printf("[%g %g %g]\n", rot[2][0], rot[2][1], rot[2][2]);
-    */
   }
 
 }
 
-void Context_T::addQuaternion (float p1x, float p1y, float p2x, float p2y)
-{
+void Context_T::addQuaternion (float p1x, float p1y, float p2x, float p2y){
   float quat[4];
   trackball(quat,p1x,p1y,p2x,p2y);
   add_quats(quat, quaternion, quaternion);  
 }
 
-void Context_T::setQuaternion (float q0, float q1, float q2, float q3)
-{
+void Context_T::setQuaternion (float q0, float q1, float q2, float q3){
   quaternion[0] = q0;
   quaternion[1] = q1;
   quaternion[2] = q2;
diff --git a/Common/Context.h b/Common/Context.h
index fd6ddabd3abe4eeddb6c9e05efeed70bc9d9b5f2..c19703193f4a53a06f098da136f8157cceb8f5ed 100644
--- a/Common/Context.h
+++ b/Common/Context.h
@@ -1,6 +1,22 @@
 #ifndef _CONTEXT_H_
 #define _CONTEXT_H_
 
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
 #include "List.h"
 
 // How RGBA values are packed and unpacked into/from a 4-byte integer 
@@ -135,8 +151,7 @@ public :
     int color_scheme, color_carousel ;
     int use_cut_plane;
     double cut_planea,cut_planeb,cut_planec,cut_planed;
-    double evalCutPlane (double x, double y, double z)
-    {
+    double evalCutPlane (double x, double y, double z){
       double val = cut_planea * x + 
 	cut_planeb * y + 
 	cut_planec * z + cut_planed; 
diff --git a/Common/DefaultOptions.h b/Common/DefaultOptions.h
index e2ce9ede48fcb13300fb2e49c76f186e52b1d974..27b343f204afb68d5f115ce91f7341332c814c71 100644
--- a/Common/DefaultOptions.h
+++ b/Common/DefaultOptions.h
@@ -1,8 +1,26 @@
 #ifndef _DEFAULT_OPTIONS_H_
 #define _DEFAULT_OPTIONS_H_
 
-// PLEASE RESPECT THE ALPHABETICAL ORDER WHEN INSERTING A NEW OPTION
-
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+
+//          PLEASE RESPECT THE ALPHABETICAL ORDER WHEN 
+//                    INSERTING A NEW OPTION!
+//
 // Option Database (General, Geometry, Mesh, Post, View, Print), with
 // default values. The first number defines the level of saving: O
 // for the option file, S for the session file and F for the full
diff --git a/Common/GetOptions.cpp b/Common/GetOptions.cpp
index 3ca43c96d299a795ee7805f40d0f18990f9b8b8f..b38237136b6247a7a5617843890af300ce051afd 100644
--- a/Common/GetOptions.cpp
+++ b/Common/GetOptions.cpp
@@ -1,4 +1,20 @@
-// $Id: GetOptions.cpp,v 1.47 2002-04-24 22:12:43 geuzaine Exp $
+// $Id: GetOptions.cpp,v 1.48 2002-05-18 07:17:59 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 #include <unistd.h>
 #include "Gmsh.h"
diff --git a/Common/GetOptions.h b/Common/GetOptions.h
index d5ded2855cf26bf46770dc7889cdc6bf679631b4..9d392247eba1e9376f918029e7502c5c91212eb6 100644
--- a/Common/GetOptions.h
+++ b/Common/GetOptions.h
@@ -1,6 +1,22 @@
 #ifndef _GET_OPTIONS_H_
 #define _GET_OPTIONS_H_
 
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
 extern char gmsh_progname[], gmsh_copyright[], gmsh_version[], gmsh_os[];
 extern char gmsh_date[], gmsh_host[], gmsh_packager[], gmsh_url[];
 extern char gmsh_email[], gmsh_gui[];
diff --git a/Common/Gmsh.h b/Common/Gmsh.h
index ec3acf0e79846a2501a75cc417c0cde558033e2e..102ae4fe2855ca5a17103b1f9d99662fedc45cb1 100644
--- a/Common/Gmsh.h
+++ b/Common/Gmsh.h
@@ -1,9 +1,21 @@
 #ifndef _GMSH_H_
 #define _GMSH_H_
 
-/* This header should be included in any Gmsh source file. Modify it
-   only if really necessary, since it will force the whole code to be
-   rebuilt... */
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 #undef bool
 #define bool int
diff --git a/Common/GmshUI.h b/Common/GmshUI.h
index c1e71a990019102c688a11c6759150f5b9405a75..2b022bbec8a1a2517c01096b3183a313f81aa323 100644
--- a/Common/GmshUI.h
+++ b/Common/GmshUI.h
@@ -1,6 +1,22 @@
 #ifndef _GMSH_UI_H_
 #define _GMSH_UI_H_
 
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
 #ifdef WIN32
 #include <windows.h>
 #include <GL/gl.h>
@@ -17,5 +33,4 @@
 #endif /* __APPLE__ */
 #endif
 
-
 #endif
diff --git a/Common/Iso.cpp b/Common/Iso.cpp
deleted file mode 100644
index faadba61564da2761b8cbbc897a2fb9d93ebb126..0000000000000000000000000000000000000000
--- a/Common/Iso.cpp
+++ /dev/null
@@ -1,284 +0,0 @@
-// $Id: Iso.cpp,v 1.2 2001-08-09 13:27:41 remacle Exp $
-
-#include "Gmsh.h"
-#include "Mesh.h"
-#include "Draw.h"
-#include "Numeric.h"
-
-void RaiseFill(int i, double Val, double ValMin, double Raise[3][5]);
-
-/* ------------------------------------------------------------------------ */
-/*  I n t e r p o l a t e                                                   */
-/* ------------------------------------------------------------------------ */
-
-double InterpolateIso(double *X, double *Y, double *Z, 
-                 double *Val, double V, int I1, int I2, 
-                 double *XI, double *YI ,double *ZI){
-  
-  if(Val[I1] == Val[I2]){
-    *XI = X[I1]; 
-    *YI = Y[I1]; 
-    *ZI = Z[I1]; 
-    return 0;
-  }
-  else{
-    double coef = (V - Val[I1])/(Val[I2]-Val[I1]);
-    *XI= coef*(X[I2]-X[I1]) + X[I1];
-    *YI= coef*(Y[I2]-Y[I1]) + Y[I1];
-    *ZI= coef*(Z[I2]-Z[I1]) + Z[I1];
-    return coef;
-  }
-}
-
-/* ------------------------------------------------------------------------ */
-/*  T r i a n g l e                                                         */
-/* ------------------------------------------------------------------------ */
-
-void CutTriangle1D(double *X, double *Y, double *Z, double *Val, 
-                   double V, double Vmin, double Vmax,
-                   double *Xp, double *Yp, double *Zp, int *nb){
-  
-  if(V != Vmax){
-    *nb = 0;
-    if((Val[0] > V && Val[1] <= V) || (Val[1] > V && Val[0] <= V)){
-      InterpolateIso(X,Y,Z,Val,V,0,1,&Xp[*nb],&Yp[*nb],&Zp[*nb]); (*nb)++;
-    }
-    if((Val[0] > V && Val[2] <= V) || (Val[2] > V && Val[0] <= V)){
-      InterpolateIso(X,Y,Z,Val,V,0,2,&Xp[*nb],&Yp[*nb],&Zp[*nb]); (*nb)++;
-    }
-    if((Val[1] > V && Val[2] <= V) || (Val[2] > V && Val[1] <= V)){
-      InterpolateIso(X,Y,Z,Val,V,1,2,&Xp[*nb],&Yp[*nb],&Zp[*nb]); (*nb)++;
-    }
-  }
-  else{
-    *nb = 0;
-    if((Val[0] < V && Val[1] >= V) || (Val[1] < V && Val[0] >= V)){
-      InterpolateIso(X,Y,Z,Val,V,0,1,&Xp[*nb],&Yp[*nb],&Zp[*nb]); (*nb)++;
-    }
-    if((Val[0] < V && Val[2] >= V) || (Val[2] < V && Val[0] >= V)){
-      InterpolateIso(X,Y,Z,Val,V,0,2,&Xp[*nb],&Yp[*nb],&Zp[*nb]); (*nb)++;
-    }       
-    if((Val[1] < V && Val[2] >= V) || (Val[2] < V && Val[1] >= V)){
-      InterpolateIso(X,Y,Z,Val,V,1,2,&Xp[*nb],&Yp[*nb],&Zp[*nb]); (*nb)++;
-    }
-  }
-
-}
-
-// Il faut refaire cette routine pour que l'orientation des elements
-// soit respectee.
-
-void CutTriangle2D(double *X, double *Y, double *Z, double *Val, 
-                   double V1, double V2, double Vmin, double Vmax,
-                   double *Xp2, double *Yp2, double *Zp2, int *Np2, double *Vp2){
-
-  int     i, io[3],j,iot,Np,Fl;
-  double  Xp[5],Yp[5],Zp[5],Vp[5];
-
-  *Np2 = 0;
-
-  for(i=0;i<3;i++) io[i] = i;
-
-  for(i=0;i<2;i++){
-    for(j=i+1;j<3;j++){
-      if(Val[io[i]]>Val[io[j]]){
-        iot = io[i];
-        io[i] = io[j];
-        io[j] = iot;
-      }
-    }
-  }
-
-  /* io[] contient un indexage des noeuds t.q. Val[io[i]] > Val[io[j]] si i > j */
-
-  if(Val[io[0]] > V2) return;
-  if(Val[io[2]] < V1) return;
-
-  if(V1 <= Val[io[0]] && Val[io[2]] <= V2){
-    memcpy(Vp2,Val,3*sizeof(double));
-    memcpy(Xp2,X,3*sizeof(double)); 
-    memcpy(Yp2,Y,3*sizeof(double)); 
-    memcpy(Zp2,Z,3*sizeof(double)); 
-    *Np2 = 3;
-    return;
-  }
-
-  Np = 0;
-  if(V1<=Val[io[0]]){
-    Vp[Np] = Val[io[0]];
-    Xp[Np] = X[io[0]]; 
-    Yp[Np] = Y[io[0]]; 
-    Zp[Np] = Z[io[0]]; 
-    Np++; Fl = 1;
-  }
-  else if(Val[io[0]] < V1 && V1 <= Val[io[1]]){
-    Vp[Np] = V1;
-    InterpolateIso(X,Y,Z,Val,V1,io[0],io[2],&Xp[Np],&Yp[Np],&Zp[Np]); Np++; 
-    Vp[Np] = V1;
-    InterpolateIso(X,Y,Z,Val,V1,io[0],io[1],&Xp[Np],&Yp[Np],&Zp[Np]); Np++; Fl = 1;
-  }
-  else {
-    Vp[Np] = V1;
-    InterpolateIso(X,Y,Z,Val,V1,io[0],io[2],&Xp[Np],&Yp[Np],&Zp[Np]); Np++;
-    Vp[Np] = V1;
-    InterpolateIso(X,Y,Z,Val,V1,io[1],io[2],&Xp[Np],&Yp[Np],&Zp[Np]); Np++; Fl = 0;
-  }    
-
-  if(V2 == Val[io[0]]){
-    return;
-  }
-  else if((Val[io[0]]<V2) && ( V2 < Val[io[1]])){
-    Vp[Np] = V2;
-    InterpolateIso(X,Y,Z,Val,V2,io[0],io[1],&Xp[Np],&Yp[Np],&Zp[Np]); Np++;
-    Vp[Np] = V2;
-    InterpolateIso(X,Y,Z,Val,V2,io[0],io[2],&Xp[Np],&Yp[Np],&Zp[Np]); Np++;
-  }
-  else if(V2 < Val[io[2]]){
-    if(Fl){
-      Vp[Np] = Val[io[1]];
-      Xp[Np] = X[io[1]]; 
-      Yp[Np] = Y[io[1]]; 
-      Zp[Np] = Z[io[1]];
-      Np++;
-    }
-    Vp[Np] = V2;
-    InterpolateIso(X,Y,Z,Val,V2,io[1],io[2],&Xp[Np],&Yp[Np],&Zp[Np]); Np++;
-    Vp[Np] = V2;
-    InterpolateIso(X,Y,Z,Val,V2,io[0],io[2],&Xp[Np],&Yp[Np],&Zp[Np]); Np++;
-  }
-  else{
-    if(Fl){
-      Vp[Np] = Val[io[1]];
-      Xp[Np] = X[io[1]];
-      Yp[Np] = Y[io[1]]; 
-      Zp[Np] = Z[io[1]];
-      Np++;
-    }
-    Vp[Np] = Val[io[2]];
-    Xp[Np] = X[io[2]]; 
-    Yp[Np] = Y[io[2]]; 
-    Zp[Np] = Z[io[2]];
-    Np++;
-  }
-
-  Vp2[0] = Vp[0];
-  Xp2[0] = Xp[0]; 
-  Yp2[0] = Yp[0]; 
-  Zp2[0] = Zp[0]; 
-  *Np2 = 1;
-
-  for(i=1;i<Np;i++){
-    if((Xp[i] != Xp2[(*Np2)-1]) ||(Yp[i] != Yp2[(*Np2)-1]) ||(Zp[i] != Zp2[(*Np2)-1])){      
-      Vp2[*Np2] = Vp[i];
-      Xp2[*Np2] = Xp[i]; 
-      Yp2[*Np2] = Yp[i]; 
-      Zp2[*Np2] = Zp[i];
-      (*Np2)++;
-    }
-  }
-
-  if(Xp2[0] == Xp2[(*Np2)-1] && Yp2[0] == Yp2[(*Np2)-1] && Zp2[0] == Zp2[(*Np2)-1]){
-    (*Np2)-- ;
-  }
-
-}
-
-/* ------------------------------------------------------------------------ */
-/*  L i n e                                                                 */
-/* ------------------------------------------------------------------------ */
-
-void CutLine0D(double *X, double *Y, double *Z, double *Val, 
-               double V, double Vmin, double Vmax,
-               double *Xp, double *Yp, double *Zp, int *nb){
-  
-  *nb = 0;
-
-  if(V != Vmax){
-    if((Val[0] > V && Val[1] <= V) || (Val[1] > V && Val[0] <= V)){
-      InterpolateIso(X,Y,Z,Val,V,0,1,Xp,Yp,Zp); *nb = 1;
-    }
-  }
-  else{
-    if((Val[0] < V && Val[1] >= V) || (Val[1] < V && Val[0] >= V)){
-      InterpolateIso(X,Y,Z,Val,V,0,1,Xp,Yp,Zp); *nb = 1;
-    }
-  }
-}
-
-void CutLine1D(double *X, double *Y, double *Z, double *Val, 
-               double V1, double V2, double Vmin, double Vmax,
-               double *Xp2, double *Yp2, double *Zp2, int *Np2, double *Vp2){
-
-  int io[2];
-
-  if(Val[0]<Val[1]){
-    io[0] = 0;
-    io[1] = 1;
-  }
-  else{
-    io[0] = 1;
-    io[1] = 0;
-  }
-
-  /* io[] contient un indexage des noeuds t.q. Val[io[i]] > Val[io[j]] si i > j */
-
-  *Np2 = 0;
-
-  if(Val[io[0]] > V2) return;
-  if(Val[io[1]] < V1) return;
-
-  *Np2 = 2;
-
-  if(V1 <= Val[io[0]] && Val[io[1]] <= V2){
-    memcpy(Vp2,Val,2*sizeof(double));
-    memcpy(Xp2,X,2*sizeof(double)); 
-    memcpy(Yp2,Y,2*sizeof(double)); 
-    memcpy(Zp2,Z,2*sizeof(double)); 
-    return;
-  }
-
-  if(V1<=Val[io[0]]){
-    Vp2[0] = Val[io[0]];
-    Xp2[0] = X[io[0]]; 
-    Yp2[0] = Y[io[0]]; 
-    Zp2[0] = Z[io[0]]; 
-  }
-  else{
-    Vp2[0] = V1;
-    InterpolateIso(X,Y,Z,Val,V1,io[0],io[1],&Xp2[0],&Yp2[0],&Zp2[0]);
-  }
-
-  if(V2>=Val[io[1]]){
-    Vp2[1] = Val[io[1]];
-    Xp2[1] = X[io[1]]; 
-    Yp2[1] = Y[io[1]]; 
-    Zp2[1] = Z[io[1]]; 
-  }
-  else{
-    Vp2[1] = V2;
-    InterpolateIso(X,Y,Z,Val,V2,io[0],io[1],&Xp2[1],&Yp2[1],&Zp2[1]);
-  }
-
-}
-
-void gradSimplex (double *x, double *y, double *z, double *v, double *grad){
-  /*
-    p = p1 * (1-u-v-w) + p2 u + p3 v + p4 w
-   */
-
-  double mat[3][3];
-  double det,b[3];
-  mat[0][0] = x[1]-x[0];
-  mat[1][0] = x[2]-x[0];
-  mat[2][0] = x[3]-x[0];
-  mat[0][1] = y[1]-y[0];
-  mat[1][1] = y[2]-y[0];
-  mat[2][1] = y[3]-y[0];
-  mat[0][2] = z[1]-z[0];
-  mat[1][2] = z[2]-z[0];
-  mat[2][2] = z[3]-z[0];
-  b[0] = v[1]-v[0];
-  b[1] = v[2]-v[0];
-  b[2] = v[3]-v[0];
-  sys3x3 (mat, b, grad, &det); 
-}
diff --git a/Common/Iso.h b/Common/Iso.h
deleted file mode 100644
index 6ac4c4d2b08d19a261038d4b7e4f5f43d2e99089..0000000000000000000000000000000000000000
--- a/Common/Iso.h
+++ /dev/null
@@ -1,28 +0,0 @@
-#ifndef _ISO_H_
-#define _ISO_H_
-
-void gradSimplex (double *x, double *y, double *z, double *v, double *grad);
-
-void CutTriangle1D (double *X, double *Y, double *Z, double *Val,
-                    double V, double Vmin, double Vmax,
-                    double *Xp, double *Yp, double *Zp, int *nb);
-
-void CutTriangle2D (double *X, double *Y, double *Z, double *Val,
-                    double V1, double V2, double Vmin, double Vmax,
-                    double *Xp, double *Yp, double *Zp, int *nb,
-                    double *value);
-
-void CutLine0D (double *X, double *Y, double *Z, double *Val,
-                double V, double Vmin, double Vmax,
-                double *Xp, double *Yp, double *Zp, int *nb);
-
-void CutLine1D (double *X, double *Y, double *Z, double *Val,
-                double V1, double V2, double Vmin, double Vmax,
-                double *Xp, double *Yp, double *Zp, int *nb,
-                double *value);
-
-double InterpolateIso(double *X, double *Y, double *Z, 
-		      double *Val, double V, int I1, int I2, 
-		      double *XI, double *YI ,double *ZI);
-  
-#endif
diff --git a/Common/Makefile b/Common/Makefile
index 99ea73b8e95e03e241d8a9be0242aa6dd7e31994..6a510b9b14dfbe298313a1c308bef929beed1aad 100644
--- a/Common/Makefile
+++ b/Common/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.32 2002-05-18 00:55:14 geuzaine Exp $
+# $Id: Makefile,v 1.33 2002-05-18 07:17:59 geuzaine Exp $
 #
 # Makefile for "libGmshCommon.a"
 #
@@ -12,28 +12,23 @@ RM      = rm
 
 LIB     = ../lib/libGmshCommon.a
 INCLUDE = -I../Common -I../DataStr -I../Geo -I../Graphics\
-          -I../Mesh -I../Parser -I../Fltk
+          -I../Mesh -I../Numeric -I../Parser -I../Fltk
 
 OPT_FLAGS     = -g -Wall
 OS_FLAGS      = -D_LITTLE_ENDIAN
 VERSION_FLAGS = -D_FLTK
 
-GL_INCLUDE    = -I$(HOME)/SOURCES/Mesa-3.1/include\
-                -I$(HOME)/SOURCES/Mesa-3.1/include/GL
-GUI_INCLUDE   = 
-
 RMFLAGS = -f
 CFLAGS  = $(OPT_FLAGS) $(OS_FLAGS) $(VERSION_FLAGS) $(INCLUDE)\
           $(GL_INCLUDE) $(GUI_INCLUDE)
 
 SRC =  	Context.cpp\
         Views.cpp\
-        Iso.cpp\
         Options.cpp\
         GetOptions.cpp\
         Timer.cpp\
         ColorTable.cpp\
-        Numeric.cpp
+        Trackball.cpp
 
 OBJ = $(SRC:.cpp=.o)
 
@@ -52,12 +47,9 @@ clean:
 lint:
 	$(LINT) $(CFLAGS) $(SRC)
 
-res:
-	windres Icon.rc -O coff Icon.res
-
 depend:
 	(sed '/^# DO NOT DELETE THIS LINE/q' Makefile && \
-	$(CXX) -MM $(CFLAGS) ${SRC} \
+	$(CXX) -MM -MG $(CFLAGS) ${SRC} \
 	) >Makefile.new
 	cp Makefile Makefile.bak
 	cp Makefile.new Makefile
@@ -65,39 +57,29 @@ depend:
 
 # DO NOT DELETE THIS LINE
 Context.o: Context.cpp Gmsh.h Message.h ../DataStr/Malloc.h \
- ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h \
- ../DataStr/Tools.h Numeric.h ../Geo/Geo.h ../Mesh/Mesh.h \
- ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
- ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Mesh/Matrix.h \
- ../Graphics/Draw.h ../Common/Views.h ../Common/ColorTable.h Context.h \
- Options.h DefaultOptions.h trackball.c trackball.h
-Views.o: Views.cpp Gmsh.h Message.h ../DataStr/Malloc.h \
- ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h \
- ../DataStr/Tools.h Numeric.h Views.h ColorTable.h Context.h Options.h
-Iso.o: Iso.cpp Gmsh.h Message.h ../DataStr/Malloc.h ../DataStr/List.h \
- ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h ../Mesh/Mesh.h \
- ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
- ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Mesh/Matrix.h \
- ../Graphics/Draw.h ../Common/Views.h ../Common/ColorTable.h Numeric.h
+  ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \
+  ../Numeric/Numeric.h ../Geo/Geo.h ../Mesh/Mesh.h ../Mesh/Vertex.h \
+  ../Mesh/Simplex.h ../Mesh/Edge.h ../Geo/ExtrudeParams.h \
+  ../Mesh/Metric.h ../Mesh/Matrix.h ../Graphics/Draw.h ../Common/Views.h \
+  ../Common/ColorTable.h Context.h Options.h DefaultOptions.h Trackball.h
+Views.o: Views.cpp Gmsh.h Message.h ../DataStr/Malloc.h ../DataStr/List.h \
+  ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \
+  ../Numeric/Numeric.h Views.h ColorTable.h Context.h Options.h
 Options.o: Options.cpp Gmsh.h Message.h ../DataStr/Malloc.h \
- ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h \
- ../DataStr/Tools.h GmshUI.h ../Geo/Geo.h ../Mesh/Mesh.h \
- ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
- ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Mesh/Matrix.h \
- ../Graphics/Draw.h ../Common/Views.h ../Common/ColorTable.h Context.h \
- Options.h ../Fltk/Solvers.h ../Fltk/GUI.h ../Fltk/Opengl_Window.h \
- ../Fltk/Colorbar_Window.h
+  ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \
+  GmshUI.h ../Geo/Geo.h ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h \
+  ../Mesh/Edge.h ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Mesh/Matrix.h \
+  ../Graphics/Draw.h ../Common/Views.h ../Common/ColorTable.h Context.h \
+  Options.h ../Fltk/Solvers.h ../Fltk/GUI.h ../Fltk/Opengl_Window.h \
+  ../Fltk/Colorbar_Window.h
 GetOptions.o: GetOptions.cpp Gmsh.h Message.h ../DataStr/Malloc.h \
- ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h \
- ../DataStr/Tools.h GmshUI.h GmshVersion.h Numeric.h Context.h \
- Options.h ../Geo/Geo.h ../Mesh/Mesh.h ../Mesh/Vertex.h \
- ../Mesh/Simplex.h ../Mesh/Edge.h ../Geo/ExtrudeParams.h \
- ../Mesh/Metric.h ../Mesh/Matrix.h Views.h ColorTable.h \
- ../Parser/OpenFile.h ../Parser/Parser.h
+  ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \
+  GmshUI.h GmshVersion.h ../Numeric/Numeric.h Context.h Options.h \
+  ../Geo/Geo.h ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h \
+  ../Mesh/Edge.h ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Mesh/Matrix.h \
+  Views.h ColorTable.h ../Parser/OpenFile.h ../Parser/Parser.h
 Timer.o: Timer.cpp
 ColorTable.o: ColorTable.cpp Gmsh.h Message.h ../DataStr/Malloc.h \
- ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h \
- ../DataStr/Tools.h ColorTable.h Context.h
-Numeric.o: Numeric.cpp Gmsh.h Message.h ../DataStr/Malloc.h \
- ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h \
- ../DataStr/Tools.h Numeric.h
+  ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \
+  ColorTable.h Context.h
+Trackball.o: Trackball.cpp Trackball.h
diff --git a/Common/Message.h b/Common/Message.h
index a4b616e3fb0d0393ad1ed40d3fd931f47cac782d..7a2bef438fd04422dc5dc5b89b97a6f11d2739e2 100644
--- a/Common/Message.h
+++ b/Common/Message.h
@@ -1,6 +1,22 @@
 #ifndef _MESSAGE_H_
 #define _MESSAGE_H_
 
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
 #include <stdarg.h>
 
 #define FATAL          1  // Fatal error (causes Gmsh to exit)
@@ -59,8 +75,6 @@
 void   Signal (int signum);
 void   Msg (int level, char *fmt, ...);
 double Cpu (void);
-void   Progress(int);
 void   Exit(int);
-void   AddALineInTheEditGeometryForm (char* line);
 
 #endif
diff --git a/Common/Options.cpp b/Common/Options.cpp
index 54abe96cbf45d255a29622b01fd8da16b8c824d2..568d70b682b4ab479884a7aa1916b83cef78e8d4 100644
--- a/Common/Options.cpp
+++ b/Common/Options.cpp
@@ -1,4 +1,20 @@
-// $Id: Options.cpp,v 1.77 2002-03-31 00:50:39 geuzaine Exp $
+// $Id: Options.cpp,v 1.78 2002-05-18 07:17:59 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 #include "Gmsh.h"
 #include "GmshUI.h"
@@ -18,7 +34,7 @@ extern GUI        *WID ;
 
 extern Post_View  *Post_ViewReference;
 
-// ************** General routines ****************************************
+// General routines
 
 void Init_Options(int num){
   char *tmp;
@@ -251,7 +267,7 @@ void Print_Options(int num, int level, char *filename){
   }
 }
 
-// ************** General routines for string options ************************
+// General routines for string options
 
 StringXString * Get_StringOptionCategory(char * cat){
   if     (!strcmp(cat,"General"))        return GeneralOptions_String ;
@@ -302,7 +318,7 @@ void Print_StringOptions(int num, int level, StringXString s[], char *prefix, FI
   }
 }
 
-// ************** General routines for numeric options ************************
+// General routines for numeric options
 
 StringXNumber * Get_NumberOptionCategory(char * cat){
   if     (!strcmp(cat,"General"))        return GeneralOptions_Number ;
@@ -355,7 +371,7 @@ void Print_NumberOptions(int num, int level, StringXNumber s[], char *prefix, FI
   }
 }
 
-// ************** General routines for color options ************************
+// General routines for color options
 
 StringXColor * Get_ColorOptionCategory(char * cat){
   if     (!strcmp(cat,"General"))        return GeneralOptions_Color ;
@@ -441,7 +457,7 @@ int Get_ColorForString(StringX4Int SX4I[], int alpha,
 
 
 
-// ************** String option routines ****************************
+// String option routines
 
 #define GET_VIEW(error_val)						\
   Post_View *v;								\
@@ -892,7 +908,7 @@ char * opt_print_eps_font(OPT_ARGS_STR){
 }
 
 
-// ************** Numeric option routines ****************************
+// Numeric option routines
 
 
 double opt_general_initial_context(OPT_ARGS_NUM){
@@ -2785,7 +2801,7 @@ double opt_print_gif_transparent(OPT_ARGS_NUM){
   return CTX.print.gif_transparent;
 }
 
-// ************** Color option routines ****************************
+// Color option routines
 
 #ifdef _FLTK
 
diff --git a/Common/Options.h b/Common/Options.h
index a2b4819fc6d56f51f86915b09e8191622241f054..7023171c944850bf729034f8fb32bbd04f54ed23 100644
--- a/Common/Options.h
+++ b/Common/Options.h
@@ -1,6 +1,22 @@
 #ifndef _OPTIONS_H_
 #define _OPTIONS_H_
 
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
 #define GMSH_SET       (1<<0)
 #define GMSH_GET       (1<<1)
 #define GMSH_GUI       (1<<2)
diff --git a/Common/Static.h b/Common/Static.h
deleted file mode 100644
index f9f92a7498c1a333a11600ea755f51edad4942df..0000000000000000000000000000000000000000
--- a/Common/Static.h
+++ /dev/null
@@ -1,13 +0,0 @@
-#ifndef _STATIC_H_
-#define _STATIC_H_
-
-/* This file defines the static structures for Gmsh. It should be
-   included only once, in your 'main' file */
-
-char        yyname[256];
-int         yyerrorstate;
-
-Context_T   CTX ;
-Mesh        M, *THEM=NULL, *LOCAL=NULL;
-
-#endif
diff --git a/Common/Timer.cpp b/Common/Timer.cpp
index f2218c588da2228cb6a20216e360a51c1321f2a9..82f6b290c6dfbceae0b90bf1ed7d7feebddfdef7 100644
--- a/Common/Timer.cpp
+++ b/Common/Timer.cpp
@@ -1,4 +1,20 @@
-// $Id: Timer.cpp,v 1.4 2001-02-09 07:59:50 geuzaine Exp $
+// $Id: Timer.cpp,v 1.5 2002-05-18 07:17:59 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 #if defined(WIN32) && !defined(__CYGWIN__)
 
diff --git a/Common/Timer.h b/Common/Timer.h
index a5103b0f2e7c751128a59ff81d7b5c025c031f69..4a8c7231da8c7d77e22480f647ac15c60461b0e6 100644
--- a/Common/Timer.h
+++ b/Common/Timer.h
@@ -1,6 +1,22 @@
 #ifndef _TIMER_H_
 #define _TIMER_H_
 
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
 long GetTime();
 
 #endif
diff --git a/Common/trackball.c b/Common/Trackball.cpp
similarity index 99%
rename from Common/trackball.c
rename to Common/Trackball.cpp
index f23d3db30b53cf5f401f7900dd70e4b84e58f921..ecc050c3b852f80bb6e2cf87225987322240cbf1 100644
--- a/Common/trackball.c
+++ b/Common/Trackball.cpp
@@ -50,7 +50,7 @@
  * Gavin Bell
  */
 #include <math.h>
-#include "trackball.h"
+#include "Trackball.h"
 
 /*
  * This size should really be based on the distance from the center of
diff --git a/Common/trackball.h b/Common/Trackball.h
similarity index 100%
rename from Common/trackball.h
rename to Common/Trackball.h
diff --git a/Common/Views.cpp b/Common/Views.cpp
index db9773337cfe74e8f7a906ace09c40b68c74534c..4c294a485b45d1ff9b2adcf040486835498a0f2e 100644
--- a/Common/Views.cpp
+++ b/Common/Views.cpp
@@ -1,4 +1,20 @@
-// $Id: Views.cpp,v 1.66 2002-03-12 19:07:32 geuzaine Exp $
+// $Id: Views.cpp,v 1.67 2002-05-18 07:17:59 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 #include <set>
 #include "Gmsh.h"
@@ -12,12 +28,11 @@ extern Context_T   CTX ;
 
 #define INFINITY 1.e200
 
-//static reference view
+// Static reference view
+
 Post_View  *Post_ViewReference = NULL;
 
-/* ------------------------------------------------------------------------ */
-/*  V i e w s                                                               */
-/* ------------------------------------------------------------------------ */
+// FIXME: the whole View interface should be rewritten in C++...
 
 int fcmpPostViewNum(const void *v1, const void *v2){
   return (((Post_View *)v1)->Num - ((Post_View *)v2)->Num);
@@ -331,7 +346,7 @@ void EndView(Post_View *v, int add_in_gui, char *file_name, char *name){
 			 (double*)List_Pointer_Fast(v->TS,i+12));
   }
 
-  // Dummy time values if using old parsed format...
+  // Dummy time values if using old parsed format
   if(v->Time && !List_Nbr(v->Time)){
     for(i=0 ; i<v->NbTimeStep ; i++){
       d = (double)i;
@@ -534,9 +549,7 @@ Post_View *Create2DGraph(char *xname, char *yname,
   return v;
 }
 
-/* ------------------------------------------------------------------------ */
-/*  R e a d _ V i e w                                                       */
-/* ------------------------------------------------------------------------ */
+// INput/output
 
 void Read_View(FILE *file, char *filename){
   char   str[256], name[256];
@@ -702,12 +715,9 @@ void Read_View(FILE *file, char *filename){
 
 }
 
-/* ------------------------------------------------------------------------ */
-/*  W r i t e _ V i e w                                                     */
-/* ------------------------------------------------------------------------ */
-
-// Ajouter un entier par simplexe (num de region)?
-// Format liste de noeuds + liste de simplexes ?
+// FIXME: add an integer per simplex (region num)
+// FIXME: add a format similar to the msh format (node list + simplex list)
+// FIXME: add a structured format
 
 void Write_View(int Flag_BIN, Post_View *v, char *filename){
   FILE *file;
@@ -767,10 +777,7 @@ void Write_View(int Flag_BIN, Post_View *v, char *filename){
 
 }
 
-
-/* ------------------------------------------------------------------------ */
-/*  S m o o t h i n g                                                       */
-/* ------------------------------------------------------------------------ */
+// Smoothing
 
 using namespace std;
 
@@ -863,11 +870,8 @@ public :
   mycont c;
 };
 
-void smooth_list (List_T *SS ,
-		  double *min, double *max,
-		  int NbTimeStep,
-		  int nbvert,
-		  int nb, 
+void smooth_list (List_T *SS , double *min, double *max,
+		  int NbTimeStep, int nbvert, int nb, 
 		  mycont & connectivities){
   double *x,*y,*z,*v;
   int i,j,k;
@@ -938,7 +942,7 @@ void Post_View :: smooth (){
   
 }
   
-// a small utility to smooth normals
+// Normal smoothing
 
 void Post_View :: reset_normals(){
   if(normals) delete normals;
@@ -1005,9 +1009,7 @@ bool Post_View :: get_normal(double x, double y, double z,
   return true;
 }
 
-/* ------------------------------------------------------------------------ */
-/*  T r a n s f o r m a t i o n                                             */
-/* ------------------------------------------------------------------------ */
+// Transformation
 
 static void transform(double mat[3][3], double v[3],
 		      double *x, double *y, double *z){
@@ -1016,11 +1018,8 @@ static void transform(double mat[3][3], double v[3],
   *z = mat[2][0]*v[0] + mat[2][1]*v[1] + mat[2][2]*v[2];
 }
 
-static void transform_list(List_T *V ,
-			   int NbTimeStep,
-			   int nbvert,
-			   int nb,
-			   double mat[3][3]){
+static void transform_list(List_T *V , int NbTimeStep, int nbvert,
+			   int nb, double mat[3][3]){
   double *x,*y,*z, v[3];
   int i, j;
 
@@ -1075,3 +1074,4 @@ void Post_View :: transform (double mat[3][3]){
     transform_list(VS, NbTimeStep, 4, nb, mat);
   }
 }
+
diff --git a/Common/Views.h b/Common/Views.h
index 029abb67e34404ee07a7532b159f4c2531dece9c..c8d1a051d07a2618474458cd2c61e970d7d35430 100644
--- a/Common/Views.h
+++ b/Common/Views.h
@@ -1,6 +1,22 @@
 #ifndef _VIEWS_H_
 #define _VIEWS_H_
 
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
 #include "ColorTable.h"
 
 class smooth_container;
diff --git a/DataStr/List.cpp b/DataStr/List.cpp
index 4957cd5c8dd192efd268dab1e533ae32e0a0f89e..5db8768e8d7efeb7d4d185d4ad13d61e5b28b193 100644
--- a/DataStr/List.cpp
+++ b/DataStr/List.cpp
@@ -1,4 +1,20 @@
-// $Id: List.cpp,v 1.19 2001-11-05 08:37:43 geuzaine Exp $
+// $Id: List.cpp,v 1.20 2002-05-18 07:18:00 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 #include <stdlib.h>
 #include <stdio.h>
diff --git a/DataStr/List.h b/DataStr/List.h
index 50e58b3bbfeaf465cbed8d0cc853cf4cf0d8ee05..928b37616d4ecd273fa2e75e1360cb074305897c 100644
--- a/DataStr/List.h
+++ b/DataStr/List.h
@@ -1,6 +1,22 @@
 #ifndef _LIST_H_
 #define _LIST_H_
 
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
 #include <stdio.h>
 
 #define LIST_FORMAT_ASCII       0
diff --git a/DataStr/Malloc.cpp b/DataStr/Malloc.cpp
index afaa3bb92048cb67d4211ea341afc1a74b2d6ff1..2c859097edd084d0f7c72f3842da8e7ec11cfdb4 100644
--- a/DataStr/Malloc.cpp
+++ b/DataStr/Malloc.cpp
@@ -1,4 +1,21 @@
-// $Id: Malloc.cpp,v 1.9 2002-02-13 09:20:41 stainier Exp $
+// $Id: Malloc.cpp,v 1.10 2002-05-18 07:18:00 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
 #include <stdio.h>
 #include <stdlib.h>
 #ifndef __APPLE__
@@ -8,8 +25,7 @@
 #include "Malloc.h"
 #include "Message.h"
 
-void *Malloc(size_t size)
-{
+void *Malloc(size_t size){
   void *ptr;
 
   if (!size) return(NULL);
@@ -19,8 +35,7 @@ void *Malloc(size_t size)
   return(ptr);
 }
 
-void *Calloc(size_t num, size_t size)
-{
+void *Calloc(size_t num, size_t size){
   void *ptr;
 
   if (!size) return(NULL);
@@ -30,8 +45,7 @@ void *Calloc(size_t num, size_t size)
   return(ptr);
 }
 
-void *Realloc(void *ptr, size_t size)
-{
+void *Realloc(void *ptr, size_t size){
   if (!size) return(NULL);
   ptr = realloc(ptr,size);
   if (ptr == NULL)
@@ -39,8 +53,7 @@ void *Realloc(void *ptr, size_t size)
   return(ptr);
 }
 
-void Free(void *ptr)
-{
+void Free(void *ptr){
   if (ptr == NULL) return;
   free(ptr);
 }
diff --git a/DataStr/Malloc.h b/DataStr/Malloc.h
index aeabacae095d830c7d46d9507cdb45f9a6404339..2033e6fb5cacb894cb0c3b8ed3f7fd8d491d195f 100644
--- a/DataStr/Malloc.h
+++ b/DataStr/Malloc.h
@@ -1,6 +1,22 @@
 #ifndef _MALLOC_H_
 #define _MALLOC_H_
 
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
 void *Malloc(size_t size);
 void *Calloc(size_t num, size_t size);
 void *Realloc(void *ptr, size_t size);
diff --git a/DataStr/Tools.cpp b/DataStr/Tools.cpp
index f8a24c72a456a08518327bf1ba35ab883cbba0f2..43aa10582f2343def1c67987cc9d6cd3692b4585 100644
--- a/DataStr/Tools.cpp
+++ b/DataStr/Tools.cpp
@@ -1,4 +1,20 @@
-// $Id: Tools.cpp,v 1.4 2001-01-08 08:05:41 geuzaine Exp $
+// $Id: Tools.cpp,v 1.5 2002-05-18 07:18:00 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 #include <stdlib.h>
 #include <math.h>
@@ -23,7 +39,7 @@ int fcmp_double(const void *a, const void *b){
   else                    return  0 ;
 }
 
-// Tree ==> List transfer
+// Tree -> List transfer
 
 List_T *pListeTransfert;
 
diff --git a/DataStr/Tools.h b/DataStr/Tools.h
index cb5f57b839e68bb8a6a90b810b7bff1557de527e..b73dcd363bf43d64c430663a40d14d64a5f03980 100644
--- a/DataStr/Tools.h
+++ b/DataStr/Tools.h
@@ -1,6 +1,22 @@
 #ifndef _TOOLS_H_
 #define _TOOLS_H_
 
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
 #include "List.h"
 #include "Tree.h"
 
diff --git a/DataStr/Tree.cpp b/DataStr/Tree.cpp
index a154f3f06fb06063cf981aaf7441f631455a7fc6..e4a4c6a4bf58705707f47238f5515ca15fb6caa1 100644
--- a/DataStr/Tree.cpp
+++ b/DataStr/Tree.cpp
@@ -1,4 +1,20 @@
-// $Id: Tree.cpp,v 1.8 2001-10-31 16:33:46 remacle Exp $
+// $Id: Tree.cpp,v 1.9 2002-05-18 07:18:00 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 #include <stdlib.h>
 #include <string.h>
diff --git a/DataStr/Tree.h b/DataStr/Tree.h
index 31f6f158ff995f7bbf5a43fd939cfb4ab37cf624..23b7c818f847894e9dec89349b8fa50042c62ddc 100644
--- a/DataStr/Tree.h
+++ b/DataStr/Tree.h
@@ -1,6 +1,22 @@
 #ifndef _TREE_H_
 #define _TREE_H_
 
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
 #include "avl.h"
 
 typedef struct {
diff --git a/DataStr/avl.cpp b/DataStr/avl.cpp
index f30b67579e65e915a4fc997703b72533c6d17426..4dbd20f9b1581432c0f8f758d569d47c4e4dfca7 100644
--- a/DataStr/avl.cpp
+++ b/DataStr/avl.cpp
@@ -1,8 +1,4 @@
-// $Id: avl.cpp,v 1.6 2001-10-31 16:33:46 remacle Exp $
-
-/*
- * This is a modified version for Gmsh (for c++, 64-bit architectures, etc.)
- */
+// $Id: avl.cpp,v 1.7 2002-05-18 07:18:00 geuzaine Exp $
 
 /*
  * avl package
@@ -29,6 +25,8 @@
  * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
 
+// Modified for Gmsh (C++, 64 bits, ...)
+
 #include <stdio.h>
 
 #include "avl.h"
diff --git a/DataStr/avl.h b/DataStr/avl.h
index f343449f129b516a269ea385da91c0ee1f3b34ce..2265f2401520c0f5dd3d3c00087352231c73af4c 100644
--- a/DataStr/avl.h
+++ b/DataStr/avl.h
@@ -26,6 +26,8 @@
  * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
 
+// Modified for Gmsh (C++, 64 bits, ...)
+
 typedef struct avl_node_struct avl_node;
 struct avl_node_struct {
   avl_node *left, *right;
diff --git a/Common/Bitmaps.h b/Fltk/Bitmaps.h
similarity index 90%
rename from Common/Bitmaps.h
rename to Fltk/Bitmaps.h
index 459e7650822c8d074994a0cc50eab12705728ba5..b2ed764f316e9196e88765ece4b74529645d9385 100644
--- a/Common/Bitmaps.h
+++ b/Fltk/Bitmaps.h
@@ -1,7 +1,23 @@
 #ifndef _BITMAPS_H_
 #define _BITMAPS_H_
 
-// 'Gmsh' (Unix) icon
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+// Standard Gmsh Unix icon
 
 #define g1_width 66
 #define g1_height 29
@@ -25,7 +41,7 @@ static char g1_bits[] = {
  0xa5,0x28,0xfd,0x30,0x00,0x00,0x00,0x00,0x24,0x99,0xc8,0xfd,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0xfc};
 
-// 'Gmsh Menu' (Unix) icon
+// Gmsh Menu Unix icon
 
 #define g2_width 66
 #define g2_height 29
@@ -108,7 +124,8 @@ static char about_bits[] = {
  0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0xfe};
 
 // 'Abort' bitmap
-/* disabled until mesh thread is back
+// disabled until the mesh thread is back
+/* 
 #define abort_width 13
 #define abort_height 13
 static char abort_bits[] = {
diff --git a/Fltk/Callbacks.cpp b/Fltk/Callbacks.cpp
index 5dea264986aa3d32b109466058dedc15bd376d4a..f2f44ee35f8149e32cbb1d97dab495297ef9adbd 100644
--- a/Fltk/Callbacks.cpp
+++ b/Fltk/Callbacks.cpp
@@ -1,4 +1,20 @@
-// $Id: Callbacks.cpp,v 1.122 2002-05-13 23:15:40 geuzaine Exp $
+// $Id: Callbacks.cpp,v 1.123 2002-05-18 07:18:00 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 #include <sys/types.h>
 #include <signal.h>
diff --git a/Fltk/Callbacks.h b/Fltk/Callbacks.h
index 4acfd60b334b5fbab68cdb3f6e419f7c068a586c..8eae3811295a5bdedd1ce5aece53dea5b4542ed4 100644
--- a/Fltk/Callbacks.h
+++ b/Fltk/Callbacks.h
@@ -1,6 +1,22 @@
 #ifndef _CALLBACKS_H_
 #define _CALLBACKS_H_
 
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
 #define CALLBACK_ARGS   Fl_Widget* w, void* data
 
 int SetGlobalShortcut(int event);
diff --git a/Fltk/Colorbar_Window.cpp b/Fltk/Colorbar_Window.cpp
index ec2f17999e4d998845ea51634e3e04991391b9bd..e5ecc6e906c7dc538b06ec53fdbc1448d2eb38bf 100644
--- a/Fltk/Colorbar_Window.cpp
+++ b/Fltk/Colorbar_Window.cpp
@@ -1,4 +1,25 @@
-// $Id: Colorbar_Window.cpp,v 1.21 2002-03-31 00:50:39 geuzaine Exp $
+// $Id: Colorbar_Window.cpp,v 1.22 2002-05-18 07:18:00 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+// This code is the rewriting (in C++, for fltk) of the colorbar
+// widget provided in the Vis5d program for visualizing five
+// dimensional gridded data sets Copyright (C) 1990 - 1995 Bill
+// Hibbard, Brian Paul, Dave Santek, and Andre Battaiola.
 
 #include "Gmsh.h"
 #include "GmshUI.h"
diff --git a/Fltk/Colorbar_Window.h b/Fltk/Colorbar_Window.h
index 1592706b789e9b97b09f8088aebd054bc22044bd..7e7c9cd23a863c9179762a5024fd01fa3e91c1d5 100644
--- a/Fltk/Colorbar_Window.h
+++ b/Fltk/Colorbar_Window.h
@@ -1,6 +1,22 @@
 #ifndef _COLORBAR_WINDOW_H
 #define _COLORBAR_WINDOW_H
 
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
 #include "ColorTable.h"
 
 class Colorbar_Window : public Fl_Window {
@@ -25,8 +41,8 @@ class Colorbar_Window : public Fl_Window {
   int help_flag;   // if nonzero, print help message
   int marker_pos;  // position of marker as index into table
   
-  GmshColorTable *ct;  // pointer to the color table (allocated in Post_View)
-  int *viewchanged;// pointer to changed bit in view
+  GmshColorTable *ct; // pointer to the color table (allocated in Post_View)
+  int *viewchanged;   // pointer to changed bit in view
   Fl_Color color_bg;
 
 public:
diff --git a/Fltk/GUI.cpp b/Fltk/GUI.cpp
index e8e8b20645d2d3250fe1e802837fbbea8e983fa4..64d1bb295611b51f61f00726687d37a1defb58d0 100644
--- a/Fltk/GUI.cpp
+++ b/Fltk/GUI.cpp
@@ -1,4 +1,20 @@
-// $Id: GUI.cpp,v 1.172 2002-05-15 04:37:47 geuzaine Exp $
+// $Id: GUI.cpp,v 1.173 2002-05-18 07:18:00 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 // To make the interface as visually consistent as possible, please:
 // - use the IW, BB, BH, BW and WB values
@@ -19,7 +35,6 @@
 #include "GUI.h"
 #include "Callbacks.h"
 #include "Bitmaps.h"
-#include "Icon.h"
 #include "OpenFile.h"
 #include "GetOptions.h"
 
@@ -44,7 +59,7 @@
 
 extern Context_T  CTX;
 
-//******************* Definition of the static menus ***********************************
+// Definition of the static menus
 
 // Don't define shortcuts for FL_CTRL+'n', FL_CTRL+'p', FL_CTRL+'f', FL_CTRL+'b'
 // these are used by fltk for widget navigation (in the same way as the 4 arrow keys)
@@ -111,7 +126,7 @@ Fl_Menu_Item m_module_table[] = {
   {0}
 };
 
-//********************* Definition of the dynamic contexts *****************************
+// Definition of the dynamic contexts
 
 Context_Item menu_geometry[] = 
 { { "0Geometry", NULL } ,
@@ -290,7 +305,7 @@ Context_Item menu_post[] =
 { { "3Post-processing", NULL } ,
   { NULL } };
 
-//********************** Definition of global shortcuts ********************************
+// Definition of global shortcuts
 
 int GUI::global_shortcuts(int event){
   int i, j;
@@ -541,7 +556,7 @@ int GUI::arrow_shortcuts(){
 }
 
 
-//***************************** The GUI constructor ************************************
+// The GUI constructor
 
 GUI::GUI(int argc, char **argv) {
   int i;
@@ -647,7 +662,7 @@ void GUI::wait(){
   Fl::wait();
 }
 
-//********************************* Create the menu window *****************************
+// Create the menu window
 
 
 void GUI::add_post_plugins (Fl_Menu_Button *button , int iView){
@@ -880,7 +895,7 @@ int GUI::get_context(){
 }
 
 
-//******************************** Create the graphic window ***************************
+// Create the graphic window
 
 void GUI::create_graphic_window(int argc, char **argv){
   int i, x;
@@ -1048,7 +1063,7 @@ void GUI::redraw_overlay(){
   g_opengl_window->redraw_overlay();
 }
 
-//************************ Create the window for general options ***********************
+// Create the window for general options
 
 void GUI::create_general_options_window(){
   int i;
@@ -1203,7 +1218,7 @@ void GUI::create_general_options_window(){
   
 }
 
-//************************ Create the window for geometry options **********************
+// Create the window for geometry options
 
 void GUI::create_geometry_options_window(){
   int i;
@@ -1315,7 +1330,7 @@ void GUI::create_geometry_options_window(){
   
 }
 
-//****************************** Create the window for mesh options ********************
+// Create the window for mesh options
 
 void GUI::create_mesh_options_window(){
   int i;
@@ -1505,7 +1520,7 @@ void GUI::create_mesh_options_window(){
   
 }
 
-//******************** Create the window for solver options *******************
+// Create the window for solver options
 
 void GUI::create_solver_options_window(){
 
@@ -1558,7 +1573,7 @@ void GUI::create_solver_options_window(){
 }
 
 
-//******************** Create the window for post-processing options *******************
+// Create the window for post-processing options
 
 void GUI::create_post_options_window(){
   int i;
@@ -1638,7 +1653,7 @@ void GUI::create_post_options_window(){
   
 }
 
-//*********************** Create the window for the statistics *************************
+// Create the window for the statistics
 
 void GUI::create_statistics_window(){
   int i, num=0;
@@ -1806,7 +1821,7 @@ void GUI::set_statistics(){
 }
 
 
-//*********************** Create the window for the plugins *************************
+// Create the window for the plugins
 
 void GUI::add_multiline_in_browser(Fl_Browser *o, char* prefix, char *str){
   int start = 0, len;
@@ -1901,7 +1916,7 @@ PluginDialogBox * GUI::create_plugin_window(GMSH_Plugin *p){
   return pdb;
 }
 
-//********************** Create the window for the messages ****************************
+// Create the window for the messages
 
 void GUI::create_message_window(){
 
@@ -1975,7 +1990,7 @@ void GUI::fatal_error(char *filename){
 	   "(all messages have been saved in the error log file '%s')", filename);
 }
 
-//********************** Create the visibility window ****************************
+// Create the visibility window
 
 void GUI::reset_visibility(){
   if(vis_window){
@@ -2082,7 +2097,7 @@ void GUI::create_visibility_window(){
   vis_window->end();
 }
 
-//******************************* Create the about window ******************************
+// Create the about window
 
 void GUI::create_about_window(){
   char buffer[1024];
@@ -2143,7 +2158,7 @@ void GUI::create_about_window(){
   
 }
 
-//************************* Create the window for view options *************************
+// Create the window for view options
 
 // WARNING! Don't forget to add the set_changed_cb() callback to any new widget!
 
@@ -2599,7 +2614,7 @@ void GUI::update_view_window(int num){
   view_ok->callback(view_options_ok_cb, (void*)num);
 }
 
-//*************** Create the window for geometry context dependant definitions *********
+// Create the window for geometry context dependant definitions
 
 void GUI::create_geometry_context_window(int num){
   static Fl_Group *g[10];
@@ -2735,7 +2750,7 @@ void GUI::create_geometry_context_window(int num){
   
 }
 
-//************** Create the window for mesh context dependant definitions **************
+// Create the window for mesh context dependant definitions
 
 void GUI::create_mesh_context_window(int num){
   static Fl_Group *g[10];
@@ -2811,7 +2826,7 @@ void GUI::create_mesh_context_window(int num){
 }
 
 
-//************** Create the windows for the solvers **************
+// Create the windows for the solvers
 
 #include "Solvers.h"
 
diff --git a/Fltk/GUI.h b/Fltk/GUI.h
index a9cd9f824248428a92933ba51f7690873a9052db..e7f2e1c7b074ea9c91679630b088e55c52c5ed2a 100644
--- a/Fltk/GUI.h
+++ b/Fltk/GUI.h
@@ -1,6 +1,22 @@
 #ifndef _GUI_H_
 #define _GUI_H_
 
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
 #include <FL/Fl_Window.H>
 #include <FL/Fl_Box.H>
 #include <FL/Fl_Menu_Bar.H>
diff --git a/Fltk/GmshServer.cpp b/Fltk/GmshServer.cpp
index 9a4d69e27d01072078765cb6dd1d32b0efea4599..803dd549c22f147cc6f06a2a17dd575cd4c46936 100644
--- a/Fltk/GmshServer.cpp
+++ b/Fltk/GmshServer.cpp
@@ -1,4 +1,21 @@
-/* $Id: GmshServer.cpp,v 1.4 2002-04-13 05:44:37 geuzaine Exp $ */
+/* $Id: GmshServer.cpp,v 1.5 2002-05-18 07:18:00 geuzaine Exp $ */
+/*
+  Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+
+  This program is free software; you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation; either version 2 of the License, or
+  (at your option) any later version.
+
+  This program is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+
+  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., 675 Mass Ave, Cambridge, MA 02139, USA.
+*/
 
 #include <stdio.h>
 #include <stdlib.h>
diff --git a/Fltk/GmshServer.h b/Fltk/GmshServer.h
index 6714cca65c1d1ed919f9fc5c34e147e7f3195a3b..19c395050de0a67ad675202651128952db83516a 100644
--- a/Fltk/GmshServer.h
+++ b/Fltk/GmshServer.h
@@ -1,6 +1,24 @@
 #ifndef _GMSH_SERVER_H_
 #define _GMSH_SERVER_H_
 
+/*
+  Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+
+  This program is free software; you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation; either version 2 of the License, or
+  (at your option) any later version.
+
+  This program is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+
+  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., 675 Mass Ave, Cambridge, MA 02139, USA.
+*/
+
 int Gmsh_StartClient(char *command, char *sockname);
 int Gmsh_ReceiveString(int socket, int *type, char str[]);
 int Gmsh_StopClient(char *sockname, int socket);
diff --git a/Common/Icon.h b/Fltk/Icon.h
similarity index 82%
rename from Common/Icon.h
rename to Fltk/Icon.h
index 1b35c1ddef9c32193271d44d993635e888fe6268..4379420d0826466252be7b2ea3bb52c47395e9cb 100644
--- a/Common/Icon.h
+++ b/Fltk/Icon.h
@@ -1 +1,3 @@
 #define IDI_ICON   101
+
+
diff --git a/Common/Icon.ico b/Fltk/Icon.ico
similarity index 100%
rename from Common/Icon.ico
rename to Fltk/Icon.ico
diff --git a/Common/Icon.rc b/Fltk/Icon.rc
similarity index 100%
rename from Common/Icon.rc
rename to Fltk/Icon.rc
diff --git a/Common/Icon.res b/Fltk/Icon.res
similarity index 100%
rename from Common/Icon.res
rename to Fltk/Icon.res
diff --git a/Fltk/Main.cpp b/Fltk/Main.cpp
index a6b3ce5024749db86aca2de3d809b3c1805913eb..b58422a03579084c7cac3ff1e0f9f0874ec643a9 100644
--- a/Fltk/Main.cpp
+++ b/Fltk/Main.cpp
@@ -1,4 +1,20 @@
-// $Id: Main.cpp,v 1.36 2002-04-26 00:15:30 geuzaine Exp $
+// $Id: Main.cpp,v 1.37 2002-05-18 07:18:00 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 #include <signal.h>
 #include <time.h>
@@ -16,12 +32,15 @@
 #include "Options.h"
 #include "ColorTable.h"
 #include "Parser.h"
-#include "Static.h"
 #include "GUI.h"
 #include "OpenFile.h"
 #include "GetOptions.h"
 
-GUI *WID = NULL;
+char        yyname[256];
+int         yyerrorstate;
+Context_T   CTX ;
+Mesh        M, *THEM=NULL, *LOCAL=NULL;
+GUI        *WID = NULL;
 
 int main(int argc, char *argv[]){
   int     i, nbf;
diff --git a/Fltk/Makefile b/Fltk/Makefile
index 6b1f4ee6904267a2de522afb010cddb2a7044250..c0e384e3de8b43ab2cf278c04f9d1a7d23cfe648 100644
--- a/Fltk/Makefile
+++ b/Fltk/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.32 2002-05-18 00:55:14 geuzaine Exp $
+# $Id: Makefile,v 1.33 2002-05-18 07:18:00 geuzaine Exp $
 #
 # Makefile for "libGmshFltk.a"
 #
@@ -12,15 +12,11 @@ RANLIB   = ranlib
 
 LIB      = ../lib/libGmshFltk.a
 INCLUDE  = -I../Common -I../DataStr -I../Graphics -I../Geo\
-           -I../Mesh -I../Parser -I../Fltk -I../Plugin -I../utils
+           -I../Mesh -I../Numeric -I../Parser -I../Fltk -I../Plugin -I../utils
 
 OPT_FLAGS     = -g -Wall
 OS_FLAGS      = -D_LITTLE_ENDIAN
-VERSION_FLAGS = -D_NOTHREADS -D_FLTK
-
-GL_INCLUDE    = -I$(HOME)/SOURCES/Mesa-3.1/include\
-                -I$(HOME)/SOURCES/Mesa-3.1/include/GL
-GUI_INCLUDE   = -I$(HOME)/SOURCES/fltk
+VERSION_FLAGS = -D_FLTK
 
 RMFLAGS  = -f
 CFLAGS   = $(OPT_FLAGS) $(OS_FLAGS) $(VERSION_FLAGS) $(INCLUDE)\
@@ -48,6 +44,9 @@ $(LIB): $(OBJ)
 .cpp.o:
 	$(CXX) $(CFLAGS) -c $<
 
+res:
+	windres Icon.rc -O coff Icon.res
+
 clean:
 	$(RM) $(RMFLAGS) *.o
 
@@ -56,7 +55,7 @@ lint:
 
 depend:
 	(sed '/^# DO NOT DELETE THIS LINE/q' Makefile && \
-	$(CXX) -MM $(CFLAGS) ${SRC} \
+	$(CXX) -MM -MG $(CFLAGS) ${SRC} \
 	) >Makefile.new
 	cp Makefile Makefile.bak
 	cp Makefile.new Makefile
@@ -64,67 +63,67 @@ depend:
 
 # DO NOT DELETE THIS LINE
 Main.o: Main.cpp ../Plugin/PluginManager.h ../Common/Gmsh.h \
- ../Common/Message.h ../DataStr/Malloc.h ../DataStr/List.h \
- ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \
- ../Common/GmshUI.h ../Common/GmshVersion.h ../Geo/Geo.h \
- ../Geo/Verif.h ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h \
- ../Mesh/Edge.h ../Geo/ExtrudeParams.h ../Mesh/Metric.h \
- ../Mesh/Matrix.h ../Graphics/Draw.h ../Common/Views.h \
- ../Common/ColorTable.h ../Common/Context.h ../Common/Options.h \
- ../Parser/Parser.h ../Common/Static.h GUI.h Opengl_Window.h \
- Colorbar_Window.h ../Parser/OpenFile.h ../Common/GetOptions.h
+  ../Common/Message.h ../DataStr/Malloc.h ../DataStr/List.h \
+  ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \
+  ../Common/GmshUI.h ../Common/GmshVersion.h ../Geo/Geo.h ../Geo/Verif.h \
+  ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
+  ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Mesh/Matrix.h \
+  ../Graphics/Draw.h ../Common/Views.h ../Common/ColorTable.h \
+  ../Common/Context.h ../Common/Options.h ../Parser/Parser.h GUI.h \
+  Opengl_Window.h Colorbar_Window.h ../Parser/OpenFile.h \
+  ../Common/GetOptions.h
 Message.o: Message.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h \
- ../Common/GmshVersion.h ../Common/Context.h ../Common/Options.h GUI.h \
- Opengl_Window.h Colorbar_Window.h ../Common/ColorTable.h
+  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h \
+  ../Common/GmshVersion.h ../Common/Context.h ../Common/Options.h GUI.h \
+  Opengl_Window.h Colorbar_Window.h ../Common/ColorTable.h
 GUI.o: GUI.cpp ../Plugin/PluginManager.h ../Plugin/Plugin.h \
- ../Common/Options.h ../Common/Message.h ../Common/Gmsh.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h \
- ../Common/Numeric.h ../Common/GmshVersion.h ../Common/Context.h \
- ../Geo/Geo.h ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h \
- ../Mesh/Edge.h ../Geo/ExtrudeParams.h ../Mesh/Metric.h \
- ../Mesh/Matrix.h ../Graphics/Draw.h ../Common/Views.h \
- ../Common/ColorTable.h GUI.h Opengl_Window.h Colorbar_Window.h \
- Callbacks.h ../Common/Bitmaps.h ../Common/Icon.h ../Parser/OpenFile.h \
- ../Common/GetOptions.h
+  ../Common/Options.h ../Common/Message.h ../Common/Gmsh.h \
+  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h \
+  ../Numeric/Numeric.h ../Common/GmshVersion.h ../Common/Context.h \
+  ../Geo/Geo.h ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h \
+  ../Mesh/Edge.h ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Mesh/Matrix.h \
+  ../Graphics/Draw.h ../Common/Views.h ../Common/ColorTable.h GUI.h \
+  Opengl_Window.h Colorbar_Window.h Callbacks.h Bitmaps.h \
+  ../Parser/OpenFile.h ../Common/GetOptions.h Solvers.h
 Callbacks.o: Callbacks.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h ../Geo/Geo.h \
- ../Geo/Verif.h ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h \
- ../Mesh/Edge.h ../Geo/ExtrudeParams.h ../Mesh/Metric.h \
- ../Mesh/Matrix.h ../Graphics/Draw.h ../Common/Views.h \
- ../Common/ColorTable.h ../Common/Timer.h ../Graphics/CreateFile.h \
- ../Parser/OpenFile.h ../Common/GetOptions.h ../Common/Context.h \
- ../Common/Options.h GUI.h Opengl_Window.h Colorbar_Window.h \
- Callbacks.h ../Plugin/Plugin.h ../Graphics/Visibility.h Solvers.h
+  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h ../Geo/Geo.h \
+  ../Geo/CAD.h ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h \
+  ../Mesh/Edge.h ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Mesh/Matrix.h \
+  ../Geo/Verif.h ../Graphics/Draw.h ../Common/Views.h \
+  ../Common/ColorTable.h ../Common/Timer.h ../Graphics/CreateFile.h \
+  ../Parser/OpenFile.h ../Common/GetOptions.h ../Common/Context.h \
+  ../Common/Options.h GUI.h Opengl_Window.h Colorbar_Window.h Callbacks.h \
+  ../Plugin/Plugin.h ../Graphics/Visibility.h Solvers.h
 Opengl.o: Opengl.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h \
- ../Common/Numeric.h ../Common/Context.h ../Geo/Geo.h ../Mesh/Mesh.h \
- ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
- ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Mesh/Matrix.h \
- ../Graphics/Draw.h ../Common/Views.h ../Common/ColorTable.h GUI.h \
- Opengl_Window.h Colorbar_Window.h ../Graphics/gl2ps.h
-Opengl_Window.o: Opengl_Window.cpp ../Common/Gmsh.h \
- ../Common/Message.h ../DataStr/Malloc.h ../DataStr/List.h \
- ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \
- ../Common/Numeric.h ../Common/GmshUI.h ../Common/Context.h \
- ../Geo/Geo.h ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h \
- ../Mesh/Edge.h ../Geo/ExtrudeParams.h ../Mesh/Metric.h \
- ../Mesh/Matrix.h ../Graphics/Draw.h ../Common/Views.h \
- ../Common/ColorTable.h GUI.h Opengl_Window.h Colorbar_Window.h
+  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h \
+  ../Numeric/Numeric.h ../Common/Context.h ../Geo/Geo.h ../Mesh/Mesh.h \
+  ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
+  ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Mesh/Matrix.h \
+  ../Graphics/Draw.h ../Common/Views.h ../Common/ColorTable.h GUI.h \
+  Opengl_Window.h Colorbar_Window.h ../Graphics/gl2ps.h
+Opengl_Window.o: Opengl_Window.cpp ../Common/Gmsh.h ../Common/Message.h \
+  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../DataStr/Tools.h ../Numeric/Numeric.h \
+  ../Common/GmshUI.h ../Common/Context.h ../Geo/Geo.h ../Mesh/Mesh.h \
+  ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
+  ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Mesh/Matrix.h \
+  ../Graphics/Draw.h ../Common/Views.h ../Common/ColorTable.h GUI.h \
+  Opengl_Window.h Colorbar_Window.h
 Colorbar_Window.o: Colorbar_Window.cpp ../Common/Gmsh.h \
- ../Common/Message.h ../DataStr/Malloc.h ../DataStr/List.h \
- ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \
- ../Common/GmshUI.h ../Common/Numeric.h GUI.h Opengl_Window.h \
- Colorbar_Window.h ../Common/ColorTable.h ../Common/Context.h
+  ../Common/Message.h ../DataStr/Malloc.h ../DataStr/List.h \
+  ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \
+  ../Common/GmshUI.h ../Numeric/Numeric.h GUI.h Opengl_Window.h \
+  Colorbar_Window.h ../Common/ColorTable.h ../Common/Context.h
+GmshServer.o: GmshServer.cpp
 Solvers.o: Solvers.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Parser/OpenFile.h \
- Solvers.h ../Common/GmshUI.h GUI.h Opengl_Window.h Colorbar_Window.h \
- ../Common/ColorTable.h ../Mesh/Mesh.h ../Mesh/Vertex.h \
- ../Mesh/Simplex.h ../Mesh/Edge.h ../Geo/ExtrudeParams.h \
- ../Mesh/Metric.h ../Mesh/Matrix.h ../Graphics/Draw.h \
- ../Common/Views.h ../Common/Context.h
+  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../DataStr/Tools.h ../utils/GmshClient.h GmshServer.h \
+  ../Parser/OpenFile.h Solvers.h ../Common/GmshUI.h GUI.h Opengl_Window.h \
+  Colorbar_Window.h ../Common/ColorTable.h ../Mesh/Mesh.h \
+  ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
+  ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Mesh/Matrix.h \
+  ../Graphics/Draw.h ../Common/Views.h ../Common/Context.h
diff --git a/Fltk/Message.cpp b/Fltk/Message.cpp
index d077f8b99669b936fa5313d675abe9930b255646..e3e443be2dfcb299b2ce89b8dabb3f7721e7700e 100644
--- a/Fltk/Message.cpp
+++ b/Fltk/Message.cpp
@@ -1,4 +1,20 @@
-// $Id: Message.cpp,v 1.25 2002-02-13 09:20:41 stainier Exp $
+// $Id: Message.cpp,v 1.26 2002-05-18 07:18:00 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 #include <unistd.h>
 #include <signal.h>
@@ -23,15 +39,11 @@
 extern GUI       *WID;
 extern Context_T  CTX;
 
-/* ------------------------------------------------------------------------ */
-/*  S i g n a l                                                             */
-/* ------------------------------------------------------------------------ */
+// Handle signals. It is a crime to call stdio functions in a signal
+// handler. But who cares? ;-)
 
 void Signal (int sig_num){
 
-  /* It is VERY wrong to call stdio functions in a signal handler. But
-     who cares? ;-) */
-
   switch (sig_num){
   case SIGSEGV : 
     Msg(FATAL1, "Segmentation violation (invalid memory reference)");
@@ -53,10 +65,7 @@ void Signal (int sig_num){
   }
 }
 
-
-/* ------------------------------------------------------------------------ */
-/*  M s g                                                                   */
-/* ------------------------------------------------------------------------ */
+// General purpose message routine
 
 void Debug(){
 }
@@ -153,9 +162,7 @@ void Msg(int level, char *fmt, ...){
 }
 
 
-/* ------------------------------------------------------------------------ */
-/*  Exit                                                                    */
-/* ------------------------------------------------------------------------ */
+// Clean exit
 
 void Exit(int level){
   if(WID && !CTX.batch){
@@ -177,9 +184,7 @@ void Exit(int level){
   exit(level);
 }
 
-/* ------------------------------------------------------------------------ */
-/*  C p u                                                                   */
-/* ------------------------------------------------------------------------ */
+// CPU time computation, etc.
 
 void GetResources(long *s, long *us, long *mem){
 #if !defined(WIN32) || defined(__CYGWIN__)
@@ -205,16 +210,3 @@ double Cpu(void){
   return (double)s + (double)us/1.e6 ;
 }
 
-/* ------------------------------------------------------------------------ */
-/*  P r o g r e s s                                                         */
-/* ------------------------------------------------------------------------ */
-
-void Progress(int i){
-}
-
-/* ------------------------------------------------------------------------ */
-/*  E d i t G e o m e t r y                                                 */
-/* ------------------------------------------------------------------------ */
-
-void AddALineInTheEditGeometryForm (char* line){
-}
diff --git a/Fltk/Opengl.cpp b/Fltk/Opengl.cpp
index 587a89a3b2f240417ac38c84874adc3562da3b87..d6a37d8842fdad1c595f6be7b4f2fc6f246dafb7 100644
--- a/Fltk/Opengl.cpp
+++ b/Fltk/Opengl.cpp
@@ -1,4 +1,20 @@
-// $Id: Opengl.cpp,v 1.26 2001-11-19 13:48:19 geuzaine Exp $
+// $Id: Opengl.cpp,v 1.27 2002-05-18 07:18:00 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 #include "Gmsh.h"
 #include "GmshUI.h"
@@ -20,9 +36,7 @@ void Filter_SelectionBuffer(int n, GLuint *typ, GLuint *ient, Vertex **thev,
 void myZoom(GLdouble X1, GLdouble X2, GLdouble Y1, GLdouble Y2,
             GLdouble Xc1, GLdouble Xc2, GLdouble Yc1, GLdouble Yc2);
 
-/* ------------------------------------------------------------------------ */
-/*  Draw                                                               */
-/* ------------------------------------------------------------------------ */
+// Draw specialization
 
 void InitOpengl(void){
   WID->make_opengl_current();
@@ -62,9 +76,7 @@ void Draw_String(char *s){
   }
 }
 
-/* ------------------------------------------------------------------------ 
-    set_XXX
-   ------------------------------------------------------------------------ */
+// Euler angles set_XXX
 
 void set_r(int i, double val){
   if(!CTX.useTrackball){
@@ -86,10 +98,7 @@ void set_s(int i, double val){
   }
 }
 
-
-/* ------------------------------------------------------------------------ */
-/*  SelectEntity                                                            */
-/* ------------------------------------------------------------------------ */
+// Select entity routines
 
 int check_type(int type, Vertex *v, Curve *c, Surface *s){
   return ( (type==ENT_POINT   && v) ||
diff --git a/Fltk/Opengl_Window.cpp b/Fltk/Opengl_Window.cpp
index 01d68743e520f5de33165f74e891d839d555507f..d78ab3cc801fc91b2c3e7f19246cc37c17bcd41e 100644
--- a/Fltk/Opengl_Window.cpp
+++ b/Fltk/Opengl_Window.cpp
@@ -1,4 +1,20 @@
-// $Id: Opengl_Window.cpp,v 1.21 2002-04-12 23:59:22 geuzaine Exp $
+// $Id: Opengl_Window.cpp,v 1.22 2002-05-18 07:18:00 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 #include "Gmsh.h"
 #include "Numeric.h"
@@ -96,11 +112,11 @@ void Opengl_Window::clear_overlay() {
 }
 
 
-// le principe de FLTK est assez different des autres toolkits: les
-// events sont passes au handle du widget qui a le focus. Si ce handle
-// revoie 1, alors l'event est considere comme traite, et est
-// supprime. Si le handle retourne 0, l'event est passe au handle du
-// parent.
+// The event model in FLTK is pretty different from other toolkits:
+// the events are passed to the widget handle du widget that has the
+// focus. If this handle returns 1, then the event is considered as
+// treated, and is suppressed. If the handle returns 0, the event is
+// passed to the parent.
 
 int Opengl_Window::handle(int event) {
   static int      xpos, ypos, xmov, ymov, ibut, hits;
@@ -110,8 +126,6 @@ int Opengl_Window::handle(int event) {
   static Curve    *c=NULL, *oc;
   static Surface  *s=NULL, *os;
 
-  //printf("gmsh handle\n");
-
   GLuint  ii[SELECTION_BUFFER_SIZE], jj[SELECTION_BUFFER_SIZE];
 
   switch (event) {
diff --git a/Fltk/Opengl_Window.h b/Fltk/Opengl_Window.h
index 55acc61e74511b9c0d14b934d907993aff3eae98..e90a89f05a6f059284d7c17a607b5991bc463258 100644
--- a/Fltk/Opengl_Window.h
+++ b/Fltk/Opengl_Window.h
@@ -1,6 +1,22 @@
 #ifndef _OPENGL_WINDOW_H_
 #define _OPENGL_WINDOW_H_
 
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
 class Opengl_Window : public Fl_Gl_Window {
   void draw();
   void draw_overlay();
diff --git a/Fltk/Solvers.cpp b/Fltk/Solvers.cpp
index 3f9ea1d410269f091331fa42dec45b4733ee593f..d32fbc7e0430068d30c473ee1566531544ad8cbc 100644
--- a/Fltk/Solvers.cpp
+++ b/Fltk/Solvers.cpp
@@ -1,4 +1,20 @@
-// $Id: Solvers.cpp,v 1.10 2002-05-07 05:32:20 geuzaine Exp $
+// $Id: Solvers.cpp,v 1.11 2002-05-18 07:18:00 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 #include "Gmsh.h"
 #include "GmshClient.h"
diff --git a/Fltk/Solvers.h b/Fltk/Solvers.h
index b7304c6db450ee7a7ec95e4ae03352583854ec2b..cfa6c04db67be7d3dc523d22876c3c20a813f9be 100644
--- a/Fltk/Solvers.h
+++ b/Fltk/Solvers.h
@@ -1,6 +1,22 @@
 #ifndef _SOLVERS_H_
 #define _SOLVERS_H_
 
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
 #define MAXSOLVERS 5
 
 typedef struct{
diff --git a/Geo/CAD.cpp b/Geo/CAD.cpp
index 2888c5b3b12aad0885d5e0a4e738633c87ab0fd6..0e47769044acfddf510980173af4d081c484f38e 100644
--- a/Geo/CAD.cpp
+++ b/Geo/CAD.cpp
@@ -1,4 +1,20 @@
-// $Id: CAD.cpp,v 1.47 2002-03-12 19:07:32 geuzaine Exp $
+// $Id: CAD.cpp,v 1.48 2002-05-18 07:18:00 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 #include "Gmsh.h"
 #include "Numeric.h"
@@ -16,8 +32,7 @@ extern Context_T  CTX;
 
 static List_T  *ListOfTransformedPoints=NULL;
 
-/////////////////////////////////////////////////////////////////////////////////////
-// BASIC FUNCTIONS
+// Basic functions
 
 int NEWPOINT(void){
   return (THEM->MaxPointNum + 1);
@@ -584,8 +599,7 @@ int recognize_surfloop(List_T * liste, int *loop){
   return res;
 }
 
-/////////////////////////////////////////////////////////////////////////////////////
-// LINEAR APPLICATIONS
+// Linear applications
 
 void SetTranslationMatrix (double matrix[4][4],double T[3]){
   int i, j;
@@ -877,9 +891,7 @@ void SymmetryShapes (double A,double B,double C,
 }
 
 
-
-/////////////////////////////////////////////////////////////////////////////////////
-// EXTRUSION 
+// Extrusion routines
 
 void ProtudeXYZ (double &x, double &y, double &z, ExtrudeParams *e){
   double matrix[4][4];
@@ -1281,8 +1293,7 @@ void Extrude_ProtudeSurface(int type, int is,
   List_Reset(ListOfTransformedPoints);
 }
 
-/////////////////////////////////////////////////////////////////////////////////////
-// REMOVE DUPLICATES
+// Duplicate removal
 
 int compareTwoCurves (const void *a, const void *b){
   Curve *c1, *c2;
@@ -1559,8 +1570,8 @@ void ReplaceAllDuplicates(Mesh *m){
 }
 
 
-/////////////////////////////////////////////////////////////////////////////////////
-// INTERSECTIONS
+// Inetersection routines
+// FIXME: this codeis full of crap :-)
 
 /*
   S = (sx(u,v),sy(u,v),sz(u,v))
@@ -1576,10 +1587,22 @@ void ReplaceAllDuplicates(Mesh *m){
 static Curve *CURVE, *CURVE_2;
 static Surface *SURFACE;
 static Vertex *VERTEX;
-extern double min1d (int, double (*funct)(double), double *xmin);
 extern void newt(float x[], int n, int *check,
                  void (*vecfunc)(int, float [], float []));
 
+double min1d (double (*funct)(double), double *xmin){
+  double xx, fx, fb, fa, bx, ax;
+  double brent(double ax, double bx, double cx,
+              double (*f)(double), double tol, double *xmin);
+  void mnbrak(double *ax, double *bx, double *cx, double *fa, double *fb,
+                double *fc, double (*func)(double));
+
+ ax=1.e-15; xx=1.e-12;
+ mnbrak(&ax,&xx,&bx,&fa,&fx,&fb,funct);
+#define TOL 1.e-08
+ return( brent(ax,xx,bx,funct,TOL,xmin) );
+}
+
 static void intersectCS (int N, float x[], float res[]){
   //x[1] = u x[2] = v x[3] = w
   Vertex s,c;
@@ -1656,7 +1679,7 @@ bool ProjectPointOnCurve (Curve *c, Vertex *v, Vertex *RES, Vertex *DER){
   double xmin;
   CURVE = c;
   VERTEX = v;
-  min1d (0, projectPC, &xmin);
+  min1d (projectPC, &xmin);
   *RES = InterpolateCurve(CURVE,xmin,0);
   *DER = InterpolateCurve(CURVE,xmin,1);
   if(xmin > c->uend){
@@ -1712,7 +1735,7 @@ bool search_in_boundary (Surface *s, Vertex *p, double t, int Fixu,
   double xm;
   if(Fixu)xm = vmin;
   else xm = umin;
-  if(lmin > 1.e-3) min1d (0, projectPCS, &xm);
+  if(lmin > 1.e-3) min1d (projectPCS, &xm);
   if(Fixu){
     *uu = t;
     *vv = xm;
@@ -1942,5 +1965,4 @@ bool IntersectAllSegmentsTogether (void) {
 
 void IntersectSurfaces (Surface *s1, Surface *s2){
 
-
 }
diff --git a/Geo/CAD.h b/Geo/CAD.h
index f784ba2d7fde1d87c7ab9a910b4cde02437aad5e..48ed1668a8d8e2fd695c6e2608d0a9e39870429f 100644
--- a/Geo/CAD.h
+++ b/Geo/CAD.h
@@ -1,6 +1,22 @@
 #ifndef _CAD_H_
 #define _CAD_H_
 
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
 #include "Mesh.h"
 
 int NEWPOINT(void);
diff --git a/Geo/DataBase.cpp b/Geo/DataBase.cpp
index ab8740837285b80a73236083d5bfd1f0ead07620..bc0a4e6c2e7af22712a4e0d292a5e1ec53c28fbf 100644
--- a/Geo/DataBase.cpp
+++ b/Geo/DataBase.cpp
@@ -1,4 +1,20 @@
-// $Id: DataBase.cpp,v 1.18 2001-12-03 08:41:43 geuzaine Exp $
+// $Id: DataBase.cpp,v 1.19 2002-05-18 07:18:00 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 #include "Gmsh.h"
 #include "Numeric.h"
@@ -12,7 +28,7 @@
 extern Context_T  CTX ;
 extern Mesh      *THEM;
 
-/* POINTS */
+// Points
 
 void Cdbpts101(int ip, double x, double y, double z, double l, double w){
   Vertex *v;
@@ -26,7 +42,7 @@ void Cdbpts101(int ip, double x, double y, double z, double l, double w){
   Tree_Insert(THEM->Points,&v);
 }
 
-/* CURVES */
+// Curves
 
 void AddCurveInDataBase (int NumCurve, int TypCurve, int Order,
                          List_T *ControlPoints, List_T *Knots,
@@ -39,7 +55,7 @@ void AddCurveInDataBase (int NumCurve, int TypCurve, int Order,
   c = Create_Curve(NumCurve,TypCurve,Order,ControlPoints,Knots,
                    VertexBeg,VertexEnd,uBeg,uEnd);
 
-  /* Courbe dans l'autre sens */
+  // curve in reverse direction
   
   Curve *rc = CreateReversedCurve(THEM,c);
   Tree_Insert(THEM->Curves,&c);
@@ -60,7 +76,7 @@ void AddCircleInDataBase (int NumCurve, int TypCurve, List_T *ControlPoints,
   
   End_Curve(c);
 
-  /* Courbe dans l'autre sens */
+  // curve in reverse direction
   
   Curve *rc = CreateReversedCurve(THEM,c);
   
@@ -95,7 +111,7 @@ void Cdbseg101(int iseg, int typseg, int degre, List_T *liste, List_T *listint,
 }
 
 
-/* SURFACES AND VOLUMES */
+// Surfaces and volumes
 
 void AddQuadricSurfaceInDataBase (int Typ, int NumQuadric, double zaxis[3],
                                   double xaxis[3], double center[3],
@@ -146,7 +162,6 @@ void AddQuadricSurfaceInDataBase (int Typ, int NumQuadric, double zaxis[3],
 void CreateSurfaceFromOldCrappyDatabase (int izon, int typzon, int o1, int o2,
                                          int nbu, int nbv, int sup,
                                          List_T *liste, List_T *loops, Mesh *M){
-
   int      ic,i,j,l,NbLoop,iLoop;
   Surface *s,*pS;
   Curve   *c;
diff --git a/Geo/DataBase.h b/Geo/DataBase.h
index 2b4099027fd425e100dbd2c6a8fd06fc6cb0812d..6e8b8bb7d07fad3873b50083a9c10c2d75e6588d 100644
--- a/Geo/DataBase.h
+++ b/Geo/DataBase.h
@@ -1,6 +1,22 @@
 #ifndef _DATABASE_H_
 #define _DATABASE_H_
 
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
 void Cdbpts101 (int ip, double x, double y, double z, double l, double w);
 void Cdbpts105 (int ip, double x, double y, double z, double l, double w);
 void Cdbseg102 (int iseg, int ip, int newp);
diff --git a/Geo/ExtrudeParams.cpp b/Geo/ExtrudeParams.cpp
index f963805d6bf173cb150a02b0b6e1eee4d4f76936..f3e21de6478b3f6410995db51e0abaff6b9e0646 100644
--- a/Geo/ExtrudeParams.cpp
+++ b/Geo/ExtrudeParams.cpp
@@ -1,4 +1,20 @@
-// $Id: ExtrudeParams.cpp,v 1.7 2001-11-12 08:21:17 geuzaine Exp $
+// $Id: ExtrudeParams.cpp,v 1.8 2002-05-18 07:18:00 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 #include "Gmsh.h"
 #include "Geo.h"
diff --git a/Geo/ExtrudeParams.h b/Geo/ExtrudeParams.h
index d9ada870e9976a435556736a7f7f2679300a2f0c..4d9dbc5709cc69938a23141e88fbf57a1290b951 100644
--- a/Geo/ExtrudeParams.h
+++ b/Geo/ExtrudeParams.h
@@ -1,11 +1,27 @@
 #ifndef _EXTRUDE_PARAMS_H_
 #define _EXTRUDE_PARAMS_H_
 
-//geo.Mode
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+// geo.Mode
 #define EXTRUDED_ENTITY 1
 #define COPIED_ENTITY 2
 
-//geo.Type
+// geo.Type
 #define TRANSLATE 1
 #define ROTATE 2
 #define TRANSLATE_ROTATE 3
diff --git a/Geo/Geo.cpp b/Geo/Geo.cpp
index c359a14f682dc0dc3562379a866dda185f0727c0..6f38798c82f70e40b15179a3fa441e01082c5cc5 100644
--- a/Geo/Geo.cpp
+++ b/Geo/Geo.cpp
@@ -1,4 +1,20 @@
-// $Id: Geo.cpp,v 1.25 2002-04-06 00:59:48 geuzaine Exp $
+// $Id: Geo.cpp,v 1.26 2002-05-18 07:18:00 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 #include "Gmsh.h"
 #include "Numeric.h"
@@ -12,7 +28,7 @@ extern Context_T CTX ;
 
 #define BUFFSIZE 32000
 
-// Ceci, c'est horrible. 
+// This is truly horrible :-)
 
 char x_text[100]  = "0.0", y_text[100]  = "0.0", z_text[100]  = "0.0";
 char l_text[100] = "1.0" ;
@@ -37,7 +53,7 @@ double evaluate_scalarfunction (char *var, double val, char *funct){
     return 0.;
   }
 
-  /* On pose la variable = la fonction et on evalue la fonction */
+  // pose "variable = function" and evaluate function
 
   fprintf(yyin,"%s = %.16g ;\n",var,val);
   fprintf(yyin,"ValeurTemporaire__ = %s ;\n",funct);
@@ -80,7 +96,6 @@ void add_infile(char *text, char *fich){
   fclose(yyin);
   fprintf(file,"%s\n",text);
   fclose(file);
-  AddALineInTheEditGeometryForm (text);
 }
 
 void delet(int p1, char *fich, char *what){
diff --git a/Geo/Geo.h b/Geo/Geo.h
index cb421bc249d0cd46c9523664648066c45129ca6e..3a599c926dcd8f4f854f548bde90b880ff759cde 100644
--- a/Geo/Geo.h
+++ b/Geo/Geo.h
@@ -1,6 +1,22 @@
 #ifndef _GEO_H_
 #define _GEO_H_
 
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
 #define ELEMENTARY 1
 #define PHYSICAL   2
 
diff --git a/Geo/Makefile b/Geo/Makefile
index 38f1096b04570ced86d291f60b97f6b0dfaaad5d..7da6fbe6da27619a611fa754c5bbd7fc9452032b 100644
--- a/Geo/Makefile
+++ b/Geo/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.29 2002-05-18 00:55:14 geuzaine Exp $
+# $Id: Makefile,v 1.30 2002-05-18 07:18:00 geuzaine Exp $
 #
 # Makefile for "libGmshGeo.a"
 #
@@ -11,8 +11,8 @@ RANLIB  = ranlib
 RM      = rm
 
 LIB       = ../lib/libGmshGeo.a
-INCLUDE   = -I../Common -I../DataStr -I../Geo -I../Mesh -I../Parser\
-            -I../Fltk
+INCLUDE   = -I../Common -I../DataStr -I../Geo -I../Mesh -I../Numeric\
+            -I../Parser -I../Fltk
 
 OPT_FLAGS     = -g -Wall
 OS_FLAGS      = 
@@ -56,47 +56,47 @@ depend:
 	$(RM) $(RMFLAGS) Makefile.new
 
 # DO NOT DELETE THIS LINE
-CAD.o: CAD.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/Numeric.h Geo.h \
- ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
- ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Mesh/Matrix.h DataBase.h \
- ../Mesh/Interpolation.h ../Mesh/Create.h CAD.h ../Common/Context.h
+CAD.o: CAD.cpp ../Common/Gmsh.h ../Common/Message.h ../DataStr/Malloc.h \
+  ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \
+  ../Numeric/Numeric.h Geo.h ../Mesh/Mesh.h ../Mesh/Vertex.h \
+  ../Mesh/Simplex.h ../Mesh/Edge.h ../Geo/ExtrudeParams.h \
+  ../Mesh/Metric.h ../Mesh/Matrix.h DataBase.h ../Mesh/Interpolation.h \
+  ../Mesh/Create.h CAD.h ../Common/Context.h
 DataBase.o: DataBase.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/Numeric.h Geo.h \
- ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
- ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Mesh/Matrix.h CAD.h \
- ../Mesh/Create.h Verif.h ../Common/Context.h
+  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../DataStr/Tools.h ../Numeric/Numeric.h Geo.h \
+  ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
+  ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Mesh/Matrix.h CAD.h \
+  ../Mesh/Create.h Verif.h ../Common/Context.h
 MinMax.o: MinMax.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/Numeric.h \
- ../Mesh/Vertex.h ../Common/Context.h
-ExtrudeParams.o: ExtrudeParams.cpp ../Common/Gmsh.h \
- ../Common/Message.h ../DataStr/Malloc.h ../DataStr/List.h \
- ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h Geo.h CAD.h \
- ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
- ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Mesh/Matrix.h \
- ExtrudeParams.h
-Geo.o: Geo.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/Numeric.h Geo.h CAD.h \
- ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
- ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Mesh/Matrix.h DataBase.h \
- ../Parser/Parser.h ../Common/Context.h
+  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../DataStr/Tools.h ../Numeric/Numeric.h \
+  ../Mesh/Vertex.h ../Common/Context.h
+ExtrudeParams.o: ExtrudeParams.cpp ../Common/Gmsh.h ../Common/Message.h \
+  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../DataStr/Tools.h Geo.h CAD.h ../Mesh/Mesh.h \
+  ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
+  ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Mesh/Matrix.h \
+  ExtrudeParams.h
+Geo.o: Geo.cpp ../Common/Gmsh.h ../Common/Message.h ../DataStr/Malloc.h \
+  ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \
+  ../Numeric/Numeric.h Geo.h CAD.h ../Mesh/Mesh.h ../Mesh/Vertex.h \
+  ../Mesh/Simplex.h ../Mesh/Edge.h ../Geo/ExtrudeParams.h \
+  ../Mesh/Metric.h ../Mesh/Matrix.h DataBase.h ../Parser/Parser.h \
+  ../Common/Context.h
 StepGeomDatabase.o: StepGeomDatabase.cpp ../Common/Gmsh.h \
- ../Common/Message.h ../DataStr/Malloc.h ../DataStr/List.h \
- ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \
- ../Common/Numeric.h Geo.h StepGeomDatabase.h DataBase.h \
- ../Common/Context.h
+  ../Common/Message.h ../DataStr/Malloc.h ../DataStr/List.h \
+  ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \
+  ../Numeric/Numeric.h Geo.h StepGeomDatabase.h DataBase.h \
+  ../Common/Context.h
 Verif.o: Verif.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h Geo.h CAD.h ../Mesh/Mesh.h \
- ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
- ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Mesh/Matrix.h DataBase.h
+  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../DataStr/Tools.h Geo.h CAD.h ../Mesh/Mesh.h \
+  ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
+  ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Mesh/Matrix.h DataBase.h
 Print_Geo.o: Print_Geo.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h Geo.h ../Mesh/Mesh.h \
- ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
- ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Mesh/Matrix.h CAD.h \
- ../Common/Context.h
+  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../DataStr/Tools.h Geo.h ../Mesh/Mesh.h \
+  ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
+  ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Mesh/Matrix.h CAD.h \
+  ../Common/Context.h
diff --git a/Geo/MinMax.cpp b/Geo/MinMax.cpp
index a66d23f3e4a69a077ba8630f0148bce9de5701a7..191d58afe084b30f720cfba4abb02231cdd44d2e 100644
--- a/Geo/MinMax.cpp
+++ b/Geo/MinMax.cpp
@@ -1,4 +1,20 @@
-// $Id: MinMax.cpp,v 1.6 2001-08-11 23:28:31 geuzaine Exp $
+// $Id: MinMax.cpp,v 1.7 2002-05-18 07:18:00 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 #include "Gmsh.h"
 #include "Numeric.h"
@@ -7,10 +23,6 @@
 
 extern Context_T    CTX ;
 
-/* ------------------------------------------------------------------------ */
-/*  m i n m a x                                                             */
-/* ------------------------------------------------------------------------ */
-
 void minmax(void *a , void*b){
   Vertex *v;
   v = *(Vertex**)a;
@@ -106,7 +118,7 @@ void CalculateMinMax (Tree_T *t, double *bbox){
       CTX.lc_middle = CTX.range[2];
   }
 
-  /* CTX.lc_order : CTX.lc == f * 10^CTX.lc_order with -1<f<1  */
+  // CTX.lc_order : CTX.lc == f * 10^CTX.lc_order with -1<f<1 
 
   frac = frexp(CTX.lc, &exp);     
   CTX.lc_order = (int)floor(log10(ldexp(frac,exp)));
diff --git a/Geo/MinMax.h b/Geo/MinMax.h
index 0cf17cf830aec529d3fc16c788795850f26116de..2eea0873f29c1366139f27aaec00841c992f8ec2 100644
--- a/Geo/MinMax.h
+++ b/Geo/MinMax.h
@@ -1,6 +1,22 @@
 #ifndef _MINMAX_H_
 #define _MINMAX_H_
 
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
 void CalculateMinMax (Tree_T *t, double *bbox);
 
 #endif
diff --git a/Geo/Print_Geo.cpp b/Geo/Print_Geo.cpp
index 438ebcc72e9d2c668f4bf6baad8185e45a7f795d..8d43d681ebc0f6e514efc44dce5f8c72b67c715c 100644
--- a/Geo/Print_Geo.cpp
+++ b/Geo/Print_Geo.cpp
@@ -1,4 +1,20 @@
-// $Id: Print_Geo.cpp,v 1.24 2002-04-06 00:59:48 geuzaine Exp $
+// $Id: Print_Geo.cpp,v 1.25 2002-05-18 07:18:00 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 #include "Gmsh.h"
 #include "Geo.h"
diff --git a/Geo/StepGeomDatabase.cpp b/Geo/StepGeomDatabase.cpp
index c69a7a59784a78de5c04756dc78f9bb885a03399..fbf27aebeb94bf3b1a870ccb55d9359df92a272d 100644
--- a/Geo/StepGeomDatabase.cpp
+++ b/Geo/StepGeomDatabase.cpp
@@ -1,4 +1,20 @@
-// $Id: StepGeomDatabase.cpp,v 1.7 2002-04-06 00:59:48 geuzaine Exp $
+// $Id: StepGeomDatabase.cpp,v 1.8 2002-05-18 07:18:00 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 #include "Gmsh.h"
 #include "Numeric.h"
@@ -33,7 +49,7 @@ Step_Solid_BRep_t *Create_Step_Solid_BRep(void){
   return NEWBREP;
 }
 
-/*---------------- Directions --------------------------------------------*/
+// Directions
 
 void Add_Direction (int Num , char *name , double x, double y, double z ){
   Step_Direction_t Dir;
@@ -57,7 +73,7 @@ Step_Direction_t *Get_Direction (int Num){
   return (Step_Direction_t*)List_PQuery ( BREP->AllDirections,&Dir, comparedir );
 }
 
-/*---------------- Axis2_Placement3D--------------------------------------*/
+// Axis2_Placement3D
 
 void Add_Axis2_Placement3D (int Num, int dir1, int dir2, int ver){
   Step_Axis2_Placement3D_t Axe;
@@ -82,7 +98,7 @@ Step_Axis2_Placement3D_t *Get_Axis2_Placement3D (int Num){
                                                   &Axe, compareax );
 }
 
-/*---------------- Vectors -----------------------------------------------*/
+// Vectors
 
 void Add_Vector (int Num , char *name , int Dir, double l ){
   Step_Vector_t Vec;
@@ -105,7 +121,7 @@ Step_Vector_t *Get_Vector (int Num){
   return (Step_Vector_t*)List_PQuery ( BREP->AllVectors,&Vec, comparevec );
 }
 
-/*---------------- Cartesian_Points --------------------------------------*/
+// Cartesian_Points
 
 void Add_Cartesian_Point (int Num , char *name , double x, double y, double z){
   Step_Cartesian_Point_t CP;
@@ -131,7 +147,7 @@ Step_Cartesian_Point_t *Get_Cartesian_Point (int Num){
   return (Step_Cartesian_Point_t*)List_PQuery ( BREP->AllCartesian_Points,&CP, comparecp );
 }
 
-/*---------------- Vertex_Points -----------------------------------------*/
+// Vertex_Points
 
 void Add_Vertex_Point (int Num , char *name, int cp){
   Step_Vertex_Point_t VP;
@@ -152,7 +168,7 @@ Step_Vertex_Point_t *Get_Vertex_Point (int Num){
 }
 
 
-/*---------------- Curves ------------------------------------------------*/
+// Curves
 
 void Add_Line (int Num, char *name , int begin, int dir){
   Step_Curve_t Curve;
@@ -197,7 +213,7 @@ void Add_BSpline_Curve_With_Knots (int Num, char *name, int Order, List_T *lcp,
   Curve.Typ = STEP_BSPL;
   Curve.Curve.BSpline.ListOf_Knots = List_Create (List_Nbr(lcp) + Order + 1
                                                   ,1,sizeof(double));
-  /* Adding knots with their multiplicity */
+  // Adding knots with their multiplicity
   for(i=0;i<List_Nbr(multk);i++){
     List_Read(multk,i,&d);
     mult = (int)d;
@@ -229,7 +245,7 @@ Step_Curve_t *Get_Curve (int Num){
   return (Step_Curve_t*)List_PQuery ( BREP->AllCurves,&C, comparecur );
 }
 
-/*---------------- Edge_Curves -------------------------------------------*/
+// Edge_Curves
 
 void Add_Edge_Curve (int Num, char *name , int beg, int end, int curve ){
   Step_Edge_Curve_t EC;
@@ -252,7 +268,7 @@ Step_Edge_Curve_t *Get_Edge_Curve (int Num){
   return (Step_Edge_Curve_t*)List_PQuery ( BREP->AllEdge_Curves,&EC, compareec );
 }
 
-/*---------------- Oriented_Edges ----------------------------------------*/
+// Oriented_Edges
 
 void Add_Oriented_Edge (int Num, char *name , int ec, bool dir ){
   Step_Oriented_Edge_t OE;
@@ -274,7 +290,7 @@ Step_Oriented_Edge_t *Get_Oriented_Edge (int Num){
   return (Step_Oriented_Edge_t*)List_PQuery ( BREP->AllOriented_Edges,&OE, compareoe );
 }
 
-/*---------------- Edge_Loops --------------------------------------------*/
+// Edge_Loops
 
 void Add_Edge_Loop (int Num, char *name , List_T *list ){
   Step_Edge_Loop_t EL;
@@ -295,7 +311,7 @@ Step_Edge_Loop_t *Get_Edge_Loop (int Num){
   return (Step_Edge_Loop_t*)List_PQuery ( BREP->AllEdge_Loops,&EL, compareel );
 }
 
-/*---------------- Faces_Outer_Bounds ------------------------------------*/
+// Faces_Outer_Bounds
 
 void Add_Face_Outer_Bound (int Num, char *name , int el, bool dir, bool outer ){
   Step_Face_Outer_Bound_t F;
@@ -318,7 +334,7 @@ Step_Face_Outer_Bound_t *Get_Face_Outer_Bound (int Num){
   return (Step_Face_Outer_Bound_t*)List_PQuery ( BREP->AllFaces_Outer_Bound,&F, comparefab );
 }
 
-/*---------------- Advanced_Faces ----------------------------------------*/
+// Advanced_Faces
 
 void Add_Advanced_Face (int Num, char *name , List_T *el, int surf, bool dir ){
   Step_Advanced_Face_t F;
@@ -341,7 +357,7 @@ Step_Advanced_Face_t *Get_Advanced_Face (int Num){
   return (Step_Advanced_Face_t*)List_PQuery ( BREP->AllAdvanced_Faces,&F, compareaf );
 }
 
-/*---------------- Surfaces ----------------------------------------------*/
+// Surfaces
 
 void Add_Plane (int Num, char *name , int axis){
   Step_Surface_t Surface;
@@ -401,7 +417,7 @@ void Add_BSpline_Surface_With_Knots (int Num,char *name, int OrderU,int OrderV,
   Surface.Surface.BSpline.ListOf_KnotsV =
     List_Create (List_Nbr(lkv) + OrderV + 1,1,sizeof(double));
 
-  /* Adding knots with their multiplicity */
+  // Adding knots with their multiplicity
   for(i=0;i<List_Nbr(lmu);i++){
     List_Read(lmu,i,&d);
     mult = (int)d;
@@ -419,7 +435,7 @@ void Add_BSpline_Surface_With_Knots (int Num,char *name, int OrderU,int OrderV,
     }
   }
 
-  /*Adding the points !*/
+  // Adding the points !
   Surface.Surface.BSpline.ListOf_Cartesian_Points = lcp;
     
   Surface.Num = Num;
@@ -444,7 +460,7 @@ Step_Surface_t *Get_Surface (int Num){
   return (Step_Surface_t*)List_PQuery ( BREP->AllSurfaces,&S, comparesur );
 }
 
-/*---------------- Closed_Shells ----------------------------------------*/
+// Closed_Shells
 
 void Add_Closed_Shell (int Num, char *name , List_T *list ){
   Step_Closed_Shell_t S;
@@ -465,7 +481,7 @@ Step_Closed_Shell_t *Get_Closed_Shell (int Num){
   return (Step_Closed_Shell_t*)List_PQuery ( BREP->AllClosed_Shells,&F, comparecs );
 }
 
-/*---------------- Closed_Shells ----------------------------------------*/
+// Closed_Shells
 
 void Resolve_BREP (void){
   int i,j,k,l;
@@ -502,13 +518,13 @@ void Resolve_BREP (void){
   }
   CTX.lc = L = sqrt(SQR(XMIN-XMAX) + SQR(YMIN-YMAX) + SQR(ZMIN-ZMAX));
 
-  /* resolving cartesian_points */
+  // resolving cartesian_points
   for(i=0;i<List_Nbr(BREP->AllCartesian_Points);i++){
     List_Read(BREP->AllCartesian_Points,i,&cp);
     Cdbpts101(cp.Num,cp.Pos.X,cp.Pos.Y,cp.Pos.Z,L*.01,1);
   }
 
-  /* resolving vertex_points */
+  // resolving vertex_points
   for(i=0;i<List_Nbr(BREP->AllVertex_Points);i++){
     List_Read(BREP->AllVertex_Points,i,&vp);
     if((pcp = Get_Cartesian_Point(vp.Cartesian_Point))){
@@ -516,7 +532,7 @@ void Resolve_BREP (void){
     }
   }
 
-  /* resolving Edge_Curves*/
+  // resolving Edge_Curves
   for(i=0;i<List_Nbr(BREP->AllEdge_Curves);i++){
     List_Read(BREP->AllEdge_Curves,i,&ec);
     if((pc = Get_Curve(ec.Step_Curve))){
@@ -554,15 +570,14 @@ void Resolve_BREP (void){
         List_Add(ListInt,&ec.Step_Vertex_Point_End);
         AddCircleInDataBase ( ec.Num,MSH_SEGM_CIRC ,
                               ListInt,n);
-        /*Cdbseg101(ec.Num,MSH_SEGM_CIRC,1,NULL,
-          ListInt,-1,-1,0.,1.,NULL,NULL,NULL);
-          */
+        // Cdbseg101(ec.Num,MSH_SEGM_CIRC,1,NULL,
+	// ListInt,-1,-1,0.,1.,NULL,NULL,NULL);
         List_Reset(ListInt);
       }
     }
   }
 
-  /* resolving Surfaces */
+  // resolving Surfaces
   for(i=0;i<List_Nbr(BREP->AllSurfaces);i++){
     List_Read(BREP->AllSurfaces,i,&s);
     if(s.Typ == STEP_BSPL){
@@ -577,7 +592,7 @@ void Resolve_BREP (void){
     }
   }
 
-  /*resolving Advanced_Faces*/
+  // resolving Advanced_Faces
 
   for(i=0;i<List_Nbr(BREP->AllAdvanced_Faces);i++){
     err = 0;
@@ -650,7 +665,7 @@ void Resolve_BREP (void){
     List_Reset(ListIntBis);
   }
     
-  /*resolving closed shells (sheila)*/
+  // resolving closed shells (sheila)
   for(i=0;i<List_Nbr(BREP->AllClosed_Shells);i++){
     List_Reset(ListInt);
     List_Read(BREP->AllClosed_Shells,i,&cs);
diff --git a/Geo/StepGeomDatabase.h b/Geo/StepGeomDatabase.h
index 31cd2ff703f185bfab6a18557850dcc16f05d93d..3ca712e0112bc1de1a3e941bd8f8fed8a4208322 100644
--- a/Geo/StepGeomDatabase.h
+++ b/Geo/StepGeomDatabase.h
@@ -1,6 +1,22 @@
 #ifndef _STEP_GEOM_DATABASE_H_
 #define _STEP_GEOM_DATABASE_H_
 
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
 typedef struct{
   double X, Y, Z;
 } Step_Coord_t;
diff --git a/Geo/Verif.cpp b/Geo/Verif.cpp
index 4f187a409e239071fadd367111d9def4c38ef10c..cce541bca334ceba3a3b3757b03725f6e110ac92 100644
--- a/Geo/Verif.cpp
+++ b/Geo/Verif.cpp
@@ -1,4 +1,20 @@
-// $Id: Verif.cpp,v 1.9 2001-06-02 16:24:51 geuzaine Exp $
+// $Id: Verif.cpp,v 1.10 2002-05-18 07:18:01 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 #include "Gmsh.h"
 #include "Geo.h"
@@ -8,7 +24,7 @@
 
 extern Mesh *THEM;
 
-/* Contour extraction by a tree method */
+// Contour extraction by a tree method
 
 static Tree_T *treelink;
 static Tree_T *treeedges;
@@ -32,7 +48,7 @@ int complink(const void*a, const void*b){
 
 static int POINT_FINAL;
 static int CONTOUR_TROUVE;
-static List_T *VisitedNodes ; //geuz
+static List_T *VisitedNodes;
 
 void recur_trouvecont(int ip , int ed , List_T *Liste, int gauche , List_T *old ){
   lnk lk;
@@ -48,10 +64,10 @@ void recur_trouvecont(int ip , int ed , List_T *Liste, int gauche , List_T *old
       if(!old || List_Search(old,&a.a,fcmp_absint) || List_Nbr(lk.l) == 2){
         if(!gauche){
           List_Add(Liste,&a.a);
-          if(List_Search(VisitedNodes, &a.n, fcmp_absint)){//geuz
-            CONTOUR_TROUVE =1;//end geuz
-            return;//end geuz
-          }//geuz
+          if(List_Search(VisitedNodes, &a.n, fcmp_absint)){
+            CONTOUR_TROUVE =1;
+            return;
+          }
         }
         if(a.n == POINT_FINAL){
           CONTOUR_TROUVE = 1;
@@ -62,7 +78,7 @@ void recur_trouvecont(int ip , int ed , List_T *Liste, int gauche , List_T *old
         if(gauche){
           rev = -a.a;
           List_Add(Liste,&rev);
-          List_Add(VisitedNodes, &a.n); //geuz
+          List_Add(VisitedNodes, &a.n);
         }
       }
     }
@@ -188,12 +204,11 @@ void CreeLiens2 ( void ) {
 
 
 int alledgeslinked ( int ed , List_T *Liste , List_T *old){
-
   int ip1,ip2,i,rev;
   lnk lk;
   nxa a;
 
-  VisitedNodes = List_Create(20,20,sizeof(int)); //geuz
+  VisitedNodes = List_Create(20,20,sizeof(int));
 
   CreeLiens();
 
@@ -229,7 +244,7 @@ int alledgeslinked ( int ed , List_T *Liste , List_T *old){
     recur_trouvecont(ip2,ed,Liste,0,old);
   }
 
-  List_Delete(VisitedNodes); //geuz
+  List_Delete(VisitedNodes);
 
   return(CONTOUR_TROUVE);
 }
diff --git a/Geo/Verif.h b/Geo/Verif.h
index 24175399f0d346b38a035389cbd49f46c266c7ca..77a8d8d88298537b2334f6660efda0bb3668225c 100644
--- a/Geo/Verif.h
+++ b/Geo/Verif.h
@@ -1,6 +1,22 @@
 #ifndef _VERIF_H_
 #define _VERIF_H_
 
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
 int alledgeslinked (int ed, List_T * Liste, List_T * old);
 int allfaceslinked (int iz, List_T * Liste, List_T * old);
 
diff --git a/Graphics/Axes.cpp b/Graphics/Axes.cpp
index 79fa9bd0738cc4026de6198f9173e8896c3bc8fc..42afa8243e95be9f135717d6d8724c0a95c6ae65 100644
--- a/Graphics/Axes.cpp
+++ b/Graphics/Axes.cpp
@@ -1,4 +1,20 @@
-// $Id: Axes.cpp,v 1.13 2001-11-22 11:23:52 geuzaine Exp $
+// $Id: Axes.cpp,v 1.14 2002-05-18 07:18:01 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 #include "Gmsh.h"
 #include "GmshUI.h"
@@ -10,7 +26,6 @@
 
 extern Context_T   CTX;
 
-
 void Draw_Axes (double s) {
   double  f, g, b, c;
   
@@ -29,14 +44,14 @@ void Draw_Axes (double s) {
 
   glBegin(GL_LINES);
   if(CTX.range[2] != 0.){
-    /* X */
+    // X
     glVertex3d(0.,   0.,   0.);  
     glVertex3d(s,    0.,   0.);  
     glVertex3d(g-b,  b,    0.);  
     glVertex3d(g+b, -b,    0.);  
     glVertex3d(g,   -b,    b);  
     glVertex3d(g,    b,   -b);  
-    /* Y */
+    // Y
     glVertex3d(0.,   0.,   0.);  
     glVertex3d(0.,   s,    0.);  
     glVertex3d(-b,   g+b,  0.);  
@@ -45,7 +60,7 @@ void Draw_Axes (double s) {
     glVertex3d(0.,   g+b, -b);  
     glVertex3d(0.,   g,    0.);  
     glVertex3d(.5*b, g-b, .5*b);  
-    /* Z */
+    // Z
     glVertex3d(0.,   0.,   0.);  
     glVertex3d(0.,   0.,   s);  
     glVertex3d(-b,   b,    g);  
@@ -56,14 +71,14 @@ void Draw_Axes (double s) {
     glVertex3d(b,   -b,    g);  
   }
   else{
-    /* X */
+    // X
     glVertex3d(0.,   0.,   0.);  
     glVertex3d(s,    0.,   0.);  
     glVertex3d(g-c,  b,    0.);  
     glVertex3d(g+c, -b,    0.);  
     glVertex3d(g-c, -b,    0.);  
     glVertex3d(g+c,  b,    0.);  
-    /* Y */
+    // Y
     glVertex3d(0.,   0.,   0.);  
     glVertex3d(0.,   s,    0.);  
     glVertex3d(-c,   g+b,  0.);  
diff --git a/Graphics/CreateFile.cpp b/Graphics/CreateFile.cpp
index 7579786184ed4abbef3239cef23d8d529cb9df6d..3ca3e81b460e446ac8fa5fadd5515ec40b3e4890 100644
--- a/Graphics/CreateFile.cpp
+++ b/Graphics/CreateFile.cpp
@@ -1,4 +1,20 @@
-// $Id: CreateFile.cpp,v 1.27 2002-04-23 23:07:23 geuzaine Exp $
+// $Id: CreateFile.cpp,v 1.28 2002-05-18 07:18:01 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 #include "Gmsh.h"
 #include "GmshUI.h"
diff --git a/Graphics/CreateFile.h b/Graphics/CreateFile.h
index ed1b5660bb27e35078bd8ce05f262f91b04277bc..f606e18cba7738cb310aa782fd597ad4435272e6 100644
--- a/Graphics/CreateFile.h
+++ b/Graphics/CreateFile.h
@@ -1,6 +1,22 @@
 #ifndef _CREATE_FILE_H_
 #define _CREATE_FILE_H_
 
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
 void CreateOutputFile (char *name, int format) ;
 
 #endif
diff --git a/Graphics/Draw.cpp b/Graphics/Draw.cpp
index f07ea63d3bf5050a7e5f2f872e31256229a6aae4..96ce08ec186ab5b20f8d0a28740c585d1c7751e3 100644
--- a/Graphics/Draw.cpp
+++ b/Graphics/Draw.cpp
@@ -1,4 +1,20 @@
-// $Id: Draw.cpp,v 1.29 2002-03-31 00:50:39 geuzaine Exp $
+// $Id: Draw.cpp,v 1.30 2002-05-18 07:18:01 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 #include "Gmsh.h"
 #include "GmshUI.h"
@@ -11,9 +27,7 @@
 extern Context_T    CTX ;
 extern Mesh         M;
 
-/* ------------------------------------------------------------------------ */
-/*  d r a w                                                                 */
-/* ------------------------------------------------------------------------ */
+// Global Draw functions
 
 void Draw3d(void){
   int i;
@@ -74,9 +88,7 @@ void Draw2d(void){
   glPopMatrix();
 }
 
-/* ------------------------------------------------------------------------ */
-/*  o r t h o                                                               */
-/* ------------------------------------------------------------------------ */
+// Ortho
 
 void Orthogonalize(int x, int y){
   double Va,Wa;
@@ -131,13 +143,9 @@ void Orthogonalize(int x, int y){
 
 }
 
-/* ------------------------------------------------------------------------ */
-/*  i n i t                                                                 */
-/* ------------------------------------------------------------------------ */
+// Init
 
-
-void InitRenderModel(void)
-{
+void InitRenderModel(void){
   int i;
   float specular[4];
 
@@ -158,8 +166,7 @@ void InitRenderModel(void)
   glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, specular);
 }
 
-void InitShading()
-{
+void InitShading(){
   glEnable(GL_LIGHTING);
   glEnable(GL_NORMALIZE);
   glEnable(GL_COLOR_MATERIAL);
@@ -178,20 +185,14 @@ void InitPosition(void){
   glMultMatrixf(&(CTX.rot[0][0]));
 }
 
-/* ------------------------------------------------------------------------ */
-/*  r e p l o t                                                             */
-/* ------------------------------------------------------------------------ */
-
-/* n'est plus utilise que dans les cas ou des points peuvent etre
-   ajoutes dans la base de donnee -> dans cb_geom */
+// Replot
+// this should only be used when some new points get added in the db
 void Replot(void){
   CalculateMinMax(M.Points,NULL);
   Draw();
 }
 
-/* ------------------------------------------------------------------------ */
-/*  e n t i t y   s e l e c t i o n                                         */
-/* ------------------------------------------------------------------------ */
+// Entity selection
 
 void Process_SelectionBuffer(int x, int y, int *n, GLuint *ii, GLuint *jj){
   GLuint selectBuf[SELECTION_BUFFER_SIZE];
@@ -213,7 +214,7 @@ void Process_SelectionBuffer(int x, int y, int *n, GLuint *ii, GLuint *jj){
   hits = glRenderMode(GL_RENDER);
   CTX.render_mode = GMSH_RENDER ;
   
-  if(hits<0) return; /* Selection Buffer Overflow */
+  if(hits<0) return; // Selection Buffer Overflow
 
   ptr = (GLint*)selectBuf;
   
@@ -267,10 +268,8 @@ void Filter_SelectionBuffer(int n, GLuint *typ, GLuint *ient, Vertex **thev,
   }
 }
 
-/* ------------------------------------------------------------------------ */
-/*  z o o m                                                                 */
-/* ------------------------------------------------------------------------ */
-
+// Zoom
+// FIXME: this is notoriously wrong :-)
 
 void myZoom(GLdouble X1, GLdouble X2, GLdouble Y1, GLdouble Y2,
             GLdouble Xc1, GLdouble Xc2, GLdouble Yc1, GLdouble Yc2){
diff --git a/Graphics/Draw.h b/Graphics/Draw.h
index 02b4094327e2bee12113d46416b3aa072fe8d175..1941805c0cfd5d16194345ccd60336fef2cc3807 100644
--- a/Graphics/Draw.h
+++ b/Graphics/Draw.h
@@ -1,6 +1,22 @@
 #ifndef _DRAW_H_
 #define _DRAW_H_
 
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
 #include "Views.h"
 
 #define GMSH_RENDER    1
diff --git a/Graphics/Entity.cpp b/Graphics/Entity.cpp
index fc49732fb567abd6619a8d55d6fd269b29cddd79..cebadc542ffe07be2ca6c58dab79199e13407f17 100644
--- a/Graphics/Entity.cpp
+++ b/Graphics/Entity.cpp
@@ -1,4 +1,20 @@
-// $Id: Entity.cpp,v 1.12 2001-08-11 23:28:31 geuzaine Exp $
+// $Id: Entity.cpp,v 1.13 2002-05-18 07:18:01 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 #include "Gmsh.h"
 #include "GmshUI.h"
@@ -9,20 +25,12 @@
 
 extern Context_T   CTX;
 
-/* ------------------------------------------------------------------------ */
-/*  D r a w _ P o i n t                                                     */
-/* ------------------------------------------------------------------------ */
-
 void Draw_Point (double *x, double *y, double *z, double Raise[3][5]){
   glBegin(GL_POINTS);
   glVertex3d(x[0]+Raise[0][0], y[0]+Raise[1][0], z[0]+Raise[2][0]);
   glEnd();
 }
 
-/* ------------------------------------------------------------------------ */
-/*  D r a w _ L i n e                                                       */
-/* ------------------------------------------------------------------------ */
-
 void Draw_Line (double *x, double *y, double *z, double Raise[3][5]){
   glBegin(GL_LINES);
   glVertex3d(x[0]+Raise[0][0], y[0]+Raise[1][0], z[0]+Raise[2][0]);
@@ -30,10 +38,6 @@ void Draw_Line (double *x, double *y, double *z, double Raise[3][5]){
   glEnd();
 }
 
-/* ------------------------------------------------------------------------ */
-/*  D r a w _ T r i a n g l e                                               */
-/* ------------------------------------------------------------------------ */
-
 void Draw_Triangle (double *x, double *y, double *z, double *n,
                     double Raise[3][5], int shade){
 
@@ -73,10 +77,6 @@ void Draw_Triangle (double *x, double *y, double *z, double *n,
 
 }
 
-/* ------------------------------------------------------------------------ */
-/*  D r a w _ Q u a d r a n g l e                                           */
-/* ------------------------------------------------------------------------ */
-
 void Draw_Quadrangle (double *x, double *y, double *z, double *n,
                       double Raise[3][5], int shade){
   double x2[3]={x[2],x[3],x[0]};
@@ -102,10 +102,6 @@ void Draw_Quadrangle (double *x, double *y, double *z, double *n,
 
 }
 
-/* ------------------------------------------------------------------------ */
-/*  D r a w _ P o l y g o n                                                 */
-/* ------------------------------------------------------------------------ */
-
 void Draw_Polygon (int n, double *x, double *y, double *z,
                    double Raise[3][5]){
   int i;
@@ -117,10 +113,6 @@ void Draw_Polygon (int n, double *x, double *y, double *z,
   glEnd();
 }
 
-/* ------------------------------------------------------------------------ */
-/*  D r a w _ V e c t o r                                                   */
-/* ------------------------------------------------------------------------ */
-
 void Draw_Vector (int Type, int Fill, 
                   double x, double y, double z, 
                   double d, double dx, double dy, double dz,
diff --git a/Graphics/Geom.cpp b/Graphics/Geom.cpp
index 0b32055f424966d3408a36d67d0dda9501a835a9..b36e17f58b1854c141450c69dd54c7d8bd7edba4 100644
--- a/Graphics/Geom.cpp
+++ b/Graphics/Geom.cpp
@@ -1,4 +1,20 @@
-// $Id: Geom.cpp,v 1.34 2002-02-08 18:07:01 geuzaine Exp $
+// $Id: Geom.cpp,v 1.35 2002-05-18 07:18:01 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 #include "Gmsh.h"
 #include "GmshUI.h"
@@ -16,9 +32,7 @@
 extern Context_T  CTX;
 extern Mesh      *THEM;
 
-/* ------------------------------------------------------------------------ */
-/*  D r a w _ P o i n t                                                     */
-/* ------------------------------------------------------------------------ */
+// Points
 
 static int   Highlighted = 0; 
 
@@ -71,10 +85,7 @@ void Draw_GeoPoint (void *a, void *b){
 
 }
 
-/* ------------------------------------------------------------------------ */
-/*  D r a w _ C u r v e                                                     */
-/* ------------------------------------------------------------------------ */
-
+// Curves
 
 void Draw_Curve (void *a, void *b){
   int     i,N;
@@ -175,11 +186,7 @@ void Draw_Curve (void *a, void *b){
 
 }
 
-
-
-/* ------------------------------------------------------------------------ */
-/*  D r a w _ S u r f a c e                                                 */
-/* ------------------------------------------------------------------------ */
+// Surfaces
 
 void put_Z (Vertex *v, Surface *s){
   Vertex V;
@@ -550,10 +557,7 @@ void Draw_Surface (void *a, void *b){
 
 }
 
-
-/* ------------------------------------------------------------------------ */
-/*  D r a w _ V o l u m e                                                   */
-/* ------------------------------------------------------------------------ */
+// Volumes
 
 int TheVolume;
 
@@ -601,15 +605,9 @@ void Draw_Curve_For_Volume (void *a, void *b){
 
 void DrawVolumes (Mesh *m){
 
-
 }
 
-
-
-
-/* ------------------------------------------------------------------------ */
-/*  D r a w _ G e o m                                                       */
-/* ------------------------------------------------------------------------ */
+// Draw geometry
 
 void Draw_Geom (Mesh *m) {
 
@@ -650,10 +648,7 @@ void ZeroHighlight(Mesh *m){
   Tree_Action(m->Surfaces,ZeroSurface);
 }
 
-
-/* ------------------------------------------------------------------------ */
-/*  H i g h l i g h t                                                       */
-/* ------------------------------------------------------------------------ */
+// Highlight routines
 
 void BeginHighlight(void){
   if(CTX.geom.highlight){
@@ -680,7 +675,6 @@ void EndHighlight(int permanent){
 }
 
 void HighlightEntity(Vertex *v,Curve *c, Surface *s, int permanent){
-
   Curve *cc;
   char Message[256],temp[256];
   int i,nbg;
diff --git a/Graphics/Graph2D.cpp b/Graphics/Graph2D.cpp
index 555dc2e4ee7adfe95a34f5a9f33de32d799fc96b..5046c369b8d7136fb1c78ec77c23406278ed7bff 100644
--- a/Graphics/Graph2D.cpp
+++ b/Graphics/Graph2D.cpp
@@ -1,4 +1,20 @@
-// $Id: Graph2D.cpp,v 1.16 2001-12-03 08:41:43 geuzaine Exp $
+// $Id: Graph2D.cpp,v 1.17 2002-05-18 07:18:01 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 #include "Gmsh.h"
 #include "GmshUI.h"
@@ -11,9 +27,7 @@
 
 extern Context_T   CTX;
 
-/* ------------------------------------------------------------------------
-    2D graphics (gnuplot style)
-   ------------------------------------------------------------------------ */
+// 2D graphics (gnuplot style)
 
 static void getval(Post_View *v, int i, int j, double *p1, double *p2, 
 		   double *Abs, double *Val){
@@ -94,8 +108,8 @@ static void Draw_Graph2D(Post_View *v,
   }
   
   gl_font(FL_HELVETICA,CTX.gl_fontsize);
-  font_h = gl_height() ; // hauteur totale de la fonte
-  font_a = gl_height()-gl_descent() ; // hauteur de la fonte au dessus de pt de ref
+  font_h = gl_height() ; // total font height
+  font_a = gl_height()-gl_descent() ; // height above ref pt
 
   switch(v->RangeType){
   case DRAW_POST_DEFAULT : ValMin = v->Min ; ValMax = v->Max ; break;
@@ -346,7 +360,7 @@ void Draw_Graph2D(void){
 	if(gl_width(label)+tic > dx) dx = gl_width(label)+tic;
 	sprintf(label,v->Format,v->CustomMax);
 	if(gl_width(label)+tic > dx) dx = gl_width(label)+tic;
-	dy = 1.5*gl_height();//2 en dessous et 1 au dessus !
+	dy = 1.5*gl_height(); //2 below and & above!
       }
       if(!v->AutoPosition || !nbauto){
 	pos[0] = v->Position[0];
@@ -373,10 +387,7 @@ void Draw_Graph2D(void){
   }
 }
 
-
-/* ------------------------------------------------------------------------
-    2D text strings
-   ------------------------------------------------------------------------ */
+// 2D text strings
 
 // T2(x,y,style){"str","str",...};
 // T2D : x,y,style,index,x,y,style,index,...
diff --git a/Graphics/Iso.cpp b/Graphics/Iso.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..4654275117fdf613bfc0c6921509200cc070d379
--- /dev/null
+++ b/Graphics/Iso.cpp
@@ -0,0 +1,425 @@
+// $Id: Iso.cpp,v 1.11 2002-05-18 07:18:01 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+#include "Gmsh.h"
+#include "GmshUI.h"
+#include "Geo.h"
+#include "Mesh.h"
+#include "Draw.h"
+#include "Context.h"
+#include "Views.h"
+#include "Numeric.h"
+
+extern Context_T   CTX;
+
+void RaiseFill(int i, double Val, double ValMin, double Raise[3][5]);
+
+// Iso line computation for triangles.
+
+void CutTriangle1D(double *X, double *Y, double *Z, double *Val, 
+                   double V, double Vmin, double Vmax,
+                   double *Xp, double *Yp, double *Zp, int *nb){
+  
+  if(V != Vmax){
+    *nb = 0;
+    if((Val[0] > V && Val[1] <= V) || (Val[1] > V && Val[0] <= V)){
+      InterpolateIso(X,Y,Z,Val,V,0,1,&Xp[*nb],&Yp[*nb],&Zp[*nb]); (*nb)++;
+    }
+    if((Val[0] > V && Val[2] <= V) || (Val[2] > V && Val[0] <= V)){
+      InterpolateIso(X,Y,Z,Val,V,0,2,&Xp[*nb],&Yp[*nb],&Zp[*nb]); (*nb)++;
+    }
+    if((Val[1] > V && Val[2] <= V) || (Val[2] > V && Val[1] <= V)){
+      InterpolateIso(X,Y,Z,Val,V,1,2,&Xp[*nb],&Yp[*nb],&Zp[*nb]); (*nb)++;
+    }
+  }
+  else{
+    *nb = 0;
+    if((Val[0] < V && Val[1] >= V) || (Val[1] < V && Val[0] >= V)){
+      InterpolateIso(X,Y,Z,Val,V,0,1,&Xp[*nb],&Yp[*nb],&Zp[*nb]); (*nb)++;
+    }
+    if((Val[0] < V && Val[2] >= V) || (Val[2] < V && Val[0] >= V)){
+      InterpolateIso(X,Y,Z,Val,V,0,2,&Xp[*nb],&Yp[*nb],&Zp[*nb]); (*nb)++;
+    }       
+    if((Val[1] < V && Val[2] >= V) || (Val[2] < V && Val[1] >= V)){
+      InterpolateIso(X,Y,Z,Val,V,1,2,&Xp[*nb],&Yp[*nb],&Zp[*nb]); (*nb)++;
+    }
+  }
+
+}
+
+// Contour computation for triangles. FIXME: the orientation of the
+// newly created polygons is wrong.
+
+void CutTriangle2D(double *X, double *Y, double *Z, double *Val, 
+                   double V1, double V2, double Vmin, double Vmax,
+                   double *Xp2, double *Yp2, double *Zp2, int *Np2, double *Vp2){
+
+  int     i, io[3],j,iot,Np,Fl;
+  double  Xp[5],Yp[5],Zp[5],Vp[5];
+
+  *Np2 = 0;
+
+  for(i=0;i<3;i++) io[i] = i;
+
+  for(i=0;i<2;i++){
+    for(j=i+1;j<3;j++){
+      if(Val[io[i]]>Val[io[j]]){
+        iot = io[i];
+        io[i] = io[j];
+        io[j] = iot;
+      }
+    }
+  }
+
+  // io[] contains an indexing of nodes such that Val[io[i]] > Val[io[j]] if i > j
+
+  if(Val[io[0]] > V2) return;
+  if(Val[io[2]] < V1) return;
+
+  if(V1 <= Val[io[0]] && Val[io[2]] <= V2){
+    memcpy(Vp2,Val,3*sizeof(double));
+    memcpy(Xp2,X,3*sizeof(double)); 
+    memcpy(Yp2,Y,3*sizeof(double)); 
+    memcpy(Zp2,Z,3*sizeof(double)); 
+    *Np2 = 3;
+    return;
+  }
+
+  Np = 0;
+  if(V1<=Val[io[0]]){
+    Vp[Np] = Val[io[0]];
+    Xp[Np] = X[io[0]]; 
+    Yp[Np] = Y[io[0]]; 
+    Zp[Np] = Z[io[0]]; 
+    Np++; Fl = 1;
+  }
+  else if(Val[io[0]] < V1 && V1 <= Val[io[1]]){
+    Vp[Np] = V1;
+    InterpolateIso(X,Y,Z,Val,V1,io[0],io[2],&Xp[Np],&Yp[Np],&Zp[Np]); Np++; 
+    Vp[Np] = V1;
+    InterpolateIso(X,Y,Z,Val,V1,io[0],io[1],&Xp[Np],&Yp[Np],&Zp[Np]); Np++; Fl = 1;
+  }
+  else {
+    Vp[Np] = V1;
+    InterpolateIso(X,Y,Z,Val,V1,io[0],io[2],&Xp[Np],&Yp[Np],&Zp[Np]); Np++;
+    Vp[Np] = V1;
+    InterpolateIso(X,Y,Z,Val,V1,io[1],io[2],&Xp[Np],&Yp[Np],&Zp[Np]); Np++; Fl = 0;
+  }    
+
+  if(V2 == Val[io[0]]){
+    return;
+  }
+  else if((Val[io[0]]<V2) && ( V2 < Val[io[1]])){
+    Vp[Np] = V2;
+    InterpolateIso(X,Y,Z,Val,V2,io[0],io[1],&Xp[Np],&Yp[Np],&Zp[Np]); Np++;
+    Vp[Np] = V2;
+    InterpolateIso(X,Y,Z,Val,V2,io[0],io[2],&Xp[Np],&Yp[Np],&Zp[Np]); Np++;
+  }
+  else if(V2 < Val[io[2]]){
+    if(Fl){
+      Vp[Np] = Val[io[1]];
+      Xp[Np] = X[io[1]]; 
+      Yp[Np] = Y[io[1]]; 
+      Zp[Np] = Z[io[1]];
+      Np++;
+    }
+    Vp[Np] = V2;
+    InterpolateIso(X,Y,Z,Val,V2,io[1],io[2],&Xp[Np],&Yp[Np],&Zp[Np]); Np++;
+    Vp[Np] = V2;
+    InterpolateIso(X,Y,Z,Val,V2,io[0],io[2],&Xp[Np],&Yp[Np],&Zp[Np]); Np++;
+  }
+  else{
+    if(Fl){
+      Vp[Np] = Val[io[1]];
+      Xp[Np] = X[io[1]];
+      Yp[Np] = Y[io[1]]; 
+      Zp[Np] = Z[io[1]];
+      Np++;
+    }
+    Vp[Np] = Val[io[2]];
+    Xp[Np] = X[io[2]]; 
+    Yp[Np] = Y[io[2]]; 
+    Zp[Np] = Z[io[2]];
+    Np++;
+  }
+
+  Vp2[0] = Vp[0];
+  Xp2[0] = Xp[0]; 
+  Yp2[0] = Yp[0]; 
+  Zp2[0] = Zp[0]; 
+  *Np2 = 1;
+
+  for(i=1;i<Np;i++){
+    if((Xp[i] != Xp2[(*Np2)-1]) ||(Yp[i] != Yp2[(*Np2)-1]) ||(Zp[i] != Zp2[(*Np2)-1])){      
+      Vp2[*Np2] = Vp[i];
+      Xp2[*Np2] = Xp[i]; 
+      Yp2[*Np2] = Yp[i]; 
+      Zp2[*Np2] = Zp[i];
+      (*Np2)++;
+    }
+  }
+
+  if(Xp2[0] == Xp2[(*Np2)-1] && Yp2[0] == Yp2[(*Np2)-1] && Zp2[0] == Zp2[(*Np2)-1]){
+    (*Np2)-- ;
+  }
+
+}
+
+// Iso for lines
+
+void CutLine0D(double *X, double *Y, double *Z, double *Val, 
+               double V, double Vmin, double Vmax,
+               double *Xp, double *Yp, double *Zp, int *nb){
+  
+  *nb = 0;
+
+  if(V != Vmax){
+    if((Val[0] > V && Val[1] <= V) || (Val[1] > V && Val[0] <= V)){
+      InterpolateIso(X,Y,Z,Val,V,0,1,Xp,Yp,Zp); *nb = 1;
+    }
+  }
+  else{
+    if((Val[0] < V && Val[1] >= V) || (Val[1] < V && Val[0] >= V)){
+      InterpolateIso(X,Y,Z,Val,V,0,1,Xp,Yp,Zp); *nb = 1;
+    }
+  }
+}
+
+void CutLine1D(double *X, double *Y, double *Z, double *Val, 
+               double V1, double V2, double Vmin, double Vmax,
+               double *Xp2, double *Yp2, double *Zp2, int *Np2, double *Vp2){
+
+  int io[2];
+
+  if(Val[0]<Val[1]){
+    io[0] = 0;
+    io[1] = 1;
+  }
+  else{
+    io[0] = 1;
+    io[1] = 0;
+  }
+
+  // io[] contains an indexing of nodes such that Val[io[i]] > Val[io[j]] if i > j
+
+  *Np2 = 0;
+
+  if(Val[io[0]] > V2) return;
+  if(Val[io[1]] < V1) return;
+
+  *Np2 = 2;
+
+  if(V1 <= Val[io[0]] && Val[io[1]] <= V2){
+    memcpy(Vp2,Val,2*sizeof(double));
+    memcpy(Xp2,X,2*sizeof(double)); 
+    memcpy(Yp2,Y,2*sizeof(double)); 
+    memcpy(Zp2,Z,2*sizeof(double)); 
+    return;
+  }
+
+  if(V1<=Val[io[0]]){
+    Vp2[0] = Val[io[0]];
+    Xp2[0] = X[io[0]]; 
+    Yp2[0] = Y[io[0]]; 
+    Zp2[0] = Z[io[0]]; 
+  }
+  else{
+    Vp2[0] = V1;
+    InterpolateIso(X,Y,Z,Val,V1,io[0],io[1],&Xp2[0],&Yp2[0],&Zp2[0]);
+  }
+
+  if(V2>=Val[io[1]]){
+    Vp2[1] = Val[io[1]];
+    Xp2[1] = X[io[1]]; 
+    Yp2[1] = Y[io[1]]; 
+    Zp2[1] = Z[io[1]]; 
+  }
+  else{
+    Vp2[1] = V2;
+    InterpolateIso(X,Y,Z,Val,V2,io[0],io[1],&Xp2[1],&Yp2[1],&Zp2[1]);
+  }
+
+}
+
+// compute the gradient of a linear interpolation in a tetrahedron
+
+void EnhanceSimplexPolygon (Post_View *View,
+			    int nb, // nb of points in polygon 
+			    double *Xp, // x positions
+			    double *Yp, // y positions
+			    double *Zp, // z positions
+			    double *Valp, // values at points
+			    double *X, // x positions of the simplex
+			    double *Y, // y positions of the simplex
+			    double *Z, // z posistions of the simplex
+			    double *Val, // values at simplex points
+			    double *norms, // output : normals at points
+			    int preproNormals  // do we compute normals or do we get them
+			    ){
+  /*
+    3 possibilities for quads
+      -) 0,2,5,3
+      -) 0,1,5,4
+      -) 1,2,4,3
+      in all cases, simply invert the 2 last ones
+      for having the quads ordered      
+   */
+  int i;
+  double Xpi[6],Ypi[6],Zpi[6];
+
+  if(nb == 4){
+    double xx =  Xp[3];
+    double yy =  Yp[3];
+    double zz =  Zp[3];
+    Xp[3] = Xp[2]; 
+    Yp[3] = Yp[2]; 
+    Zp[3] = Zp[2];
+    Xp[2] = xx;
+    Yp[2] = yy;
+    Zp[2] = zz;
+  }
+
+  /*
+    for having a nice isosurface, we should have n . grad v > 0
+    n = normal to the polygon
+    v = unknown field we wanna draw
+   */
+
+  if(!View->Light){
+    norms = NULL; // we don't need to compute these
+    return;
+  }
+
+  double v1[3] = {Xp[2]-Xp[0],Yp[2]-Yp[0],Zp[2]-Zp[0]};
+  double v2[3] = {Xp[1]-Xp[0],Yp[1]-Yp[0],Zp[1]-Zp[0]};
+  double gr[3];
+  double n[3],xx;
+  prodve(v1,v2,n);
+  //norme(n);  not necessary since GL_NORMALIZE is enabled
+  gradSimplex(X,Y,Z,Val,gr);      
+  prosca(gr,n,&xx);
+  
+  if(xx > 0){
+    for(i=0;i<nb;i++){
+      Xpi[i] = Xp[i];
+      Ypi[i] = Yp[i];
+      Zpi[i] = Zp[i];
+    }
+    for(i=0;i<nb;i++){
+      Xp[i] = Xpi[nb-i-1];
+      Yp[i] = Ypi[nb-i-1];
+      Zp[i] = Zpi[nb-i-1];	      
+    }
+  }
+  else{
+    n[0] = -n[0];
+    n[1] = -n[1];
+    n[2] = -n[2];
+  }
+  
+  if(View->SmoothNormals){
+    if(preproNormals){
+      for(i=0;i<nb;i++){
+	View->add_normal(Xp[i],Yp[i],Zp[i],n[0],n[1],n[2]);
+      }
+      return;
+    }
+    else{
+      for(i=0;i<nb;i++){
+	norms[3*i] = n[0];
+	norms[3*i+1] = n[1];
+	norms[3*i+2] = n[2];
+	if(!View->get_normal(Xp[i],Yp[i],Zp[i],norms[3*i],norms[3*i+1],norms[3*i+2])){
+	  //Msg(WARNING, "Oups, did not find smoothed normal");
+	}	      
+      }	  
+    }
+  }
+  else{
+    for(i=0;i<nb;i++){
+      norms[3*i] = n[0];
+      norms[3*i+1] = n[1];
+      norms[3*i+2] = n[2];
+    }
+  }
+
+}
+
+void IsoSimplex( Post_View *View, 
+		 int preproNormals,
+		 double *X, double *Y, double *Z, double *Val, 
+		 double V, double Vmin, double Vmax, 
+		 double Raise[3][5]){
+  int    nb;
+  double Xp[6],Yp[6],Zp[6],PVals[6];
+  double norms[12];
+
+  if(V != Vmax){
+    nb = 0;
+    if((Val[0] > V && Val[1] <= V) || (Val[1] > V && Val[0] <= V)){
+      InterpolateIso(X,Y,Z,Val,V,0,1,&Xp[nb],&Yp[nb],&Zp[nb]); nb++;
+    }
+    if((Val[0] > V && Val[2] <= V) || (Val[2] > V && Val[0] <= V)){
+      InterpolateIso(X,Y,Z,Val,V,0,2,&Xp[nb],&Yp[nb],&Zp[nb]); nb++;
+    }
+    if((Val[0] > V && Val[3] <= V) || (Val[3] > V && Val[0] <= V)){
+      InterpolateIso(X,Y,Z,Val,V,0,3,&Xp[nb],&Yp[nb],&Zp[nb]); nb++;
+    }
+    if((Val[1] > V && Val[2] <= V) || (Val[2] > V && Val[1] <= V)){
+      InterpolateIso(X,Y,Z,Val,V,1,2,&Xp[nb],&Yp[nb],&Zp[nb]); nb++;
+    }
+    if((Val[1] > V && Val[3] <= V) || (Val[3] > V && Val[1] <= V)){
+      InterpolateIso(X,Y,Z,Val,V,1,3,&Xp[nb],&Yp[nb],&Zp[nb]); nb++;
+    }
+    if((Val[2] > V && Val[3] <= V) || (Val[3] > V && Val[2] <= V)){
+      InterpolateIso(X,Y,Z,Val,V,2,3,&Xp[nb],&Yp[nb],&Zp[nb]); nb++;
+    }
+  }
+  else{
+    nb=0;
+    if((Val[0] < V && Val[1] <= V) || (Val[1] < V && Val[0] <= V)){
+      InterpolateIso(X,Y,Z,Val,V,0,1,&Xp[nb],&Yp[nb],&Zp[nb]); nb++;
+    }
+    if((Val[0] < V && Val[2] <= V) || (Val[2] < V && Val[0] <= V)){
+      InterpolateIso(X,Y,Z,Val,V,0,2,&Xp[nb],&Yp[nb],&Zp[nb]); nb++;
+    }
+    if((Val[0] < V && Val[3] <= V) || (Val[3] < V && Val[0] <= V)){
+      InterpolateIso(X,Y,Z,Val,V,0,3,&Xp[nb],&Yp[nb],&Zp[nb]); nb++;
+    }
+    if((Val[1] < V && Val[2] <= V) || (Val[2] < V && Val[1] <= V)){
+      InterpolateIso(X,Y,Z,Val,V,1,2,&Xp[nb],&Yp[nb],&Zp[nb]); nb++;
+    }
+    if((Val[1] < V && Val[3] <= V) || (Val[3] < V && Val[1] <= V)){
+      InterpolateIso(X,Y,Z,Val,V,1,3,&Xp[nb],&Yp[nb],&Zp[nb]); nb++;
+    }
+    if((Val[2] < V && Val[3] <= V) || (Val[3] < V && Val[2] <= V)){
+      InterpolateIso(X,Y,Z,Val,V,2,3,&Xp[nb],&Yp[nb],&Zp[nb]); nb++;
+    }
+  }
+
+  if(nb < 3 || nb > 4) return;
+
+  EnhanceSimplexPolygon (View, nb, Xp, Yp, Zp, PVals, X, Y, Z, Val, norms, preproNormals);
+
+  if(preproNormals) return;
+
+  if(nb == 3) 
+    Draw_Triangle(Xp,Yp,Zp,norms,Raise,View->Light);
+  else if(nb == 4)
+    Draw_Quadrangle(Xp,Yp,Zp,norms,Raise,View->Light);  
+}
diff --git a/Graphics/Iso.h b/Graphics/Iso.h
new file mode 100644
index 0000000000000000000000000000000000000000..863a0462e86e343da47dcb16971789c8a4bb8963
--- /dev/null
+++ b/Graphics/Iso.h
@@ -0,0 +1,46 @@
+#ifndef _ISO_H_
+#define _ISO_H_
+
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+#include "Views.h"
+
+void CutTriangle1D (double *X, double *Y, double *Z, double *Val,
+                    double V, double Vmin, double Vmax,
+                    double *Xp, double *Yp, double *Zp, int *nb);
+
+void CutTriangle2D (double *X, double *Y, double *Z, double *Val,
+                    double V1, double V2, double Vmin, double Vmax,
+                    double *Xp, double *Yp, double *Zp, int *nb,
+                    double *value);
+
+void CutLine0D (double *X, double *Y, double *Z, double *Val,
+                double V, double Vmin, double Vmax,
+                double *Xp, double *Yp, double *Zp, int *nb);
+
+void CutLine1D (double *X, double *Y, double *Z, double *Val,
+                double V1, double V2, double Vmin, double Vmax,
+                double *Xp, double *Yp, double *Zp, int *nb,
+                double *value);
+
+void IsoSimplex (Post_View *View, 
+		 int preproNormals,
+		 double *X, double *Y, double *Z, double *Val,
+                 double V, double Vmin, double Vmax,
+                 double Raise[3][5]);
+  
+#endif
diff --git a/Graphics/IsoSimplex.cpp b/Graphics/IsoSimplex.cpp
deleted file mode 100644
index 1647fa3ec31ab8ebc99a92e4a23d97339e47b922..0000000000000000000000000000000000000000
--- a/Graphics/IsoSimplex.cpp
+++ /dev/null
@@ -1,182 +0,0 @@
-#include "Gmsh.h"
-#include "GmshUI.h"
-#include "Geo.h"
-#include "Mesh.h"
-#include "Draw.h"
-#include "Iso.h"
-#include "Context.h"
-#include "Views.h"
-#include "Numeric.h"
-
-extern Context_T   CTX;
-
-// compute the gradient of a linear interpolation in a tetrahedron
-
-
-void EnhanceSimplexPolygon (Post_View *View,
-			    int nb, // nb of points in polygon 
-			    double *Xp, // x positions
-			    double *Yp, // y positions
-			    double *Zp, // z positions
-			    double *Valp, // values at points
-			    double *X, // x positions of the simplex
-			    double *Y, // y positions of the simplex
-			    double *Z, // z posistions of the simplex
-			    double *Val, // values at simplex points
-			    double *norms, // output : normals at points
-			    int preproNormals  // do we compute normals or do we get them
-			    ){
-  /*
-    3 possibilities for quads
-      -) 0,2,5,3
-      -) 0,1,5,4
-      -) 1,2,4,3
-      in all cases, simply invert the 2 last ones
-      for having the quads ordered      
-   */
-  int i;
-  double Xpi[6],Ypi[6],Zpi[6];
-
-  if(nb == 4){
-    double xx =  Xp[3];
-    double yy =  Yp[3];
-    double zz =  Zp[3];
-    Xp[3] = Xp[2]; 
-    Yp[3] = Yp[2]; 
-    Zp[3] = Zp[2];
-    Xp[2] = xx;
-    Yp[2] = yy;
-    Zp[2] = zz;
-  }
-
-  /*
-    for having a nice isosurface, we should have n . grad v > 0
-    n = normal to the polygon
-    v = unknown field we wanna draw
-   */
-
-  if(!View->Light){
-    norms = NULL; // we don't need to compute these
-    return;
-  }
-
-  double v1[3] = {Xp[2]-Xp[0],Yp[2]-Yp[0],Zp[2]-Zp[0]};
-  double v2[3] = {Xp[1]-Xp[0],Yp[1]-Yp[0],Zp[1]-Zp[0]};
-  double gr[3];
-  double n[3],xx;
-  prodve(v1,v2,n);
-  //norme(n);  not necessary since GL_NORMALIZE is enabled
-  gradSimplex(X,Y,Z,Val,gr);      
-  prosca(gr,n,&xx);
-  
-  if(xx > 0){
-    for(i=0;i<nb;i++){
-      Xpi[i] = Xp[i];
-      Ypi[i] = Yp[i];
-      Zpi[i] = Zp[i];
-    }
-    for(i=0;i<nb;i++){
-      Xp[i] = Xpi[nb-i-1];
-      Yp[i] = Ypi[nb-i-1];
-      Zp[i] = Zpi[nb-i-1];	      
-    }
-  }
-  else{
-    n[0] = -n[0];
-    n[1] = -n[1];
-    n[2] = -n[2];
-  }
-  
-  if(View->SmoothNormals){
-    if(preproNormals){
-      for(i=0;i<nb;i++){
-	View->add_normal(Xp[i],Yp[i],Zp[i],n[0],n[1],n[2]);
-      }
-      return;
-    }
-    else{
-      for(i=0;i<nb;i++){
-	norms[3*i] = n[0];
-	norms[3*i+1] = n[1];
-	norms[3*i+2] = n[2];
-	if(!View->get_normal(Xp[i],Yp[i],Zp[i],norms[3*i],norms[3*i+1],norms[3*i+2])){
-	  //Msg(WARNING, "Oups, did not find smoothed normal");
-	}	      
-      }	  
-    }
-  }
-  else{
-    for(i=0;i<nb;i++){
-      norms[3*i] = n[0];
-      norms[3*i+1] = n[1];
-      norms[3*i+2] = n[2];
-    }
-  }
-
-}
-
-
-void IsoSimplex( Post_View *View, 
-		 int preproNormals,
-		 double *X, double *Y, double *Z, double *Val, 
-		 double V, double Vmin, double Vmax, 
-		 double Raise[3][5]){
-  int    nb;
-  double Xp[6],Yp[6],Zp[6],PVals[6];
-  double norms[12];
-
-  if(V != Vmax){
-    nb = 0;
-    if((Val[0] > V && Val[1] <= V) || (Val[1] > V && Val[0] <= V)){
-      InterpolateIso(X,Y,Z,Val,V,0,1,&Xp[nb],&Yp[nb],&Zp[nb]); nb++;
-    }
-    if((Val[0] > V && Val[2] <= V) || (Val[2] > V && Val[0] <= V)){
-      InterpolateIso(X,Y,Z,Val,V,0,2,&Xp[nb],&Yp[nb],&Zp[nb]); nb++;
-    }
-    if((Val[0] > V && Val[3] <= V) || (Val[3] > V && Val[0] <= V)){
-      InterpolateIso(X,Y,Z,Val,V,0,3,&Xp[nb],&Yp[nb],&Zp[nb]); nb++;
-    }
-    if((Val[1] > V && Val[2] <= V) || (Val[2] > V && Val[1] <= V)){
-      InterpolateIso(X,Y,Z,Val,V,1,2,&Xp[nb],&Yp[nb],&Zp[nb]); nb++;
-    }
-    if((Val[1] > V && Val[3] <= V) || (Val[3] > V && Val[1] <= V)){
-      InterpolateIso(X,Y,Z,Val,V,1,3,&Xp[nb],&Yp[nb],&Zp[nb]); nb++;
-    }
-    if((Val[2] > V && Val[3] <= V) || (Val[3] > V && Val[2] <= V)){
-      InterpolateIso(X,Y,Z,Val,V,2,3,&Xp[nb],&Yp[nb],&Zp[nb]); nb++;
-    }
-  }
-  else{
-    nb=0;
-    if((Val[0] < V && Val[1] <= V) || (Val[1] < V && Val[0] <= V)){
-      InterpolateIso(X,Y,Z,Val,V,0,1,&Xp[nb],&Yp[nb],&Zp[nb]); nb++;
-    }
-    if((Val[0] < V && Val[2] <= V) || (Val[2] < V && Val[0] <= V)){
-      InterpolateIso(X,Y,Z,Val,V,0,2,&Xp[nb],&Yp[nb],&Zp[nb]); nb++;
-    }
-    if((Val[0] < V && Val[3] <= V) || (Val[3] < V && Val[0] <= V)){
-      InterpolateIso(X,Y,Z,Val,V,0,3,&Xp[nb],&Yp[nb],&Zp[nb]); nb++;
-    }
-    if((Val[1] < V && Val[2] <= V) || (Val[2] < V && Val[1] <= V)){
-      InterpolateIso(X,Y,Z,Val,V,1,2,&Xp[nb],&Yp[nb],&Zp[nb]); nb++;
-    }
-    if((Val[1] < V && Val[3] <= V) || (Val[3] < V && Val[1] <= V)){
-      InterpolateIso(X,Y,Z,Val,V,1,3,&Xp[nb],&Yp[nb],&Zp[nb]); nb++;
-    }
-    if((Val[2] < V && Val[3] <= V) || (Val[3] < V && Val[2] <= V)){
-      InterpolateIso(X,Y,Z,Val,V,2,3,&Xp[nb],&Yp[nb],&Zp[nb]); nb++;
-    }
-  }
-
-  if(nb < 3 || nb > 4)return;
-
-  EnhanceSimplexPolygon (View, nb, Xp, Yp, Zp, PVals, X, Y, Z, Val, norms, preproNormals);
-
-  if(preproNormals)return;
-
-  if(nb == 3) 
-    Draw_Triangle(Xp,Yp,Zp,norms,Raise,View->Light);
-  else if(nb == 4)
-    Draw_Quadrangle(Xp,Yp,Zp,norms,Raise,View->Light);  
-}
-
diff --git a/Graphics/IsoSimplex.h b/Graphics/IsoSimplex.h
deleted file mode 100644
index 31eaab57bb85899a519faf4c8b49817c96be3001..0000000000000000000000000000000000000000
--- a/Graphics/IsoSimplex.h
+++ /dev/null
@@ -1,10 +0,0 @@
-#ifndef _ISOSIMPLEX_H_
-#define _ISOSIMPLEX_H_
-
-struct Post_View;
-void IsoSimplex (Post_View *View, 
-		 int preproNormals,
-		 double *X, double *Y, double *Z, double *Val,
-                 double V, double Vmin, double Vmax,
-                 double Raise[3][5]);
-#endif
diff --git a/Graphics/Makefile b/Graphics/Makefile
index 6d5fa8f03030073cce4680d3c46eda41e808814a..2828e93cf4c68076c41914f40ba219cf40b1aec6 100644
--- a/Graphics/Makefile
+++ b/Graphics/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.36 2002-05-18 00:55:14 geuzaine Exp $
+# $Id: Makefile,v 1.37 2002-05-18 07:18:01 geuzaine Exp $
 #
 # Makefile for "libGmshGraphics.a"
 #
@@ -11,16 +11,12 @@ RANLIB   = ranlib
 RM       = rm
 LIB      = ../lib/libGmshGraphics.a
 INCLUDE  = -I../Common -I../DataStr -I../Geo -I../Graphics\
-           -I../Fltk -I../Mesh -I../Parser -I../jpeg
+           -I../Fltk -I../Mesh -I../Numeric -I../Parser -I../jpeg
 
 OPT_FLAGS     = -g -Wall
 OS_FLAGS      = -D_LITTLE_ENDIAN
 VERSION_FLAGS = 
 
-GL_INCLUDE    = -I$(HOME)/SOURCES/Mesa-3.1/include\
-                -I$(HOME)/SOURCES/Mesa-3.1/include/GL
-GUI_INCLUDE   = 
-
 RMFLAGS  = -f
 CFLAGS   = $(OPT_FLAGS) $(OS_FLAGS) $(VERSION_FLAGS) $(INCLUDE)\
            $(GL_INCLUDE) $(GUI_INCLUDE)
@@ -30,7 +26,7 @@ SRC = Draw.cpp \
       Geom.cpp \
       Post.cpp \
       PostSimplex.cpp \
-      IsoSimplex.cpp \
+      Iso.cpp \
       Entity.cpp \
       Visibility.cpp \
       Scale.cpp \
@@ -70,104 +66,97 @@ depend:
 	$(RM) $(RMFLAGS) Makefile.new
 
 # DO NOT DELETE THIS LINE
-Draw.o: Draw.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h ../Geo/Geo.h \
- ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
- ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Mesh/Matrix.h Draw.h \
- ../Common/Views.h ../Common/ColorTable.h ../Common/Context.h \
- ../Geo/MinMax.h
-Mesh.o: Mesh.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h ../Geo/Geo.h \
- ../Geo/CAD.h ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h \
- ../Mesh/Edge.h ../Geo/ExtrudeParams.h ../Mesh/Metric.h \
- ../Mesh/Matrix.h Draw.h ../Common/Views.h ../Common/ColorTable.h \
- ../Common/Context.h ../Geo/MinMax.h gl2ps.h ../Geo/Verif.h \
- ../Common/Numeric.h
-Geom.o: Geom.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h \
- ../Common/Numeric.h ../Geo/Geo.h ../Mesh/Mesh.h ../Mesh/Vertex.h \
- ../Mesh/Simplex.h ../Mesh/Edge.h ../Geo/ExtrudeParams.h \
- ../Mesh/Metric.h ../Mesh/Matrix.h ../Mesh/Utils.h Draw.h \
- ../Common/Views.h ../Common/ColorTable.h ../Common/Context.h \
- ../Geo/Verif.h ../Mesh/Interpolation.h ../Mesh/STL.h gl2ps.h
-Post.o: Post.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h \
- ../Common/Numeric.h ../Geo/Geo.h ../Mesh/Mesh.h ../Mesh/Vertex.h \
- ../Mesh/Simplex.h ../Mesh/Edge.h ../Geo/ExtrudeParams.h \
- ../Mesh/Metric.h ../Mesh/Matrix.h Draw.h ../Common/Views.h \
- ../Common/ColorTable.h ../Common/Context.h gl2ps.h
+Draw.o: Draw.cpp ../Common/Gmsh.h ../Common/Message.h ../DataStr/Malloc.h \
+  ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \
+  ../Common/GmshUI.h ../Geo/Geo.h ../Mesh/Mesh.h ../Mesh/Vertex.h \
+  ../Mesh/Simplex.h ../Mesh/Edge.h ../Geo/ExtrudeParams.h \
+  ../Mesh/Metric.h ../Mesh/Matrix.h Draw.h ../Common/Views.h \
+  ../Common/ColorTable.h ../Common/Context.h ../Geo/MinMax.h
+Mesh.o: Mesh.cpp ../Common/Gmsh.h ../Common/Message.h ../DataStr/Malloc.h \
+  ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \
+  ../Common/GmshUI.h ../Geo/Geo.h ../Geo/CAD.h ../Mesh/Mesh.h \
+  ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
+  ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Mesh/Matrix.h Draw.h \
+  ../Common/Views.h ../Common/ColorTable.h ../Common/Context.h \
+  ../Geo/MinMax.h gl2ps.h ../Geo/Verif.h ../Numeric/Numeric.h
+Geom.o: Geom.cpp ../Common/Gmsh.h ../Common/Message.h ../DataStr/Malloc.h \
+  ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \
+  ../Common/GmshUI.h ../Numeric/Numeric.h ../Geo/Geo.h ../Mesh/Mesh.h \
+  ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
+  ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Mesh/Matrix.h \
+  ../Mesh/Utils.h Draw.h ../Common/Views.h ../Common/ColorTable.h \
+  ../Common/Context.h ../Geo/Verif.h ../Mesh/Interpolation.h \
+  ../Mesh/STL.h gl2ps.h
+Post.o: Post.cpp ../Common/Gmsh.h ../Common/Message.h ../DataStr/Malloc.h \
+  ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \
+  ../Common/GmshUI.h ../Numeric/Numeric.h ../Geo/Geo.h ../Mesh/Mesh.h \
+  ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
+  ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Mesh/Matrix.h Draw.h \
+  ../Common/Views.h ../Common/ColorTable.h ../Common/Context.h gl2ps.h
 PostSimplex.o: PostSimplex.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h ../Geo/Geo.h \
- ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
- ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Mesh/Matrix.h Draw.h \
- ../Common/Views.h ../Common/ColorTable.h ../Common/Iso.h IsoSimplex.h \
- ../Common/Context.h ../Common/Numeric.h
-IsoSimplex.o: IsoSimplex.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h ../Geo/Geo.h \
- ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
- ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Mesh/Matrix.h Draw.h \
- ../Common/Views.h ../Common/ColorTable.h ../Common/Iso.h \
- ../Common/Context.h ../Common/Numeric.h
+  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h ../Geo/Geo.h \
+  ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
+  ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Mesh/Matrix.h Draw.h \
+  ../Common/Views.h ../Common/ColorTable.h Iso.h ../Common/Context.h \
+  ../Numeric/Numeric.h
+Iso.o: Iso.cpp ../Common/Gmsh.h ../Common/Message.h ../DataStr/Malloc.h \
+  ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \
+  ../Common/GmshUI.h ../Geo/Geo.h ../Mesh/Mesh.h ../Mesh/Vertex.h \
+  ../Mesh/Simplex.h ../Mesh/Edge.h ../Geo/ExtrudeParams.h \
+  ../Mesh/Metric.h ../Mesh/Matrix.h Draw.h ../Common/Views.h \
+  ../Common/ColorTable.h ../Common/Context.h ../Numeric/Numeric.h
 Entity.o: Entity.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h \
- ../Common/Numeric.h ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h \
- ../Mesh/Edge.h ../Geo/ExtrudeParams.h ../Mesh/Metric.h \
- ../Mesh/Matrix.h Draw.h ../Common/Views.h ../Common/ColorTable.h \
- ../Common/Context.h
+  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h \
+  ../Numeric/Numeric.h ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h \
+  ../Mesh/Edge.h ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Mesh/Matrix.h \
+  Draw.h ../Common/Views.h ../Common/ColorTable.h ../Common/Context.h
 Visibility.o: Visibility.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Geo/Geo.h ../Geo/CAD.h \
- ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
- ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Mesh/Matrix.h \
- ../Geo/DataBase.h ../Parser/Parser.h Visibility.h
+  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../DataStr/Tools.h ../Geo/Geo.h ../Geo/CAD.h \
+  ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
+  ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Mesh/Matrix.h \
+  ../Geo/DataBase.h ../Parser/Parser.h Visibility.h
 Scale.o: Scale.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h \
- ../Common/Numeric.h ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h \
- ../Mesh/Edge.h ../Geo/ExtrudeParams.h ../Mesh/Metric.h \
- ../Mesh/Matrix.h Draw.h ../Common/Views.h ../Common/ColorTable.h \
- ../Common/Context.h gl2ps.h
+  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h \
+  ../Numeric/Numeric.h ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h \
+  ../Mesh/Edge.h ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Mesh/Matrix.h \
+  Draw.h ../Common/Views.h ../Common/ColorTable.h ../Common/Context.h \
+  gl2ps.h
 Graph2D.o: Graph2D.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h \
- ../Common/Context.h ../Common/Numeric.h ../Mesh/Mesh.h \
- ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
- ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Mesh/Matrix.h Draw.h \
- ../Common/Views.h ../Common/ColorTable.h gl2ps.h
-Axes.o: Axes.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h \
- ../Common/Numeric.h ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h \
- ../Mesh/Edge.h ../Geo/ExtrudeParams.h ../Mesh/Metric.h \
- ../Mesh/Matrix.h Draw.h ../Common/Views.h ../Common/ColorTable.h \
- ../Common/Context.h gl2ps.h
+  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h \
+  ../Common/Context.h ../Numeric/Numeric.h ../Mesh/Mesh.h \
+  ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
+  ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Mesh/Matrix.h Draw.h \
+  ../Common/Views.h ../Common/ColorTable.h gl2ps.h
+Axes.o: Axes.cpp ../Common/Gmsh.h ../Common/Message.h ../DataStr/Malloc.h \
+  ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \
+  ../Common/GmshUI.h ../Numeric/Numeric.h ../Mesh/Mesh.h ../Mesh/Vertex.h \
+  ../Mesh/Simplex.h ../Mesh/Edge.h ../Geo/ExtrudeParams.h \
+  ../Mesh/Metric.h ../Mesh/Matrix.h Draw.h ../Common/Views.h \
+  ../Common/ColorTable.h ../Common/Context.h gl2ps.h
 CreateFile.o: CreateFile.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h ../Mesh/Mesh.h \
- ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
- ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Mesh/Matrix.h \
- ../Parser/OpenFile.h Draw.h ../Common/Views.h ../Common/ColorTable.h \
- ../Common/Context.h ../Common/Options.h gl2ps.h gl2gif.h gl2jpeg.h \
- gl2ppm.h gl2yuv.h
+  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h ../Mesh/Mesh.h \
+  ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
+  ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Mesh/Matrix.h \
+  ../Parser/OpenFile.h Draw.h ../Common/Views.h ../Common/ColorTable.h \
+  ../Common/Context.h ../Common/Options.h gl2ps.h gl2gif.h gl2jpeg.h \
+  gl2ppm.h gl2yuv.h
 gl2ps.o: gl2ps.cpp gl2ps.h
 gl2gif.o: gl2gif.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h gl2gif.h
+  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h gl2gif.h
 gl2jpeg.o: gl2jpeg.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h \
- ../jpeg/jpeglib.h ../jpeg/jconfig.h ../jpeg/jmorecfg.h \
- ../jpeg/jerror.h
+  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h \
+  ../jpeg/jpeglib.h ../jpeg/jconfig.h ../jpeg/jmorecfg.h ../jpeg/jerror.h
 gl2ppm.o: gl2ppm.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h
+  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h
 gl2yuv.o: gl2yuv.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h
+  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../DataStr/Tools.h ../Common/GmshUI.h
diff --git a/Graphics/Mesh.cpp b/Graphics/Mesh.cpp
index 8302d60c4e902f41d830b833e64779cc29d60974..7c6752e9a908d63a43ec09549330d2cb2a1f0523 100644
--- a/Graphics/Mesh.cpp
+++ b/Graphics/Mesh.cpp
@@ -1,4 +1,20 @@
-// $Id: Mesh.cpp,v 1.48 2002-03-12 19:07:32 geuzaine Exp $
+// $Id: Mesh.cpp,v 1.49 2002-05-18 07:18:02 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 #include "Gmsh.h"
 #include "GmshUI.h"
@@ -15,11 +31,6 @@
 extern Mesh      *THEM;
 extern Context_T  CTX;
 
-/* ------------------------------------------------------------------------ */
-/*  D r a w _ M e s h                                                       */
-/* ------------------------------------------------------------------------ */
-
-
 void draw_polygon_2d (double r, double g, double b, int n, 
                       double *x, double *y, double *z){
   int i ;
@@ -157,8 +168,8 @@ void Draw_Mesh_Volumes(void *a, void *b){
   v = *(Volume**)a;
   iColor++;
   theColor = v->Color;
-  // Ceci est la bonne methode, mais ne marchera que qd on aura une
-  // structure coherente poue les volumes
+  // FIXME: this is the correct method, but will only work when a
+  // coherent datastruct exists for volumes
   // if(!(v->Visible & VIS_MESH)) return;
   Tree_Action(v->Simplexes, Draw_Simplex_Volume);
   Tree_Action(v->Hexahedra, Draw_Hexahedron_Volume);
@@ -233,9 +244,7 @@ void Draw_Mesh_Points (void *a, void *b){
   }
 }
 
-/* ------------------------------------------------------------------------ */
-/*  D r a w _ S i m p l e x                                                 */
-/* ------------------------------------------------------------------------ */
+// Draw simplex
 
 void Draw_Simplex_Volume (void *a, void *b){
   Simplex *s;
@@ -247,7 +256,7 @@ void Draw_Simplex_Volume (void *a, void *b){
 
   if(!s->V[3] || !(s->Visible & VIS_MESH)) return;
 
-  // a enlever des qu'on a une structure correcte pour les volumes
+  // FIXME: remove as soon as a coherent structure exists for volumes
   Volume *V; if((V = FindVolume(s->iEnt,THEM)) && !(V->Visible & VIS_MESH)) return;
 
   if(CTX.mesh.gamma_sup){
@@ -656,11 +665,6 @@ void Draw_Simplex_Curves(void *a,void *b){
 
 }
 
-
-/* ------------------------------------------------------------------------ */
-/*  D r a w _ H e x a e d r o n                                             */
-/* ------------------------------------------------------------------------ */
-
 void Draw_Hexahedron_Volume (void *a, void *b){
   Hexahedron *h;
   int i ;
@@ -671,7 +675,7 @@ void Draw_Hexahedron_Volume (void *a, void *b){
 
   if(!(h->Visible & VIS_MESH)) return ;
 
-  // a enlever des qu'on a une structure correcte pour les volumes
+  // FIXME: remove as soon as a coherent structure exists for volumes
   Volume *V; if((V = FindVolume(h->iEnt,THEM)) && !(V->Visible & VIS_MESH)) return;
 
   for(i=0 ; i<8 ; i++){
@@ -773,10 +777,6 @@ void Draw_Hexahedron_Volume (void *a, void *b){
 
 }
 
-/* ------------------------------------------------------------------------ */
-/*  D r a w _ P r i s m                                                     */
-/* ------------------------------------------------------------------------ */
-
 void Draw_Prism_Volume (void *a, void *b){
   Prism *p;
   int i ;
@@ -787,7 +787,7 @@ void Draw_Prism_Volume (void *a, void *b){
 
   if(!(p->Visible & VIS_MESH)) return ;
 
-  // a enlever des qu'on a une structure correcte pour les volumes
+  // FIXME: remove as soon as a coherent structure exists for volumes
   Volume *V; if((V = FindVolume(p->iEnt,THEM)) && !(V->Visible & VIS_MESH)) return;
 
   for(i=0 ; i<6 ; i++){
@@ -879,10 +879,6 @@ void Draw_Prism_Volume (void *a, void *b){
 
 }
 
-/* ------------------------------------------------------------------------ */
-/*  D r a w _ P y r a m i d                                                 */
-/* ------------------------------------------------------------------------ */
-
 void Draw_Pyramid_Volume (void *a, void *b){
   Pyramid *p;
   int i ;
@@ -893,7 +889,7 @@ void Draw_Pyramid_Volume (void *a, void *b){
 
   if(!(p->Visible & VIS_MESH)) return ;
 
-  // a enlever des qu'on a une structure correcte pour les volumes
+  // FIXME: remove as soon as a coherent structure exists for volumes
   Volume *V; if((V = FindVolume(p->iEnt,THEM)) && !(V->Visible & VIS_MESH)) return;
 
   for(i=0 ; i<5 ; i++){
diff --git a/Graphics/Post.cpp b/Graphics/Post.cpp
index 94e77fb5a82cbc400feba86b878d2c75a102d15b..00b91103a096a3b3e50652eba1482b62be62d956 100644
--- a/Graphics/Post.cpp
+++ b/Graphics/Post.cpp
@@ -1,4 +1,20 @@
-// $Id: Post.cpp,v 1.32 2002-02-13 09:20:41 stainier Exp $
+// $Id: Post.cpp,v 1.33 2002-05-18 07:18:02 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 #include "Gmsh.h"
 #include "GmshUI.h"
@@ -15,9 +31,7 @@ extern Context_T   CTX;
 static double      Raise[3][5];
 static double      RaiseFactor[3];
 
-/* ------------------------------------------------------------------------
-    Give Value from Index
-   ------------------------------------------------------------------------ */
+// Give Value from Index
 
 double GiveValueFromIndex_Lin(double ValMin, double ValMax, int NbIso, int Iso){
   if(NbIso==1) return (ValMax+ValMin)/2.;
@@ -41,9 +55,7 @@ double GiveValueFromIndex_DoubleLog(double ValMin, double ValMax, int NbIso, int
 
 }
 
-/* ------------------------------------------------------------------------
-    Give Index From Value
-   ------------------------------------------------------------------------ */
+// Give Index From Value
 
 int GiveIndexFromValue_Lin(double ValMin, double ValMax, int NbIso, double Val){
   if(ValMin==ValMax) return NbIso/2 ;
@@ -63,9 +75,7 @@ int GiveIndexFromValue_DoubleLog(double ValMin, double ValMax, int NbIso, double
 }
 
 
-/* ------------------------------------------------------------------------
-    Color Palette
-   ------------------------------------------------------------------------ */
+// Color Palette
 
 void Palette1(Post_View *v, int nbi, int i){ /* i in [0,nbi-1] */
   int index ;
@@ -93,9 +103,7 @@ void RaiseFill(int i, double Val, double ValMin, double Raise[3][5]){
 }
 
 
-/* ------------------------------------------------------------------------ 
-    D r a w _ P o s t                                                       
-   ------------------------------------------------------------------------ */
+// Draw Post routines
 
 void Free_DisplayLists(void){
   Post_View     *v;
diff --git a/Graphics/PostSimplex.cpp b/Graphics/PostSimplex.cpp
index ed7d3e0d714b51d0fd57a67012196dcd6dc05ddb..e2629b9d89be15be9e0df2154f66e2ce7f5dbdfc 100644
--- a/Graphics/PostSimplex.cpp
+++ b/Graphics/PostSimplex.cpp
@@ -1,4 +1,20 @@
-// $Id: PostSimplex.cpp,v 1.33 2002-03-10 23:23:33 remacle Exp $
+// $Id: PostSimplex.cpp,v 1.34 2002-05-18 07:18:02 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 #include "Gmsh.h"
 #include "GmshUI.h"
@@ -6,7 +22,6 @@
 #include "Mesh.h"
 #include "Draw.h"
 #include "Iso.h"
-#include "IsoSimplex.h"
 #include "Context.h"
 #include "Numeric.h"
 
@@ -52,9 +67,7 @@ void Draw_Simplex(Post_View *View, int nbnod, double *X, double *Y, double *Z,
 }
 
 
-/* ------------------------------------------------------------------------ */
-/*  Scalar Simplices                                                        */
-/* ------------------------------------------------------------------------ */
+// Scalar Simplices
 
 void Draw_ScalarPoint(Post_View *View, 
 		      double ValMin, double ValMax, double Raise[3][5],
@@ -431,9 +444,7 @@ void Draw_ScalarTetrahedron(Post_View *View, int preproNormals,
 
 }
 
-/* ------------------------------------------------------------------------ */
-/*  Vector Simplices                                                        */
-/* ------------------------------------------------------------------------ */
+// Vector Simplices
 
 void Draw_VectorSimplex(int nbnod, Post_View *View, 
 			double ValMin, double ValMax, double Raise[3][5],
@@ -564,9 +575,7 @@ void Draw_VectorTetrahedron(Post_View *View,
 }
 
 
-/* ------------------------------------------------------------------------ */
-/*  Tensor Simplices                                                        */
-/* ------------------------------------------------------------------------ */
+// Tensor Simplices
 
 static int TensorError = 0 ;
 
diff --git a/Graphics/Scale.cpp b/Graphics/Scale.cpp
index a91048edac58824ed3f772b7f699a3eaaecb1b5b..57a6adffcfaede56328de3a62d43b86e65de924f 100644
--- a/Graphics/Scale.cpp
+++ b/Graphics/Scale.cpp
@@ -1,4 +1,20 @@
-// $Id: Scale.cpp,v 1.28 2002-02-13 09:20:41 stainier Exp $
+// $Id: Scale.cpp,v 1.29 2002-05-18 07:18:02 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 #include "Gmsh.h"
 #include "GmshUI.h"
@@ -11,12 +27,8 @@
 
 extern Context_T   CTX;
 
-/* Even if all computations in these routines are made in window
-   coordinates, double precision is used to work at subpixel accuracy */
-
-/* ------------------------------------------------------------------------ */
-/*  D r a w _ S c a l e                                                     */
-/* ------------------------------------------------------------------------ */
+// Even if all computations in these routines are made in window
+// coordinates, double precision is used to work at subpixel accuracy
 
 extern double GiveValueFromIndex_Lin(double ValMin, double ValMax, int NbIso, int Iso);
 extern double GiveValueFromIndex_Log(double ValMin, double ValMax, int NbIso, int Iso);
@@ -34,8 +46,8 @@ void draw_scale(Post_View *v,
   double    Val, ValMin, ValMax;
 
   gl_font(FL_HELVETICA,CTX.gl_fontsize);
-  font_h  = gl_height() ;              // hauteur totale de la fonte
-  font_a  = gl_height()-gl_descent() ; // hauteur de la fonte au dessus de pt de ref
+  font_h  = gl_height() ;              // total font height
+  font_a  = gl_height()-gl_descent() ; // height above ref pt
   cs_bh   = height/(v->NbIso?v->NbIso:1) ; // colorscale box height
   cv_xmin = xmin+width+tic ;  // valuescale xmin
 
@@ -184,7 +196,7 @@ void Draw_Scales(void){
 
   if(!CTX.post.list) return;
 
-  /* scales to draw ? */
+  // scales to draw?
   
   if(!todraw)
     todraw = List_Create(5,5,sizeof(Post_View*));
diff --git a/Graphics/Visibility.cpp b/Graphics/Visibility.cpp
index f6cd64f9ebd273e56bae0ba410c03ba414ca0bf2..6a22212ea62d450234bf918067a516cc28fdc2c3 100644
--- a/Graphics/Visibility.cpp
+++ b/Graphics/Visibility.cpp
@@ -1,4 +1,21 @@
-// $Id: Visibility.cpp,v 1.2 2001-12-06 08:10:59 geuzaine Exp $
+// $Id: Visibility.cpp,v 1.3 2002-05-18 07:18:02 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
 #include "Gmsh.h"
 #include "Geo.h"
 #include "CAD.h"
@@ -237,7 +254,8 @@ void Entity::RecurVisible(){
   }
 }
 
-//////////////////////////////////////////
+
+
 
 void SetVisibilitySort(int sort){
   if(Sort == sort)
diff --git a/Graphics/Visibility.h b/Graphics/Visibility.h
index 13be0205ba0d832cba5f907293de51920e4fbc20..9c759cf3c540704371f057213e03754a8f2b157a 100644
--- a/Graphics/Visibility.h
+++ b/Graphics/Visibility.h
@@ -1,6 +1,22 @@
 #ifndef _VISIBILITY_H_
 #define _VISIBILITY_H_
 
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
 typedef struct{
   int n;
   char *s;
diff --git a/Graphics/gl2gif.cpp b/Graphics/gl2gif.cpp
index 58f86effb87f5d6466fbe7b24c58eea9ed5d0b5d..eadb4af74332e19c1df4ad985ecc772423710a43 100644
--- a/Graphics/gl2gif.cpp
+++ b/Graphics/gl2gif.cpp
@@ -1,13 +1,30 @@
-// $Id: gl2gif.cpp,v 1.11 2001-04-08 20:36:49 geuzaine Exp $
+/*
+ * GL2GIF, an OpenGL to GIF Printing Library
+ * Copyright (C) 1999-2002  Christophe Geuzaine 
+ *
+ * $Id: gl2gif.cpp,v 1.12 2002-05-18 07:18:02 geuzaine Exp $
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ */
 
 /* 
- * gl2gif: an OpenGL to GIF printing library
- *
  * Warning: This code is really a dirty hack. It SHOULD be cleaned
- * (and most of all, all the static variables should be removed)
+ * (and most of all, all the static variables should be removed).
  * 
- *
- * Based on 
+ * It is Based on 
  *
  *  . libppm3.c - ppm utility library part 3
  *    Copyright (C) 1989, 1991 by Jef Poskanzer.
@@ -38,9 +55,7 @@
 #include "GmshUI.h"
 #include "gl2gif.h"
 
-/* ------------------------------------------------------------------
-   PPM colormap routines
-   ------------------------------------------------------------------ */
+/* PPM colormap routines */
 
 #define HASH_SIZE 20023
 #define ppm_hashpixel(p) ( ( (int) (p) & 0x7fffffff ) % HASH_SIZE )
@@ -270,9 +285,7 @@ static int GetPixel( int x, int y ){
 }
 
 
-/* ------------------------------------------------------------------
-   PPM quantization
-   ------------------------------------------------------------------ */
+/* PPM quantization */
 
 /* #define LARGE_NORM */
 #define LARGE_LUM
@@ -521,9 +534,7 @@ static colorhist_vector mediancut( colorhist_vector chv, int colors,
 }
 
 
-/*------------------------------------------------------------------
-  GIF compression routines
-  ------------------------------------------------------------------*/
+/* GIF compression routines */
 
 #define BITS    12
 #define HSIZE   5003  /* 80% occupancy */
@@ -1093,9 +1104,7 @@ static void GIFEncode( FILE* fp,
 }
 
 
-/* ------------------------------------------------------------------
-   GL2GIF public routine
-   ------------------------------------------------------------------ */
+/* gl2gif public routine */
 
 #define FS_SCALE   1024
 #define MAXCOL2    32767
@@ -1120,9 +1129,8 @@ void create_gif(FILE *outfile, int width, int height,
   int fs_direction;
 
   /* This is stupid, but I couldn't figure out how to pack the data
-   directly from the OpenGL frame buffer into unsigned long pixel[][] */
-
-  //printf("read buff : %g \n", Cpu());
+     directly from the OpenGL frame buffer into unsigned long
+     pixel[][] */
 
   glPixelStorei(GL_PACK_ALIGNMENT,1);
   glPixelStorei(GL_UNPACK_ALIGNMENT,1);
@@ -1148,8 +1156,6 @@ void create_gif(FILE *outfile, int width, int height,
   Free(GreenBuffer);
   Free(BlueBuffer);
 
-  //printf("start gif : %g \n", Cpu());
-
   /* Try to compute color histogram */
 
   chv = ppm_computecolorhist( static_pixels, width, height, MAX_GIFCOLORS, 
@@ -1353,8 +1359,6 @@ void create_gif(FILE *outfile, int width, int height,
 
   }
 
-  //printf("ok with colormap : %g \n", Cpu());
-
   /* We now have a colormap of maximum 256 colors */
 
   for ( i = 0; i < static_nbcolors; ++i ){
@@ -1399,8 +1403,6 @@ void create_gif(FILE *outfile, int width, int height,
   else
     transparent = -1 ;
 
-  //printf("ok with sort : %g \n", Cpu());
-
   /* All set, let's do it. */
   GIFEncode(outfile, width, height, interlace, 0, transparent, BitsPerPixel,
 	    static_red, static_green, static_blue, GetPixel );
@@ -1409,7 +1411,5 @@ void create_gif(FILE *outfile, int width, int height,
     Free(static_pixels[i]);
   Free(static_pixels);
 
-  //printf("finished gif : %g \n", Cpu());
-
 }
 
diff --git a/Graphics/gl2gif.h b/Graphics/gl2gif.h
index 66bf70b60d6f434bb656d9ee5869a8c68f87715d..e2a4c7fd0f19957b97df73ec3e4b72edd2a579dd 100644
--- a/Graphics/gl2gif.h
+++ b/Graphics/gl2gif.h
@@ -1,6 +1,28 @@
 #ifndef _GL2GIF_H_
 #define _GL2GIF_H_
 
+/*
+ * GL2GIF, an OpenGL to GIF Printing Library
+ * Copyright (C) 1999-2002  Christophe Geuzaine 
+ *
+ * $Id: gl2gif.h,v 1.7 2002-05-18 07:18:02 geuzaine Exp $
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ */
+
 #define MAX_GIFCOLORS  256
 
 /* New types */
diff --git a/Graphics/gl2jpeg.cpp b/Graphics/gl2jpeg.cpp
index 7d412bb7bf609e96ebdfc259642633065f823f31..6b05a8a876b6326bfc436220cf7634d0f0d0c220 100644
--- a/Graphics/gl2jpeg.cpp
+++ b/Graphics/gl2jpeg.cpp
@@ -1,4 +1,24 @@
-// $Id: gl2jpeg.cpp,v 1.7 2001-02-09 07:59:50 geuzaine Exp $
+/*
+ * GL2JPEG, an OpenGL to JPEG Printing Library
+ * Copyright (C) 1999-2002  Christophe Geuzaine 
+ *
+ * $Id: gl2jpeg.cpp,v 1.8 2002-05-18 07:18:02 geuzaine Exp $
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ */
 
 #include "Gmsh.h"
 #include "GmshUI.h"
diff --git a/Graphics/gl2jpeg.h b/Graphics/gl2jpeg.h
index 7c8f69e480622e23e58db1f4d09b1a887c8a0ed9..bfe3e25cff3342d733f946584776d0201ca6f535 100644
--- a/Graphics/gl2jpeg.h
+++ b/Graphics/gl2jpeg.h
@@ -1,6 +1,28 @@
 #ifndef _GL2JPEG_H_
 #define _GL2JPEG_H_
 
+/*
+ * GL2JPEG, an OpenGL to JPEG Printing Library
+ * Copyright (C) 1999-2002  Christophe Geuzaine 
+ *
+ * $Id: gl2jpeg.h,v 1.3 2002-05-18 07:18:02 geuzaine Exp $
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ */
+
 void create_jpeg(FILE *outfile, int width, int height,
 		 int quality);
 
diff --git a/Graphics/gl2ppm.cpp b/Graphics/gl2ppm.cpp
index e9aa5e7b4ee66f088f1fcef742b4925eac969606..b390d466239e6f0562970734461e0009b604df11 100644
--- a/Graphics/gl2ppm.cpp
+++ b/Graphics/gl2ppm.cpp
@@ -1,4 +1,24 @@
-// $Id: gl2ppm.cpp,v 1.5 2001-01-08 08:05:44 geuzaine Exp $
+/*
+ * GL2PPM, an OpenGL to PPM Printing Library
+ * Copyright (C) 1999-2002  Christophe Geuzaine 
+ *
+ * $Id: gl2ppm.cpp,v 1.6 2002-05-18 07:18:02 geuzaine Exp $
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ */
 
 #include "Gmsh.h"
 #include "GmshUI.h"
diff --git a/Graphics/gl2ppm.h b/Graphics/gl2ppm.h
index 47b88824d186371de0c067b6af0978cae78099d1..3de6f50f9704c37910ba21a737b569a5762fe6da 100644
--- a/Graphics/gl2ppm.h
+++ b/Graphics/gl2ppm.h
@@ -1,6 +1,28 @@
 #ifndef _GL2PPM_H_
 #define _GL2PPM_H_
 
+/*
+ * GL2PPM, an OpenGL to PPM Printing Library
+ * Copyright (C) 1999-2002  Christophe Geuzaine 
+ *
+ * $Id: gl2ppm.h,v 1.2 2002-05-18 07:18:02 geuzaine Exp $
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ */
+
 void create_ppm(FILE *outfile, int width, int height);
 
 #endif
diff --git a/Graphics/gl2yuv.cpp b/Graphics/gl2yuv.cpp
index ba600cc3e29b1032424ae11543286f704c4d180a..e797febaa331dd03220f43ecc9c92b29be06b674 100644
--- a/Graphics/gl2yuv.cpp
+++ b/Graphics/gl2yuv.cpp
@@ -1,4 +1,51 @@
-// $Id: gl2yuv.cpp,v 1.3 2001-01-08 08:05:44 geuzaine Exp $
+/*
+ * GL2YUV, an OpenGL to YUV Printing Library
+ * Copyright (C) 1999-2002  Christophe Geuzaine 
+ *
+ * $Id: gl2yuv.cpp,v 1.4 2002-05-18 07:18:02 geuzaine Exp $
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ */
+
+/*
+ * This code is based on the rgbtoycc.c code from the MPEG-1 Video
+ * Software Encoder (Version 1.5; February 1, 1995), by Lawrence
+ * A. Rowe, Kevin Gong, Eugene Hung, Ketan Patel, Steve Smoot and Dan
+ * Wallach Computer Science Division-EECS, Univ. of Calif. at Berkeley
+ * 
+ * Copyright (c) 1995 The Regents of the University of California.
+ * All rights reserved.
+ *
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation for any purpose, without fee, and without written agreement is
+ * hereby granted, provided that the above copyright notice and the following
+ * two paragraphs appear in all copies of this software.
+ *
+ * IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR
+ * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT
+ * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF
+ * CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
+ * ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION TO
+ * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+ */
+
 
 #include "Gmsh.h"
 #include "GmshUI.h"
diff --git a/Graphics/gl2yuv.h b/Graphics/gl2yuv.h
index 2921e67be195f097379bcb5f622f0d99cfda1944..1b130b155ee05a886cf1cdd1a4040484193185fd 100644
--- a/Graphics/gl2yuv.h
+++ b/Graphics/gl2yuv.h
@@ -1,6 +1,28 @@
 #ifndef _GL2YUV_H_
 #define _GL2YUV_H_
 
+/*
+ * GL2YUV, an OpenGL to YUV Printing Library
+ * Copyright (C) 1999-2002  Christophe Geuzaine 
+ *
+ * $Id: gl2yuv.h,v 1.2 2002-05-18 07:18:02 geuzaine Exp $
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ */
+
 void create_yuv(FILE *outfile, int width, int height);
 
 #endif
diff --git a/Makefile b/Makefile
index 813f5bc1fd31203286b78fa06af1dc4dc2d2a34b..d3ca5600562a50a8d9ea5edeaee50446361a7dd9 100644
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.210 2002-05-18 00:55:14 geuzaine Exp $
+# $Id: Makefile,v 1.211 2002-05-18 07:17:59 geuzaine Exp $
 
 GMSH_MAJOR_VERSION = 1
 GMSH_MINOR_VERSION = 35
@@ -15,7 +15,7 @@ RMFLAGS = -f
 #  Gmsh definitions
 # ----------------------------------------------------------------------
 
-GMSH_COMMON_DIR = Adapt Common DataStr Geo Mesh Parallel Parser Plugin Triangle
+GMSH_COMMON_DIR = Common DataStr Geo Mesh Numeric Parallel Parser Plugin Triangle
 GMSH_BOX_DIR =$(GMSH_COMMON_DIR) Box
 GMSH_FLTK_DIR = $(GMSH_COMMON_DIR) Graphics Fltk jpeg
 GMSH_DIR = $(GMSH_COMMON_DIR) Box Graphics Fltk jpeg utils
@@ -26,10 +26,10 @@ GMSH_DEMO_DIR = demos
 GMSH_TUTORIAL_DIR = tutorial
 GMSH_ARCHIVE_DIR = archives
 
-GMSH_BOX_LIB = -L$(GMSH_LIB_DIR) -lGmshBox -lGmshParser -lGmshMesh -lGmshGeo -lGmshAdapt\
+GMSH_BOX_LIB = -L$(GMSH_LIB_DIR) -lGmshBox -lGmshParser -lGmshMesh -lGmshGeo -lGmshNumeric\
                -lGmshPlugin -lGmshCommon -lGmshDataStr -lGmshParallel -lGmshTriangle
 GMSH_FLTK_LIB = -L$(GMSH_LIB_DIR) -lGmshFltk -lGmshParser -lGmshGraphics -lGmshMesh\
-                -lGmshGeo -lGmshAdapt -lGmshCommon -lGmshDataStr -lGmshJpeg -lGmshPlugin\
+                -lGmshGeo -lGmshNumeric -lGmshCommon -lGmshDataStr -lGmshJpeg -lGmshPlugin\
                 -lGmshParallel -lGmshTriangle
 
 GMSH_RELEASE = $(GMSH_MAJOR_VERSION).$(GMSH_MINOR_VERSION).$(GMSH_PATCH_VERSION)
@@ -250,6 +250,20 @@ bb-mingw: initialtag
 # Ready to compile for some platforms
 # ----------------------------------------------------------------------
 
+#
+# Source distribution
+#
+source:
+	tar zcvf gmsh.tgz\
+           `ls README* Makefile */Makefile */*.[chyl] */*.cpp` demos tutorial utils
+	mkdir gmsh-$(GMSH_RELEASE)
+	cd gmsh-$(GMSH_RELEASE) && tar zxvf ../gmsh.tgz
+	cd gmsh-$(GMSH_RELEASE) && zip -r gmsh-$(GMSH_RELEASE)-source.zip *
+	mv gmsh-$(GMSH_RELEASE)/gmsh-$(GMSH_RELEASE)-source.zip .
+	rm -f gmsh.tgz
+	tar zcvf gmsh-$(GMSH_RELEASE)-source.tar.gz gmsh-$(GMSH_RELEASE)
+	rm -rf gmsh-$(GMSH_RELEASE)
+
 #
 # Linux
 #
diff --git a/Mesh/1D_Mesh.cpp b/Mesh/1D_Mesh.cpp
index 954bf5799f29aee22179665d77e72c1793b1fc8d..c39fada3e0b248e155ee49d2411e680016a324dd 100644
--- a/Mesh/1D_Mesh.cpp
+++ b/Mesh/1D_Mesh.cpp
@@ -1,4 +1,20 @@
-// $Id: 1D_Mesh.cpp,v 1.24 2001-12-03 08:41:44 geuzaine Exp $
+// $Id: 1D_Mesh.cpp,v 1.25 2002-05-18 07:18:02 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 #include "Gmsh.h"
 #include "Numeric.h"
diff --git a/Mesh/2D_BGMesh.cpp b/Mesh/2D_BGMesh.cpp
index 8113d3d6e657cfe0a608914bad34fe9b6847c283..3eb57943c022823406f62b948e6863567c44f81e 100644
--- a/Mesh/2D_BGMesh.cpp
+++ b/Mesh/2D_BGMesh.cpp
@@ -1,4 +1,20 @@
-// $Id: 2D_BGMesh.cpp,v 1.8 2001-08-11 23:28:32 geuzaine Exp $
+// $Id: 2D_BGMesh.cpp,v 1.9 2002-05-18 07:18:02 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 #include "Gmsh.h"
 #include "Numeric.h"
@@ -7,8 +23,8 @@
 
 extern Mesh *THEM;
 
-/* Calcul de la longueur caracteristique en un point par
-   interpolation dans le background mesh */
+// Compute Calcul the charact. length on 1 pt by interpolating in the
+// background mesh
 
 double find_quality (MPoint center, DocRecord * BGMESH){
 
diff --git a/Mesh/2D_Bowyer.cpp b/Mesh/2D_Bowyer.cpp
index d0c7fbcfad2a869c7ed3e7cf988343b7f76dd24f..37423679ce79bfdc12fd737eeecec03472eafc54 100644
--- a/Mesh/2D_Bowyer.cpp
+++ b/Mesh/2D_Bowyer.cpp
@@ -1,8 +1,23 @@
-// $Id: 2D_Bowyer.cpp,v 1.8 2001-08-11 23:28:32 geuzaine Exp $
+// $Id: 2D_Bowyer.cpp,v 1.9 2002-05-18 07:18:02 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 /*
-
-   A L G O R I T H M E       D E      B O W Y E R  -  W A T S O N
+   A L G O R I T H M E   D E   B O W Y E R  -  W A T S O N
 
    definition : il est possible d'obtenir une triangulation de Delaunay en partant 
    d'une triangulation existante en lui ajoutant un noeud de la facon suivante :
@@ -18,7 +33,6 @@
    PE_Del_Triangle = Peut-Etre va-t-on effacer le triangle del, si on l'efface alors
    on appelle recursivement 3 fois PE_Del_Triangle avec ses trois voisins (si il en a)
    comme argument
-
 */
 
 #include "Gmsh.h"
diff --git a/Mesh/2D_Bricks.cpp b/Mesh/2D_Bricks.cpp
index 58ccb628765332d7888144142de9f5bfdf586ad0..5cef0c67872c00c525d0cd1a4dd3d3b031a56476 100644
--- a/Mesh/2D_Bricks.cpp
+++ b/Mesh/2D_Bricks.cpp
@@ -1,4 +1,20 @@
-// $Id: 2D_Bricks.cpp,v 1.5 2001-08-11 23:28:32 geuzaine Exp $
+// $Id: 2D_Bricks.cpp,v 1.6 2002-05-18 07:18:02 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 #include "Gmsh.h"
 #include "Numeric.h"
diff --git a/Mesh/2D_Cylindrical.cpp b/Mesh/2D_Cylindrical.cpp
index bc44435c201a766a59ce940e50f5bd83aeed5a15..168adc7b05c85a1eddb1372444f556a95a8f9eaa 100644
--- a/Mesh/2D_Cylindrical.cpp
+++ b/Mesh/2D_Cylindrical.cpp
@@ -1,4 +1,20 @@
-// $Id: 2D_Cylindrical.cpp,v 1.8 2001-08-20 07:38:29 geuzaine Exp $
+// $Id: 2D_Cylindrical.cpp,v 1.9 2002-05-18 07:18:02 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 #include "Gmsh.h"
 #include "Numeric.h"
@@ -58,7 +74,8 @@ void TETAMINMAX (void *a, void *dum){
   TETAMAX = DMAX (teta, TETAMAX);
 }
 
-/*      SURFACES CYLINDRIQUES   */
+// Cylindrical surfaces
+
 void XYZtoTZ (void *a, void *dum){
   Vertex *v;
   double ZRepere, S, C, y[3], teta;
@@ -130,7 +147,8 @@ void TZtoXYZ (void *a, void *dum){
   v->Pos.Z = ZZ;
 }
 
-/* SURFACES CONIQUES */
+// Conical surfaces
+
 void XYZtoCone (void *a, void *dum){
   Vertex *v;
   double ZRepere, S, C, y[3], teta;
diff --git a/Mesh/2D_DivAndConq.cpp b/Mesh/2D_DivAndConq.cpp
index 0e6c17f5f9f7b8ff5bf92ea6e7d01a9ee9a11b71..a24b329fbfe24ede291213a41ac530ca17e2d1b0 100644
--- a/Mesh/2D_DivAndConq.cpp
+++ b/Mesh/2D_DivAndConq.cpp
@@ -1,7 +1,22 @@
-// $Id: 2D_DivAndConq.cpp,v 1.11 2001-08-11 23:28:32 geuzaine Exp $
+// $Id: 2D_DivAndConq.cpp,v 1.12 2002-05-18 07:18:02 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 /*
-
    A L G O R I T H M E    D I V I D E    A N D     C O N Q U E R   
 
    le noeud de cette methode est de pouvoir fusionner
@@ -17,7 +32,6 @@
    pour eviter d'avoir 3 points alignes ou 4 points cocycliques !!!
 
    doc : structure contenant la triangulation
-
 */
 
 #include "Gmsh.h"
diff --git a/Mesh/2D_Elliptic.cpp b/Mesh/2D_Elliptic.cpp
index d23c0777e2206728357c0a09a49a8a357bb84130..607b96ec7d757043b3cfc9ce580776c40b638fbc 100644
--- a/Mesh/2D_Elliptic.cpp
+++ b/Mesh/2D_Elliptic.cpp
@@ -1,4 +1,20 @@
-// $Id: 2D_Elliptic.cpp,v 1.8 2001-10-29 08:52:20 geuzaine Exp $
+// $Id: 2D_Elliptic.cpp,v 1.9 2002-05-18 07:18:02 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 #include "Gmsh.h"
 #include "Numeric.h"
diff --git a/Mesh/2D_InitMesh.cpp b/Mesh/2D_InitMesh.cpp
index dc7daf358bb9900eef4265730317c091a980b48a..05a8e87d68550cd64d625d0868f8f089fc4723bb 100644
--- a/Mesh/2D_InitMesh.cpp
+++ b/Mesh/2D_InitMesh.cpp
@@ -1,4 +1,20 @@
-// $Id: 2D_InitMesh.cpp,v 1.11 2001-09-05 19:14:05 geuzaine Exp $
+// $Id: 2D_InitMesh.cpp,v 1.12 2002-05-18 07:18:02 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 /*
  
diff --git a/Mesh/2D_Links.cpp b/Mesh/2D_Links.cpp
index 1165b56731beb8099c043dd2c93925c86585f8fa..60bc1297cf34125ebb946ce8ef90d098da7b5e22 100644
--- a/Mesh/2D_Links.cpp
+++ b/Mesh/2D_Links.cpp
@@ -1,4 +1,20 @@
-// $Id: 2D_Links.cpp,v 1.9 2001-08-11 23:28:32 geuzaine Exp $
+// $Id: 2D_Links.cpp,v 1.10 2002-05-18 07:18:02 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 #include "Gmsh.h"
 #include "Numeric.h"
diff --git a/Mesh/2D_Mesh.cpp b/Mesh/2D_Mesh.cpp
index 53e9aa51e4b7fc1ac84d20cc9206fe16f42f230a..d436738d85f25348896dd78de9b5d17bb085505b 100644
--- a/Mesh/2D_Mesh.cpp
+++ b/Mesh/2D_Mesh.cpp
@@ -1,4 +1,20 @@
-// $Id: 2D_Mesh.cpp,v 1.40 2002-02-12 20:11:34 geuzaine Exp $
+// $Id: 2D_Mesh.cpp,v 1.41 2002-05-18 07:18:02 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 /*
    Maillage Delaunay d'une surface (Point insertion Technique)
diff --git a/Mesh/2D_Mesh.h b/Mesh/2D_Mesh.h
index d5c8390806198a187c14fe2477e8017aa74538c9..f29cf1ca759b06d04dde88557155ba7ecb8167e3 100644
--- a/Mesh/2D_Mesh.h
+++ b/Mesh/2D_Mesh.h
@@ -1,6 +1,22 @@
 #ifndef _2D_MESH_H_
 #define _2D_MESH_H_
 
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
 typedef struct avl{
   void *treedata;
   int balance;
diff --git a/Mesh/2D_Mesh_Aniso.cpp b/Mesh/2D_Mesh_Aniso.cpp
index cb406a266ec3b0917c5b338d85c019f6b5c821ea..381784bdc2656c258e37193aac3365a88cc0d8f6 100644
--- a/Mesh/2D_Mesh_Aniso.cpp
+++ b/Mesh/2D_Mesh_Aniso.cpp
@@ -1,11 +1,22 @@
-// $Id: 2D_Mesh_Aniso.cpp,v 1.25 2002-04-06 00:59:48 geuzaine Exp $
-
-/*
-   Jean-Francois Remacle
-
-   Maillage Delaunay 2-D Anisotrope
-   Tres joli (a mon avis)
-*/
+// $Id: 2D_Mesh_Aniso.cpp,v 1.26 2002-05-18 07:18:02 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+// Anisotropic Delaunay mesh generator
 
 #include "Gmsh.h"
 #include "Numeric.h"
diff --git a/Mesh/2D_Mesh_Shewchuk.cpp b/Mesh/2D_Mesh_Shewchuk.cpp
index 0c780491fc1ba579bd39189d249956af02c9a53f..6543cc38ff9da8b76d6e08ac1f5a625949206c20 100644
--- a/Mesh/2D_Mesh_Shewchuk.cpp
+++ b/Mesh/2D_Mesh_Shewchuk.cpp
@@ -1,4 +1,20 @@
-// $Id: 2D_Mesh_Shewchuk.cpp,v 1.7 2001-10-29 08:52:20 geuzaine Exp $
+// $Id: 2D_Mesh_Shewchuk.cpp,v 1.8 2002-05-18 07:18:02 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 #include "Gmsh.h"
 #include "Mesh.h"
diff --git a/Mesh/2D_Parametric.cpp b/Mesh/2D_Parametric.cpp
index 0996538f4dc49f1b255b774bb455656115f027d7..fd0af66157e841a1f3d283cf37b454e32fc60fcc 100644
--- a/Mesh/2D_Parametric.cpp
+++ b/Mesh/2D_Parametric.cpp
@@ -1,4 +1,20 @@
-// $Id: 2D_Parametric.cpp,v 1.6 2001-08-11 23:28:32 geuzaine Exp $
+// $Id: 2D_Parametric.cpp,v 1.7 2002-05-18 07:18:02 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 #include "Gmsh.h"
 #include "Numeric.h"
diff --git a/Mesh/2D_Recombine.cpp b/Mesh/2D_Recombine.cpp
index 91806c3365fce56b61a822ca418da72732b8ac73..7af5aa378105b4093117e36f9d38d2033c633909 100644
--- a/Mesh/2D_Recombine.cpp
+++ b/Mesh/2D_Recombine.cpp
@@ -1,4 +1,20 @@
-// $Id: 2D_Recombine.cpp,v 1.9 2001-08-11 23:28:32 geuzaine Exp $
+// $Id: 2D_Recombine.cpp,v 1.10 2002-05-18 07:18:02 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 #include "Gmsh.h"
 #include "Numeric.h"
diff --git a/Mesh/2D_SMesh.cpp b/Mesh/2D_SMesh.cpp
index 62d507b47256e879259f1238f74929edf2c20b16..98bbd9b62f13c301e956d93c591c27edf1a7efe0 100644
--- a/Mesh/2D_SMesh.cpp
+++ b/Mesh/2D_SMesh.cpp
@@ -1,4 +1,20 @@
-// $Id: 2D_SMesh.cpp,v 1.8 2001-10-29 08:52:20 geuzaine Exp $
+// $Id: 2D_SMesh.cpp,v 1.9 2002-05-18 07:18:02 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 /*  
   Maillage transfini surfacique                                                 
diff --git a/Mesh/2D_Tree.cpp b/Mesh/2D_Tree.cpp
index 46e0735944f00398a2af98c2328a5803512eb315..97997be274f9fa5afd486f59853154e2c3735510 100644
--- a/Mesh/2D_Tree.cpp
+++ b/Mesh/2D_Tree.cpp
@@ -1,4 +1,20 @@
-// $Id: 2D_Tree.cpp,v 1.4 2001-01-08 08:05:44 geuzaine Exp $
+// $Id: 2D_Tree.cpp,v 1.5 2002-05-18 07:18:02 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 #include "Gmsh.h"
 #include "Mesh.h"
diff --git a/Mesh/2D_Util.cpp b/Mesh/2D_Util.cpp
index 32dc5e8d6051a9fd8d04fffb906c58e09920c58a..d8b1942c0b3262575881dd422a136643ce735157 100644
--- a/Mesh/2D_Util.cpp
+++ b/Mesh/2D_Util.cpp
@@ -1,4 +1,20 @@
-// $Id: 2D_Util.cpp,v 1.12 2001-08-11 23:28:32 geuzaine Exp $
+// $Id: 2D_Util.cpp,v 1.13 2002-05-18 07:18:02 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 #include "Gmsh.h"
 #include "Numeric.h"
diff --git a/Mesh/3D_BGMesh.cpp b/Mesh/3D_BGMesh.cpp
index 092e579a3e69698cd1660e75d428077b2a845e30..d877bdf6f96dc4afabc2863fc1b59cd41dca9d00 100644
--- a/Mesh/3D_BGMesh.cpp
+++ b/Mesh/3D_BGMesh.cpp
@@ -1,10 +1,25 @@
-// $Id: 3D_BGMesh.cpp,v 1.17 2001-04-25 20:42:39 geuzaine Exp $
+// $Id: 3D_BGMesh.cpp,v 1.18 2002-05-18 07:18:02 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 #include "Gmsh.h"
 #include "Mesh.h"
 #include "2D_Mesh.h"
 #include "3D_Mesh.h"
-#include "Adapt.h"
 #include "Views.h"
 #include "Numeric.h"
 #include "Context.h"
@@ -269,128 +284,3 @@ double ErrorInView (Post_View * ErrView, int *n){
   return 100 * sqrt (tot);
 }
 
-
-/* ------------------------------------------------------------------------ */
-/*  C r e a t e B G M                                                       */
-/* ------------------------------------------------------------------------ */
-
-int CreateBGM (Post_View * ErrView, int OptiMethod, double Degree,
-               double OptiValue, double *ObjFunct, char *OutFile){
-  double *h, *p, *e, xc, yc, zc, c[3], *X, *Y, *Z, *Val;
-  int N, i, j, dim, nb;
-  Simplex smp;
-  FILE *f;
-
-  if (ErrView->NbSS)
-    dim = 3;
-  else
-    dim = 2;
-
-  N = ErrView->NbSS + ErrView->NbST + 2;
-
-  h = (double *) malloc (N * sizeof (double));
-  e = (double *) malloc (N * sizeof (double));
-  p = (double *) malloc (N * sizeof (double));
-
-  j = 0;
-
-  if(ErrView->NbST){
-    nb = List_Nbr(ErrView->ST) / ErrView->NbST ;
-    for(i = 0 ; i < List_Nbr(ErrView->ST) ; i+=nb){
-      X = (double*)List_Pointer_Fast(ErrView->ST,i);
-      Y = (double*)List_Pointer_Fast(ErrView->ST,i+3);
-      Z = (double*)List_Pointer_Fast(ErrView->ST,i+6);
-      Val = (double*)List_Pointer_Fast(ErrView->ST,i+9);
-      /*
-	Attention, cette ligne est seulement valable en
-	2d x-y. Si plus, calculer le centre du cercle en
-	3d ou utiliser une autre mesure de taille.
-      */
-      CircumCircle (X[0], Y[0],
-		    X[1], Y[1],
-		    X[2], Y[2],
-		    &xc, &yc);
-      h[j + 1] = sqrt ((xc - X[0]) * (xc - X[0]) +
-		       (yc - Y[0]) * (yc - Y[0]));
-      p[j + 1] = Degree;
-      e[j + 1] = (Val[0] + Val[1] + Val[2]) / 3. ;
-      j++;
-    }
-  }
-
-  if(ErrView->NbSS){
-    nb = List_Nbr(ErrView->SS) / ErrView->NbSS ;
-    for(i = 0 ; i < List_Nbr(ErrView->SS) ; i+=nb){
-      X = (double*)List_Pointer_Fast(ErrView->SS,i);
-      Y = (double*)List_Pointer_Fast(ErrView->SS,i+3);
-      Z = (double*)List_Pointer_Fast(ErrView->SS,i+8);
-      Val = (double*)List_Pointer_Fast(ErrView->SS,i+12);
-    
-      smp.center_tet (X, Y, Z, c);
-      xc = c[0];
-      yc = c[1];
-      zc = c[2];
-    
-      h[j + 1] = sqrt ((xc - X[0]) * (xc - X[0]) +
-		       (yc - X[0]) * (yc - X[0]) +
-		       (zc - Y[0]) * (zc - Y[0]));
-      p[j + 1] = Degree;
-      e[j + 1] = (Val[0] + Val[1] + Val[2] + Val[3]) * 0.25;
-      j++;
-    }
-  }
-
-  *ObjFunct = AdaptMesh (j, OptiMethod, dim, e, h, p, OptiValue);
-
-  f = fopen (OutFile, "w");
-
-  if(!f){
-    Msg(GERROR, "Unable to open file '%s'", OutFile);
-    return 0;
-  }
-
-  fprintf (f, "View \"Auto_BGMesh\" Offset{0,0,0} {\n");
-
-  j = 0;
-
-  if(ErrView->NbST){
-    nb = List_Nbr(ErrView->ST) / ErrView->NbST ;
-    for(i = 0 ; i < List_Nbr(ErrView->ST) ; i+=nb){
-      X = (double*)List_Pointer_Fast(ErrView->ST,i);
-      Y = (double*)List_Pointer_Fast(ErrView->ST,i+3);
-      Z = (double*)List_Pointer_Fast(ErrView->ST,i+6);
-      Val = (double*)List_Pointer_Fast(ErrView->ST,i+9);
-      fprintf (f, "ST(%g,%g,%g,%g,%g,%g,%g,%g,%g){%g,%g,%g};\n",
-	       X[0], Y[0], Z[0],
-	       X[1], Y[1], Z[1],
-	       X[2], Y[2], Z[2],
-	       h[j], h[j], h[j]);
-      j++;
-    }
-  }
-
-  if(ErrView->NbSS){
-    nb = List_Nbr(ErrView->SS) / ErrView->NbSS ;
-    for(i = 0 ; i < List_Nbr(ErrView->SS) ; i+=nb){
-      X = (double*)List_Pointer_Fast(ErrView->SS,i);
-      Y = (double*)List_Pointer_Fast(ErrView->SS,i+3);
-      Z = (double*)List_Pointer_Fast(ErrView->SS,i+8);
-      Val = (double*)List_Pointer_Fast(ErrView->SS,i+12);
-      fprintf (f, "SS(%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g,%g){%g,%g,%g,%g};\n",
-	       X[0], Y[0], Z[0],
-	       X[1], Y[1], Z[1],
-	       X[2], Y[2], Z[2],
-	       X[3], Y[3], Z[3],
-	       h[j], h[j], h[j], h[j]);
-      j++;
-    }
-  }
-  fprintf (f, "};\n");
-  fclose (f);
-
-  Msg(INFO, "Background mesh written in '%s'", OutFile); 
-
-  return 1;
-
-}
-
diff --git a/Mesh/3D_Bricks.cpp b/Mesh/3D_Bricks.cpp
index 9c02ee80172672bde0fbed2223cf55b39c619d3b..3f00779426ebf5e5d096f10afb0a1cd4e9656e5c 100644
--- a/Mesh/3D_Bricks.cpp
+++ b/Mesh/3D_Bricks.cpp
@@ -1,4 +1,20 @@
-// $Id: 3D_Bricks.cpp,v 1.7 2001-08-11 23:28:32 geuzaine Exp $
+// $Id: 3D_Bricks.cpp,v 1.8 2002-05-18 07:18:02 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 #include "Gmsh.h"
 #include "Numeric.h"
diff --git a/Mesh/3D_Coherence.cpp b/Mesh/3D_Coherence.cpp
index 3d41e007824472bad7897cdca8c32befa45bf5f8..f4c2412911ba214189ceb20b4b01b4a31f8e645f 100644
--- a/Mesh/3D_Coherence.cpp
+++ b/Mesh/3D_Coherence.cpp
@@ -1,4 +1,20 @@
-// $Id: 3D_Coherence.cpp,v 1.23 2001-10-29 08:52:20 geuzaine Exp $
+// $Id: 3D_Coherence.cpp,v 1.24 2002-05-18 07:18:02 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 #include "Gmsh.h"
 #include "Numeric.h"
diff --git a/Mesh/3D_Divide.cpp b/Mesh/3D_Divide.cpp
index 6f2c33e1890348c49310b21656073218c6028242..2ee39763850fcc0862d349c54f59da8283416c3f 100644
--- a/Mesh/3D_Divide.cpp
+++ b/Mesh/3D_Divide.cpp
@@ -1,4 +1,20 @@
-// $Id: 3D_Divide.cpp,v 1.14 2001-10-29 08:52:20 geuzaine Exp $
+// $Id: 3D_Divide.cpp,v 1.15 2002-05-18 07:18:02 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 /* Routine de division des elements tetraedriques
    ou triangulaires
diff --git a/Mesh/3D_Extrude.cpp b/Mesh/3D_Extrude.cpp
index 23f1b9c74158b8cf2b50c7725dd3b8b044fabd14..b7310d479cce0cb6b2c5f40c15af95c7d8c39792 100644
--- a/Mesh/3D_Extrude.cpp
+++ b/Mesh/3D_Extrude.cpp
@@ -1,4 +1,20 @@
-// $Id: 3D_Extrude.cpp,v 1.53 2002-02-05 20:12:36 geuzaine Exp $
+// $Id: 3D_Extrude.cpp,v 1.54 2002-05-18 07:18:03 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 #include "Gmsh.h"
 #include "Numeric.h"
diff --git a/Mesh/3D_Extrude_Old.cpp b/Mesh/3D_Extrude_Old.cpp
index 8140dfa7a31398514f70b65499f8262286af4f90..5e27c4f323ba110fc056c17f8031c1a4546902a2 100644
--- a/Mesh/3D_Extrude_Old.cpp
+++ b/Mesh/3D_Extrude_Old.cpp
@@ -1,4 +1,20 @@
-// $Id: 3D_Extrude_Old.cpp,v 1.18 2001-12-06 08:10:31 geuzaine Exp $
+// $Id: 3D_Extrude_Old.cpp,v 1.19 2002-05-18 07:18:03 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 // This is the old extrusion mesh generator -> only available through
 // the command line option -extrude (w/o -recombine). This mesh
diff --git a/Mesh/3D_Mesh.cpp b/Mesh/3D_Mesh.cpp
index 3a8a441a64f253d60a8f955abd1c14145014ac49..a23c9a184c9f063108461f2c01d46e6feb95a4f0 100644
--- a/Mesh/3D_Mesh.cpp
+++ b/Mesh/3D_Mesh.cpp
@@ -1,10 +1,23 @@
-// $Id: 3D_Mesh.cpp,v 1.37 2002-04-26 00:15:30 geuzaine Exp $
+// $Id: 3D_Mesh.cpp,v 1.38 2002-05-18 07:18:03 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 /*
- 
-  J-F Remacle 1995
-
-  MAILLAGE DELAUNAY 3D 
+  Isotropic Delaunay 3D
 
   tant que l'arbre des tetraedres de qualites inacceptables 
   n'est pas vide {
@@ -913,7 +926,7 @@ void Maillage_Volume (void *data, void *dum){
     
     Tree_Right (LOCAL->Simplexes, &simp);
     i = 0;
-    Progress (102);
+
     while (simp->Quality > CONV_VALUE){
       newv = NewVertex (simp);
       //double l;
@@ -945,8 +958,6 @@ void Maillage_Volume (void *data, void *dum){
         Msg(STATUS3, "Nod=%d Elm=%d",
             Tree_Nbr (LOCAL->Vertices), Tree_Nbr (LOCAL->Simplexes));
         Msg(STATUS1, "Vol(%g) Conv(%g->%g)", volume, simp->Quality, CONV_VALUE);
-        double adv = 100. * (CONV_VALUE / simp->Quality);
-        Progress ((int) adv);
       }
       Bowyer_Watson (LOCAL, newv, simp, 0);
       Tree_Right (LOCAL->Simplexes, &simp);
@@ -957,8 +968,6 @@ void Maillage_Volume (void *data, void *dum){
     POINTS_TREE = THEM->Simplexes;
     Tree_Action (v->Simplexes, add_points);
     
-    Progress(-1);
-
     if (CTX.mesh.quality){
       extern void SwapEdges3D (Mesh * M, Volume * v, double GammaPrescribed, bool order);
       Msg(STATUS3, "Swapping edges (1st pass)");
diff --git a/Mesh/3D_Mesh_Old.cpp b/Mesh/3D_Mesh_Old.cpp
index 7a52491104bdd9b691253a73b9f1a86b630ed7ee..deec365df3e9e39290b4919c0999a8652ea6969b 100644
--- a/Mesh/3D_Mesh_Old.cpp
+++ b/Mesh/3D_Mesh_Old.cpp
@@ -1,10 +1,23 @@
-// $Id: 3D_Mesh_Old.cpp,v 1.1 2001-11-01 09:47:35 geuzaine Exp $
+// $Id: 3D_Mesh_Old.cpp,v 1.2 2002-05-18 07:18:03 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 /*
- 
-  J-F Remacle 1995
-
-  MAILLAGE DELAUNAY 3D 
+  Isotropic Delaunay 3D
 
   tant que l'arbre des tetraedres de qualites inacceptables 
   n'est pas vide {
@@ -16,6 +29,7 @@
 
 */
 
+
 #include "Gmsh.h"
 #include "Numeric.h"
 #include "Mesh.h"
@@ -776,7 +790,7 @@ void Maillage_Volume (void *data, void *dum){
     
     Tree_Right (LOCAL->Simplexes, &simp);
     i = 0;
-    Progress (102);
+
     while (simp->Quality > CONV_VALUE){
       newv = NewVertex (simp);
       //double l;
@@ -809,7 +823,6 @@ void Maillage_Volume (void *data, void *dum){
             Tree_Nbr (LOCAL->Vertices), Tree_Nbr (LOCAL->Simplexes));
         Msg(STATUS1, "Vol(%g) Conv(%g->%g)", volume, simp->Quality, CONV_VALUE);
         double adv = 100. * (CONV_VALUE / simp->Quality);
-        Progress ((int) adv);
       }
       Bowyer_Watson (LOCAL, newv, simp, 0);
       Tree_Right (LOCAL->Simplexes, &simp);
@@ -820,8 +833,6 @@ void Maillage_Volume (void *data, void *dum){
     POINTS_TREE = THEM->Simplexes;
     Tree_Action (v->Simplexes, add_points);
     
-    Progress(-1);
-
     if (CTX.mesh.quality){
       extern void SwapEdges3D (Mesh * M, Volume * v, double GammaPrescribed, bool order);
       Msg(STATUS3, "Swapping edges (1st pass)");
diff --git a/Mesh/3D_SMesh.cpp b/Mesh/3D_SMesh.cpp
index 066577d7cf7561b4ec9fc708a301f27a1760bfe9..965f9c28d425c5b0184239341424a5d68e79c33c 100644
--- a/Mesh/3D_SMesh.cpp
+++ b/Mesh/3D_SMesh.cpp
@@ -1,4 +1,20 @@
-// $Id: 3D_SMesh.cpp,v 1.11 2001-10-29 08:52:20 geuzaine Exp $
+// $Id: 3D_SMesh.cpp,v 1.12 2002-05-18 07:18:03 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 /*  
   Maillage transfini volumique
diff --git a/Mesh/Create.cpp b/Mesh/Create.cpp
index 98dcd5be1cc04f5d6667ccd7afb6e51a7e21a093..45c68f03f0cf726cead6d5d88cc499ad6f04a944 100644
--- a/Mesh/Create.cpp
+++ b/Mesh/Create.cpp
@@ -1,4 +1,20 @@
-// $Id: Create.cpp,v 1.36 2002-04-06 00:59:48 geuzaine Exp $
+// $Id: Create.cpp,v 1.37 2002-05-18 07:18:03 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 #include "Gmsh.h"
 #include "Numeric.h"
diff --git a/Mesh/Create.h b/Mesh/Create.h
index 316dfec7aa0b0bdb205dd20b49c8ce20775af055..ae82bb100c64a5189864dd932c9418f2ad89cb45 100644
--- a/Mesh/Create.h
+++ b/Mesh/Create.h
@@ -1,6 +1,22 @@
 #ifndef _CREATE_H_
 #define _CREATE_H_
 
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
 int compareNXE (const void *a, const void *b);
 int compareFxE (const void *a, const void *b);
 int compareSurfaceLoop (const void *a, const void *b);
diff --git a/Mesh/CrossData.cpp b/Mesh/CrossData.cpp
index ed863269e9a5c38ebce722b6c08ace611ae09b82..50e11b690aa66804461a791661c129121b892ffe 100644
--- a/Mesh/CrossData.cpp
+++ b/Mesh/CrossData.cpp
@@ -1,5 +1,20 @@
-// $Id: CrossData.cpp,v 1.5 2001-06-06 21:29:58 remacle Exp $
-
+// $Id: CrossData.cpp,v 1.6 2002-05-18 07:18:03 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 #include "Gmsh.h"
 #include "Mesh.h"
diff --git a/Mesh/Edge.cpp b/Mesh/Edge.cpp
index 357b88a5f8aa9b11f2769f01e30e41cca0d992d7..168523ba6c949addbcebf78aeccec190f10a1607 100644
--- a/Mesh/Edge.cpp
+++ b/Mesh/Edge.cpp
@@ -1,4 +1,20 @@
-// $Id: Edge.cpp,v 1.6 2001-08-11 23:28:32 geuzaine Exp $
+// $Id: Edge.cpp,v 1.7 2002-05-18 07:18:03 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 #include "Gmsh.h"
 #include "Numeric.h"
diff --git a/Mesh/Edge.h b/Mesh/Edge.h
index e6f70741990f2e643a4b9408ab31dd23abded213..b2533aa2b022cbc2c548c41b284eb75e8b67aa30 100644
--- a/Mesh/Edge.h
+++ b/Mesh/Edge.h
@@ -1,6 +1,22 @@
 #ifndef _EDGE_H_
 #define _EDGE_H_
 
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
 #include "List.h"
 #include "Tree.h"
 #include "Vertex.h"
diff --git a/Mesh/Generator.cpp b/Mesh/Generator.cpp
index 03981c20cd7db22586b135fe1539d52a79f0c217..5dabef9844459ba314fe59d2f5a95f7375fb18ee 100644
--- a/Mesh/Generator.cpp
+++ b/Mesh/Generator.cpp
@@ -1,4 +1,20 @@
-// $Id: Generator.cpp,v 1.32 2002-04-26 00:15:30 geuzaine Exp $
+// $Id: Generator.cpp,v 1.33 2002-05-18 07:18:03 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 #include "Gmsh.h"
 #include "Numeric.h"
diff --git a/Mesh/Interpolation.cpp b/Mesh/Interpolation.cpp
index ae5f4f1efbc2abb75804dc052dcdb371ea15f967..578f21830a15c48748e24fdae1e700691a991f04 100644
--- a/Mesh/Interpolation.cpp
+++ b/Mesh/Interpolation.cpp
@@ -1,4 +1,20 @@
-// $Id: Interpolation.cpp,v 1.16 2001-11-29 08:19:06 geuzaine Exp $
+// $Id: Interpolation.cpp,v 1.17 2002-05-18 07:18:03 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 #include "Gmsh.h"
 #include "Numeric.h"
@@ -8,12 +24,10 @@
 #include "Utils.h"
 #include "Interpolation.h"
 
-/* ------------------------------------------------------------------------ */
-/*  I n t e r p o l a t e C u r v e                                         */
-/* ------------------------------------------------------------------------ */
-
 extern Mesh *THEM;
 
+// Curves
+
 Vertex InterpolateCurve (Curve * Curve, double u, int derivee){
 
   int N, i, j;
@@ -237,9 +251,7 @@ Vertex InterpolateCurve (Curve * Curve, double u, int derivee){
 
 }
 
-/* ------------------------------------------------------------------------ */
-/*  I n t e r p o l a t e S u r f a c e                                     */
-/* ------------------------------------------------------------------------ */
+// Surfaces
 
 /* Interpolation transfinie sur un quadrangle :
    f(u,v) = (1-u)c4(v) + u c2(v) + (1-v)c1(u) + v c3(u)
@@ -455,10 +467,7 @@ Vertex InterpolateSurface (Surface * s, double u, double v,
 
 }
 
-
-/* ------------------------------------------------------------------------ */
-/*  I n t e r p o l a t e V o l u m e                                       */
-/* ------------------------------------------------------------------------ */
+// Volumes
 
 /* Interpolation transfinie sur un hexaedre 
                                    prisme (avec s1=s4=a4, s5=s8=a8, a9=a12=f4) 
diff --git a/Mesh/Interpolation.h b/Mesh/Interpolation.h
index 33ca717052fc6d3f86691f0163ab6c5424c62bec..a70d5775bd089dc60ec7aa3345d8935a117f6e8f 100644
--- a/Mesh/Interpolation.h
+++ b/Mesh/Interpolation.h
@@ -1,6 +1,22 @@
 #ifndef _INTERPOLATION_H_
 #define _INTERPOLATION_H_
 
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
 Vertex InterpolateCurve (Curve * Curve, double u, int derivee);
 
 Vertex InterpolateSurface (Surface * s, double u, double v, 
diff --git a/Mesh/Makefile b/Mesh/Makefile
index 416c6d3b74b6350ac1d79ce88adc0f9c0fa58f1f..32e49b949ac66260eb65dca36973fb4660a02d48 100644
--- a/Mesh/Makefile
+++ b/Mesh/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.40 2002-05-18 00:55:14 geuzaine Exp $
+# $Id: Makefile,v 1.41 2002-05-18 07:18:03 geuzaine Exp $
 #
 # Makefile for "libGmshMesh.a"
 #
@@ -11,7 +11,7 @@ RM      = rm
 RANLIB  = ranlib
 
 LIB     = ../lib/libGmshMesh.a
-INCLUDE = -I../Adapt -I../Common -I../DataStr -I../Geo -I../Mesh\
+INCLUDE = -I../Numeric -I../Common -I../DataStr -I../Geo -I../Mesh\
           -I../Graphics -I../Parser -I../Fltk -I../Triangle
 
 OPT_FLAGS     = -g -Wall
@@ -92,225 +92,219 @@ depend:
 
 # DO NOT DELETE THIS LINE
 1D_Mesh.o: 1D_Mesh.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/Numeric.h ../Geo/Geo.h \
- Mesh.h Vertex.h Simplex.h Edge.h ../Geo/ExtrudeParams.h Metric.h \
- Matrix.h Utils.h ../Common/Context.h Interpolation.h
+  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../DataStr/Tools.h ../Numeric/Numeric.h ../Geo/Geo.h \
+  Mesh.h Vertex.h Simplex.h Edge.h ../Geo/ExtrudeParams.h Metric.h \
+  Matrix.h Utils.h ../Common/Context.h Interpolation.h
 2D_Mesh.o: 2D_Mesh.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/Numeric.h ../Geo/Geo.h \
- ../Geo/CAD.h ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h \
- ../Mesh/Edge.h ../Geo/ExtrudeParams.h ../Mesh/Metric.h \
- ../Mesh/Matrix.h Mesh.h Utils.h Create.h 2D_Mesh.h \
- ../Common/Context.h
+  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../DataStr/Tools.h ../Numeric/Numeric.h ../Geo/Geo.h \
+  ../Geo/CAD.h ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h \
+  ../Mesh/Edge.h ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Mesh/Matrix.h \
+  Mesh.h Utils.h Create.h 2D_Mesh.h ../Common/Context.h
 2D_SMesh.o: 2D_SMesh.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Geo/Geo.h Mesh.h Vertex.h \
- Simplex.h Edge.h ../Geo/ExtrudeParams.h Metric.h Matrix.h \
- ../Common/Numeric.h Interpolation.h
+  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../DataStr/Tools.h ../Geo/Geo.h Mesh.h Vertex.h \
+  Simplex.h Edge.h ../Geo/ExtrudeParams.h Metric.h Matrix.h \
+  ../Numeric/Numeric.h Interpolation.h
 2D_Elliptic.o: 2D_Elliptic.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/Numeric.h ../Geo/Geo.h \
- ../Geo/CAD.h ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h \
- ../Mesh/Edge.h ../Geo/ExtrudeParams.h ../Mesh/Metric.h \
- ../Mesh/Matrix.h Mesh.h
+  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../DataStr/Tools.h ../Numeric/Numeric.h ../Geo/Geo.h \
+  ../Geo/CAD.h ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h \
+  ../Mesh/Edge.h ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Mesh/Matrix.h \
+  Mesh.h
 2D_BGMesh.o: 2D_BGMesh.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/Numeric.h Mesh.h \
- Vertex.h Simplex.h Edge.h ../Geo/ExtrudeParams.h Metric.h Matrix.h \
- 2D_Mesh.h
+  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../DataStr/Tools.h ../Numeric/Numeric.h Mesh.h \
+  Vertex.h Simplex.h Edge.h ../Geo/ExtrudeParams.h Metric.h Matrix.h \
+  2D_Mesh.h
 2D_Recombine.o: 2D_Recombine.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/Numeric.h Mesh.h \
- Vertex.h Simplex.h Edge.h ../Geo/ExtrudeParams.h Metric.h Matrix.h \
- Utils.h 2D_Mesh.h Create.h ../Common/Context.h
+  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../DataStr/Tools.h ../Numeric/Numeric.h Mesh.h \
+  Vertex.h Simplex.h Edge.h ../Geo/ExtrudeParams.h Metric.h Matrix.h \
+  Utils.h 2D_Mesh.h Create.h ../Common/Context.h
 2D_InitMesh.o: 2D_InitMesh.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/Numeric.h Mesh.h \
- Vertex.h Simplex.h Edge.h ../Geo/ExtrudeParams.h Metric.h Matrix.h \
- 2D_Mesh.h
+  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../DataStr/Tools.h ../Numeric/Numeric.h Mesh.h \
+  Vertex.h Simplex.h Edge.h ../Geo/ExtrudeParams.h Metric.h Matrix.h \
+  2D_Mesh.h
 2D_Bowyer.o: 2D_Bowyer.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/Numeric.h Mesh.h \
- Vertex.h Simplex.h Edge.h ../Geo/ExtrudeParams.h Metric.h Matrix.h \
- 2D_Mesh.h
+  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../DataStr/Tools.h ../Numeric/Numeric.h Mesh.h \
+  Vertex.h Simplex.h Edge.h ../Geo/ExtrudeParams.h Metric.h Matrix.h \
+  2D_Mesh.h
 2D_Bricks.o: 2D_Bricks.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/Numeric.h Mesh.h \
- Vertex.h Simplex.h Edge.h ../Geo/ExtrudeParams.h Metric.h Matrix.h \
- 2D_Mesh.h
-2D_DivAndConq.o: 2D_DivAndConq.cpp ../Common/Gmsh.h \
- ../Common/Message.h ../DataStr/Malloc.h ../DataStr/List.h \
- ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \
- ../Common/Numeric.h Mesh.h Vertex.h Simplex.h Edge.h \
- ../Geo/ExtrudeParams.h Metric.h Matrix.h 2D_Mesh.h
+  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../DataStr/Tools.h ../Numeric/Numeric.h Mesh.h \
+  Vertex.h Simplex.h Edge.h ../Geo/ExtrudeParams.h Metric.h Matrix.h \
+  2D_Mesh.h
+2D_DivAndConq.o: 2D_DivAndConq.cpp ../Common/Gmsh.h ../Common/Message.h \
+  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../DataStr/Tools.h ../Numeric/Numeric.h Mesh.h \
+  Vertex.h Simplex.h Edge.h ../Geo/ExtrudeParams.h Metric.h Matrix.h \
+  2D_Mesh.h
 2D_Util.o: 2D_Util.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/Numeric.h Mesh.h \
- Vertex.h Simplex.h Edge.h ../Geo/ExtrudeParams.h Metric.h Matrix.h \
- 2D_Mesh.h ../Common/Context.h
+  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../DataStr/Tools.h ../Numeric/Numeric.h Mesh.h \
+  Vertex.h Simplex.h Edge.h ../Geo/ExtrudeParams.h Metric.h Matrix.h \
+  2D_Mesh.h ../Common/Context.h
 2D_Links.o: 2D_Links.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/Numeric.h Mesh.h \
- Vertex.h Simplex.h Edge.h ../Geo/ExtrudeParams.h Metric.h Matrix.h \
- 2D_Mesh.h
+  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../DataStr/Tools.h ../Numeric/Numeric.h Mesh.h \
+  Vertex.h Simplex.h Edge.h ../Geo/ExtrudeParams.h Metric.h Matrix.h \
+  2D_Mesh.h
 2D_Tree.o: 2D_Tree.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h Mesh.h Vertex.h Simplex.h Edge.h \
- ../Geo/ExtrudeParams.h Metric.h Matrix.h 2D_Mesh.h
-2D_Cylindrical.o: 2D_Cylindrical.cpp ../Common/Gmsh.h \
- ../Common/Message.h ../DataStr/Malloc.h ../DataStr/List.h \
- ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \
- ../Common/Numeric.h Mesh.h Vertex.h Simplex.h Edge.h \
- ../Geo/ExtrudeParams.h Metric.h Matrix.h ../Common/Context.h
-2D_Parametric.o: 2D_Parametric.cpp ../Common/Gmsh.h \
- ../Common/Message.h ../DataStr/Malloc.h ../DataStr/List.h \
- ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \
- ../Common/Numeric.h ../Geo/Geo.h ../Geo/CAD.h ../Mesh/Mesh.h \
- ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
- ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Mesh/Matrix.h \
- Interpolation.h Mesh.h 2D_Mesh.h Create.h ../Common/Context.h
-2D_Mesh_Aniso.o: 2D_Mesh_Aniso.cpp ../Common/Gmsh.h \
- ../Common/Message.h ../DataStr/Malloc.h ../DataStr/List.h \
- ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \
- ../Common/Numeric.h ../Geo/Geo.h ../Geo/CAD.h ../Mesh/Mesh.h \
- ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
- ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Mesh/Matrix.h Mesh.h \
- Interpolation.h Create.h ../Common/Context.h
+  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../DataStr/Tools.h Mesh.h Vertex.h Simplex.h Edge.h \
+  ../Geo/ExtrudeParams.h Metric.h Matrix.h 2D_Mesh.h
+2D_Cylindrical.o: 2D_Cylindrical.cpp ../Common/Gmsh.h ../Common/Message.h \
+  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../DataStr/Tools.h ../Numeric/Numeric.h Mesh.h \
+  Vertex.h Simplex.h Edge.h ../Geo/ExtrudeParams.h Metric.h Matrix.h \
+  ../Common/Context.h
+2D_Parametric.o: 2D_Parametric.cpp ../Common/Gmsh.h ../Common/Message.h \
+  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../DataStr/Tools.h ../Numeric/Numeric.h ../Geo/Geo.h \
+  ../Geo/CAD.h ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h \
+  ../Mesh/Edge.h ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Mesh/Matrix.h \
+  Interpolation.h Mesh.h 2D_Mesh.h Create.h ../Common/Context.h
+2D_Mesh_Aniso.o: 2D_Mesh_Aniso.cpp ../Common/Gmsh.h ../Common/Message.h \
+  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../DataStr/Tools.h ../Numeric/Numeric.h ../Geo/Geo.h \
+  ../Geo/CAD.h ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h \
+  ../Mesh/Edge.h ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Mesh/Matrix.h \
+  Mesh.h Interpolation.h Create.h ../Common/Context.h
 2D_Mesh_Shewchuk.o: 2D_Mesh_Shewchuk.cpp ../Common/Gmsh.h \
- ../Common/Message.h ../DataStr/Malloc.h ../DataStr/List.h \
- ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h Mesh.h Vertex.h \
- Simplex.h Edge.h ../Geo/ExtrudeParams.h Metric.h Matrix.h \
- ../Common/Numeric.h ../Common/Context.h ../Triangle/triangle.h
-3D_Mesh_Old.o: 3D_Mesh_Old.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/Numeric.h Mesh.h \
- Vertex.h Simplex.h Edge.h ../Geo/ExtrudeParams.h Metric.h Matrix.h \
- 3D_Mesh.h Create.h ../Common/Context.h
+  ../Common/Message.h ../DataStr/Malloc.h ../DataStr/List.h \
+  ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h Mesh.h Vertex.h \
+  Simplex.h Edge.h ../Geo/ExtrudeParams.h Metric.h Matrix.h \
+  ../Numeric/Numeric.h ../Common/Context.h ../Triangle/triangle.h
+3D_Mesh.o: 3D_Mesh.cpp ../Common/Gmsh.h ../Common/Message.h \
+  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../DataStr/Tools.h ../Numeric/Numeric.h Mesh.h \
+  Vertex.h Simplex.h Edge.h ../Geo/ExtrudeParams.h Metric.h Matrix.h \
+  3D_Mesh.h Create.h ../Common/Context.h
 3D_SMesh.o: 3D_SMesh.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h Mesh.h Vertex.h Simplex.h Edge.h \
- ../Geo/ExtrudeParams.h Metric.h Matrix.h Interpolation.h Create.h
+  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../DataStr/Tools.h Mesh.h Vertex.h Simplex.h Edge.h \
+  ../Geo/ExtrudeParams.h Metric.h Matrix.h Interpolation.h Create.h
 3D_BGMesh.o: 3D_BGMesh.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h Mesh.h Vertex.h Simplex.h Edge.h \
- ../Geo/ExtrudeParams.h Metric.h Matrix.h 2D_Mesh.h 3D_Mesh.h \
- ../Adapt/Adapt.h ../Common/Views.h ../Common/ColorTable.h \
- ../Common/Numeric.h ../Common/Context.h
+  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../DataStr/Tools.h Mesh.h Vertex.h Simplex.h Edge.h \
+  ../Geo/ExtrudeParams.h Metric.h Matrix.h 2D_Mesh.h 3D_Mesh.h \
+  ../Common/Views.h ../Common/ColorTable.h ../Numeric/Numeric.h \
+  ../Common/Context.h
 3D_Extrude.o: 3D_Extrude.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/Numeric.h ../Geo/Geo.h \
- ../Geo/CAD.h ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h \
- ../Mesh/Edge.h ../Geo/ExtrudeParams.h ../Mesh/Metric.h \
- ../Mesh/Matrix.h Mesh.h ../Common/Context.h Create.h
-3D_Extrude_Old.o: 3D_Extrude_Old.cpp ../Common/Gmsh.h \
- ../Common/Message.h ../DataStr/Malloc.h ../DataStr/List.h \
- ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \
- ../Common/Numeric.h ../Geo/Geo.h ../Geo/CAD.h ../Mesh/Mesh.h \
- ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
- ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Mesh/Matrix.h Mesh.h \
- ../Common/Context.h Create.h
+  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../DataStr/Tools.h ../Numeric/Numeric.h ../Geo/Geo.h \
+  ../Geo/CAD.h ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h \
+  ../Mesh/Edge.h ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Mesh/Matrix.h \
+  Mesh.h ../Common/Context.h Create.h
+3D_Extrude_Old.o: 3D_Extrude_Old.cpp ../Common/Gmsh.h ../Common/Message.h \
+  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../DataStr/Tools.h ../Numeric/Numeric.h ../Geo/Geo.h \
+  ../Geo/CAD.h ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h \
+  ../Mesh/Edge.h ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Mesh/Matrix.h \
+  Mesh.h ../Common/Context.h Create.h
 3D_Coherence.o: 3D_Coherence.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/Numeric.h ../Geo/Geo.h \
- Mesh.h Vertex.h Simplex.h Edge.h ../Geo/ExtrudeParams.h Metric.h \
- Matrix.h 3D_Mesh.h Create.h
+  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../DataStr/Tools.h ../Numeric/Numeric.h ../Geo/Geo.h \
+  Mesh.h Vertex.h Simplex.h Edge.h ../Geo/ExtrudeParams.h Metric.h \
+  Matrix.h 3D_Mesh.h Create.h
 3D_Divide.o: 3D_Divide.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/Numeric.h Mesh.h \
- Vertex.h Simplex.h Edge.h ../Geo/ExtrudeParams.h Metric.h Matrix.h
+  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../DataStr/Tools.h ../Numeric/Numeric.h Mesh.h \
+  Vertex.h Simplex.h Edge.h ../Geo/ExtrudeParams.h Metric.h Matrix.h
 3D_Bricks.o: 3D_Bricks.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/Numeric.h Mesh.h \
- Vertex.h Simplex.h Edge.h ../Geo/ExtrudeParams.h Metric.h Matrix.h
+  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../DataStr/Tools.h ../Numeric/Numeric.h Mesh.h \
+  Vertex.h Simplex.h Edge.h ../Geo/ExtrudeParams.h Metric.h Matrix.h
 MeshQuality.o: MeshQuality.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/Numeric.h Mesh.h \
- Vertex.h Simplex.h Edge.h ../Geo/ExtrudeParams.h Metric.h Matrix.h
+  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../DataStr/Tools.h ../Numeric/Numeric.h Mesh.h \
+  Vertex.h Simplex.h Edge.h ../Geo/ExtrudeParams.h Metric.h Matrix.h
 Create.o: Create.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/Numeric.h ../Geo/Geo.h \
- ../Geo/CAD.h ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h \
- ../Mesh/Edge.h ../Geo/ExtrudeParams.h ../Mesh/Metric.h \
- ../Mesh/Matrix.h Mesh.h Utils.h ../Common/Context.h Create.h
+  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../DataStr/Tools.h ../Numeric/Numeric.h ../Geo/Geo.h \
+  ../Geo/CAD.h ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h \
+  ../Mesh/Edge.h ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Mesh/Matrix.h \
+  Mesh.h Utils.h ../Common/Context.h Create.h
 Generator.o: Generator.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/Numeric.h Mesh.h \
- Vertex.h Simplex.h Edge.h ../Geo/ExtrudeParams.h Metric.h Matrix.h \
- Create.h ../Common/Context.h ../Parser/OpenFile.h
+  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../DataStr/Tools.h ../Numeric/Numeric.h Mesh.h \
+  Vertex.h Simplex.h Edge.h ../Geo/ExtrudeParams.h Metric.h Matrix.h \
+  Create.h ../Common/Context.h ../Parser/OpenFile.h
 Print_Mesh.o: Print_Mesh.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/Numeric.h ../Geo/Geo.h \
- ../Geo/CAD.h ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h \
- ../Mesh/Edge.h ../Geo/ExtrudeParams.h ../Mesh/Metric.h \
- ../Mesh/Matrix.h Mesh.h Create.h ../Common/Context.h
+  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../DataStr/Tools.h ../Numeric/Numeric.h ../Geo/Geo.h \
+  ../Geo/CAD.h ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h \
+  ../Mesh/Edge.h ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Mesh/Matrix.h \
+  Mesh.h Create.h ../Common/Context.h
 Read_Mesh.o: Read_Mesh.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Geo/Geo.h Mesh.h Vertex.h \
- Simplex.h Edge.h ../Geo/ExtrudeParams.h Metric.h Matrix.h 3D_Mesh.h \
- Create.h ../Geo/MinMax.h ../Common/Context.h
-STL.o: STL.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h Mesh.h Vertex.h Simplex.h Edge.h \
- ../Geo/ExtrudeParams.h Metric.h Matrix.h STL.h
-SMS.o: SMS.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Geo/Geo.h Mesh.h Vertex.h \
- Simplex.h Edge.h ../Geo/ExtrudeParams.h Metric.h Matrix.h Create.h \
- ../Geo/MinMax.h ../Geo/CAD.h ../Mesh/Mesh.h ../Common/Context.h
+  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../DataStr/Tools.h ../Geo/Geo.h Mesh.h Vertex.h \
+  Simplex.h Edge.h ../Geo/ExtrudeParams.h Metric.h Matrix.h 3D_Mesh.h \
+  Create.h ../Geo/MinMax.h ../Common/Context.h
+STL.o: STL.cpp ../Common/Gmsh.h ../Common/Message.h ../DataStr/Malloc.h \
+  ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \
+  Mesh.h Vertex.h Simplex.h Edge.h ../Geo/ExtrudeParams.h Metric.h \
+  Matrix.h STL.h
+SMS.o: SMS.cpp ../Common/Gmsh.h ../Common/Message.h ../DataStr/Malloc.h \
+  ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \
+  ../Geo/Geo.h Mesh.h Vertex.h Simplex.h Edge.h ../Geo/ExtrudeParams.h \
+  Metric.h Matrix.h Create.h ../Geo/MinMax.h ../Geo/CAD.h ../Mesh/Mesh.h \
+  ../Common/Context.h
 SwapEdge.o: SwapEdge.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/Numeric.h Mesh.h \
- Vertex.h Simplex.h Edge.h ../Geo/ExtrudeParams.h Metric.h Matrix.h \
- SwapPatterns.h
+  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../DataStr/Tools.h ../Numeric/Numeric.h Mesh.h \
+  Vertex.h Simplex.h Edge.h ../Geo/ExtrudeParams.h Metric.h Matrix.h \
+  SwapPatterns.h
 Utils.o: Utils.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/Numeric.h ../Geo/Geo.h \
- ../Geo/CAD.h ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h \
- ../Mesh/Edge.h ../Geo/ExtrudeParams.h ../Mesh/Metric.h \
- ../Mesh/Matrix.h Mesh.h Interpolation.h ../Adapt/nrutil.h \
- ../Common/Context.h
+  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../DataStr/Tools.h ../Numeric/Numeric.h ../Geo/Geo.h \
+  ../Geo/CAD.h ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h \
+  ../Mesh/Edge.h ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Mesh/Matrix.h \
+  Mesh.h Interpolation.h ../Numeric/nrutil.h ../Common/Context.h
 Metric.o: Metric.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/Numeric.h ../Geo/Geo.h \
- ../Geo/CAD.h ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h \
- ../Mesh/Edge.h ../Geo/ExtrudeParams.h ../Mesh/Metric.h \
- ../Mesh/Matrix.h Mesh.h Matrix.h Interpolation.h
+  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../DataStr/Tools.h ../Numeric/Numeric.h ../Geo/Geo.h \
+  ../Geo/CAD.h ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h \
+  ../Mesh/Edge.h ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Mesh/Matrix.h \
+  Mesh.h Matrix.h Interpolation.h
 Nurbs.o: Nurbs.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h Mesh.h Vertex.h Simplex.h Edge.h \
- ../Geo/ExtrudeParams.h Metric.h Matrix.h
-Interpolation.o: Interpolation.cpp ../Common/Gmsh.h \
- ../Common/Message.h ../DataStr/Malloc.h ../DataStr/List.h \
- ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \
- ../Common/Numeric.h ../Geo/Geo.h ../Geo/CAD.h ../Mesh/Mesh.h \
- ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
- ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Mesh/Matrix.h Mesh.h \
- Utils.h Interpolation.h
+  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../DataStr/Tools.h Mesh.h Vertex.h Simplex.h Edge.h \
+  ../Geo/ExtrudeParams.h Metric.h Matrix.h
+Interpolation.o: Interpolation.cpp ../Common/Gmsh.h ../Common/Message.h \
+  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../DataStr/Tools.h ../Numeric/Numeric.h ../Geo/Geo.h \
+  ../Geo/CAD.h ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h \
+  ../Mesh/Edge.h ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Mesh/Matrix.h \
+  Mesh.h Utils.h Interpolation.h
 SecondOrder.o: SecondOrder.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Geo/Geo.h Mesh.h Vertex.h \
- Simplex.h Edge.h ../Geo/ExtrudeParams.h Metric.h Matrix.h Utils.h \
- Interpolation.h ../Common/Numeric.h
+  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../DataStr/Tools.h ../Geo/Geo.h Mesh.h Vertex.h \
+  Simplex.h Edge.h ../Geo/ExtrudeParams.h Metric.h Matrix.h Utils.h \
+  Interpolation.h ../Numeric/Numeric.h
 Smoothing.o: Smoothing.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/Numeric.h Mesh.h \
- Vertex.h Simplex.h Edge.h ../Geo/ExtrudeParams.h Metric.h Matrix.h
+  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../DataStr/Tools.h ../Numeric/Numeric.h Mesh.h \
+  Vertex.h Simplex.h Edge.h ../Geo/ExtrudeParams.h Metric.h Matrix.h
 CrossData.o: CrossData.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h Mesh.h Vertex.h Simplex.h Edge.h \
- ../Geo/ExtrudeParams.h Metric.h Matrix.h
+  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../DataStr/Tools.h Mesh.h Vertex.h Simplex.h Edge.h \
+  ../Geo/ExtrudeParams.h Metric.h Matrix.h
 Vertex.o: Vertex.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/Numeric.h Vertex.h \
- Mesh.h Simplex.h Edge.h ../Geo/ExtrudeParams.h Metric.h Matrix.h \
- ../Common/Context.h
-Edge.o: Edge.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/Numeric.h Mesh.h \
- Vertex.h Simplex.h Edge.h ../Geo/ExtrudeParams.h Metric.h Matrix.h
+  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../DataStr/Tools.h ../Numeric/Numeric.h Vertex.h \
+  Mesh.h Simplex.h Edge.h ../Geo/ExtrudeParams.h Metric.h Matrix.h \
+  ../Common/Context.h
+Edge.o: Edge.cpp ../Common/Gmsh.h ../Common/Message.h ../DataStr/Malloc.h \
+  ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \
+  ../Numeric/Numeric.h Mesh.h Vertex.h Simplex.h Edge.h \
+  ../Geo/ExtrudeParams.h Metric.h Matrix.h
 Simplex.o: Simplex.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/Numeric.h ../Geo/Geo.h \
- Mesh.h Vertex.h Simplex.h Edge.h ../Geo/ExtrudeParams.h Metric.h \
- Matrix.h ../Common/Context.h
+  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../DataStr/Tools.h ../Numeric/Numeric.h ../Geo/Geo.h \
+  Mesh.h Vertex.h Simplex.h Edge.h ../Geo/ExtrudeParams.h Metric.h \
+  Matrix.h ../Common/Context.h
diff --git a/Mesh/Matrix.h b/Mesh/Matrix.h
index aad2f6747555fc167640a8626cc3b1862aaac1dc..0bee6f368c34df308aa1bc053c269582f28c5806 100644
--- a/Mesh/Matrix.h
+++ b/Mesh/Matrix.h
@@ -1,6 +1,22 @@
 #ifndef _GMSH_MATRIX_
 #define _GMSH_MATRIX_
 
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
 #define _TAILLE_ 3
 
 class Vector3
diff --git a/Mesh/Mesh.h b/Mesh/Mesh.h
index a55c713ff17aa5ec035f7a1713542c336d74b065..457c3c0a1caa94d542e1ffd2e5cebc86ec8b1300 100644
--- a/Mesh/Mesh.h
+++ b/Mesh/Mesh.h
@@ -1,6 +1,22 @@
 #ifndef _MESH_H_
 #define _MESH_H_
 
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
 #include "Vertex.h"
 #include "Simplex.h"
 #include "Edge.h"
diff --git a/Mesh/MeshQuality.cpp b/Mesh/MeshQuality.cpp
index 7efd0b2f38b9a9a7084f63df247b7fa67480d19e..74eec769158f7c09d7c0f876de876b8f903758fb 100644
--- a/Mesh/MeshQuality.cpp
+++ b/Mesh/MeshQuality.cpp
@@ -1,4 +1,20 @@
-// $Id: MeshQuality.cpp,v 1.6 2002-04-26 00:15:30 geuzaine Exp $
+// $Id: MeshQuality.cpp,v 1.7 2002-05-18 07:18:03 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 #include "Gmsh.h"
 #include "Numeric.h"
diff --git a/Mesh/Metric.cpp b/Mesh/Metric.cpp
index 30efe3ee1a28a2c09b69d4d29a32a06efc20fe94..8cdfe75bce295eac5aaaa2e42dd76664bb722ef5 100644
--- a/Mesh/Metric.cpp
+++ b/Mesh/Metric.cpp
@@ -1,4 +1,21 @@
-// $Id: Metric.cpp,v 1.11 2002-04-06 00:59:48 geuzaine Exp $
+// $Id: Metric.cpp,v 1.12 2002-05-18 07:18:03 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
 #include <time.h>
 #include "Gmsh.h"
 #include "Numeric.h"
diff --git a/Mesh/Metric.h b/Mesh/Metric.h
index e6cc68b1e64f192943695cefbe1a1d66924aa574..d0a36ef3881c87103a83c65a13b972b2cec3d021 100644
--- a/Mesh/Metric.h
+++ b/Mesh/Metric.h
@@ -1,9 +1,25 @@
 #ifndef _METRIC_H_
 #define _METRIC_H_
 
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
 #include "Matrix.h"
-class GMSHMetric
-{
+
+class GMSHMetric{
  public:
   double m[3][3];
   double limite_aniso;
diff --git a/Mesh/SwapEdge.cpp b/Mesh/SwapEdge.cpp
index 74b695638f71ab7dbfc84d4f336248d7e2283a50..5e11fd1ba5f4681fa147fe6b6f42decde4fa104a 100644
--- a/Mesh/SwapEdge.cpp
+++ b/Mesh/SwapEdge.cpp
@@ -1,4 +1,4 @@
-// $Id: SwapEdge.cpp,v 1.7 2001-08-11 23:28:32 geuzaine Exp $
+// $Id: SwapEdge.cpp,v 1.8 2002-05-18 07:18:03 geuzaine Exp $
 
 #include "Gmsh.h"
 #include "Numeric.h"
@@ -287,10 +287,8 @@ void SwapEdges3D (Mesh * M, Volume * v, double GammaPrescribed, bool order){
     return;
   EdgesContainer ec (srfs);
   Simplex *s;
-  Progress (102);
+
   for (int i = 0; i < List_Nbr (list); i++){
-    if (i % 100 == 1)
-      Progress ((100 * i) / List_Nbr (list));
     List_Read (list, i, &s);
     if (s->GammaShapeMeasure () < GammaPrescribed){
       int iEdge = GetWorstEdge (s, ec, order);
@@ -298,7 +296,6 @@ void SwapEdges3D (Mesh * M, Volume * v, double GammaPrescribed, bool order){
         SwapEdge (M, v, s, iEdge);
     }
   }
-  Progress (-1);
   List_Delete (srfs);
   List_Delete (list);
 }
diff --git a/Mesh/mGeomSearch.h b/Mesh/mGeomSearch.h
index 3354e8eb4be848b0752f6e77035900ddfdd847db..7d36f2c91794efb5c160befc64986328e9d9833b 100644
--- a/Mesh/mGeomSearch.h
+++ b/Mesh/mGeomSearch.h
@@ -1,7 +1,9 @@
 #ifndef _MGEOM_SEARCH_H
 #define _MGEOM_SEARCH_H
+
 #include <vector>
 #include <algorithm>
+
 #define MIN(x,y) ((x<y)?(x):(y))
 #define MAX(x,y) ((x>y)?(x):(y))
 #define TOL 1.e-06
diff --git a/Numeric/Makefile b/Numeric/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..6fb4852a9ea6b1eb8ff518650e2f050ce8cbc900
--- /dev/null
+++ b/Numeric/Makefile
@@ -0,0 +1,74 @@
+# $Id: Makefile,v 1.1 2002-05-18 07:18:03 geuzaine Exp $
+#
+# Makefile for "libGmshNumeric.a"
+#
+
+.IGNORE:
+
+CXX       = c++
+AR        = ar ruvs
+RM        = rm
+RANLIB    = ranlib
+
+LIB       = ../lib/libGmshNumeric.a
+INCLUDE   = -I../Common -I../DataStr
+
+OPT_FLAGS     = -g -Wall
+OS_FLAGS      = 
+VERSION_FLAGS = 
+
+RMFLAGS   = -f
+CFLAGS    = $(OPT_FLAGS) $(OS_FLAGS) $(VERSION_FLAGS) $(INCLUDE) 
+
+SRC = Numeric.cpp\
+      mnbrak.cpp \
+      brent.cpp \
+      nrutil.cpp \
+      dsvdcmp.cpp \
+      newt.cpp \
+      fmin.cpp \
+      fdjac.cpp \
+      lnsrch.cpp \
+      lubksb.cpp \
+      ludcmp.cpp
+
+OBJ = $(SRC:.cpp=.o)
+
+.SUFFIXES: .o .cpp
+
+$(LIB): $(OBJ)
+	$(AR) $(LIB) $(OBJ)
+	$(RANLIB) $(LIB)
+
+.cpp.o:
+	$(CXX) $(CFLAGS) -c $<
+
+clean:
+	$(RM) $(RMFLAGS) *.o 
+
+lint:
+	$(LINT) $(CFLAGS) $(SRC)
+
+depend:
+	(sed '/^# DO NOT DELETE THIS LINE/q' Makefile && \
+	$(CXX) -MM $(CFLAGS) ${SRC} \
+	) >Makefile.new
+	cp Makefile Makefile.bak
+	cp Makefile.new Makefile
+	$(RM) $(RMFLAGS) Makefile.new
+
+# DO NOT DELETE THIS LINE
+mnbrak.o: mnbrak.cpp nrutil.h Numeric.h
+brent.o: brent.cpp nrutil.h Numeric.h
+nrutil.o: nrutil.cpp ../Common/Gmsh.h ../Common/Message.h \
+  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../DataStr/Tools.h
+dsvdcmp.o: dsvdcmp.cpp ../Common/Gmsh.h ../Common/Message.h \
+  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../DataStr/Tools.h nrutil.h Numeric.h
+newt.o: newt.cpp nrutil.h Numeric.h
+fmin.o: fmin.cpp nrutil.h Numeric.h
+fdjac.o: fdjac.cpp nrutil.h Numeric.h
+lnsrch.o: lnsrch.cpp nrutil.h Numeric.h
+lubksb.o: lubksb.cpp
+ludcmp.o: ludcmp.cpp nrutil.h Numeric.h
diff --git a/Numeric/Makefile.bak b/Numeric/Makefile.bak
new file mode 100644
index 0000000000000000000000000000000000000000..6773d03167615ed162015eaf6bdd518603dcc8f8
--- /dev/null
+++ b/Numeric/Makefile.bak
@@ -0,0 +1,77 @@
+# $Id: Makefile.bak,v 1.1 2002-05-18 07:18:03 geuzaine Exp $
+#
+# Makefile for "libGmshNumeric.a"
+#
+
+.IGNORE:
+
+CXX       = c++
+AR        = ar ruvs
+RM        = rm
+RANLIB    = ranlib
+
+LIB       = ../lib/libGmshNumeric.a
+INCLUDE   = -I../Common -I../DataStr
+
+OPT_FLAGS     = -g -Wall
+OS_FLAGS      = 
+VERSION_FLAGS = 
+
+RMFLAGS   = -f
+CFLAGS    = $(OPT_FLAGS) $(OS_FLAGS) $(VERSION_FLAGS) $(INCLUDE) 
+
+SRC = mnbrak.cpp \
+      brent.cpp \
+      nrutil.cpp \
+      dsvdcmp.cpp \
+      newt.cpp \
+      fmin.cpp \
+      fdjac.cpp \
+      lnsrch.cpp \
+      lubksb.cpp \
+      ludcmp.cpp
+
+OBJ = $(SRC:.cpp=.o)
+
+.SUFFIXES: .o .cpp
+
+$(LIB): $(OBJ)
+	$(AR) $(LIB) $(OBJ)
+	$(RANLIB) $(LIB)
+
+.cpp.o:
+	$(CXX) $(CFLAGS) -c $<
+
+clean:
+	$(RM) $(RMFLAGS) *.o 
+
+lint:
+	$(LINT) $(CFLAGS) $(SRC)
+
+depend:
+	(sed '/^# DO NOT DELETE THIS LINE/q' Makefile && \
+	$(CXX) -MM $(CFLAGS) ${SRC} \
+	) >Makefile.new
+	cp Makefile Makefile.bak
+	cp Makefile.new Makefile
+	$(RM) $(RMFLAGS) Makefile.new
+
+# DO NOT DELETE THIS LINE
+Adapt.o: Adapt.cpp ../Common/Gmsh.h ../Common/Message.h \
+ ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
+ ../DataStr/avl.h ../DataStr/Tools.h Adapt.h nrutil.h \
+ ../Common/Numeric.h
+mnbrak.o: mnbrak.cpp nrutil.h ../Common/Numeric.h
+brent.o: brent.cpp nrutil.h ../Common/Numeric.h
+nrutil.o: nrutil.cpp ../Common/Gmsh.h ../Common/Message.h \
+ ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
+ ../DataStr/avl.h ../DataStr/Tools.h
+dsvdcmp.o: dsvdcmp.cpp ../Common/Gmsh.h ../Common/Message.h \
+ ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
+ ../DataStr/avl.h ../DataStr/Tools.h nrutil.h ../Common/Numeric.h
+newt.o: newt.cpp nrutil.h ../Common/Numeric.h
+fmin.o: fmin.cpp nrutil.h ../Common/Numeric.h
+fdjac.o: fdjac.cpp nrutil.h ../Common/Numeric.h
+lnsrch.o: lnsrch.cpp nrutil.h ../Common/Numeric.h
+lubksb.o: lubksb.cpp
+ludcmp.o: ludcmp.cpp nrutil.h ../Common/Numeric.h
diff --git a/Common/Numeric.cpp b/Numeric/Numeric.cpp
similarity index 71%
rename from Common/Numeric.cpp
rename to Numeric/Numeric.cpp
index ab8553f5ee5166ee39e8e36a3a1c4cc48d12e139..6c39ae463600314db1f02ba46558a73429c67d96 100644
--- a/Common/Numeric.cpp
+++ b/Numeric/Numeric.cpp
@@ -1,4 +1,20 @@
-// $Id: Numeric.cpp,v 1.5 2002-01-24 17:54:32 geuzaine Exp $
+// $Id: Numeric.cpp,v 1.1 2002-05-18 07:18:03 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 #include "Gmsh.h"
 #include "Numeric.h"
@@ -157,3 +173,40 @@ double angle_02pi (double A3){
   return A3;
 }
 
+double InterpolateIso(double *X, double *Y, double *Z, 
+		      double *Val, double V, int I1, int I2, 
+		      double *XI, double *YI ,double *ZI){
+  if(Val[I1] == Val[I2]){
+    *XI = X[I1]; 
+    *YI = Y[I1]; 
+    *ZI = Z[I1]; 
+    return 0;
+  }
+  else{
+    double coef = (V - Val[I1])/(Val[I2]-Val[I1]);
+    *XI= coef*(X[I2]-X[I1]) + X[I1];
+    *YI= coef*(Y[I2]-Y[I1]) + Y[I1];
+    *ZI= coef*(Z[I2]-Z[I1]) + Z[I1];
+    return coef;
+  }
+}
+
+void gradSimplex (double *x, double *y, double *z, double *v, double *grad){
+  // p = p1 * (1-u-v-w) + p2 u + p3 v + p4 w
+
+  double mat[3][3];
+  double det,b[3];
+  mat[0][0] = x[1]-x[0];
+  mat[1][0] = x[2]-x[0];
+  mat[2][0] = x[3]-x[0];
+  mat[0][1] = y[1]-y[0];
+  mat[1][1] = y[2]-y[0];
+  mat[2][1] = y[3]-y[0];
+  mat[0][2] = z[1]-z[0];
+  mat[1][2] = z[2]-z[0];
+  mat[2][2] = z[3]-z[0];
+  b[0] = v[1]-v[0];
+  b[1] = v[2]-v[0];
+  b[2] = v[3]-v[0];
+  sys3x3 (mat, b, grad, &det); 
+}
diff --git a/Common/Numeric.h b/Numeric/Numeric.h
similarity index 57%
rename from Common/Numeric.h
rename to Numeric/Numeric.h
index 9c8b141c17e718665252b0e0c11565b1ce690dd8..b7bc549001b54053e31d5f225eaf20a38b808d7b 100644
--- a/Common/Numeric.h
+++ b/Numeric/Numeric.h
@@ -1,6 +1,22 @@
 #ifndef _NUMERIC_H_
 #define _NUMERIC_H_
 
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
 #include <math.h>
 
 #define RADTODEG      57.295779513082321
@@ -46,4 +62,9 @@ int det3x3 (double mat[3][3], double *det);
 int inv3x3 (double mat[3][3], double inv[3][3], double *det);
 double angle_02pi (double A3);
 
+double InterpolateIso(double *X, double *Y, double *Z, 
+		      double *Val, double V, int I1, int I2, 
+		      double *XI, double *YI ,double *ZI);
+void gradSimplex (double *x, double *y, double *z, double *v, double *grad);
+
 #endif
diff --git a/Numeric/brent.cpp b/Numeric/brent.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..7b78e4d5954d2f20e178f3c8a607f6dab346aae7
--- /dev/null
+++ b/Numeric/brent.cpp
@@ -0,0 +1,99 @@
+// $Id: brent.cpp,v 1.1 2002-05-18 07:18:03 geuzaine Exp $
+
+
+#include <math.h>
+#define NRANSI
+#include "nrutil.h"
+#define ITMAX 100
+#define CGOLD 0.3819660
+#define ZEPS 1.0e-10
+#define SHFT(a,b,c,d) (a)=(b);(b)=(c);(c)=(d);
+
+double 
+brent (double ax, double bx, double cx, double (*f) (double), double tol,
+       double *xmin)
+{
+  int iter;
+  double a, b, d=0.0, etemp, fu, fv, fw, fx, p, q, r, tol1, tol2, u, v, w,
+    x, xm;
+  double e = 0.0;
+
+  a = (ax < cx ? ax : cx);
+  b = (ax > cx ? ax : cx);
+  x = w = v = bx;
+  fw = fv = fx = (*f) (x);
+  for (iter = 1; iter <= ITMAX; iter++)
+    {
+      xm = 0.5 * (a + b);
+      tol2 = 2.0 * (tol1 = tol * fabs (x) + ZEPS);
+      if (fabs (x - xm) <= (tol2 - 0.5 * (b - a)))
+        {
+          *xmin = x;
+          return fx;
+        }
+      if (fabs (e) > tol1)
+        {
+          r = (x - w) * (fx - fv);
+          q = (x - v) * (fx - fw);
+          p = (x - v) * q - (x - w) * r;
+          q = 2.0 * (q - r);
+          if (q > 0.0)
+            p = -p;
+          q = fabs (q);
+          etemp = e;
+          e = d;
+          if (fabs (p) >= fabs (0.5 * q * etemp) || p <= q * (a - x) || p >= q * (b - x))
+            d = CGOLD * (e = (x >= xm ? a - x : b - x));
+          else
+            {
+              d = p / q;
+              u = x + d;
+              if (u - a < tol2 || b - u < tol2)
+                d = SIGN (tol1, xm - x);
+            }
+        }
+      else
+        {
+          d = CGOLD * (e = (x >= xm ? a - x : b - x));
+        }
+      u = (fabs (d) >= tol1 ? x + d : x + SIGN (tol1, d));
+      fu = (*f) (u);
+      if (fu <= fx)
+        {
+          if (u >= x)
+            a = x;
+          else
+            b = x;
+          SHFT (v, w, x, u)
+            SHFT (fv, fw, fx, fu)
+        }
+      else
+        {
+          if (u < x)
+            a = u;
+          else
+            b = u;
+          if (fu <= fw || w == x)
+            {
+              v = w;
+              w = u;
+              fv = fw;
+              fw = fu;
+            }
+          else if (fu <= fv || v == x || v == w)
+            {
+              v = u;
+              fv = fu;
+            }
+        }
+    }
+  nrerror ("Too many iterations in brent");
+  *xmin = x;
+  return fx;
+}
+#undef ITMAX
+#undef CGOLD
+#undef ZEPS
+#undef SHFT
+#undef NRANSI
+/* (C) Copr. 1986-92 Numerical Recipes Software J!0. */
diff --git a/Numeric/dsvdcmp.cpp b/Numeric/dsvdcmp.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..878c7f673b5301662214a8013547fe585fed5516
--- /dev/null
+++ b/Numeric/dsvdcmp.cpp
@@ -0,0 +1,215 @@
+// $Id: dsvdcmp.cpp,v 1.1 2002-05-18 07:18:03 geuzaine Exp $
+
+#include "Gmsh.h"
+#include "nrutil.h"
+
+double dpythag(double a, double b)
+{
+  double absa,absb;
+  absa=fabs(a);
+  absb=fabs(b);
+  if (absa > absb) return absa*sqrt(1.0+SQR(absb/absa));
+  else return (absb == 0.0 ? 0.0 : absb*sqrt(1.0+SQR(absa/absb)));
+}
+
+void dsvdcmp(double **a, int m, int n, double w[], double **v)
+{
+  double dpythag(double a, double b);
+  int flag,i,its,j,jj,k,l,nm;
+  double anorm,c,f,g,h,s,scale,x,y,z,*rv1;
+
+  rv1=dvector(1,n);
+  g=scale=anorm=0.0;
+  for (i=1;i<=n;i++) {
+    l=i+1;
+    rv1[i]=scale*g;
+    g=s=scale=0.0;
+    if (i <= m) {
+      for (k=i;k<=m;k++) scale += fabs(a[k][i]);
+      if (scale) {
+        for (k=i;k<=m;k++) {
+          a[k][i] /= scale;
+          s += a[k][i]*a[k][i];
+        }
+        f=a[i][i];
+        g = -SIGN(sqrt(s),f);
+        h=f*g-s;
+        a[i][i]=f-g;
+        for (j=l;j<=n;j++) {
+          for (s=0.0,k=i;k<=m;k++) s += a[k][i]*a[k][j];
+          f=s/h;
+          for (k=i;k<=m;k++) a[k][j] += f*a[k][i];
+        }
+        for (k=i;k<=m;k++) a[k][i] *= scale;
+      }
+    }
+    w[i]=scale *g;
+    g=s=scale=0.0;
+    if (i <= m && i != n) {
+      for (k=l;k<=n;k++) scale += fabs(a[i][k]);
+      if (scale) {
+        for (k=l;k<=n;k++) {
+          a[i][k] /= scale;
+          s += a[i][k]*a[i][k];
+        }
+        f=a[i][l];
+        g = -SIGN(sqrt(s),f);
+        h=f*g-s;
+        a[i][l]=f-g;
+        for (k=l;k<=n;k++) rv1[k]=a[i][k]/h;
+        for (j=l;j<=m;j++) {
+          for (s=0.0,k=l;k<=n;k++) s += a[j][k]*a[i][k];
+          for (k=l;k<=n;k++) a[j][k] += s*rv1[k];
+        }
+        for (k=l;k<=n;k++) a[i][k] *= scale;
+      }
+    }
+    anorm=DMAX(anorm,(fabs(w[i])+fabs(rv1[i])));
+  }
+  for (i=n;i>=1;i--) {
+    if (i < n) {
+      if (g) {
+        for (j=l;j<=n;j++) v[j][i]=(a[i][j]/a[i][l])/g;
+        for (j=l;j<=n;j++) {
+          for (s=0.0,k=l;k<=n;k++) s += a[i][k]*v[k][j];
+          for (k=l;k<=n;k++) v[k][j] += s*v[k][i];
+        }
+      }
+      for (j=l;j<=n;j++) v[i][j]=v[j][i]=0.0;
+    }
+    v[i][i]=1.0;
+    g=rv1[i];
+    l=i;
+  }
+  for (i=IMIN(m,n);i>=1;i--) {
+    l=i+1;
+    g=w[i];
+    for (j=l;j<=n;j++) a[i][j]=0.0;
+    if (g) {
+      g=1.0/g;
+      for (j=l;j<=n;j++) {
+        for (s=0.0,k=l;k<=m;k++) s += a[k][i]*a[k][j];
+        f=(s/a[i][i])*g;
+        for (k=i;k<=m;k++) a[k][j] += f*a[k][i];
+      }
+      for (j=i;j<=m;j++) a[j][i] *= g;
+    } else for (j=i;j<=m;j++) a[j][i]=0.0;
+    ++a[i][i];
+  }
+  for (k=n;k>=1;k--) {
+    for (its=1;its<=30;its++) {
+      flag=1;
+      for (l=k;l>=1;l--) {
+        nm=l-1;
+        if ((double)(fabs(rv1[l])+anorm) == anorm) {
+          flag=0;
+          break;
+        }
+        if ((double)(fabs(w[nm])+anorm) == anorm) break;
+      }
+      if (flag) {
+        c=0.0;
+        s=1.0;
+        for (i=l;i<=k;i++) {
+          f=s*rv1[i];
+          rv1[i]=c*rv1[i];
+          if ((double)(fabs(f)+anorm) == anorm) break;
+          g=w[i];
+          h=dpythag(f,g);
+          w[i]=h;
+          h=1.0/h;
+          c=g*h;
+          s = -f*h;
+          for (j=1;j<=m;j++) {
+            y=a[j][nm];
+            z=a[j][i];
+            a[j][nm]=y*c+z*s;
+            a[j][i]=z*c-y*s;
+          }
+        }
+      }
+      z=w[k];
+      if (l == k) {
+        if (z < 0.0) {
+          w[k] = -z;
+          for (j=1;j<=n;j++) v[j][k] = -v[j][k];
+        }
+        break;
+      }
+      if (its == 1000){
+	Msg(GERROR, "SVD decomposition: no convergence in 1000 iterations");
+      }
+      x=w[l];
+      nm=k-1;
+      y=w[nm];
+      g=rv1[nm];
+      h=rv1[k];
+      f=((y-z)*(y+z)+(g-h)*(g+h))/(2.0*h*y);
+      g=dpythag(f,1.0);
+      f=((x-z)*(x+z)+h*((y/(f+SIGN(g,f)))-h))/x;
+      c=s=1.0;
+      for (j=l;j<=nm;j++) {
+        i=j+1;
+        g=rv1[i];
+        y=w[i];
+        h=s*g;
+        g=c*g;
+        z=dpythag(f,h);
+        rv1[j]=z;
+        c=f/z;
+        s=h/z;
+        f=x*c+g*s;
+        g = g*c-x*s;
+        h=y*s;
+        y *= c;
+        for (jj=1;jj<=n;jj++) {
+          x=v[jj][j];
+          z=v[jj][i];
+          v[jj][j]=x*c+z*s;
+          v[jj][i]=z*c-x*s;
+        }
+        z=dpythag(f,h);
+        w[j]=z;
+        if (z) {
+          z=1.0/z;
+          c=f*z;
+          s=h*z;
+        }
+        f=c*g+s*y;
+        x=c*y-s*g;
+        for (jj=1;jj<=m;jj++) {
+          y=a[jj][j];
+          z=a[jj][i];
+          a[jj][j]=y*c+z*s;
+          a[jj][i]=z*c-y*s;
+        }
+      }
+      rv1[l]=0.0;
+      rv1[k]=f;
+      w[k]=x;
+    }
+  }
+  free_dvector(rv1,1,n);
+}
+
+void dsvbksb(double **u, double w[], double **v, int m, int n, double b[], double x[])
+{
+	int jj,j,i;
+	double s,*tmp;
+
+	tmp=dvector(1,n);
+	for (j=1;j<=n;j++) {
+		s=0.0;
+		if (w[j]) {
+			for (i=1;i<=m;i++) s += u[i][j]*b[i];
+			s /= w[j];
+		}
+		tmp[j]=s;
+	}
+	for (j=1;j<=n;j++) {
+		s=0.0;
+		for (jj=1;jj<=n;jj++) s += v[j][jj]*tmp[jj];
+		x[j]=s;
+	}
+	free_dvector(tmp,1,n);
+}
diff --git a/Numeric/fdjac.cpp b/Numeric/fdjac.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..7a7574784394114e069d6d11858985fc4e0282f3
--- /dev/null
+++ b/Numeric/fdjac.cpp
@@ -0,0 +1,31 @@
+// $Id: fdjac.cpp,v 1.1 2002-05-18 07:18:03 geuzaine Exp $
+#include <math.h>
+#define NRANSI
+#include "nrutil.h"
+#define EPS 1.0e-4
+
+void 
+fdjac (int n, float x[], float fvec[], float **df,
+       void (*vecfunc) (int, float[], float[]))
+{
+  int i, j;
+  float h, temp, *f;
+
+  f = vector (1, n);
+  for (j = 1; j <= n; j++)
+    {
+      temp = x[j];
+      h = EPS * fabs (temp);
+      if (h == 0.0)
+        h = EPS;
+      x[j] = temp + h;
+      h = x[j] - temp;
+      (*vecfunc) (n, x, f);
+      x[j] = temp;
+      for (i = 1; i <= n; i++)
+        df[i][j] = (f[i] - fvec[i]) / h;
+    }
+  free_vector (f, 1, n);
+}
+#undef EPS
+#undef NRANSI
diff --git a/Numeric/fmin.cpp b/Numeric/fmin.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..8dbe5e4d9df2f9f8f65c0118f0757fc8510321af
--- /dev/null
+++ b/Numeric/fmin.cpp
@@ -0,0 +1,20 @@
+// $Id: fmin.cpp,v 1.1 2002-05-18 07:18:03 geuzaine Exp $
+#define NRANSI
+#include "nrutil.h"
+
+extern int nn;
+extern float *fvec;
+extern void (*nrfuncv) (int n, float v[], float f[]);
+
+float 
+fmin (float x[])
+{
+  int i;
+  float sum;
+
+  (*nrfuncv) (nn, x, fvec);
+  for (sum = 0.0, i = 1; i <= nn; i++)
+    sum += SQR (fvec[i]);
+  return 0.5 * sum;
+}
+#undef NRANSI
diff --git a/Numeric/lnsrch.cpp b/Numeric/lnsrch.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..614dee615810d31f5715533e764402d3b72d8794
--- /dev/null
+++ b/Numeric/lnsrch.cpp
@@ -0,0 +1,80 @@
+// $Id: lnsrch.cpp,v 1.1 2002-05-18 07:18:03 geuzaine Exp $
+#include <math.h>
+#define NRANSI
+#include "nrutil.h"
+#define ALF 1.0e-4
+#define TOLX 1.0e-7
+
+void 
+lnsrch (int n, float xold[], float fold, float g[], float p[], float x[],
+        float *f, float stpmax, int *check, float (*func) (float[]))
+{
+  int i;
+  float a, alam, alam2, alamin, b, disc, f2, fold2, rhs1, rhs2, slope,
+    sum, temp, test, tmplam;
+
+  *check = 0;
+  for (sum = 0.0, i = 1; i <= n; i++)
+    sum += p[i] * p[i];
+  sum = sqrt (sum);
+  if (sum > stpmax)
+    for (i = 1; i <= n; i++)
+      p[i] *= stpmax / sum;
+  for (slope = 0.0, i = 1; i <= n; i++)
+    slope += g[i] * p[i];
+  test = 0.0;
+  for (i = 1; i <= n; i++)
+    {
+      temp = fabs (p[i]) / FMAX (fabs (xold[i]), 1.0);
+      if (temp > test)
+        test = temp;
+    }
+  alamin = TOLX / test;
+  alam = 1.0;
+  for (;;)
+    {
+      for (i = 1; i <= n; i++)
+        x[i] = xold[i] + alam * p[i];
+      *f = (*func) (x);
+      if (alam < alamin)
+        {
+          for (i = 1; i <= n; i++)
+            x[i] = xold[i];
+          *check = 1;
+          return;
+        }
+      else if (*f <= fold + ALF * alam * slope)
+        return;
+      else
+        {
+          if (alam == 1.0)
+            tmplam = -slope / (2.0 * (*f - fold - slope));
+          else
+            {
+              rhs1 = *f - fold - alam * slope;
+              rhs2 = f2 - fold2 - alam2 * slope;
+              a = (rhs1 / (alam * alam) - rhs2 / (alam2 * alam2)) / (alam - alam2);
+              b = (-alam2 * rhs1 / (alam * alam) + alam * rhs2 / (alam2 * alam2)) / (alam - alam2);
+              if (a == 0.0)
+                tmplam = -slope / (2.0 * b);
+              else
+                {
+                  disc = b * b - 3.0 * a * slope;
+                  if (disc < 0.0)
+                    nrerror ("Roundoff problem in lnsrch.");
+                  else
+                    tmplam = (-b + sqrt (disc)) / (3.0 * a);
+                }
+              if (tmplam > 0.5 * alam)
+                tmplam = 0.5 * alam;
+            }
+        }
+      alam2 = alam;
+      f2 = *f;
+      fold2 = fold;
+      alam = FMAX (tmplam, 0.1 * alam);
+    }
+}
+#undef ALF
+#undef TOLX
+#undef NRANSI
diff --git a/Numeric/lubksb.cpp b/Numeric/lubksb.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..4f88cae1e0cae7b6642dd6ee6699945e56507546
--- /dev/null
+++ b/Numeric/lubksb.cpp
@@ -0,0 +1,27 @@
+// $Id: lubksb.cpp,v 1.1 2002-05-18 07:18:03 geuzaine Exp $
+void 
+lubksb (float **a, int n, int *indx, float b[])
+{
+  int i, ii = 0, ip, j;
+  float sum;
+
+  for (i = 1; i <= n; i++)
+    {
+      ip = indx[i];
+      sum = b[ip];
+      b[ip] = b[i];
+      if (ii)
+        for (j = ii; j <= i - 1; j++)
+          sum -= a[i][j] * b[j];
+      else if (sum)
+        ii = i;
+      b[i] = sum;
+    }
+  for (i = n; i >= 1; i--)
+    {
+      sum = b[i];
+      for (j = i + 1; j <= n; j++)
+        sum -= a[i][j] * b[j];
+      b[i] = sum / a[i][i];
+    }
+}
diff --git a/Numeric/ludcmp.cpp b/Numeric/ludcmp.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..7bdb9750407d2bf847a0dfcabe72738ba1697ccf
--- /dev/null
+++ b/Numeric/ludcmp.cpp
@@ -0,0 +1,72 @@
+// $Id: ludcmp.cpp,v 1.1 2002-05-18 07:18:03 geuzaine Exp $
+#include <math.h>
+#define NRANSI
+#include "nrutil.h"
+#define TINY 1.0e-20;
+
+void 
+ludcmp (float **a, int n, int *indx, float *d)
+{
+  int i, imax, j, k;
+  float big, dum, sum, temp;
+  float *vv;
+
+  vv = vector (1, n);
+  *d = 1.0;
+  for (i = 1; i <= n; i++)
+    {
+      big = 0.0;
+      for (j = 1; j <= n; j++)
+        if ((temp = fabs (a[i][j])) > big)
+          big = temp;
+      if (big == 0.0)
+        nrerror ("Singular matrix in routine ludcmp");
+      vv[i] = 1.0 / big;
+    }
+  for (j = 1; j <= n; j++)
+    {
+      for (i = 1; i < j; i++)
+        {
+          sum = a[i][j];
+          for (k = 1; k < i; k++)
+            sum -= a[i][k] * a[k][j];
+          a[i][j] = sum;
+        }
+      big = 0.0;
+      for (i = j; i <= n; i++)
+        {
+          sum = a[i][j];
+          for (k = 1; k < j; k++)
+            sum -= a[i][k] * a[k][j];
+          a[i][j] = sum;
+          if ((dum = vv[i] * fabs (sum)) >= big)
+            {
+              big = dum;
+              imax = i;
+            }
+        }
+      if (j != imax)
+        {
+          for (k = 1; k <= n; k++)
+            {
+              dum = a[imax][k];
+              a[imax][k] = a[j][k];
+              a[j][k] = dum;
+            }
+          *d = -(*d);
+          vv[imax] = vv[j];
+        }
+      indx[j] = imax;
+      if (a[j][j] == 0.0)
+        a[j][j] = TINY;
+      if (j != n)
+        {
+          dum = 1.0 / (a[j][j]);
+          for (i = j + 1; i <= n; i++)
+            a[i][j] *= dum;
+        }
+    }
+  free_vector (vv, 1, n);
+}
+#undef TINY
+#undef NRANSI
diff --git a/Numeric/mnbrak.cpp b/Numeric/mnbrak.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..bed3ba973a4064921e35e3b22ebd1dabdcba9e13
--- /dev/null
+++ b/Numeric/mnbrak.cpp
@@ -0,0 +1,79 @@
+// $Id: mnbrak.cpp,v 1.1 2002-05-18 07:18:03 geuzaine Exp $
+#include <math.h>
+#define NRANSI
+#include "nrutil.h"
+#define GOLD 1.618034
+#define GLIMIT 100.0
+#define TINY 1.0e-20
+#define SHFT(a,b,c,d) (a)=(b);(b)=(c);(c)=(d);
+
+void 
+mnbrak (double *ax, double *bx, double *cx, double *fa, double *fb, double *fc,
+        double (*func) (double))
+{
+  double ulim, u, r, q, fu, dum;
+
+  *fa = (*func) (*ax);
+  *fb = (*func) (*bx);
+  if (*fb > *fa)
+    {
+      SHFT (dum, *ax, *bx, dum)
+        SHFT (dum, *fb, *fa, dum)
+    }
+  *cx = (*bx) + GOLD * (*bx - *ax);
+  *fc = (*func) (*cx);
+  while (*fb > *fc)
+    {
+      r = (*bx - *ax) * (*fb - *fc);
+      q = (*bx - *cx) * (*fb - *fa);
+      u = (*bx) - ((*bx - *cx) * q - (*bx - *ax) * r) /
+        (2.0 * SIGN (FMAX (fabs (q - r), TINY), q - r));
+      ulim = (*bx) + GLIMIT * (*cx - *bx);
+      if ((*bx - u) * (u - *cx) > 0.0)
+        {
+          fu = (*func) (u);
+          if (fu < *fc)
+            {
+              *ax = (*bx);
+              *bx = u;
+              *fa = (*fb);
+              *fb = fu;
+              return;
+            }
+          else if (fu > *fb)
+            {
+              *cx = u;
+              *fc = fu;
+              return;
+            }
+          u = (*cx) + GOLD * (*cx - *bx);
+          fu = (*func) (u);
+        }
+      else if ((*cx - u) * (u - ulim) > 0.0)
+        {
+          fu = (*func) (u);
+          if (fu < *fc)
+            {
+              SHFT (*bx, *cx, u, *cx + GOLD * (*cx - *bx))
+                SHFT (*fb, *fc, fu, (*func) (u))
+            }
+        }
+      else if ((u - ulim) * (ulim - *cx) >= 0.0)
+        {
+          u = ulim;
+          fu = (*func) (u);
+        }
+      else
+        {
+          u = (*cx) + GOLD * (*cx - *bx);
+          fu = (*func) (u);
+        }
+      SHFT (*ax, *bx, *cx, u)
+        SHFT (*fa, *fb, *fc, fu)
+    }
+}
+#undef GOLD
+#undef GLIMIT
+#undef TINY
+#undef SHFT
+#undef NRANSI
diff --git a/Numeric/newt.cpp b/Numeric/newt.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..2fd6e6e0021cc0b182c8ed380195315a765be061
--- /dev/null
+++ b/Numeric/newt.cpp
@@ -0,0 +1,107 @@
+// $Id: newt.cpp,v 1.1 2002-05-18 07:18:03 geuzaine Exp $
+#include <math.h>
+#define NRANSI
+#include "nrutil.h"
+#define MAXITS 200
+#define TOLF 1.0e-4
+#define TOLMIN 1.0e-6
+#define TOLX 1.0e-7
+#define STPMX 100.0
+
+int nn;
+float *fvec;
+void (*nrfuncv) (int n, float v[], float f[]);
+#define FREERETURN {free_vector(fvec,1,n);free_vector(xold,1,n);\
+        free_vector(p,1,n);free_vector(g,1,n);free_matrix(fjac,1,n,1,n);\
+        free_ivector(indx,1,n);return;}
+
+void 
+newt (float x[], int n, int *check,
+      void (*vecfunc) (int, float[], float[]))
+{
+  void fdjac (int n, float x[], float fvec[], float **df,
+              void (*vecfunc) (int, float[], float[]));
+  float fmin (float x[]);
+  void lnsrch (int n, float xold[], float fold, float g[], float p[], float x[],
+               float *f, float stpmax, int *check, float (*func) (float[]));
+  void lubksb (float **a, int n, int *indx, float b[]);
+  void ludcmp (float **a, int n, int *indx, float *d);
+  int i, its, j, *indx;
+  float d, den, f, fold, stpmax, sum, temp, test, **fjac, *g, *p, *xold;
+
+  indx = ivector (1, n);
+  fjac = matrix (1, n, 1, n);
+  g = vector (1, n);
+  p = vector (1, n);
+  xold = vector (1, n);
+  fvec = vector (1, n);
+  nn = n;
+  nrfuncv = vecfunc;
+  f = fmin (x);
+  test = 0.0;
+  for (i = 1; i <= n; i++)
+    if (fabs (fvec[i]) > test)
+      test = fabs (fvec[i]);
+  if (test < 0.01 * TOLF)
+    FREERETURN
+      for (sum = 0.0, i = 1; i <= n; i++)
+      sum += SQR (x[i]);
+  stpmax = STPMX * FMAX (sqrt (sum), (float) n);
+  for (its = 1; its <= MAXITS; its++)
+    {
+      fdjac (n, x, fvec, fjac, vecfunc);
+      for (i = 1; i <= n; i++)
+        {
+          for (sum = 0.0, j = 1; j <= n; j++)
+            sum += fjac[j][i] * fvec[j];
+          g[i] = sum;
+        }
+      for (i = 1; i <= n; i++)
+        xold[i] = x[i];
+      fold = f;
+      for (i = 1; i <= n; i++)
+        p[i] = -fvec[i];
+      ludcmp (fjac, n, indx, &d);
+      lubksb (fjac, n, indx, p);
+      lnsrch (n, xold, fold, g, p, x, &f, stpmax, check, fmin);
+      test = 0.0;
+      for (i = 1; i <= n; i++)
+        if (fabs (fvec[i]) > test)
+          test = fabs (fvec[i]);
+      if (test < TOLF)
+        {
+          *check = 0;
+          FREERETURN
+        }
+      if (*check)
+        {
+          test = 0.0;
+          den = FMAX (f, 0.5 * n);
+          for (i = 1; i <= n; i++)
+            {
+              temp = fabs (g[i]) * FMAX (fabs (x[i]), 1.0) / den;
+              if (temp > test)
+                test = temp;
+            }
+          *check = (test < TOLMIN ? 1 : 0);
+          FREERETURN
+        }
+      test = 0.0;
+      for (i = 1; i <= n; i++)
+        {
+          temp = (fabs (x[i] - xold[i])) / FMAX (fabs (x[i]), 1.0);
+          if (temp > test)
+            test = temp;
+        }
+      if (test < TOLX)
+        FREERETURN
+        }
+        nrerror ("MAXITS exceeded in newt");
+    }
+#undef MAXITS
+#undef TOLF
+#undef TOLMIN
+#undef TOLX
+#undef STPMX
+#undef FREERETURN
+#undef NRANSI
diff --git a/Numeric/nrutil.cpp b/Numeric/nrutil.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..fcd60d25cde1f1567b9f178381ea3aeb3af6e57b
--- /dev/null
+++ b/Numeric/nrutil.cpp
@@ -0,0 +1,296 @@
+// $Id: nrutil.cpp,v 1.1 2002-05-18 07:18:03 geuzaine Exp $
+#include <stdio.h>
+#include <stddef.h>
+#include <stdlib.h>
+#include <malloc.h>
+
+#include "Gmsh.h"
+
+
+#define NR_END 1
+#define FREE_ARG char*
+
+void nrerror(char error_text[])
+/* Numerical Recipes standard error handler */
+{
+  Msg(GERROR, "%s", error_text);
+  /*
+        fprintf(stderr,"Numerical Recipes run-time error...\n");
+        fprintf(stderr,"%s\n",error_text);
+        fprintf(stderr,"...now exiting to system...\n");
+        exit(1);
+  */
+}
+
+float *vector(long nl, long nh)
+/* allocate a float vector with subscript range v[nl..nh] */
+{
+        float *v;
+
+        v=(float *)malloc((size_t) ((nh-nl+1+NR_END)*sizeof(float)));
+        if (!v) nrerror("allocation failure in vector()");
+        return v-nl+NR_END;
+}
+
+int *ivector(long nl, long nh)
+/* allocate an int vector with subscript range v[nl..nh] */
+{
+        int *v;
+
+        v=(int *)malloc((size_t) ((nh-nl+1+NR_END)*sizeof(int)));
+        if (!v) nrerror("allocation failure in ivector()");
+        return v-nl+NR_END;
+}
+
+unsigned char *cvector(long nl, long nh)
+/* allocate an unsigned char vector with subscript range v[nl..nh] */
+{
+        unsigned char *v;
+
+        v=(unsigned char *)malloc((size_t) ((nh-nl+1+NR_END)*sizeof(unsigned char)));
+        if (!v) nrerror("allocation failure in cvector()");
+        return v-nl+NR_END;
+}
+
+unsigned long *lvector(long nl, long nh)
+/* allocate an unsigned long vector with subscript range v[nl..nh] */
+{
+        unsigned long *v;
+
+        v=(unsigned long *)malloc((size_t) ((nh-nl+1+NR_END)*sizeof(long)));
+        if (!v) nrerror("allocation failure in lvector()");
+        return v-nl+NR_END;
+}
+
+double *dvector(long nl, long nh)
+/* allocate a double vector with subscript range v[nl..nh] */
+{
+        double *v;
+
+        v=(double *)malloc((size_t) ((nh-nl+1+NR_END)*sizeof(double)));
+        if (!v) nrerror("allocation failure in dvector()");
+        return v-nl+NR_END;
+}
+
+float **matrix(long nrl, long nrh, long ncl, long nch)
+/* allocate a float matrix with subscript range m[nrl..nrh][ncl..nch] */
+{
+        long i, nrow=nrh-nrl+1,ncol=nch-ncl+1;
+        float **m;
+
+        /* allocate pointers to rows */
+        m=(float **) malloc((size_t)((nrow+NR_END)*sizeof(float*)));
+        if (!m) nrerror("allocation failure 1 in matrix()");
+        m += NR_END;
+        m -= nrl;
+
+        /* allocate rows and set pointers to them */
+        m[nrl]=(float *) malloc((size_t)((nrow*ncol+NR_END)*sizeof(float)));
+        if (!m[nrl]) nrerror("allocation failure 2 in matrix()");
+        m[nrl] += NR_END;
+        m[nrl] -= ncl;
+
+        for(i=nrl+1;i<=nrh;i++) m[i]=m[i-1]+ncol;
+
+        /* return pointer to array of pointers to rows */
+        return m;
+}
+
+double **dmatrix(long nrl, long nrh, long ncl, long nch)
+/* allocate a double matrix with subscript range m[nrl..nrh][ncl..nch] */
+{
+        long i, nrow=nrh-nrl+1,ncol=nch-ncl+1;
+        double **m;
+
+        /* allocate pointers to rows */
+        m=(double **) malloc((size_t)((nrow+NR_END)*sizeof(double*)));
+        if (!m) nrerror("allocation failure 1 in matrix()");
+        m += NR_END;
+        m -= nrl;
+
+        /* allocate rows and set pointers to them */
+        m[nrl]=(double *) malloc((size_t)((nrow*ncol+NR_END)*sizeof(double)));
+        if (!m[nrl]) nrerror("allocation failure 2 in matrix()");
+        m[nrl] += NR_END;
+        m[nrl] -= ncl;
+
+        for(i=nrl+1;i<=nrh;i++) m[i]=m[i-1]+ncol;
+
+        /* return pointer to array of pointers to rows */
+        return m;
+}
+
+int **imatrix(long nrl, long nrh, long ncl, long nch)
+/* allocate a int matrix with subscript range m[nrl..nrh][ncl..nch] */
+{
+        long i, nrow=nrh-nrl+1,ncol=nch-ncl+1;
+        int **m;
+
+        /* allocate pointers to rows */
+        m=(int **) malloc((size_t)((nrow+NR_END)*sizeof(int*)));
+        if (!m) nrerror("allocation failure 1 in matrix()");
+        m += NR_END;
+        m -= nrl;
+
+
+        /* allocate rows and set pointers to them */
+        m[nrl]=(int *) malloc((size_t)((nrow*ncol+NR_END)*sizeof(int)));
+        if (!m[nrl]) nrerror("allocation failure 2 in matrix()");
+        m[nrl] += NR_END;
+        m[nrl] -= ncl;
+
+        for(i=nrl+1;i<=nrh;i++) m[i]=m[i-1]+ncol;
+
+        /* return pointer to array of pointers to rows */
+        return m;
+}
+
+float **submatrix(float **a, long oldrl, long oldrh, long oldcl, long oldch,
+        long newrl, long newcl)
+/* point a submatrix [newrl..][newcl..] to a[oldrl..oldrh][oldcl..oldch] */
+{
+        long i,j,nrow=oldrh-oldrl+1,ncol=oldcl-newcl;
+        float **m;
+
+        /* allocate array of pointers to rows */
+        m=(float **) malloc((size_t) ((nrow+NR_END)*sizeof(float*)));
+        if (!m) nrerror("allocation failure in submatrix()");
+        m += NR_END;
+        m -= newrl;
+
+        /* set pointers to rows */
+        for(i=oldrl,j=newrl;i<=oldrh;i++,j++) m[j]=a[i]+ncol;
+
+        /* return pointer to array of pointers to rows */
+        return m;
+}
+
+float **convert_matrix(float *a, long nrl, long nrh, long ncl, long nch)
+/* allocate a float matrix m[nrl..nrh][ncl..nch] that points to the matrix
+declared in the standard C manner as a[nrow][ncol], where nrow=nrh-nrl+1
+and ncol=nch-ncl+1. The routine should be called with the address
+&a[0][0] as the first argument. */
+{
+        long i,j,nrow=nrh-nrl+1,ncol=nch-ncl+1;
+        float **m;
+
+        /* allocate pointers to rows */
+        m=(float **) malloc((size_t) ((nrow+NR_END)*sizeof(float*)));
+        if (!m) nrerror("allocation failure in convert_matrix()");
+        m += NR_END;
+        m -= nrl;
+
+        /* set pointers to rows */
+        m[nrl]=a-ncl;
+        for(i=1,j=nrl+1;i<nrow;i++,j++) m[j]=m[j-1]+ncol;
+        /* return pointer to array of pointers to rows */
+        return m;
+}
+
+float ***f3tensor(long nrl, long nrh, long ncl, long nch, long ndl, long ndh)
+/* allocate a float 3tensor with range t[nrl..nrh][ncl..nch][ndl..ndh] */
+{
+        long i,j,nrow=nrh-nrl+1,ncol=nch-ncl+1,ndep=ndh-ndl+1;
+        float ***t;
+
+        /* allocate pointers to pointers to rows */
+        t=(float ***) malloc((size_t)((nrow+NR_END)*sizeof(float**)));
+        if (!t) nrerror("allocation failure 1 in f3tensor()");
+        t += NR_END;
+        t -= nrl;
+
+        /* allocate pointers to rows and set pointers to them */
+        t[nrl]=(float **) malloc((size_t)((nrow*ncol+NR_END)*sizeof(float*)));
+        if (!t[nrl]) nrerror("allocation failure 2 in f3tensor()");
+        t[nrl] += NR_END;
+        t[nrl] -= ncl;
+
+        /* allocate rows and set pointers to them */
+        t[nrl][ncl]=(float *) malloc((size_t)((nrow*ncol*ndep+NR_END)*sizeof(float)));
+        if (!t[nrl][ncl]) nrerror("allocation failure 3 in f3tensor()");
+        t[nrl][ncl] += NR_END;
+        t[nrl][ncl] -= ndl;
+
+        for(j=ncl+1;j<=nch;j++) t[nrl][j]=t[nrl][j-1]+ndep;
+        for(i=nrl+1;i<=nrh;i++) {
+                t[i]=t[i-1]+ncol;
+                t[i][ncl]=t[i-1][ncl]+ncol*ndep;
+                for(j=ncl+1;j<=nch;j++) t[i][j]=t[i][j-1]+ndep;
+        }
+
+        /* return pointer to array of pointers to rows */
+        return t;
+}
+
+void free_vector(float *v, long nl, long nh)
+/* free a float vector allocated with vector() */
+{
+        free((FREE_ARG) (v+nl-NR_END));
+}
+
+void free_ivector(int *v, long nl, long nh)
+/* free an int vector allocated with ivector() */
+{
+        free((FREE_ARG) (v+nl-NR_END));
+}
+
+void free_cvector(unsigned char *v, long nl, long nh)
+/* free an unsigned char vector allocated with cvector() */
+{
+        free((FREE_ARG) (v+nl-NR_END));
+}
+
+void free_lvector(unsigned long *v, long nl, long nh)
+/* free an unsigned long vector allocated with lvector() */
+{
+        free((FREE_ARG) (v+nl-NR_END));
+}
+
+void free_dvector(double *v, long nl, long nh)
+/* free a double vector allocated with dvector() */
+{
+        free((FREE_ARG) (v+nl-NR_END));
+}
+
+void free_matrix(float **m, long nrl, long nrh, long ncl, long nch)
+/* free a float matrix allocated by matrix() */
+{
+        free((FREE_ARG) (m[nrl]+ncl-NR_END));
+        free((FREE_ARG) (m+nrl-NR_END));
+}
+
+void free_dmatrix(double **m, long nrl, long nrh, long ncl, long nch)
+/* free a double matrix allocated by dmatrix() */
+{
+        free((FREE_ARG) (m[nrl]+ncl-NR_END));
+        free((FREE_ARG) (m+nrl-NR_END));
+}
+
+void free_imatrix(int **m, long nrl, long nrh, long ncl, long nch)
+/* free an int matrix allocated by imatrix() */
+{
+        free((FREE_ARG) (m[nrl]+ncl-NR_END));
+        free((FREE_ARG) (m+nrl-NR_END));
+}
+
+void free_submatrix(float **b, long nrl, long nrh, long ncl, long nch)
+/* free a submatrix allocated by submatrix() */
+{
+        free((FREE_ARG) (b+nrl-NR_END));
+}
+
+void free_convert_matrix(float **b, long nrl, long nrh, long ncl, long nch)
+/* free a matrix allocated by convert_matrix() */
+{
+        free((FREE_ARG) (b+nrl-NR_END));
+}
+
+void free_f3tensor(float ***t, long nrl, long nrh, long ncl, long nch,
+        long ndl, long ndh)
+/* free a float f3tensor allocated by f3tensor() */
+{
+        free((FREE_ARG) (t[nrl][ncl]+ndl-NR_END));
+        free((FREE_ARG) (t[nrl]+ncl-NR_END));
+        free((FREE_ARG) (t+nrl-NR_END));
+}
+
diff --git a/Numeric/nrutil.h b/Numeric/nrutil.h
new file mode 100644
index 0000000000000000000000000000000000000000..191fc3528e8f13540eedf4f2cb2c706ec1262d69
--- /dev/null
+++ b/Numeric/nrutil.h
@@ -0,0 +1,35 @@
+#ifndef _NR_UTILS_H_
+#define _NR_UTILS_H_
+
+#include "Numeric.h"
+
+#define SIGN(a,b) ((b) >= 0.0 ? fabs(a) : -fabs(a))
+
+void nrerror (char error_text[]);
+float *vector (long nl, long nh);
+int *ivector (long nl, long nh);
+unsigned char *cvector (long nl, long nh);
+unsigned long *lvector (long nl, long nh);
+double *dvector (long nl, long nh);
+float **matrix (long nrl, long nrh, long ncl, long nch);
+double **dmatrix (long nrl, long nrh, long ncl, long nch);
+int **imatrix (long nrl, long nrh, long ncl, long nch);
+float **submatrix (float **a, long oldrl, long oldrh, long oldcl, long oldch,
+                   long newrl, long newcl);
+float **convert_matrix (float *a, long nrl, long nrh, long ncl, long nch);
+float ***f3tensor (long nrl, long nrh, long ncl, long nch, long ndl, long ndh);
+void free_vector (float *v, long nl, long nh);
+void free_ivector (int *v, long nl, long nh);
+void free_cvector (unsigned char *v, long nl, long nh);
+void free_lvector (unsigned long *v, long nl, long nh);
+void free_dvector (double *v, long nl, long nh);
+void free_matrix (float **m, long nrl, long nrh, long ncl, long nch);
+void free_dmatrix (double **m, long nrl, long nrh, long ncl, long nch);
+void free_imatrix (int **m, long nrl, long nrh, long ncl, long nch);
+void free_submatrix (float **b, long nrl, long nrh, long ncl, long nch);
+void free_convert_matrix (float **b, long nrl, long nrh, long ncl, long nch);
+void free_f3tensor (float ***t, long nrl, long nrh, long ncl, long nch,
+                    long ndl, long ndh);
+
+
+#endif /* _NR_UTILS_H_ */
diff --git a/Parallel/ParUtil.cpp b/Parallel/ParUtil.cpp
index ab24d15e2f10426eae4e3b2f3ad2cfae29d89469..60737caf5baec8c6ae4ebba656a889b9babe997d 100644
--- a/Parallel/ParUtil.cpp
+++ b/Parallel/ParUtil.cpp
@@ -1,3 +1,21 @@
+// $Id: ParUtil.cpp,v 1.2 2002-05-18 07:18:03 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
diff --git a/Parallel/ParUtil.h b/Parallel/ParUtil.h
index dee5c4a12cef1f385327f38cafa1208d900ae4fe..7c990f549bb3f3970cf07891581e11d3faef7670 100644
--- a/Parallel/ParUtil.h
+++ b/Parallel/ParUtil.h
@@ -1,5 +1,22 @@
 #ifndef _H_ParUtil
 #define _H_ParUtil
+
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
 #include <stdio.h>
 
 /**
diff --git a/Parser/FunctionManager.cpp b/Parser/FunctionManager.cpp
index 784e565464ff3cd3d7defb7c7212d18a6d8e34eb..483d558c7da50c20cd9cd35243ce4ed28a10062c 100644
--- a/Parser/FunctionManager.cpp
+++ b/Parser/FunctionManager.cpp
@@ -1,4 +1,20 @@
-// $Id: FunctionManager.cpp,v 1.13 2001-10-04 14:32:11 geuzaine Exp $
+// $Id: FunctionManager.cpp,v 1.14 2002-05-18 07:18:03 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 #include <map>
 #include <stdio.h>
diff --git a/Parser/FunctionManager.h b/Parser/FunctionManager.h
index ad623b363d20a09a49ab3f413de41dd39fd440f8..08f32648410c50bc319f0ca9bf1830b5d15d1d34 100644
--- a/Parser/FunctionManager.h
+++ b/Parser/FunctionManager.h
@@ -1,8 +1,25 @@
 #ifndef _FUNCTION_MANAGER_H_
 #define _FUNCTION_MANAGER_H_
 
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
 class mystack;
 class mymap;
+
 #include <stdio.h>
 /*
   Singleton, one function manager for 
diff --git a/Parser/Gmsh.l b/Parser/Gmsh.l
index 07fa1e13ba8ea720500632f850c7f574b32d78ce..e9e529c0418bd144733b6f7a25f9bf259d085d3b 100644
--- a/Parser/Gmsh.l
+++ b/Parser/Gmsh.l
@@ -1,6 +1,22 @@
 %{
 
-// $Id: Gmsh.l,v 1.39 2002-04-06 00:59:48 geuzaine Exp $
+// $Id: Gmsh.l,v 1.40 2002-05-18 07:18:03 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 #include <stdio.h>
 #include <stdlib.h>
diff --git a/Parser/Gmsh.tab.cpp b/Parser/Gmsh.tab.cpp
index f2b4f3503f14e1ff6ee3153e9e897d08faf72f8c..467b7d6809e3e5af3624f4ab2de9dbb88e305bd1 100644
--- a/Parser/Gmsh.tab.cpp
+++ b/Parser/Gmsh.tab.cpp
@@ -1,183 +1,182 @@
-
-/*  A Bison parser, made from Gmsh.y
-    by GNU Bison version 1.28  */
+/* A Bison parser, made from Gmsh.y
+   by GNU bison 1.35.  */
 
 #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	tMPI_Rank	264
-#define	tMPI_Size	265
-#define	tExp	266
-#define	tLog	267
-#define	tLog10	268
-#define	tSqrt	269
-#define	tSin	270
-#define	tAsin	271
-#define	tCos	272
-#define	tAcos	273
-#define	tTan	274
-#define	tRand	275
-#define	tAtan	276
-#define	tAtan2	277
-#define	tSinh	278
-#define	tCosh	279
-#define	tTanh	280
-#define	tFabs	281
-#define	tFloor	282
-#define	tCeil	283
-#define	tFmod	284
-#define	tModulo	285
-#define	tHypot	286
-#define	tPrintf	287
-#define	tSprintf	288
-#define	tStrCat	289
-#define	tStrPrefix	290
-#define	tDraw	291
-#define	tPoint	292
-#define	tCircle	293
-#define	tEllipse	294
-#define	tLine	295
-#define	tSurface	296
-#define	tSpline	297
-#define	tVolume	298
-#define	tCharacteristic	299
-#define	tLength	300
-#define	tParametric	301
-#define	tElliptic	302
-#define	tPlane	303
-#define	tRuled	304
-#define	tTransfinite	305
-#define	tComplex	306
-#define	tPhysical	307
-#define	tUsing	308
-#define	tBump	309
-#define	tProgression	310
-#define	tPlugin	311
-#define	tRotate	312
-#define	tTranslate	313
-#define	tSymmetry	314
-#define	tDilate	315
-#define	tExtrude	316
-#define	tDuplicata	317
-#define	tLoop	318
-#define	tRecombine	319
-#define	tDelete	320
-#define	tCoherence	321
-#define	tIntersect	322
-#define	tAttractor	323
-#define	tLayers	324
-#define	tScalarTetrahedron	325
-#define	tVectorTetrahedron	326
-#define	tTensorTetrahedron	327
-#define	tScalarTriangle	328
-#define	tVectorTriangle	329
-#define	tTensorTriangle	330
-#define	tScalarLine	331
-#define	tVectorLine	332
-#define	tTensorLine	333
-#define	tScalarPoint	334
-#define	tVectorPoint	335
-#define	tTensorPoint	336
-#define	tText2D	337
-#define	tText3D	338
-#define	tBSpline	339
-#define	tBezier	340
-#define	tNurbs	341
-#define	tOrder	342
-#define	tWith	343
-#define	tBounds	344
-#define	tKnots	345
-#define	tColor	346
-#define	tColorTable	347
-#define	tFor	348
-#define	tIn	349
-#define	tEndFor	350
-#define	tIf	351
-#define	tEndIf	352
-#define	tExit	353
-#define	tReturn	354
-#define	tCall	355
-#define	tFunction	356
-#define	tMesh	357
-#define	tB_SPLINE_SURFACE_WITH_KNOTS	358
-#define	tB_SPLINE_CURVE_WITH_KNOTS	359
-#define	tCARTESIAN_POINT	360
-#define	tTRUE	361
-#define	tFALSE	362
-#define	tUNSPECIFIED	363
-#define	tU	364
-#define	tV	365
-#define	tEDGE_CURVE	366
-#define	tVERTEX_POINT	367
-#define	tORIENTED_EDGE	368
-#define	tPLANE	369
-#define	tFACE_OUTER_BOUND	370
-#define	tEDGE_LOOP	371
-#define	tADVANCED_FACE	372
-#define	tVECTOR	373
-#define	tDIRECTION	374
-#define	tAXIS2_PLACEMENT_3D	375
-#define	tISO	376
-#define	tENDISO	377
-#define	tENDSEC	378
-#define	tDATA	379
-#define	tHEADER	380
-#define	tFILE_DESCRIPTION	381
-#define	tFILE_SCHEMA	382
-#define	tFILE_NAME	383
-#define	tMANIFOLD_SOLID_BREP	384
-#define	tCLOSED_SHELL	385
-#define	tADVANCED_BREP_SHAPE_REPRESENTATION	386
-#define	tFACE_BOUND	387
-#define	tCYLINDRICAL_SURFACE	388
-#define	tCONICAL_SURFACE	389
-#define	tCIRCLE	390
-#define	tTRIMMED_CURVE	391
-#define	tGEOMETRIC_SET	392
-#define	tCOMPOSITE_CURVE_SEGMENT	393
-#define	tCONTINUOUS	394
-#define	tCOMPOSITE_CURVE	395
-#define	tTOROIDAL_SURFACE	396
-#define	tPRODUCT_DEFINITION	397
-#define	tPRODUCT_DEFINITION_SHAPE	398
-#define	tSHAPE_DEFINITION_REPRESENTATION	399
-#define	tELLIPSE	400
-#define	tTrimmed	401
-#define	tSolid	402
-#define	tEndSolid	403
-#define	tVertex	404
-#define	tFacet	405
-#define	tNormal	406
-#define	tOuter	407
-#define	tLoopSTL	408
-#define	tEndLoop	409
-#define	tEndFacet	410
-#define	tAFFECTPLUS	411
-#define	tAFFECTMINUS	412
-#define	tAFFECTTIMES	413
-#define	tAFFECTDIVIDE	414
-#define	tOR	415
-#define	tAND	416
-#define	tEQUAL	417
-#define	tNOTEQUAL	418
-#define	tAPPROXEQUAL	419
-#define	tLESSOREQUAL	420
-#define	tGREATEROREQUAL	421
-#define	tCROSSPRODUCT	422
-#define	tPLUSPLUS	423
-#define	tMINUSMINUS	424
-#define	UNARYPREC	425
+# define	tDOUBLE	257
+# define	tSTRING	258
+# define	tBIGSTR	259
+# define	tEND	260
+# define	tAFFECT	261
+# define	tDOTS	262
+# define	tPi	263
+# define	tMPI_Rank	264
+# define	tMPI_Size	265
+# define	tExp	266
+# define	tLog	267
+# define	tLog10	268
+# define	tSqrt	269
+# define	tSin	270
+# define	tAsin	271
+# define	tCos	272
+# define	tAcos	273
+# define	tTan	274
+# define	tRand	275
+# define	tAtan	276
+# define	tAtan2	277
+# define	tSinh	278
+# define	tCosh	279
+# define	tTanh	280
+# define	tFabs	281
+# define	tFloor	282
+# define	tCeil	283
+# define	tFmod	284
+# define	tModulo	285
+# define	tHypot	286
+# define	tPrintf	287
+# define	tSprintf	288
+# define	tStrCat	289
+# define	tStrPrefix	290
+# define	tDraw	291
+# define	tPoint	292
+# define	tCircle	293
+# define	tEllipse	294
+# define	tLine	295
+# define	tSurface	296
+# define	tSpline	297
+# define	tVolume	298
+# define	tCharacteristic	299
+# define	tLength	300
+# define	tParametric	301
+# define	tElliptic	302
+# define	tPlane	303
+# define	tRuled	304
+# define	tTransfinite	305
+# define	tComplex	306
+# define	tPhysical	307
+# define	tUsing	308
+# define	tBump	309
+# define	tProgression	310
+# define	tPlugin	311
+# define	tRotate	312
+# define	tTranslate	313
+# define	tSymmetry	314
+# define	tDilate	315
+# define	tExtrude	316
+# define	tDuplicata	317
+# define	tLoop	318
+# define	tRecombine	319
+# define	tDelete	320
+# define	tCoherence	321
+# define	tIntersect	322
+# define	tAttractor	323
+# define	tLayers	324
+# define	tScalarTetrahedron	325
+# define	tVectorTetrahedron	326
+# define	tTensorTetrahedron	327
+# define	tScalarTriangle	328
+# define	tVectorTriangle	329
+# define	tTensorTriangle	330
+# define	tScalarLine	331
+# define	tVectorLine	332
+# define	tTensorLine	333
+# define	tScalarPoint	334
+# define	tVectorPoint	335
+# define	tTensorPoint	336
+# define	tText2D	337
+# define	tText3D	338
+# define	tBSpline	339
+# define	tBezier	340
+# define	tNurbs	341
+# define	tOrder	342
+# define	tWith	343
+# define	tBounds	344
+# define	tKnots	345
+# define	tColor	346
+# define	tColorTable	347
+# define	tFor	348
+# define	tIn	349
+# define	tEndFor	350
+# define	tIf	351
+# define	tEndIf	352
+# define	tExit	353
+# define	tReturn	354
+# define	tCall	355
+# define	tFunction	356
+# define	tMesh	357
+# define	tB_SPLINE_SURFACE_WITH_KNOTS	358
+# define	tB_SPLINE_CURVE_WITH_KNOTS	359
+# define	tCARTESIAN_POINT	360
+# define	tTRUE	361
+# define	tFALSE	362
+# define	tUNSPECIFIED	363
+# define	tU	364
+# define	tV	365
+# define	tEDGE_CURVE	366
+# define	tVERTEX_POINT	367
+# define	tORIENTED_EDGE	368
+# define	tPLANE	369
+# define	tFACE_OUTER_BOUND	370
+# define	tEDGE_LOOP	371
+# define	tADVANCED_FACE	372
+# define	tVECTOR	373
+# define	tDIRECTION	374
+# define	tAXIS2_PLACEMENT_3D	375
+# define	tISO	376
+# define	tENDISO	377
+# define	tENDSEC	378
+# define	tDATA	379
+# define	tHEADER	380
+# define	tFILE_DESCRIPTION	381
+# define	tFILE_SCHEMA	382
+# define	tFILE_NAME	383
+# define	tMANIFOLD_SOLID_BREP	384
+# define	tCLOSED_SHELL	385
+# define	tADVANCED_BREP_SHAPE_REPRESENTATION	386
+# define	tFACE_BOUND	387
+# define	tCYLINDRICAL_SURFACE	388
+# define	tCONICAL_SURFACE	389
+# define	tCIRCLE	390
+# define	tTRIMMED_CURVE	391
+# define	tGEOMETRIC_SET	392
+# define	tCOMPOSITE_CURVE_SEGMENT	393
+# define	tCONTINUOUS	394
+# define	tCOMPOSITE_CURVE	395
+# define	tTOROIDAL_SURFACE	396
+# define	tPRODUCT_DEFINITION	397
+# define	tPRODUCT_DEFINITION_SHAPE	398
+# define	tSHAPE_DEFINITION_REPRESENTATION	399
+# define	tELLIPSE	400
+# define	tTrimmed	401
+# define	tSolid	402
+# define	tEndSolid	403
+# define	tVertex	404
+# define	tFacet	405
+# define	tNormal	406
+# define	tOuter	407
+# define	tLoopSTL	408
+# define	tEndLoop	409
+# define	tEndFacet	410
+# define	tAFFECTPLUS	411
+# define	tAFFECTMINUS	412
+# define	tAFFECTTIMES	413
+# define	tAFFECTDIVIDE	414
+# define	tOR	415
+# define	tAND	416
+# define	tEQUAL	417
+# define	tNOTEQUAL	418
+# define	tAPPROXEQUAL	419
+# define	tLESSOREQUAL	420
+# define	tGREATEROREQUAL	421
+# define	tCROSSPRODUCT	422
+# define	tPLUSPLUS	423
+# define	tMINUSMINUS	424
+# define	UNARYPREC	425
 
 #line 1 "Gmsh.y"
  
 
-// $Id: Gmsh.tab.cpp,v 1.137 2002-04-06 00:59:48 geuzaine Exp $
+// $Id: Gmsh.tab.cpp,v 1.138 2002-05-18 07:18:03 geuzaine Exp $
 
 #include <stdarg.h>
 #ifndef _NOPLUGIN
@@ -245,6 +244,7 @@ void  skip_until (char *skip, char *until);
 int PrintListOfDouble(char *format, List_T *list, char *buffer);
 
 #line 71 "Gmsh.y"
+#ifndef YYSTYPE
 typedef union {
   char    *c;
   int      i;
@@ -253,13 +253,12 @@ typedef union {
   double   v[5];
   Shape    s;
   List_T  *l;
-} YYSTYPE;
-#include <stdio.h>
-
-#ifndef __cplusplus
-#ifndef __STDC__
-#define const
+} yystype;
+# define YYSTYPE yystype
+# define YYSTYPE_IS_TRIVIAL 1
 #endif
+#ifndef YYDEBUG
+# define YYDEBUG 0
 #endif
 
 
@@ -268,2439 +267,2477 @@ typedef union {
 #define	YYFLAG		-32768
 #define	YYNTBASE	190
 
+/* YYTRANSLATE(YYLEX) -- Bison token number corresponding to YYLEX. */
 #define YYTRANSLATE(x) ((unsigned)(x) <= 425 ? yytranslate[x] : 284)
 
-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,   177,     2,     2,     2,   175,     2,     2,   182,
-   183,   173,   171,   187,   172,   186,   174,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,   167,
-     2,   169,   161,     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,
-   184,     2,   185,   181,     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,   188,     2,   189,     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,
-     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,     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,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     1,     3,     4,     5,     6,
-     7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
-    17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
-    27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
-    37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
-    47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
-    57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
-    67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
-    77,    78,    79,    80,    81,    82,    83,    84,    85,    86,
-    87,    88,    89,    90,    91,    92,    93,    94,    95,    96,
-    97,    98,    99,   100,   101,   102,   103,   104,   105,   106,
-   107,   108,   109,   110,   111,   112,   113,   114,   115,   116,
-   117,   118,   119,   120,   121,   122,   123,   124,   125,   126,
-   127,   128,   129,   130,   131,   132,   133,   134,   135,   136,
-   137,   138,   139,   140,   141,   142,   143,   144,   145,   146,
-   147,   148,   149,   150,   151,   152,   153,   154,   155,   156,
-   157,   158,   159,   160,   162,   163,   164,   165,   166,   168,
-   170,   176,   178,   179,   180
+/* YYTRANSLATE[YYLEX] -- Bison token number corresponding to YYLEX. */
+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,   177,     2,     2,     2,   175,     2,     2,
+     182,   183,   173,   171,   187,   172,   186,   174,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     167,     2,   169,   161,     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,   184,     2,   185,   181,     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,   188,     2,   189,     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,     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,     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,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     1,     3,     4,     5,
+       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+      26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
+      36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
+      46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
+      56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
+      66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
+      76,    77,    78,    79,    80,    81,    82,    83,    84,    85,
+      86,    87,    88,    89,    90,    91,    92,    93,    94,    95,
+      96,    97,    98,    99,   100,   101,   102,   103,   104,   105,
+     106,   107,   108,   109,   110,   111,   112,   113,   114,   115,
+     116,   117,   118,   119,   120,   121,   122,   123,   124,   125,
+     126,   127,   128,   129,   130,   131,   132,   133,   134,   135,
+     136,   137,   138,   139,   140,   141,   142,   143,   144,   145,
+     146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
+     156,   157,   158,   159,   160,   162,   163,   164,   165,   166,
+     168,   170,   176,   178,   179,   180
 };
 
-#if YYDEBUG != 0
-static const short yyprhs[] = {     0,
-     0,     2,     4,     6,     9,    11,    14,    16,    38,    40,
-    41,    44,    46,    48,    50,    53,    56,    59,    62,    65,
-    73,    79,    97,   107,   131,   163,   179,   191,   203,   219,
-   229,   243,   253,   265,   279,   289,   299,   311,   321,   333,
-   343,   355,   369,   383,   395,   409,   427,   437,   449,   461,
-   475,   487,   497,   498,   501,   503,   505,   507,   509,   511,
-   513,   515,   517,   519,   521,   523,   525,   527,   533,   541,
-   548,   557,   558,   561,   564,   567,   570,   573,   576,   579,
-   582,   585,   588,   591,   594,   597,   600,   602,   606,   607,
-   621,   623,   627,   628,   642,   644,   648,   649,   663,   665,
-   669,   670,   690,   692,   696,   697,   717,   719,   723,   724,
-   744,   746,   750,   751,   777,   779,   783,   784,   810,   812,
-   816,   817,   843,   845,   849,   850,   882,   884,   888,   889,
-   921,   923,   927,   928,   960,   962,   966,   967,   981,   983,
-   987,   988,  1004,  1006,  1008,  1010,  1012,  1014,  1016,  1018,
-  1023,  1031,  1041,  1048,  1052,  1059,  1066,  1076,  1083,  1093,
-  1099,  1108,  1117,  1129,  1136,  1146,  1156,  1166,  1174,  1183,
-  1196,  1203,  1211,  1219,  1232,  1240,  1248,  1258,  1276,  1285,
-  1294,  1302,  1310,  1322,  1331,  1344,  1353,  1376,  1397,  1406,
-  1415,  1424,  1432,  1441,  1447,  1459,  1465,  1475,  1477,  1479,
-  1481,  1482,  1485,  1492,  1499,  1506,  1511,  1516,  1523,  1527,
-  1533,  1537,  1541,  1549,  1552,  1555,  1562,  1571,  1580,  1591,
-  1593,  1596,  1598,  1602,  1607,  1609,  1618,  1631,  1646,  1655,
-  1668,  1683,  1684,  1697,  1698,  1715,  1716,  1735,  1744,  1757,
-  1772,  1773,  1786,  1787,  1804,  1805,  1824,  1826,  1829,  1839,
-  1847,  1850,  1857,  1867,  1877,  1886,  1895,  1904,  1911,  1916,
-  1919,  1922,  1924,  1926,  1928,  1930,  1932,  1934,  1938,  1941,
-  1944,  1947,  1951,  1955,  1959,  1963,  1967,  1971,  1975,  1979,
-  1983,  1987,  1991,  1995,  1999,  2003,  2009,  2014,  2019,  2024,
-  2029,  2034,  2039,  2044,  2049,  2054,  2059,  2066,  2071,  2076,
-  2081,  2086,  2091,  2096,  2103,  2110,  2117,  2122,  2127,  2132,
-  2137,  2142,  2147,  2152,  2157,  2162,  2167,  2172,  2179,  2184,
-  2189,  2194,  2199,  2204,  2209,  2216,  2223,  2230,  2235,  2237,
-  2239,  2241,  2243,  2245,  2250,  2253,  2259,  2263,  2270,  2275,
-  2283,  2285,  2288,  2291,  2295,  2299,  2311,  2321,  2329,  2337,
-  2338,  2342,  2344,  2348,  2349,  2353,  2357,  2359,  2363,  2365,
-  2367,  2371,  2376,  2380,  2386,  2390,  2395,  2402,  2410,  2412,
-  2414,  2418,  2422,  2432,  2440,  2442,  2448,  2452,  2459,  2461,
-  2465,  2467,  2474,  2479,  2484,  2491,  2498
+#if YYDEBUG
+static const short yyprhs[] =
+{
+       0,     0,     2,     4,     6,     9,    11,    14,    16,    38,
+      40,    41,    44,    46,    48,    50,    53,    56,    59,    62,
+      65,    73,    79,    97,   107,   131,   163,   179,   191,   203,
+     219,   229,   243,   253,   265,   279,   289,   299,   311,   321,
+     333,   343,   355,   369,   383,   395,   409,   427,   437,   449,
+     461,   475,   487,   497,   498,   501,   503,   505,   507,   509,
+     511,   513,   515,   517,   519,   521,   523,   525,   527,   533,
+     541,   548,   557,   558,   561,   564,   567,   570,   573,   576,
+     579,   582,   585,   588,   591,   594,   597,   600,   602,   606,
+     607,   621,   623,   627,   628,   642,   644,   648,   649,   663,
+     665,   669,   670,   690,   692,   696,   697,   717,   719,   723,
+     724,   744,   746,   750,   751,   777,   779,   783,   784,   810,
+     812,   816,   817,   843,   845,   849,   850,   882,   884,   888,
+     889,   921,   923,   927,   928,   960,   962,   966,   967,   981,
+     983,   987,   988,  1004,  1006,  1008,  1010,  1012,  1014,  1016,
+    1018,  1023,  1031,  1041,  1048,  1052,  1059,  1066,  1076,  1083,
+    1093,  1099,  1108,  1117,  1129,  1136,  1146,  1156,  1166,  1174,
+    1183,  1196,  1203,  1211,  1219,  1232,  1240,  1248,  1258,  1276,
+    1285,  1294,  1302,  1310,  1322,  1331,  1344,  1353,  1376,  1397,
+    1406,  1415,  1424,  1432,  1441,  1447,  1459,  1465,  1475,  1477,
+    1479,  1481,  1482,  1485,  1492,  1499,  1506,  1511,  1516,  1523,
+    1527,  1533,  1537,  1541,  1549,  1552,  1555,  1562,  1571,  1580,
+    1591,  1593,  1596,  1598,  1602,  1607,  1609,  1618,  1631,  1646,
+    1655,  1668,  1683,  1684,  1697,  1698,  1715,  1716,  1735,  1744,
+    1757,  1772,  1773,  1786,  1787,  1804,  1805,  1824,  1826,  1829,
+    1839,  1847,  1850,  1857,  1867,  1877,  1886,  1895,  1904,  1911,
+    1916,  1919,  1922,  1924,  1926,  1928,  1930,  1932,  1934,  1938,
+    1941,  1944,  1947,  1951,  1955,  1959,  1963,  1967,  1971,  1975,
+    1979,  1983,  1987,  1991,  1995,  1999,  2003,  2009,  2014,  2019,
+    2024,  2029,  2034,  2039,  2044,  2049,  2054,  2059,  2066,  2071,
+    2076,  2081,  2086,  2091,  2096,  2103,  2110,  2117,  2122,  2127,
+    2132,  2137,  2142,  2147,  2152,  2157,  2162,  2167,  2172,  2179,
+    2184,  2189,  2194,  2199,  2204,  2209,  2216,  2223,  2230,  2235,
+    2237,  2239,  2241,  2243,  2245,  2250,  2253,  2259,  2263,  2270,
+    2275,  2283,  2285,  2288,  2291,  2295,  2299,  2311,  2321,  2329,
+    2337,  2338,  2342,  2344,  2348,  2349,  2353,  2357,  2359,  2363,
+    2365,  2367,  2371,  2376,  2380,  2386,  2390,  2395,  2402,  2410,
+    2412,  2414,  2418,  2422,  2432,  2440,  2442,  2448,  2452,  2459,
+    2461,  2465,  2467,  2474,  2479,  2484,  2491,  2498
 };
-
-static const short yyrhs[] = {   193,
-     0,   192,     0,   198,     0,     1,     6,     0,     3,     0,
-   172,     3,     0,   148,     0,   151,   152,   191,   191,   191,
-   153,   154,   150,   191,   191,   191,   150,   191,   191,   191,
-   150,   191,   191,   191,   155,   156,     0,   149,     0,     0,
-   193,   194,     0,   195,     0,   197,     0,   196,     0,   122,
-     6,     0,   123,     6,     0,   125,     6,     0,   124,     6,
-     0,   126,     6,     0,   127,   182,   273,   187,     5,   183,
-     6,     0,   128,   182,   273,   183,     6,     0,   129,   182,
-     5,   187,     5,   187,   273,   187,   273,   187,     5,   187,
-     5,   187,     5,   183,     6,     0,     3,     7,   106,   182,
-     5,   187,   271,   183,     6,     0,     3,     7,   105,   182,
-     5,   187,   269,   187,   277,   187,   268,   187,   268,   187,
-   268,   187,   277,   187,   277,   187,   268,   183,     6,     0,
-     3,     7,   104,   182,     5,   187,   269,   187,   269,   187,
-   275,   187,   268,   187,   268,   187,   268,   187,   268,   187,
-   277,   187,   277,   187,   277,   187,   277,   187,   268,   183,
-     6,     0,     3,     7,   112,   182,     5,   187,     3,   187,
-     3,   187,     3,   187,   268,   183,     6,     0,     3,     7,
-   116,   182,     5,   187,     3,   187,   268,   183,     6,     0,
-     3,     7,   133,   182,     5,   187,     3,   187,   268,   183,
-     6,     0,     3,     7,   114,   182,     5,   187,   173,   187,
-   173,   187,   269,   187,   268,   183,     6,     0,     3,     7,
-   117,   182,     5,   187,   277,   183,     6,     0,     3,     7,
-   118,   182,     5,   187,   277,   187,     3,   187,   268,   183,
-     6,     0,     3,     7,   113,   182,     5,   187,     3,   183,
-     6,     0,     3,     7,   119,   182,     5,   187,     3,   187,
-   269,   183,     6,     0,     3,     7,   121,   182,     5,   187,
-     3,   187,     3,   187,     3,   183,     6,     0,     3,     7,
-   120,   182,     5,   187,   271,   183,     6,     0,     3,     7,
-   115,   182,     5,   187,     3,   183,     6,     0,     3,     7,
-    41,   182,     5,   187,     3,   187,     3,   183,     6,     0,
-     3,     7,   131,   182,     5,   187,   277,   183,     6,     0,
-     3,     7,   132,   182,     5,   187,   277,   187,     3,   183,
-     6,     0,     3,     7,   130,   182,     5,   187,     3,   183,
-     6,     0,     3,     7,   134,   182,     5,   187,     3,   187,
-   269,   183,     6,     0,     3,     7,   135,   182,     5,   187,
-     3,   187,   269,   187,   269,   183,     6,     0,     3,     7,
-   142,   182,     5,   187,     3,   187,   269,   187,   269,   183,
-     6,     0,     3,     7,   136,   182,     5,   187,     3,   187,
-   269,   183,     6,     0,     3,     7,   146,   182,     5,   187,
-     3,   187,   269,   187,   269,   183,     6,     0,     3,     7,
-   137,   182,     5,   187,     3,   187,   277,   187,   277,   187,
-   268,   187,   268,   183,     6,     0,     3,     7,   138,   182,
-     5,   187,   277,   183,     6,     0,     3,     7,   139,   182,
-   140,   187,   268,   187,     3,   183,     6,     0,     3,     7,
-   141,   182,     5,   187,   277,   187,   268,   183,     6,     0,
-     3,     7,   143,   182,     5,   187,     5,   187,     3,   187,
-     3,   183,     6,     0,     3,     7,   144,   182,     5,   187,
-     5,   187,     3,   183,     6,     0,     3,     7,   145,   182,
-     3,   187,     3,   183,     6,     0,     0,   198,   199,     0,
-   201,     0,   200,     0,   247,     0,   248,     0,   249,     0,
-   252,     0,   253,     0,   254,     0,   257,     0,   266,     0,
-   267,     0,   256,     0,   255,     0,    33,   182,     5,   183,
-     6,     0,    33,   182,     5,   187,   279,   183,     6,     0,
-     4,     5,   188,   202,   189,     6,     0,     4,     5,     4,
-   271,   188,   202,   189,     6,     0,     0,   202,   204,     0,
-   202,   207,     0,   202,   210,     0,   202,   213,     0,   202,
-   216,     0,   202,   219,     0,   202,   222,     0,   202,   225,
-     0,   202,   228,     0,   202,   231,     0,   202,   234,     0,
-   202,   237,     0,   202,   240,     0,   202,   243,     0,   269,
-     0,   203,   187,   269,     0,     0,    80,   182,   269,   187,
-   269,   187,   269,   183,   205,   188,   203,   189,     6,     0,
-   269,     0,   206,   187,   269,     0,     0,    81,   182,   269,
-   187,   269,   187,   269,   183,   208,   188,   206,   189,     6,
-     0,   269,     0,   209,   187,   269,     0,     0,    82,   182,
-   269,   187,   269,   187,   269,   183,   211,   188,   209,   189,
-     6,     0,   269,     0,   212,   187,   269,     0,     0,    77,
-   182,   269,   187,   269,   187,   269,   187,   269,   187,   269,
-   187,   269,   183,   214,   188,   212,   189,     6,     0,   269,
-     0,   215,   187,   269,     0,     0,    78,   182,   269,   187,
-   269,   187,   269,   187,   269,   187,   269,   187,   269,   183,
-   217,   188,   215,   189,     6,     0,   269,     0,   218,   187,
-   269,     0,     0,    79,   182,   269,   187,   269,   187,   269,
-   187,   269,   187,   269,   187,   269,   183,   220,   188,   218,
-   189,     6,     0,   269,     0,   221,   187,   269,     0,     0,
-    74,   182,   269,   187,   269,   187,   269,   187,   269,   187,
-   269,   187,   269,   187,   269,   187,   269,   187,   269,   183,
-   223,   188,   221,   189,     6,     0,   269,     0,   224,   187,
-   269,     0,     0,    75,   182,   269,   187,   269,   187,   269,
-   187,   269,   187,   269,   187,   269,   187,   269,   187,   269,
-   187,   269,   183,   226,   188,   224,   189,     6,     0,   269,
-     0,   227,   187,   269,     0,     0,    76,   182,   269,   187,
-   269,   187,   269,   187,   269,   187,   269,   187,   269,   187,
-   269,   187,   269,   187,   269,   183,   229,   188,   227,   189,
-     6,     0,   269,     0,   230,   187,   269,     0,     0,    71,
-   182,   269,   187,   269,   187,   269,   187,   269,   187,   269,
-   187,   269,   187,   269,   187,   269,   187,   269,   187,   269,
-   187,   269,   187,   269,   183,   232,   188,   230,   189,     6,
-     0,   269,     0,   233,   187,   269,     0,     0,    72,   182,
-   269,   187,   269,   187,   269,   187,   269,   187,   269,   187,
-   269,   187,   269,   187,   269,   187,   269,   187,   269,   187,
-   269,   187,   269,   183,   235,   188,   233,   189,     6,     0,
-   269,     0,   236,   187,   269,     0,     0,    73,   182,   269,
-   187,   269,   187,   269,   187,   269,   187,   269,   187,   269,
-   187,   269,   187,   269,   187,   269,   187,   269,   187,   269,
-   187,   269,   183,   238,   188,   236,   189,     6,     0,   283,
-     0,   239,   187,   283,     0,     0,    83,   182,   269,   187,
-   269,   187,   269,   183,   241,   188,   239,   189,     6,     0,
-   283,     0,   242,   187,   283,     0,     0,    84,   182,   269,
-   187,   269,   187,   269,   187,   269,   183,   244,   188,   242,
-   189,     6,     0,     7,     0,   157,     0,   158,     0,   159,
-     0,   160,     0,   178,     0,   179,     0,     4,   245,   269,
-     6,     0,     4,   184,   269,   185,   245,   269,     6,     0,
-     4,   184,   188,   279,   189,   185,   245,   277,     6,     0,
-     4,   184,   185,     7,   277,     6,     0,     4,   246,     6,
-     0,     4,   184,   269,   185,   246,     6,     0,     4,   186,
-     4,     7,   283,     6,     0,     4,   184,   269,   185,   186,
-     4,     7,   283,     6,     0,     4,   186,     4,   245,   269,
-     6,     0,     4,   184,   269,   185,   186,     4,   245,   269,
-     6,     0,     4,   186,     4,   246,     6,     0,     4,   184,
-   269,   185,   186,     4,   246,     6,     0,     4,   186,    92,
-   186,     4,     7,   280,     6,     0,     4,   184,   269,   185,
-   186,    92,   186,     4,     7,   280,     6,     0,     4,   186,
-    93,     7,   281,     6,     0,     4,   184,   269,   185,   186,
-    93,     7,   281,     6,     0,    57,   182,     4,   183,   186,
-     4,     7,   269,     6,     0,    57,   182,     4,   183,   186,
-     4,     7,   283,     6,     0,    38,   182,   269,   183,     7,
-   271,     6,     0,    53,    38,   182,   269,   183,     7,   277,
-     6,     0,    69,    38,   277,     7,   188,   269,   187,   269,
-   187,   269,   189,     6,     0,    45,    46,   277,     7,   269,
-     6,     0,    41,   182,   269,   183,     7,   277,     6,     0,
-    43,   182,   269,   183,     7,   277,     6,     0,    69,    41,
-   277,     7,   188,   269,   187,   269,   187,   269,   189,     6,
-     0,    39,   182,   269,   183,     7,   277,     6,     0,    40,
-   182,   269,   183,     7,   277,     6,     0,    39,   182,   269,
-   183,     7,   277,    49,   271,     6,     0,    47,   182,   269,
-   183,     7,   188,   269,   187,   269,   187,     5,   187,     5,
-   187,     5,   189,     6,     0,    53,    41,   182,   269,   183,
-     7,   277,     6,     0,    41,    64,   182,   269,   183,     7,
-   277,     6,     0,    85,   182,   269,   183,     7,   277,     6,
-     0,    86,   182,   269,   183,     7,   277,     6,     0,    87,
-   182,   269,   183,     7,   277,    91,   277,    88,   269,     6,
-     0,    49,    42,   182,   269,   183,     7,   277,     6,     0,
-   147,    42,   182,   269,   183,     7,   188,   269,   187,   277,
-   189,     6,     0,    50,    42,   182,   269,   183,     7,   277,
-     6,     0,    87,    42,    89,    90,   182,   269,   183,     7,
-   275,    91,   188,   277,   187,   277,   189,    88,   188,   269,
-   187,   269,   189,     6,     0,    87,    42,   182,   269,   183,
-     7,   275,    91,   188,   277,   187,   277,   189,    88,   188,
-   269,   187,   269,   189,     6,     0,    53,    42,   182,   269,
-   183,     7,   277,     6,     0,    42,    64,   182,   269,   183,
-     7,   277,     6,     0,    52,    44,   182,   269,   183,     7,
-   277,     6,     0,    44,   182,   269,   183,     7,   277,     6,
-     0,    53,    44,   182,   269,   183,     7,   277,     6,     0,
-    59,   271,   188,   250,   189,     0,    58,   188,   271,   187,
-   271,   187,   269,   189,   188,   250,   189,     0,    60,   271,
-   188,   250,   189,     0,    61,   188,   271,   187,   269,   189,
-   188,   250,   189,     0,   252,     0,   251,     0,   249,     0,
-     0,   251,   248,     0,   251,    38,   188,   279,   189,     6,
-     0,   251,    41,   188,   279,   189,     6,     0,   251,    42,
-   188,   279,   189,     6,     0,    63,   188,   251,   189,     0,
-    66,   188,   251,   189,     0,    66,     4,   184,   269,   185,
-     6,     0,    66,   103,     6,     0,    92,   280,   188,   251,
-   189,     0,     4,   283,     6,     0,     4,   269,     6,     0,
-    57,   182,     4,   183,   186,     4,     6,     0,    99,     6,
-     0,    37,     6,     0,    94,   182,   269,     8,   269,   183,
-     0,    94,   182,   269,     8,   269,     8,   269,   183,     0,
-    94,     4,    95,   188,   269,     8,   269,   189,     0,    94,
-     4,    95,   188,   269,     8,   269,     8,   269,   189,     0,
-    96,     0,   102,     4,     0,   100,     0,   101,     4,     6,
-     0,    97,   182,   269,   183,     0,    98,     0,    62,    38,
-   188,   269,   187,   271,   189,     6,     0,    62,    38,   188,
-   269,   187,   271,   187,   271,   187,   269,   189,     6,     0,
-    62,    38,   188,   269,   187,   271,   187,   271,   187,   271,
-   187,   269,   189,     6,     0,    62,    41,   188,   269,   187,
-   271,   189,     6,     0,    62,    41,   188,   269,   187,   271,
-   187,   271,   187,   269,   189,     6,     0,    62,    41,   188,
-   269,   187,   271,   187,   271,   187,   271,   187,   269,   189,
-     6,     0,     0,    62,    41,   188,   269,   187,   271,   189,
-   258,   188,   264,   189,     6,     0,     0,    62,    41,   188,
-   269,   187,   271,   187,   271,   187,   269,   189,   259,   188,
-   264,   189,     6,     0,     0,    62,    41,   188,   269,   187,
-   271,   187,   271,   187,   271,   187,   269,   189,   260,   188,
-   264,   189,     6,     0,    62,    42,   188,   269,   187,   271,
-   189,     6,     0,    62,    42,   188,   269,   187,   271,   187,
-   271,   187,   269,   189,     6,     0,    62,    42,   188,   269,
-   187,   271,   187,   271,   187,   271,   187,   269,   189,     6,
-     0,     0,    62,    42,   188,   269,   187,   271,   189,   261,
-   188,   264,   189,     6,     0,     0,    62,    42,   188,   269,
-   187,   271,   187,   271,   187,   269,   189,   262,   188,   264,
-   189,     6,     0,     0,    62,    42,   188,   269,   187,   271,
-   187,   271,   187,   271,   187,   269,   189,   263,   188,   264,
-   189,     6,     0,   265,     0,   264,   265,     0,    70,   188,
-   277,   187,   277,   187,   277,   189,     6,     0,    70,   188,
-   277,   187,   277,   189,     6,     0,    65,     6,     0,    51,
-    41,   277,     7,   269,     6,     0,    51,    41,   277,     7,
-   269,    54,    56,   269,     6,     0,    51,    41,   277,     7,
-   269,    54,    55,   269,     6,     0,    51,    42,   188,   269,
-   189,     7,   277,     6,     0,    48,    42,   188,   269,   189,
-     7,   277,     6,     0,    51,    44,   188,   269,   189,     7,
-   277,     6,     0,    65,    42,   277,     7,   269,     6,     0,
-    65,    42,   277,     6,     0,    67,     6,     0,    68,     6,
-     0,   107,     0,   108,     0,   109,     0,   110,     0,   111,
-     0,   270,     0,   182,   269,   183,     0,   172,   269,     0,
-   171,   269,     0,   177,   269,     0,   269,   172,   269,     0,
-   269,   171,   269,     0,   269,   173,   269,     0,   269,   174,
-   269,     0,   269,   175,   269,     0,   269,   181,   269,     0,
-   269,   167,   269,     0,   269,   169,   269,     0,   269,   168,
-   269,     0,   269,   170,   269,     0,   269,   164,   269,     0,
-   269,   165,   269,     0,   269,   163,   269,     0,   269,   162,
-   269,     0,   269,   161,   269,     8,   269,     0,    12,   182,
-   269,   183,     0,    13,   182,   269,   183,     0,    14,   182,
-   269,   183,     0,    15,   182,   269,   183,     0,    16,   182,
-   269,   183,     0,    17,   182,   269,   183,     0,    18,   182,
-   269,   183,     0,    19,   182,   269,   183,     0,    20,   182,
-   269,   183,     0,    22,   182,   269,   183,     0,    23,   182,
-   269,   187,   269,   183,     0,    24,   182,   269,   183,     0,
-    25,   182,   269,   183,     0,    26,   182,   269,   183,     0,
-    27,   182,   269,   183,     0,    28,   182,   269,   183,     0,
-    29,   182,   269,   183,     0,    30,   182,   269,   187,   269,
-   183,     0,    31,   182,   269,   187,   269,   183,     0,    32,
-   182,   269,   187,   269,   183,     0,    21,   182,   269,   183,
-     0,    12,   184,   269,   185,     0,    13,   184,   269,   185,
-     0,    14,   184,   269,   185,     0,    15,   184,   269,   185,
-     0,    16,   184,   269,   185,     0,    17,   184,   269,   185,
-     0,    18,   184,   269,   185,     0,    19,   184,   269,   185,
-     0,    20,   184,   269,   185,     0,    22,   184,   269,   185,
-     0,    23,   184,   269,   187,   269,   185,     0,    24,   184,
-   269,   185,     0,    25,   184,   269,   185,     0,    26,   184,
-   269,   185,     0,    27,   184,   269,   185,     0,    28,   184,
-   269,   185,     0,    29,   184,   269,   185,     0,    30,   184,
-   269,   187,   269,   185,     0,    31,   184,   269,   187,   269,
-   185,     0,    32,   184,   269,   187,   269,   185,     0,    21,
-   184,   269,   185,     0,     3,     0,     9,     0,    10,     0,
-    11,     0,     4,     0,     4,   184,   269,   185,     0,     4,
-   246,     0,     4,   184,   269,   185,   246,     0,     4,   186,
-     4,     0,     4,   184,   269,   185,   186,     4,     0,     4,
-   186,     4,   246,     0,     4,   184,   269,   185,   186,     4,
-   246,     0,   272,     0,   172,   271,     0,   171,   271,     0,
-   271,   172,   271,     0,   271,   171,   271,     0,   188,   269,
-   187,   269,   187,   269,   187,   269,   187,   269,   189,     0,
-   188,   269,   187,   269,   187,   269,   187,   269,   189,     0,
-   188,   269,   187,   269,   187,   269,   189,     0,   182,   269,
-   187,   269,   187,   269,   183,     0,     0,   182,   274,   183,
-     0,     5,     0,   274,   187,     5,     0,     0,   188,   276,
-   189,     0,   182,   276,   183,     0,   277,     0,   276,   187,
-   277,     0,   269,     0,   278,     0,   188,   279,   189,     0,
-   172,   188,   279,   189,     0,   269,     8,   269,     0,   269,
-     8,   269,     8,   269,     0,     4,   184,   185,     0,   172,
-     4,   184,   185,     0,     4,   184,   188,   279,   189,   185,
-     0,   172,     4,   184,   188,   279,   189,   185,     0,   269,
-     0,   278,     0,   279,   187,   269,     0,   279,   187,   278,
-     0,   188,   269,   187,   269,   187,   269,   187,   269,   189,
-     0,   188,   269,   187,   269,   187,   269,   189,     0,     4,
-     0,     4,   186,    92,   186,     4,     0,   188,   282,   189,
-     0,     4,   184,   269,   185,   186,    93,     0,   280,     0,
-   282,   187,   280,     0,     5,     0,    35,   182,   283,   187,
-   283,   183,     0,    36,   182,   283,   183,     0,    34,   182,
-   283,   183,     0,    34,   182,   283,   187,   279,   183,     0,
-    34,   182,     4,   186,     4,   183,     0,    34,   182,     4,
-   184,   269,   185,   186,     4,   183,     0
+static const short yyrhs[] =
+{
+     193,     0,   192,     0,   198,     0,     1,     6,     0,     3,
+       0,   172,     3,     0,   148,     0,   151,   152,   191,   191,
+     191,   153,   154,   150,   191,   191,   191,   150,   191,   191,
+     191,   150,   191,   191,   191,   155,   156,     0,   149,     0,
+       0,   193,   194,     0,   195,     0,   197,     0,   196,     0,
+     122,     6,     0,   123,     6,     0,   125,     6,     0,   124,
+       6,     0,   126,     6,     0,   127,   182,   273,   187,     5,
+     183,     6,     0,   128,   182,   273,   183,     6,     0,   129,
+     182,     5,   187,     5,   187,   273,   187,   273,   187,     5,
+     187,     5,   187,     5,   183,     6,     0,     3,     7,   106,
+     182,     5,   187,   271,   183,     6,     0,     3,     7,   105,
+     182,     5,   187,   269,   187,   277,   187,   268,   187,   268,
+     187,   268,   187,   277,   187,   277,   187,   268,   183,     6,
+       0,     3,     7,   104,   182,     5,   187,   269,   187,   269,
+     187,   275,   187,   268,   187,   268,   187,   268,   187,   268,
+     187,   277,   187,   277,   187,   277,   187,   277,   187,   268,
+     183,     6,     0,     3,     7,   112,   182,     5,   187,     3,
+     187,     3,   187,     3,   187,   268,   183,     6,     0,     3,
+       7,   116,   182,     5,   187,     3,   187,   268,   183,     6,
+       0,     3,     7,   133,   182,     5,   187,     3,   187,   268,
+     183,     6,     0,     3,     7,   114,   182,     5,   187,   173,
+     187,   173,   187,   269,   187,   268,   183,     6,     0,     3,
+       7,   117,   182,     5,   187,   277,   183,     6,     0,     3,
+       7,   118,   182,     5,   187,   277,   187,     3,   187,   268,
+     183,     6,     0,     3,     7,   113,   182,     5,   187,     3,
+     183,     6,     0,     3,     7,   119,   182,     5,   187,     3,
+     187,   269,   183,     6,     0,     3,     7,   121,   182,     5,
+     187,     3,   187,     3,   187,     3,   183,     6,     0,     3,
+       7,   120,   182,     5,   187,   271,   183,     6,     0,     3,
+       7,   115,   182,     5,   187,     3,   183,     6,     0,     3,
+       7,    41,   182,     5,   187,     3,   187,     3,   183,     6,
+       0,     3,     7,   131,   182,     5,   187,   277,   183,     6,
+       0,     3,     7,   132,   182,     5,   187,   277,   187,     3,
+     183,     6,     0,     3,     7,   130,   182,     5,   187,     3,
+     183,     6,     0,     3,     7,   134,   182,     5,   187,     3,
+     187,   269,   183,     6,     0,     3,     7,   135,   182,     5,
+     187,     3,   187,   269,   187,   269,   183,     6,     0,     3,
+       7,   142,   182,     5,   187,     3,   187,   269,   187,   269,
+     183,     6,     0,     3,     7,   136,   182,     5,   187,     3,
+     187,   269,   183,     6,     0,     3,     7,   146,   182,     5,
+     187,     3,   187,   269,   187,   269,   183,     6,     0,     3,
+       7,   137,   182,     5,   187,     3,   187,   277,   187,   277,
+     187,   268,   187,   268,   183,     6,     0,     3,     7,   138,
+     182,     5,   187,   277,   183,     6,     0,     3,     7,   139,
+     182,   140,   187,   268,   187,     3,   183,     6,     0,     3,
+       7,   141,   182,     5,   187,   277,   187,   268,   183,     6,
+       0,     3,     7,   143,   182,     5,   187,     5,   187,     3,
+     187,     3,   183,     6,     0,     3,     7,   144,   182,     5,
+     187,     5,   187,     3,   183,     6,     0,     3,     7,   145,
+     182,     3,   187,     3,   183,     6,     0,     0,   198,   199,
+       0,   201,     0,   200,     0,   247,     0,   248,     0,   249,
+       0,   252,     0,   253,     0,   254,     0,   257,     0,   266,
+       0,   267,     0,   256,     0,   255,     0,    33,   182,     5,
+     183,     6,     0,    33,   182,     5,   187,   279,   183,     6,
+       0,     4,     5,   188,   202,   189,     6,     0,     4,     5,
+       4,   271,   188,   202,   189,     6,     0,     0,   202,   204,
+       0,   202,   207,     0,   202,   210,     0,   202,   213,     0,
+     202,   216,     0,   202,   219,     0,   202,   222,     0,   202,
+     225,     0,   202,   228,     0,   202,   231,     0,   202,   234,
+       0,   202,   237,     0,   202,   240,     0,   202,   243,     0,
+     269,     0,   203,   187,   269,     0,     0,    80,   182,   269,
+     187,   269,   187,   269,   183,   205,   188,   203,   189,     6,
+       0,   269,     0,   206,   187,   269,     0,     0,    81,   182,
+     269,   187,   269,   187,   269,   183,   208,   188,   206,   189,
+       6,     0,   269,     0,   209,   187,   269,     0,     0,    82,
+     182,   269,   187,   269,   187,   269,   183,   211,   188,   209,
+     189,     6,     0,   269,     0,   212,   187,   269,     0,     0,
+      77,   182,   269,   187,   269,   187,   269,   187,   269,   187,
+     269,   187,   269,   183,   214,   188,   212,   189,     6,     0,
+     269,     0,   215,   187,   269,     0,     0,    78,   182,   269,
+     187,   269,   187,   269,   187,   269,   187,   269,   187,   269,
+     183,   217,   188,   215,   189,     6,     0,   269,     0,   218,
+     187,   269,     0,     0,    79,   182,   269,   187,   269,   187,
+     269,   187,   269,   187,   269,   187,   269,   183,   220,   188,
+     218,   189,     6,     0,   269,     0,   221,   187,   269,     0,
+       0,    74,   182,   269,   187,   269,   187,   269,   187,   269,
+     187,   269,   187,   269,   187,   269,   187,   269,   187,   269,
+     183,   223,   188,   221,   189,     6,     0,   269,     0,   224,
+     187,   269,     0,     0,    75,   182,   269,   187,   269,   187,
+     269,   187,   269,   187,   269,   187,   269,   187,   269,   187,
+     269,   187,   269,   183,   226,   188,   224,   189,     6,     0,
+     269,     0,   227,   187,   269,     0,     0,    76,   182,   269,
+     187,   269,   187,   269,   187,   269,   187,   269,   187,   269,
+     187,   269,   187,   269,   187,   269,   183,   229,   188,   227,
+     189,     6,     0,   269,     0,   230,   187,   269,     0,     0,
+      71,   182,   269,   187,   269,   187,   269,   187,   269,   187,
+     269,   187,   269,   187,   269,   187,   269,   187,   269,   187,
+     269,   187,   269,   187,   269,   183,   232,   188,   230,   189,
+       6,     0,   269,     0,   233,   187,   269,     0,     0,    72,
+     182,   269,   187,   269,   187,   269,   187,   269,   187,   269,
+     187,   269,   187,   269,   187,   269,   187,   269,   187,   269,
+     187,   269,   187,   269,   183,   235,   188,   233,   189,     6,
+       0,   269,     0,   236,   187,   269,     0,     0,    73,   182,
+     269,   187,   269,   187,   269,   187,   269,   187,   269,   187,
+     269,   187,   269,   187,   269,   187,   269,   187,   269,   187,
+     269,   187,   269,   183,   238,   188,   236,   189,     6,     0,
+     283,     0,   239,   187,   283,     0,     0,    83,   182,   269,
+     187,   269,   187,   269,   183,   241,   188,   239,   189,     6,
+       0,   283,     0,   242,   187,   283,     0,     0,    84,   182,
+     269,   187,   269,   187,   269,   187,   269,   183,   244,   188,
+     242,   189,     6,     0,     7,     0,   157,     0,   158,     0,
+     159,     0,   160,     0,   178,     0,   179,     0,     4,   245,
+     269,     6,     0,     4,   184,   269,   185,   245,   269,     6,
+       0,     4,   184,   188,   279,   189,   185,   245,   277,     6,
+       0,     4,   184,   185,     7,   277,     6,     0,     4,   246,
+       6,     0,     4,   184,   269,   185,   246,     6,     0,     4,
+     186,     4,     7,   283,     6,     0,     4,   184,   269,   185,
+     186,     4,     7,   283,     6,     0,     4,   186,     4,   245,
+     269,     6,     0,     4,   184,   269,   185,   186,     4,   245,
+     269,     6,     0,     4,   186,     4,   246,     6,     0,     4,
+     184,   269,   185,   186,     4,   246,     6,     0,     4,   186,
+      92,   186,     4,     7,   280,     6,     0,     4,   184,   269,
+     185,   186,    92,   186,     4,     7,   280,     6,     0,     4,
+     186,    93,     7,   281,     6,     0,     4,   184,   269,   185,
+     186,    93,     7,   281,     6,     0,    57,   182,     4,   183,
+     186,     4,     7,   269,     6,     0,    57,   182,     4,   183,
+     186,     4,     7,   283,     6,     0,    38,   182,   269,   183,
+       7,   271,     6,     0,    53,    38,   182,   269,   183,     7,
+     277,     6,     0,    69,    38,   277,     7,   188,   269,   187,
+     269,   187,   269,   189,     6,     0,    45,    46,   277,     7,
+     269,     6,     0,    41,   182,   269,   183,     7,   277,     6,
+       0,    43,   182,   269,   183,     7,   277,     6,     0,    69,
+      41,   277,     7,   188,   269,   187,   269,   187,   269,   189,
+       6,     0,    39,   182,   269,   183,     7,   277,     6,     0,
+      40,   182,   269,   183,     7,   277,     6,     0,    39,   182,
+     269,   183,     7,   277,    49,   271,     6,     0,    47,   182,
+     269,   183,     7,   188,   269,   187,   269,   187,     5,   187,
+       5,   187,     5,   189,     6,     0,    53,    41,   182,   269,
+     183,     7,   277,     6,     0,    41,    64,   182,   269,   183,
+       7,   277,     6,     0,    85,   182,   269,   183,     7,   277,
+       6,     0,    86,   182,   269,   183,     7,   277,     6,     0,
+      87,   182,   269,   183,     7,   277,    91,   277,    88,   269,
+       6,     0,    49,    42,   182,   269,   183,     7,   277,     6,
+       0,   147,    42,   182,   269,   183,     7,   188,   269,   187,
+     277,   189,     6,     0,    50,    42,   182,   269,   183,     7,
+     277,     6,     0,    87,    42,    89,    90,   182,   269,   183,
+       7,   275,    91,   188,   277,   187,   277,   189,    88,   188,
+     269,   187,   269,   189,     6,     0,    87,    42,   182,   269,
+     183,     7,   275,    91,   188,   277,   187,   277,   189,    88,
+     188,   269,   187,   269,   189,     6,     0,    53,    42,   182,
+     269,   183,     7,   277,     6,     0,    42,    64,   182,   269,
+     183,     7,   277,     6,     0,    52,    44,   182,   269,   183,
+       7,   277,     6,     0,    44,   182,   269,   183,     7,   277,
+       6,     0,    53,    44,   182,   269,   183,     7,   277,     6,
+       0,    59,   271,   188,   250,   189,     0,    58,   188,   271,
+     187,   271,   187,   269,   189,   188,   250,   189,     0,    60,
+     271,   188,   250,   189,     0,    61,   188,   271,   187,   269,
+     189,   188,   250,   189,     0,   252,     0,   251,     0,   249,
+       0,     0,   251,   248,     0,   251,    38,   188,   279,   189,
+       6,     0,   251,    41,   188,   279,   189,     6,     0,   251,
+      42,   188,   279,   189,     6,     0,    63,   188,   251,   189,
+       0,    66,   188,   251,   189,     0,    66,     4,   184,   269,
+     185,     6,     0,    66,   103,     6,     0,    92,   280,   188,
+     251,   189,     0,     4,   283,     6,     0,     4,   269,     6,
+       0,    57,   182,     4,   183,   186,     4,     6,     0,    99,
+       6,     0,    37,     6,     0,    94,   182,   269,     8,   269,
+     183,     0,    94,   182,   269,     8,   269,     8,   269,   183,
+       0,    94,     4,    95,   188,   269,     8,   269,   189,     0,
+      94,     4,    95,   188,   269,     8,   269,     8,   269,   189,
+       0,    96,     0,   102,     4,     0,   100,     0,   101,     4,
+       6,     0,    97,   182,   269,   183,     0,    98,     0,    62,
+      38,   188,   269,   187,   271,   189,     6,     0,    62,    38,
+     188,   269,   187,   271,   187,   271,   187,   269,   189,     6,
+       0,    62,    38,   188,   269,   187,   271,   187,   271,   187,
+     271,   187,   269,   189,     6,     0,    62,    41,   188,   269,
+     187,   271,   189,     6,     0,    62,    41,   188,   269,   187,
+     271,   187,   271,   187,   269,   189,     6,     0,    62,    41,
+     188,   269,   187,   271,   187,   271,   187,   271,   187,   269,
+     189,     6,     0,     0,    62,    41,   188,   269,   187,   271,
+     189,   258,   188,   264,   189,     6,     0,     0,    62,    41,
+     188,   269,   187,   271,   187,   271,   187,   269,   189,   259,
+     188,   264,   189,     6,     0,     0,    62,    41,   188,   269,
+     187,   271,   187,   271,   187,   271,   187,   269,   189,   260,
+     188,   264,   189,     6,     0,    62,    42,   188,   269,   187,
+     271,   189,     6,     0,    62,    42,   188,   269,   187,   271,
+     187,   271,   187,   269,   189,     6,     0,    62,    42,   188,
+     269,   187,   271,   187,   271,   187,   271,   187,   269,   189,
+       6,     0,     0,    62,    42,   188,   269,   187,   271,   189,
+     261,   188,   264,   189,     6,     0,     0,    62,    42,   188,
+     269,   187,   271,   187,   271,   187,   269,   189,   262,   188,
+     264,   189,     6,     0,     0,    62,    42,   188,   269,   187,
+     271,   187,   271,   187,   271,   187,   269,   189,   263,   188,
+     264,   189,     6,     0,   265,     0,   264,   265,     0,    70,
+     188,   277,   187,   277,   187,   277,   189,     6,     0,    70,
+     188,   277,   187,   277,   189,     6,     0,    65,     6,     0,
+      51,    41,   277,     7,   269,     6,     0,    51,    41,   277,
+       7,   269,    54,    56,   269,     6,     0,    51,    41,   277,
+       7,   269,    54,    55,   269,     6,     0,    51,    42,   188,
+     269,   189,     7,   277,     6,     0,    48,    42,   188,   269,
+     189,     7,   277,     6,     0,    51,    44,   188,   269,   189,
+       7,   277,     6,     0,    65,    42,   277,     7,   269,     6,
+       0,    65,    42,   277,     6,     0,    67,     6,     0,    68,
+       6,     0,   107,     0,   108,     0,   109,     0,   110,     0,
+     111,     0,   270,     0,   182,   269,   183,     0,   172,   269,
+       0,   171,   269,     0,   177,   269,     0,   269,   172,   269,
+       0,   269,   171,   269,     0,   269,   173,   269,     0,   269,
+     174,   269,     0,   269,   175,   269,     0,   269,   181,   269,
+       0,   269,   167,   269,     0,   269,   169,   269,     0,   269,
+     168,   269,     0,   269,   170,   269,     0,   269,   164,   269,
+       0,   269,   165,   269,     0,   269,   163,   269,     0,   269,
+     162,   269,     0,   269,   161,   269,     8,   269,     0,    12,
+     182,   269,   183,     0,    13,   182,   269,   183,     0,    14,
+     182,   269,   183,     0,    15,   182,   269,   183,     0,    16,
+     182,   269,   183,     0,    17,   182,   269,   183,     0,    18,
+     182,   269,   183,     0,    19,   182,   269,   183,     0,    20,
+     182,   269,   183,     0,    22,   182,   269,   183,     0,    23,
+     182,   269,   187,   269,   183,     0,    24,   182,   269,   183,
+       0,    25,   182,   269,   183,     0,    26,   182,   269,   183,
+       0,    27,   182,   269,   183,     0,    28,   182,   269,   183,
+       0,    29,   182,   269,   183,     0,    30,   182,   269,   187,
+     269,   183,     0,    31,   182,   269,   187,   269,   183,     0,
+      32,   182,   269,   187,   269,   183,     0,    21,   182,   269,
+     183,     0,    12,   184,   269,   185,     0,    13,   184,   269,
+     185,     0,    14,   184,   269,   185,     0,    15,   184,   269,
+     185,     0,    16,   184,   269,   185,     0,    17,   184,   269,
+     185,     0,    18,   184,   269,   185,     0,    19,   184,   269,
+     185,     0,    20,   184,   269,   185,     0,    22,   184,   269,
+     185,     0,    23,   184,   269,   187,   269,   185,     0,    24,
+     184,   269,   185,     0,    25,   184,   269,   185,     0,    26,
+     184,   269,   185,     0,    27,   184,   269,   185,     0,    28,
+     184,   269,   185,     0,    29,   184,   269,   185,     0,    30,
+     184,   269,   187,   269,   185,     0,    31,   184,   269,   187,
+     269,   185,     0,    32,   184,   269,   187,   269,   185,     0,
+      21,   184,   269,   185,     0,     3,     0,     9,     0,    10,
+       0,    11,     0,     4,     0,     4,   184,   269,   185,     0,
+       4,   246,     0,     4,   184,   269,   185,   246,     0,     4,
+     186,     4,     0,     4,   184,   269,   185,   186,     4,     0,
+       4,   186,     4,   246,     0,     4,   184,   269,   185,   186,
+       4,   246,     0,   272,     0,   172,   271,     0,   171,   271,
+       0,   271,   172,   271,     0,   271,   171,   271,     0,   188,
+     269,   187,   269,   187,   269,   187,   269,   187,   269,   189,
+       0,   188,   269,   187,   269,   187,   269,   187,   269,   189,
+       0,   188,   269,   187,   269,   187,   269,   189,     0,   182,
+     269,   187,   269,   187,   269,   183,     0,     0,   182,   274,
+     183,     0,     5,     0,   274,   187,     5,     0,     0,   188,
+     276,   189,     0,   182,   276,   183,     0,   277,     0,   276,
+     187,   277,     0,   269,     0,   278,     0,   188,   279,   189,
+       0,   172,   188,   279,   189,     0,   269,     8,   269,     0,
+     269,     8,   269,     8,   269,     0,     4,   184,   185,     0,
+     172,     4,   184,   185,     0,     4,   184,   188,   279,   189,
+     185,     0,   172,     4,   184,   188,   279,   189,   185,     0,
+     269,     0,   278,     0,   279,   187,   269,     0,   279,   187,
+     278,     0,   188,   269,   187,   269,   187,   269,   187,   269,
+     189,     0,   188,   269,   187,   269,   187,   269,   189,     0,
+       4,     0,     4,   186,    92,   186,     4,     0,   188,   282,
+     189,     0,     4,   184,   269,   185,   186,    93,     0,   280,
+       0,   282,   187,   280,     0,     5,     0,    35,   182,   283,
+     187,   283,   183,     0,    36,   182,   283,   183,     0,    34,
+     182,   283,   183,     0,    34,   182,   283,   187,   279,   183,
+       0,    34,   182,     4,   186,     4,   183,     0,    34,   182,
+       4,   184,   269,   185,   186,     4,   183,     0
 };
 
 #endif
 
-#if YYDEBUG != 0
-static const short yyrline[] = { 0,
-   154,   156,   157,   158,   165,   167,   170,   178,   192,   204,
-   206,   209,   211,   212,   215,   221,   226,   227,   228,   231,
-   235,   238,   244,   249,   255,   263,   268,   272,   278,   283,
-   287,   292,   296,   299,   304,   308,   312,   316,   321,   325,
-   328,   332,   336,   340,   344,   348,   352,   355,   359,   362,
-   366,   369,   378,   382,   388,   390,   391,   392,   393,   394,
-   395,   396,   397,   398,   399,   400,   401,   404,   409,   426,
-   431,   437,   442,   443,   444,   445,   446,   447,   448,   449,
-   450,   451,   452,   453,   454,   455,   458,   461,   465,   471,
-   477,   480,   484,   490,   496,   499,   503,   509,   515,   518,
-   522,   530,   536,   539,   543,   551,   557,   560,   564,   572,
-   578,   581,   585,   597,   603,   606,   610,   622,   628,   631,
-   635,   647,   653,   656,   660,   673,   679,   682,   686,   699,
-   705,   708,   712,   725,   731,   737,   744,   752,   758,   764,
-   771,   779,   790,   792,   793,   794,   795,   797,   799,   801,
-   832,   866,   913,   928,   937,   952,   964,   978,  1001,  1025,
-  1037,  1051,  1063,  1077,  1097,  1119,  1131,  1149,  1160,  1166,
-  1185,  1199,  1205,  1211,  1230,  1236,  1242,  1258,  1265,  1271,
-  1277,  1288,  1299,  1324,  1330,  1349,  1370,  1378,  1384,  1390,
-  1399,  1405,  1411,  1423,  1429,  1434,  1439,  1446,  1448,  1449,
-  1452,  1457,  1462,  1477,  1492,  1513,  1531,  1539,  1544,  1554,
-  1568,  1636,  1656,  1663,  1667,  1687,  1699,  1709,  1730,  1751,
-  1772,  1778,  1783,  1788,  1792,  1802,  1811,  1818,  1827,  1832,
-  1837,  1842,  1847,  1852,  1857,  1862,  1867,  1875,  1880,  1885,
-  1890,  1895,  1901,  1907,  1913,  1919,  1927,  1931,  1936,  1963,
-  1987,  1997,  2016,  2034,  2052,  2074,  2095,  2116,  2130,  2151,
-  2156,  2167,  2169,  2170,  2171,  2172,  2175,  2177,  2178,  2179,
-  2180,  2181,  2182,  2183,  2184,  2191,  2192,  2193,  2194,  2195,
-  2196,  2197,  2198,  2199,  2200,  2201,  2202,  2203,  2204,  2205,
-  2206,  2207,  2208,  2209,  2210,  2211,  2212,  2213,  2214,  2215,
-  2216,  2217,  2218,  2219,  2220,  2221,  2222,  2224,  2225,  2226,
-  2227,  2228,  2229,  2230,  2231,  2232,  2233,  2234,  2235,  2236,
-  2237,  2238,  2239,  2240,  2241,  2242,  2243,  2244,  2249,  2254,
-  2255,  2256,  2260,  2271,  2288,  2299,  2318,  2334,  2350,  2366,
-  2383,  2388,  2392,  2396,  2400,  2405,  2410,  2414,  2418,  2424,
-  2428,  2433,  2437,  2442,  2446,  2450,  2456,  2462,  2469,  2475,
-  2479,  2483,  2493,  2500,  2511,  2525,  2541,  2561,  2585,  2591,
-  2595,  2599,  2610,  2615,  2626,  2631,  2649,  2654,  2667,  2673,
-  2679,  2684,  2692,  2705,  2709,  2727,  2741
+#if YYDEBUG
+/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
+static const short yyrline[] =
+{
+       0,   154,   156,   157,   158,   165,   167,   170,   178,   192,
+     204,   206,   209,   211,   212,   215,   221,   226,   227,   228,
+     231,   235,   238,   244,   249,   255,   263,   268,   272,   278,
+     283,   287,   292,   296,   299,   304,   308,   312,   316,   321,
+     325,   328,   332,   336,   340,   344,   348,   352,   355,   359,
+     362,   366,   369,   378,   382,   388,   390,   391,   392,   393,
+     394,   395,   396,   397,   398,   399,   400,   401,   404,   409,
+     426,   431,   437,   442,   443,   444,   445,   446,   447,   448,
+     449,   450,   451,   452,   453,   454,   455,   458,   461,   465,
+     465,   477,   480,   484,   484,   496,   499,   503,   503,   515,
+     518,   522,   522,   536,   539,   543,   543,   557,   560,   564,
+     564,   578,   581,   585,   585,   603,   606,   610,   610,   628,
+     631,   635,   635,   653,   656,   660,   660,   679,   682,   686,
+     686,   705,   708,   712,   712,   731,   737,   744,   744,   758,
+     764,   771,   771,   790,   792,   793,   794,   795,   798,   800,
+     803,   834,   868,   915,   930,   939,   954,   966,   980,  1003,
+    1027,  1039,  1053,  1065,  1079,  1099,  1121,  1133,  1151,  1162,
+    1168,  1187,  1201,  1207,  1213,  1232,  1238,  1244,  1260,  1267,
+    1273,  1279,  1290,  1301,  1326,  1332,  1351,  1372,  1380,  1386,
+    1392,  1401,  1407,  1413,  1425,  1431,  1436,  1441,  1448,  1450,
+    1451,  1454,  1459,  1464,  1479,  1494,  1515,  1533,  1541,  1546,
+    1556,  1570,  1638,  1658,  1665,  1669,  1691,  1703,  1713,  1734,
+    1755,  1776,  1782,  1787,  1792,  1796,  1806,  1815,  1822,  1831,
+    1836,  1841,  1846,  1846,  1856,  1856,  1866,  1866,  1879,  1884,
+    1889,  1894,  1894,  1905,  1905,  1917,  1917,  1931,  1935,  1940,
+    1967,  1991,  2001,  2020,  2038,  2056,  2078,  2099,  2120,  2134,
+    2155,  2160,  2171,  2173,  2174,  2175,  2176,  2179,  2181,  2182,
+    2183,  2184,  2185,  2186,  2187,  2188,  2195,  2196,  2197,  2198,
+    2199,  2200,  2201,  2202,  2203,  2204,  2205,  2206,  2207,  2208,
+    2209,  2210,  2211,  2212,  2213,  2214,  2215,  2216,  2217,  2218,
+    2219,  2220,  2221,  2222,  2223,  2224,  2225,  2226,  2228,  2229,
+    2230,  2231,  2232,  2233,  2234,  2235,  2236,  2237,  2238,  2239,
+    2240,  2241,  2242,  2243,  2244,  2245,  2246,  2247,  2248,  2253,
+    2258,  2259,  2260,  2264,  2275,  2292,  2303,  2322,  2338,  2354,
+    2370,  2387,  2392,  2396,  2400,  2404,  2410,  2415,  2419,  2423,
+    2429,  2433,  2438,  2442,  2447,  2451,  2455,  2461,  2467,  2474,
+    2480,  2484,  2488,  2498,  2505,  2516,  2530,  2546,  2566,  2590,
+    2596,  2600,  2604,  2615,  2620,  2631,  2636,  2654,  2659,  2672,
+    2678,  2684,  2689,  2697,  2710,  2714,  2732,  2746
 };
 #endif
 
 
-#if YYDEBUG != 0 || defined (YYERROR_VERBOSE)
-
-static const char * const yytname[] = {   "$","error","$undefined.","tDOUBLE",
-"tSTRING","tBIGSTR","tEND","tAFFECT","tDOTS","tPi","tMPI_Rank","tMPI_Size","tExp",
-"tLog","tLog10","tSqrt","tSin","tAsin","tCos","tAcos","tTan","tRand","tAtan",
-"tAtan2","tSinh","tCosh","tTanh","tFabs","tFloor","tCeil","tFmod","tModulo",
-"tHypot","tPrintf","tSprintf","tStrCat","tStrPrefix","tDraw","tPoint","tCircle",
-"tEllipse","tLine","tSurface","tSpline","tVolume","tCharacteristic","tLength",
-"tParametric","tElliptic","tPlane","tRuled","tTransfinite","tComplex","tPhysical",
-"tUsing","tBump","tProgression","tPlugin","tRotate","tTranslate","tSymmetry",
-"tDilate","tExtrude","tDuplicata","tLoop","tRecombine","tDelete","tCoherence",
-"tIntersect","tAttractor","tLayers","tScalarTetrahedron","tVectorTetrahedron",
-"tTensorTetrahedron","tScalarTriangle","tVectorTriangle","tTensorTriangle","tScalarLine",
-"tVectorLine","tTensorLine","tScalarPoint","tVectorPoint","tTensorPoint","tText2D",
-"tText3D","tBSpline","tBezier","tNurbs","tOrder","tWith","tBounds","tKnots",
-"tColor","tColorTable","tFor","tIn","tEndFor","tIf","tEndIf","tExit","tReturn",
-"tCall","tFunction","tMesh","tB_SPLINE_SURFACE_WITH_KNOTS","tB_SPLINE_CURVE_WITH_KNOTS",
-"tCARTESIAN_POINT","tTRUE","tFALSE","tUNSPECIFIED","tU","tV","tEDGE_CURVE","tVERTEX_POINT",
-"tORIENTED_EDGE","tPLANE","tFACE_OUTER_BOUND","tEDGE_LOOP","tADVANCED_FACE",
-"tVECTOR","tDIRECTION","tAXIS2_PLACEMENT_3D","tISO","tENDISO","tENDSEC","tDATA",
-"tHEADER","tFILE_DESCRIPTION","tFILE_SCHEMA","tFILE_NAME","tMANIFOLD_SOLID_BREP",
-"tCLOSED_SHELL","tADVANCED_BREP_SHAPE_REPRESENTATION","tFACE_BOUND","tCYLINDRICAL_SURFACE",
-"tCONICAL_SURFACE","tCIRCLE","tTRIMMED_CURVE","tGEOMETRIC_SET","tCOMPOSITE_CURVE_SEGMENT",
-"tCONTINUOUS","tCOMPOSITE_CURVE","tTOROIDAL_SURFACE","tPRODUCT_DEFINITION","tPRODUCT_DEFINITION_SHAPE",
-"tSHAPE_DEFINITION_REPRESENTATION","tELLIPSE","tTrimmed","tSolid","tEndSolid",
-"tVertex","tFacet","tNormal","tOuter","tLoopSTL","tEndLoop","tEndFacet","tAFFECTPLUS",
-"tAFFECTMINUS","tAFFECTTIMES","tAFFECTDIVIDE","'?'","tOR","tAND","tEQUAL","tNOTEQUAL",
-"tAPPROXEQUAL","'<'","tLESSOREQUAL","'>'","tGREATEROREQUAL","'+'","'-'","'*'",
-"'/'","'%'","tCROSSPRODUCT","'!'","tPLUSPLUS","tMINUSMINUS","UNARYPREC","'^'",
-"'('","')'","'['","']'","'.'","','","'{'","'}'","All","SignedDouble","STLFormatItem",
-"StepFormatItems","StepFormatItem","StepSpecial","StepHeaderItem","StepDataItem",
-"GeomFormatList","GeomFormat","Printf","View","Views","ScalarPointValues","ScalarPoint",
-"@1","VectorPointValues","VectorPoint","@2","TensorPointValues","TensorPoint",
-"@3","ScalarLineValues","ScalarLine","@4","VectorLineValues","VectorLine","@5",
-"TensorLineValues","TensorLine","@6","ScalarTriangleValues","ScalarTriangle",
-"@7","VectorTriangleValues","VectorTriangle","@8","TensorTriangleValues","TensorTriangle",
-"@9","ScalarTetrahedronValues","ScalarTetrahedron","@10","VectorTetrahedronValues",
-"VectorTetrahedron","@11","TensorTetrahedronValues","TensorTetrahedron","@12",
-"Text2DValues","Text2D","@13","Text3DValues","Text3D","@14","NumericAffectation",
-"NumericIncrement","Affectation","Shape","Transform","MultipleShape","ListOfShapes",
-"Duplicata","Delete","Colorify","Command","Loop","Extrude","@15","@16","@17",
-"@18","@19","@20","ExtrudeParameters","ExtrudeParameter","Transfini","Coherence",
-"BoolExpr","FExpr","FExpr_Single","VExpr","VExpr_Single","ListOfStrings","RecursiveListOfStrings",
-"ListOfListOfDouble","RecursiveListOfListOfDouble","ListOfDouble","FExpr_Multi",
-"RecursiveListOfDouble","ColorExpr","ListOfColor","RecursiveListOfColor","StringExpr", NULL
+#if (YYDEBUG) || defined YYERROR_VERBOSE
+
+/* YYTNAME[TOKEN_NUM] -- String name of the token TOKEN_NUM. */
+static const char *const yytname[] =
+{
+  "$", "error", "$undefined.", "tDOUBLE", "tSTRING", "tBIGSTR", "tEND", 
+  "tAFFECT", "tDOTS", "tPi", "tMPI_Rank", "tMPI_Size", "tExp", "tLog", 
+  "tLog10", "tSqrt", "tSin", "tAsin", "tCos", "tAcos", "tTan", "tRand", 
+  "tAtan", "tAtan2", "tSinh", "tCosh", "tTanh", "tFabs", "tFloor", 
+  "tCeil", "tFmod", "tModulo", "tHypot", "tPrintf", "tSprintf", "tStrCat", 
+  "tStrPrefix", "tDraw", "tPoint", "tCircle", "tEllipse", "tLine", 
+  "tSurface", "tSpline", "tVolume", "tCharacteristic", "tLength", 
+  "tParametric", "tElliptic", "tPlane", "tRuled", "tTransfinite", 
+  "tComplex", "tPhysical", "tUsing", "tBump", "tProgression", "tPlugin", 
+  "tRotate", "tTranslate", "tSymmetry", "tDilate", "tExtrude", 
+  "tDuplicata", "tLoop", "tRecombine", "tDelete", "tCoherence", 
+  "tIntersect", "tAttractor", "tLayers", "tScalarTetrahedron", 
+  "tVectorTetrahedron", "tTensorTetrahedron", "tScalarTriangle", 
+  "tVectorTriangle", "tTensorTriangle", "tScalarLine", "tVectorLine", 
+  "tTensorLine", "tScalarPoint", "tVectorPoint", "tTensorPoint", 
+  "tText2D", "tText3D", "tBSpline", "tBezier", "tNurbs", "tOrder", 
+  "tWith", "tBounds", "tKnots", "tColor", "tColorTable", "tFor", "tIn", 
+  "tEndFor", "tIf", "tEndIf", "tExit", "tReturn", "tCall", "tFunction", 
+  "tMesh", "tB_SPLINE_SURFACE_WITH_KNOTS", "tB_SPLINE_CURVE_WITH_KNOTS", 
+  "tCARTESIAN_POINT", "tTRUE", "tFALSE", "tUNSPECIFIED", "tU", "tV", 
+  "tEDGE_CURVE", "tVERTEX_POINT", "tORIENTED_EDGE", "tPLANE", 
+  "tFACE_OUTER_BOUND", "tEDGE_LOOP", "tADVANCED_FACE", "tVECTOR", 
+  "tDIRECTION", "tAXIS2_PLACEMENT_3D", "tISO", "tENDISO", "tENDSEC", 
+  "tDATA", "tHEADER", "tFILE_DESCRIPTION", "tFILE_SCHEMA", "tFILE_NAME", 
+  "tMANIFOLD_SOLID_BREP", "tCLOSED_SHELL", 
+  "tADVANCED_BREP_SHAPE_REPRESENTATION", "tFACE_BOUND", 
+  "tCYLINDRICAL_SURFACE", "tCONICAL_SURFACE", "tCIRCLE", "tTRIMMED_CURVE", 
+  "tGEOMETRIC_SET", "tCOMPOSITE_CURVE_SEGMENT", "tCONTINUOUS", 
+  "tCOMPOSITE_CURVE", "tTOROIDAL_SURFACE", "tPRODUCT_DEFINITION", 
+  "tPRODUCT_DEFINITION_SHAPE", "tSHAPE_DEFINITION_REPRESENTATION", 
+  "tELLIPSE", "tTrimmed", "tSolid", "tEndSolid", "tVertex", "tFacet", 
+  "tNormal", "tOuter", "tLoopSTL", "tEndLoop", "tEndFacet", "tAFFECTPLUS", 
+  "tAFFECTMINUS", "tAFFECTTIMES", "tAFFECTDIVIDE", "'?'", "tOR", "tAND", 
+  "tEQUAL", "tNOTEQUAL", "tAPPROXEQUAL", "'<'", "tLESSOREQUAL", "'>'", 
+  "tGREATEROREQUAL", "'+'", "'-'", "'*'", "'/'", "'%'", "tCROSSPRODUCT", 
+  "'!'", "tPLUSPLUS", "tMINUSMINUS", "UNARYPREC", "'^'", "'('", "')'", 
+  "'['", "']'", "'.'", "','", "'{'", "'}'", "All", "SignedDouble", 
+  "STLFormatItem", "StepFormatItems", "StepFormatItem", "StepSpecial", 
+  "StepHeaderItem", "StepDataItem", "GeomFormatList", "GeomFormat", 
+  "Printf", "View", "Views", "ScalarPointValues", "ScalarPoint", "@1", 
+  "VectorPointValues", "VectorPoint", "@2", "TensorPointValues", 
+  "TensorPoint", "@3", "ScalarLineValues", "ScalarLine", "@4", 
+  "VectorLineValues", "VectorLine", "@5", "TensorLineValues", 
+  "TensorLine", "@6", "ScalarTriangleValues", "ScalarTriangle", "@7", 
+  "VectorTriangleValues", "VectorTriangle", "@8", "TensorTriangleValues", 
+  "TensorTriangle", "@9", "ScalarTetrahedronValues", "ScalarTetrahedron", 
+  "@10", "VectorTetrahedronValues", "VectorTetrahedron", "@11", 
+  "TensorTetrahedronValues", "TensorTetrahedron", "@12", "Text2DValues", 
+  "Text2D", "@13", "Text3DValues", "Text3D", "@14", "NumericAffectation", 
+  "NumericIncrement", "Affectation", "Shape", "Transform", 
+  "MultipleShape", "ListOfShapes", "Duplicata", "Delete", "Colorify", 
+  "Command", "Loop", "Extrude", "@15", "@16", "@17", "@18", "@19", "@20", 
+  "ExtrudeParameters", "ExtrudeParameter", "Transfini", "Coherence", 
+  "BoolExpr", "FExpr", "FExpr_Single", "VExpr", "VExpr_Single", 
+  "ListOfStrings", "RecursiveListOfStrings", "ListOfListOfDouble", 
+  "RecursiveListOfListOfDouble", "ListOfDouble", "FExpr_Multi", 
+  "RecursiveListOfDouble", "ColorExpr", "ListOfColor", 
+  "RecursiveListOfColor", "StringExpr", 0
 };
 #endif
 
-static const short yyr1[] = {     0,
-   190,   190,   190,   190,   191,   191,   192,   192,   192,   193,
-   193,   194,   194,   194,   195,   195,   195,   195,   195,   196,
-   196,   196,   197,   197,   197,   197,   197,   197,   197,   197,
-   197,   197,   197,   197,   197,   197,   197,   197,   197,   197,
-   197,   197,   197,   197,   197,   197,   197,   197,   197,   197,
-   197,   197,   198,   198,   199,   199,   199,   199,   199,   199,
-   199,   199,   199,   199,   199,   199,   199,   200,   200,   201,
-   201,   202,   202,   202,   202,   202,   202,   202,   202,   202,
-   202,   202,   202,   202,   202,   202,   203,   203,   205,   204,
-   206,   206,   208,   207,   209,   209,   211,   210,   212,   212,
-   214,   213,   215,   215,   217,   216,   218,   218,   220,   219,
-   221,   221,   223,   222,   224,   224,   226,   225,   227,   227,
-   229,   228,   230,   230,   232,   231,   233,   233,   235,   234,
-   236,   236,   238,   237,   239,   239,   241,   240,   242,   242,
-   244,   243,   245,   245,   245,   245,   245,   246,   246,   247,
-   247,   247,   247,   247,   247,   247,   247,   247,   247,   247,
-   247,   247,   247,   247,   247,   247,   247,   248,   248,   248,
-   248,   248,   248,   248,   248,   248,   248,   248,   248,   248,
-   248,   248,   248,   248,   248,   248,   248,   248,   248,   248,
-   248,   248,   248,   249,   249,   249,   249,   250,   250,   250,
-   251,   251,   251,   251,   251,   252,   253,   253,   253,   254,
-   255,   255,   255,   255,   255,   256,   256,   256,   256,   256,
-   256,   256,   256,   256,   256,   257,   257,   257,   257,   257,
-   257,   258,   257,   259,   257,   260,   257,   257,   257,   257,
-   261,   257,   262,   257,   263,   257,   264,   264,   265,   265,
-   265,   266,   266,   266,   266,   266,   266,   266,   266,   267,
-   267,   268,   268,   268,   268,   268,   269,   269,   269,   269,
-   269,   269,   269,   269,   269,   269,   269,   269,   269,   269,
-   269,   269,   269,   269,   269,   269,   269,   269,   269,   269,
-   269,   269,   269,   269,   269,   269,   269,   269,   269,   269,
-   269,   269,   269,   269,   269,   269,   269,   269,   269,   269,
-   269,   269,   269,   269,   269,   269,   269,   269,   269,   269,
-   269,   269,   269,   269,   269,   269,   269,   269,   270,   270,
-   270,   270,   270,   270,   270,   270,   270,   270,   270,   270,
-   271,   271,   271,   271,   271,   272,   272,   272,   272,   273,
-   273,   274,   274,   275,   275,   275,   276,   276,   277,   277,
-   277,   277,   278,   278,   278,   278,   278,   278,   279,   279,
-   279,   279,   280,   280,   280,   280,   281,   281,   282,   282,
-   283,   283,   283,   283,   283,   283,   283
+/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
+static const short yyr1[] =
+{
+       0,   190,   190,   190,   190,   191,   191,   192,   192,   192,
+     193,   193,   194,   194,   194,   195,   195,   195,   195,   195,
+     196,   196,   196,   197,   197,   197,   197,   197,   197,   197,
+     197,   197,   197,   197,   197,   197,   197,   197,   197,   197,
+     197,   197,   197,   197,   197,   197,   197,   197,   197,   197,
+     197,   197,   197,   198,   198,   199,   199,   199,   199,   199,
+     199,   199,   199,   199,   199,   199,   199,   199,   200,   200,
+     201,   201,   202,   202,   202,   202,   202,   202,   202,   202,
+     202,   202,   202,   202,   202,   202,   202,   203,   203,   205,
+     204,   206,   206,   208,   207,   209,   209,   211,   210,   212,
+     212,   214,   213,   215,   215,   217,   216,   218,   218,   220,
+     219,   221,   221,   223,   222,   224,   224,   226,   225,   227,
+     227,   229,   228,   230,   230,   232,   231,   233,   233,   235,
+     234,   236,   236,   238,   237,   239,   239,   241,   240,   242,
+     242,   244,   243,   245,   245,   245,   245,   245,   246,   246,
+     247,   247,   247,   247,   247,   247,   247,   247,   247,   247,
+     247,   247,   247,   247,   247,   247,   247,   247,   248,   248,
+     248,   248,   248,   248,   248,   248,   248,   248,   248,   248,
+     248,   248,   248,   248,   248,   248,   248,   248,   248,   248,
+     248,   248,   248,   248,   249,   249,   249,   249,   250,   250,
+     250,   251,   251,   251,   251,   251,   252,   253,   253,   253,
+     254,   255,   255,   255,   255,   255,   256,   256,   256,   256,
+     256,   256,   256,   256,   256,   256,   257,   257,   257,   257,
+     257,   257,   258,   257,   259,   257,   260,   257,   257,   257,
+     257,   261,   257,   262,   257,   263,   257,   264,   264,   265,
+     265,   265,   266,   266,   266,   266,   266,   266,   266,   266,
+     267,   267,   268,   268,   268,   268,   268,   269,   269,   269,
+     269,   269,   269,   269,   269,   269,   269,   269,   269,   269,
+     269,   269,   269,   269,   269,   269,   269,   269,   269,   269,
+     269,   269,   269,   269,   269,   269,   269,   269,   269,   269,
+     269,   269,   269,   269,   269,   269,   269,   269,   269,   269,
+     269,   269,   269,   269,   269,   269,   269,   269,   269,   269,
+     269,   269,   269,   269,   269,   269,   269,   269,   269,   270,
+     270,   270,   270,   270,   270,   270,   270,   270,   270,   270,
+     270,   271,   271,   271,   271,   271,   272,   272,   272,   272,
+     273,   273,   274,   274,   275,   275,   275,   276,   276,   277,
+     277,   277,   277,   278,   278,   278,   278,   278,   278,   279,
+     279,   279,   279,   280,   280,   280,   280,   281,   281,   282,
+     282,   283,   283,   283,   283,   283,   283,   283
 };
 
-static const short yyr2[] = {     0,
-     1,     1,     1,     2,     1,     2,     1,    21,     1,     0,
-     2,     1,     1,     1,     2,     2,     2,     2,     2,     7,
-     5,    17,     9,    23,    31,    15,    11,    11,    15,     9,
-    13,     9,    11,    13,     9,     9,    11,     9,    11,     9,
-    11,    13,    13,    11,    13,    17,     9,    11,    11,    13,
-    11,     9,     0,     2,     1,     1,     1,     1,     1,     1,
-     1,     1,     1,     1,     1,     1,     1,     5,     7,     6,
-     8,     0,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     1,     3,     0,    13,
-     1,     3,     0,    13,     1,     3,     0,    13,     1,     3,
-     0,    19,     1,     3,     0,    19,     1,     3,     0,    19,
-     1,     3,     0,    25,     1,     3,     0,    25,     1,     3,
-     0,    25,     1,     3,     0,    31,     1,     3,     0,    31,
-     1,     3,     0,    31,     1,     3,     0,    13,     1,     3,
-     0,    15,     1,     1,     1,     1,     1,     1,     1,     4,
-     7,     9,     6,     3,     6,     6,     9,     6,     9,     5,
-     8,     8,    11,     6,     9,     9,     9,     7,     8,    12,
-     6,     7,     7,    12,     7,     7,     9,    17,     8,     8,
-     7,     7,    11,     8,    12,     8,    22,    20,     8,     8,
-     8,     7,     8,     5,    11,     5,     9,     1,     1,     1,
-     0,     2,     6,     6,     6,     4,     4,     6,     3,     5,
-     3,     3,     7,     2,     2,     6,     8,     8,    10,     1,
-     2,     1,     3,     4,     1,     8,    12,    14,     8,    12,
-    14,     0,    12,     0,    16,     0,    18,     8,    12,    14,
-     0,    12,     0,    16,     0,    18,     1,     2,     9,     7,
-     2,     6,     9,     9,     8,     8,     8,     6,     4,     2,
-     2,     1,     1,     1,     1,     1,     1,     3,     2,     2,
-     2,     3,     3,     3,     3,     3,     3,     3,     3,     3,
-     3,     3,     3,     3,     3,     5,     4,     4,     4,     4,
-     4,     4,     4,     4,     4,     4,     6,     4,     4,     4,
-     4,     4,     4,     6,     6,     6,     4,     4,     4,     4,
-     4,     4,     4,     4,     4,     4,     4,     6,     4,     4,
-     4,     4,     4,     4,     6,     6,     6,     4,     1,     1,
-     1,     1,     1,     4,     2,     5,     3,     6,     4,     7,
-     1,     2,     2,     3,     3,    11,     9,     7,     7,     0,
-     3,     1,     3,     0,     3,     3,     1,     3,     1,     1,
-     3,     4,     3,     5,     3,     4,     6,     7,     1,     1,
-     3,     3,     9,     7,     1,     5,     3,     6,     1,     3,
-     1,     6,     4,     4,     6,     6,     9
+/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
+static const short yyr2[] =
+{
+       0,     1,     1,     1,     2,     1,     2,     1,    21,     1,
+       0,     2,     1,     1,     1,     2,     2,     2,     2,     2,
+       7,     5,    17,     9,    23,    31,    15,    11,    11,    15,
+       9,    13,     9,    11,    13,     9,     9,    11,     9,    11,
+       9,    11,    13,    13,    11,    13,    17,     9,    11,    11,
+      13,    11,     9,     0,     2,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     5,     7,
+       6,     8,     0,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     1,     3,     0,
+      13,     1,     3,     0,    13,     1,     3,     0,    13,     1,
+       3,     0,    19,     1,     3,     0,    19,     1,     3,     0,
+      19,     1,     3,     0,    25,     1,     3,     0,    25,     1,
+       3,     0,    25,     1,     3,     0,    31,     1,     3,     0,
+      31,     1,     3,     0,    31,     1,     3,     0,    13,     1,
+       3,     0,    15,     1,     1,     1,     1,     1,     1,     1,
+       4,     7,     9,     6,     3,     6,     6,     9,     6,     9,
+       5,     8,     8,    11,     6,     9,     9,     9,     7,     8,
+      12,     6,     7,     7,    12,     7,     7,     9,    17,     8,
+       8,     7,     7,    11,     8,    12,     8,    22,    20,     8,
+       8,     8,     7,     8,     5,    11,     5,     9,     1,     1,
+       1,     0,     2,     6,     6,     6,     4,     4,     6,     3,
+       5,     3,     3,     7,     2,     2,     6,     8,     8,    10,
+       1,     2,     1,     3,     4,     1,     8,    12,    14,     8,
+      12,    14,     0,    12,     0,    16,     0,    18,     8,    12,
+      14,     0,    12,     0,    16,     0,    18,     1,     2,     9,
+       7,     2,     6,     9,     9,     8,     8,     8,     6,     4,
+       2,     2,     1,     1,     1,     1,     1,     1,     3,     2,
+       2,     2,     3,     3,     3,     3,     3,     3,     3,     3,
+       3,     3,     3,     3,     3,     3,     5,     4,     4,     4,
+       4,     4,     4,     4,     4,     4,     4,     6,     4,     4,
+       4,     4,     4,     4,     6,     6,     6,     4,     4,     4,
+       4,     4,     4,     4,     4,     4,     4,     4,     6,     4,
+       4,     4,     4,     4,     4,     6,     6,     6,     4,     1,
+       1,     1,     1,     1,     4,     2,     5,     3,     6,     4,
+       7,     1,     2,     2,     3,     3,    11,     9,     7,     7,
+       0,     3,     1,     3,     0,     3,     3,     1,     3,     1,
+       1,     3,     4,     3,     5,     3,     4,     6,     7,     1,
+       1,     3,     3,     9,     7,     1,     5,     3,     6,     1,
+       3,     1,     6,     4,     4,     6,     6,     9
 };
 
-static const short yydefact[] = {     0,
-     0,     7,     9,     0,     2,     1,     3,     4,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,    11,    12,
-    14,    13,     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,   220,     0,   225,
-     0,   222,     0,     0,     0,    54,    56,    55,    57,    58,
-    59,    60,    61,    62,    67,    66,    63,    64,    65,     5,
-     0,     0,     0,    15,    16,    18,    17,    19,   350,   350,
-     0,   329,   333,   381,   143,   330,   331,   332,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,   144,   145,   146,   147,     0,     0,     0,   148,
-   149,     0,     0,     0,     0,     0,     0,   267,     0,     0,
-   215,     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,   341,
-     0,     0,     0,     0,     0,   201,     0,     0,     0,   201,
-   260,   261,     0,     0,     0,     0,     0,     0,   375,     0,
-     0,     0,     0,     0,   214,     0,   221,     0,     6,     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,   335,     0,    72,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,   270,   269,   271,     0,     0,     0,
-     0,     0,     0,     0,     0,   154,   212,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,   211,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,   333,     0,     0,   359,     0,   360,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,   343,   342,     0,     0,     0,     0,   201,   201,
-     0,     0,     0,     0,     0,     0,     0,   209,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,   201,     0,
-     0,     0,   223,     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,   352,     0,     0,     0,     0,
-     0,   337,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,   381,     0,     0,
-     0,   268,     0,     0,   369,   370,     0,     0,   143,     0,
-     0,     0,     0,   150,     0,   285,   284,   282,   283,   278,
-   280,   279,   281,   273,   272,   274,   275,   276,   277,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-   333,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,   345,   344,   200,     0,   199,   198,     0,     0,     0,
-     0,     0,     0,     0,     0,   206,   202,   259,     0,     0,
-   207,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,   224,     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,   351,     0,     0,    21,
-     0,   334,   339,    72,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,    73,
-    74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
-    84,    85,    86,   287,   308,   288,   309,   289,   310,   290,
-   311,   291,   312,   292,   313,   293,   314,   294,   315,   295,
-   316,   307,   328,   296,   317,     0,     0,   298,   319,   299,
-   320,   300,   321,   301,   322,   302,   323,   303,   324,     0,
-     0,     0,     0,     0,     0,     0,     0,   384,     0,     0,
-   383,     0,     0,     0,     0,     0,     0,     0,     0,   160,
-     0,     0,     0,     0,     0,    68,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,   365,     0,     0,     0,   361,
-   363,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,   194,   196,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,   210,     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,   353,     0,   350,     0,   336,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,    70,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,   153,   371,   372,     0,
-     0,     0,     0,     0,   155,   156,   158,     0,     0,   379,
-     0,   164,   286,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,   366,     0,   362,     0,   171,     0,     0,
-     0,     0,   252,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,   258,   208,     0,     0,     0,     0,     0,   354,
-     0,   376,     0,     0,     0,   216,     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,   262,   263,   264,   265,   266,     0,     0,     0,     0,
-     0,     0,     0,    20,     0,   338,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,   297,   318,   304,   325,   305,   326,   306,   327,     0,
-   386,   385,   382,     0,   143,     0,     0,     0,     0,   151,
-     0,     0,     0,   377,    69,   168,   175,     0,   176,     0,
-   172,     0,   173,   192,     0,     0,   364,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-   213,     0,     0,     0,     0,   201,     0,     0,     0,   232,
-     0,   241,     0,     0,     0,     0,     0,   181,   182,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,   350,
-   340,    71,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-   161,     0,     0,   162,     0,   380,     0,   180,   190,   367,
-     0,     0,   256,   184,   186,     0,     0,   255,   257,   191,
-   169,   179,   189,   193,     0,     0,     0,   349,     0,   348,
-     0,     0,   226,     0,   229,     0,     0,   238,     0,   203,
-   204,   205,     0,     0,   354,     0,   357,     0,     0,     0,
-     0,   374,     0,   218,   217,     0,     0,     0,     0,     0,
-    23,     0,    32,     0,    36,     0,    30,     0,     0,    35,
-     0,    40,    38,     0,     0,     0,     0,     0,     0,    47,
-     0,     0,     0,     0,     0,    52,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,   152,   157,   159,     0,   165,     0,   177,
-   368,     0,   254,   253,   166,   167,   201,     0,   197,     0,
-     0,     0,     0,     0,     0,     0,     0,   356,     0,   355,
-     0,     0,     0,     0,     0,     0,     0,   354,     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,   387,     0,   378,     0,     0,     0,   347,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,   247,
-     0,     0,     0,     0,     0,     0,   358,     0,     0,   373,
-   219,     0,     0,    37,     0,     0,     0,     0,    27,     0,
-    33,     0,    39,    28,    41,     0,    44,     0,    48,    49,
-     0,     0,    51,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,   163,
-     0,   195,     0,     0,     0,     0,   234,     0,   251,     0,
-     0,   248,   243,     0,     0,     0,     0,     0,     0,   183,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,    89,    93,    97,   137,     0,     0,   346,
-   227,     0,   230,     0,     0,     0,   233,   239,     0,     0,
-   242,   170,   174,     0,     0,   185,     0,     0,     0,     0,
-     0,    31,    34,    42,     0,    43,    50,    45,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,   236,     0,     0,   245,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,   141,     0,   228,     0,   231,     0,     0,     0,
-   240,     0,     0,     0,     0,     0,     0,    26,    29,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,    87,     0,    91,     0,    95,     0,   135,     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,   235,     0,     0,   250,   244,     0,     0,     0,
-     0,     0,     0,    46,    22,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,    88,    90,    92,    94,    96,    98,
-   136,   138,     0,   139,   178,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,   101,
-   105,   109,     0,     0,   237,   249,   246,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,   140,   142,     0,     0,     8,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,   188,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,    99,     0,
-   103,     0,   107,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,   187,     0,
-    24,     0,     0,     0,     0,     0,     0,   100,   102,   104,
-   106,   108,   110,     0,     0,     0,     0,   113,   117,   121,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,   111,
-     0,   115,     0,   119,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,   112,   114,
-   116,   118,   120,   122,     0,   125,   129,   133,    25,     0,
-     0,     0,     0,     0,     0,     0,   123,     0,   127,     0,
-   131,     0,     0,     0,     0,     0,     0,   124,   126,   128,
-   130,   132,   134,     0,     0,     0
+/* YYDEFACT[S] -- default rule to reduce with in state S when YYTABLE
+   doesn't specify something else to do.  Zero means the default is an
+   error. */
+static const short yydefact[] =
+{
+       0,     0,     7,     9,     0,     2,     1,     3,     4,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    11,
+      12,    14,    13,     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,   220,     0,
+     225,     0,   222,     0,     0,     0,    54,    56,    55,    57,
+      58,    59,    60,    61,    62,    67,    66,    63,    64,    65,
+       5,     0,     0,     0,    15,    16,    18,    17,    19,   350,
+     350,     0,   329,   333,   381,   143,   330,   331,   332,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   144,   145,   146,   147,     0,     0,     0,
+     148,   149,     0,     0,     0,     0,     0,     0,   267,     0,
+       0,   215,     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,
+     341,     0,     0,     0,     0,     0,   201,     0,     0,     0,
+     201,   260,   261,     0,     0,     0,     0,     0,     0,   375,
+       0,     0,     0,     0,     0,   214,     0,   221,     0,     6,
+       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,   335,     0,    72,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   270,   269,   271,     0,     0,
+       0,     0,     0,     0,     0,     0,   154,   212,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   211,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   333,     0,     0,   359,     0,   360,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   343,   342,     0,     0,     0,     0,   201,
+     201,     0,     0,     0,     0,     0,     0,     0,   209,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   201,
+       0,     0,     0,   223,     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,   352,     0,     0,     0,
+       0,     0,   337,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   381,     0,
+       0,     0,   268,     0,     0,   369,   370,     0,     0,   143,
+       0,     0,     0,     0,   150,     0,   285,   284,   282,   283,
+     278,   280,   279,   281,   273,   272,   274,   275,   276,   277,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   333,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   345,   344,   200,     0,   199,   198,     0,     0,
+       0,     0,     0,     0,     0,     0,   206,   202,   259,     0,
+       0,   207,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   224,     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,   351,     0,     0,
+      21,     0,   334,   339,    72,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      73,    74,    75,    76,    77,    78,    79,    80,    81,    82,
+      83,    84,    85,    86,   287,   308,   288,   309,   289,   310,
+     290,   311,   291,   312,   292,   313,   293,   314,   294,   315,
+     295,   316,   307,   328,   296,   317,     0,     0,   298,   319,
+     299,   320,   300,   321,   301,   322,   302,   323,   303,   324,
+       0,     0,     0,     0,     0,     0,     0,     0,   384,     0,
+       0,   383,     0,     0,     0,     0,     0,     0,     0,     0,
+     160,     0,     0,     0,     0,     0,    68,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   365,     0,     0,     0,
+     361,   363,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   194,
+     196,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   210,
+       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,   353,     0,   350,     0,   336,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    70,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   153,   371,   372,
+       0,     0,     0,     0,     0,   155,   156,   158,     0,     0,
+     379,     0,   164,   286,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   366,     0,   362,     0,   171,     0,
+       0,     0,     0,   252,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   258,   208,     0,     0,     0,     0,     0,
+     354,     0,   376,     0,     0,     0,   216,     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,   262,   263,   264,   265,   266,     0,     0,     0,
+       0,     0,     0,     0,    20,     0,   338,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   297,   318,   304,   325,   305,   326,   306,   327,
+       0,   386,   385,   382,     0,   143,     0,     0,     0,     0,
+     151,     0,     0,     0,   377,    69,   168,   175,     0,   176,
+       0,   172,     0,   173,   192,     0,     0,   364,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   213,     0,     0,     0,     0,   201,     0,     0,     0,
+     232,     0,   241,     0,     0,     0,     0,     0,   181,   182,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     350,   340,    71,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   161,     0,     0,   162,     0,   380,     0,   180,   190,
+     367,     0,     0,   256,   184,   186,     0,     0,   255,   257,
+     191,   169,   179,   189,   193,     0,     0,     0,   349,     0,
+     348,     0,     0,   226,     0,   229,     0,     0,   238,     0,
+     203,   204,   205,     0,     0,   354,     0,   357,     0,     0,
+       0,     0,   374,     0,   218,   217,     0,     0,     0,     0,
+       0,    23,     0,    32,     0,    36,     0,    30,     0,     0,
+      35,     0,    40,    38,     0,     0,     0,     0,     0,     0,
+      47,     0,     0,     0,     0,     0,    52,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   152,   157,   159,     0,   165,     0,
+     177,   368,     0,   254,   253,   166,   167,   201,     0,   197,
+       0,     0,     0,     0,     0,     0,     0,     0,   356,     0,
+     355,     0,     0,     0,     0,     0,     0,     0,   354,     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,   387,     0,   378,     0,     0,     0,   347,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     247,     0,     0,     0,     0,     0,     0,   358,     0,     0,
+     373,   219,     0,     0,    37,     0,     0,     0,     0,    27,
+       0,    33,     0,    39,    28,    41,     0,    44,     0,    48,
+      49,     0,     0,    51,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     163,     0,   195,     0,     0,     0,     0,   234,     0,   251,
+       0,     0,   248,   243,     0,     0,     0,     0,     0,     0,
+     183,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    89,    93,    97,   137,     0,     0,
+     346,   227,     0,   230,     0,     0,     0,   233,   239,     0,
+       0,   242,   170,   174,     0,     0,   185,     0,     0,     0,
+       0,     0,    31,    34,    42,     0,    43,    50,    45,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   236,     0,     0,
+     245,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   141,     0,   228,     0,   231,     0,     0,
+       0,   240,     0,     0,     0,     0,     0,     0,    26,    29,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    87,     0,    91,     0,    95,     0,   135,     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,   235,     0,     0,   250,   244,     0,     0,
+       0,     0,     0,     0,    46,    22,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    88,    90,    92,    94,    96,
+      98,   136,   138,     0,   139,   178,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     101,   105,   109,     0,     0,   237,   249,   246,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   140,   142,     0,     0,     8,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   188,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    99,
+       0,   103,     0,   107,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   187,
+       0,    24,     0,     0,     0,     0,     0,     0,   100,   102,
+     104,   106,   108,   110,     0,     0,     0,     0,   113,   117,
+     121,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     111,     0,   115,     0,   119,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   112,
+     114,   116,   118,   120,   122,     0,   125,   129,   133,    25,
+       0,     0,     0,     0,     0,     0,     0,   123,     0,   127,
+       0,   131,     0,     0,     0,     0,     0,     0,   124,   126,
+     128,   130,   132,   134,     0,     0,     0
 };
 
-static const short yydefgoto[] = {  1704,
-    82,     5,     6,    19,    20,    21,    22,     7,    66,    67,
-    68,   414,  1451,   610,  1389,  1453,   611,  1390,  1455,   612,
-  1391,  1588,   613,  1559,  1590,   614,  1560,  1592,   615,  1561,
-  1649,   616,  1635,  1651,   617,  1636,  1653,   618,  1637,  1686,
-   619,  1680,  1688,   620,  1681,  1690,   621,  1682,  1457,   622,
-  1392,  1523,   623,  1459,   135,   237,    69,   537,   524,   525,
-   526,   527,    73,    74,    75,    76,    77,  1096,  1354,  1428,
-  1099,  1359,  1432,  1249,  1250,    78,    79,   907,   326,   138,
-   343,   170,   232,   407,  1003,  1106,  1107,   328,   467,   191,
-   684,   821,   139
+static const short yydefgoto[] =
+{
+    1704,    82,     5,     6,    19,    20,    21,    22,     7,    66,
+      67,    68,   414,  1451,   610,  1389,  1453,   611,  1390,  1455,
+     612,  1391,  1588,   613,  1559,  1590,   614,  1560,  1592,   615,
+    1561,  1649,   616,  1635,  1651,   617,  1636,  1653,   618,  1637,
+    1686,   619,  1680,  1688,   620,  1681,  1690,   621,  1682,  1457,
+     622,  1392,  1523,   623,  1459,   135,   237,    69,   537,   524,
+     525,   526,   527,    73,    74,    75,    76,    77,  1096,  1354,
+    1428,  1099,  1359,  1432,  1249,  1250,    78,    79,   907,   326,
+     138,   343,   170,   232,   407,  1003,  1106,  1107,   328,   467,
+     191,   684,   821,   139
 };
 
-static const short yypact[] = {  2156,
-   137,-32768,-32768,   -97,-32768,   480,  2336,-32768,    10,   108,
-   141,   148,   155,   193,   260,   204,   215,   224,-32768,-32768,
--32768,-32768,  1734,   258,   320,   261,   262,   269,   -43,   227,
-   275,   304,   448,   317,   461,   470,   477,   133,   488,   546,
-   372,   377,   -80,   -80,   383,   363,   391,   532,    14,   590,
-   593,    49,   440,   450,   -25,     2,    15,-32768,   454,-32768,
-   642,-32768,   656,   659,   631,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-   673,    10,  2359,-32768,-32768,-32768,-32768,-32768,   502,   502,
-   681,-32768,   -90,     3,-32768,-32768,-32768,-32768,  -128,   -60,
-   -55,   -18,    31,   116,   151,   266,   285,   294,   323,   351,
-   357,   360,   364,   382,   386,   398,   409,   413,   437,   508,
-   519,   527,-32768,-32768,-32768,-32768,  1944,  1944,  1944,-32768,
--32768,  1944,   346,    40,  1944,   700,   694,-32768,   711,   719,
--32768,  1944,  1944,  1944,   574,  1944,   594,  1944,  1944,  1116,
-  1944,   606,   624,   625,  1116,   621,   622,   629,   633,   635,
-   636,   637,   809,   -80,   -80,   -80,  1944,  1944,  -114,-32768,
-     1,   -80,   638,   639,   640,-32768,  1116,   641,   817,-32768,
--32768,-32768,  1116,  1116,  1944,  1944,   -51,  1944,   643,  1944,
-   645,   729,  1944,  1944,-32768,   828,-32768,   654,-32768,    10,
-   655,   657,   658,   660,   661,   662,   664,   665,   666,   667,
-   671,   678,   688,   689,   690,   691,   692,   695,   696,   697,
-   699,   701,   702,   703,   704,   707,   708,   709,   710,   712,
-   833,   713,   693,   715,  1944,   837,-32768,   -80,-32768,  1944,
-  1944,  1944,  1944,  1944,  1944,  1944,  1944,  1944,  1944,  1944,
-  1944,  1944,  1944,  1944,  1944,  1944,  1944,  1944,  1944,  1944,
-  1944,  1944,  1944,  1944,  1944,  1944,  1944,  1944,  1944,  1944,
-  1944,  1944,  1944,  1944,  1944,  1944,  1944,  1944,  1944,  1944,
-  1944,    47,    41,    41,   714,   714,   714,  5894,   875,  1976,
-  5244,   161,   717,   892,   744,-32768,-32768,  1944,  1944,  1944,
-  1944,  1944,  1944,  1944,  1944,  1944,  1944,  1944,  1944,  1944,
-  1944,  1944,-32768,   -76,  5917,  5940,  5963,  1944,  5986,  1944,
-  6009,  6032,   359,  1470,  1976,  1700,   903,-32768,  6055,  1944,
-  1944,  1944,   913,  1944,  1944,  1944,  1944,  1944,  1944,  1944,
-   738,     9,-32768,-32768,  2808,  2829,   -80,   -80,   567,   567,
-   156,  1944,  1944,  1944,   891,   254,  1944,-32768,  2223,   915,
-   917,  6078,  6101,   836,  1944,  6124,   835,  2850,-32768,   740,
-  1763,  6147,-32768,  1944,   784,   937,   940,   941,   942,   943,
-   947,   948,   949,   950,   951,   952,   953,   956,   957,   958,
-   959,   960,   961,   962,   963,   964,   965,   966,   832,   970,
-   974,   975,   976,   979,   978,-32768,   -49,   981,   983,   982,
-  5269,   144,   122,   -11,  6170,  5294,  6193,  5319,  6216,  5344,
-  6239,  5369,  6262,  5394,  6285,  5419,  6308,  5444,  6331,  5469,
-  6354,  5494,  6377,  5519,  6400,  5544,  2871,  2892,  6423,  5569,
-  6446,  5594,  6469,  5619,  6492,  5644,  6515,  5669,  6538,  5694,
-  2913,  2934,  2955,  2976,  2997,  3018,   214,-32768,     5,   797,
-   807,-32768,  1116,  2006,  1700,-32768,   286,   146,    41,  1944,
-   985,   988,     7,-32768,  1889,  1269,   524,   497,   497,   439,
-   439,   439,   439,    35,    35,   714,   714,   714,   714,   987,
-  1976,   989,   990,   992,  6561,   993,  6584,   994,   995,   404,
-   399,  1976,   442,  1944,  1944,   996,  2001,  6607,  6630,  1944,
-  2182,  2440,  6653,  6676,  6699,  6722,  6745,   808,   -80,  1944,
-  1944,-32768,-32768,-32768,   806,  2401,-32768,   815,  1944,  3039,
-  3060,  3081,  -139,   -42,   -32,-32768,-32768,-32768,  1944,  5719,
--32768,   820,   821,  1003,  1004,   831,  6768,  1007,   829,  1944,
-  2273,  1944,  1944,-32768,  6791,   863,   847,   848,   849,   850,
-   852,   853,   854,   855,   856,   857,   858,   859,   861,   880,
-   881,   883,   885,   886,   887,   888,   889,   894,   895,   896,
-   897,   899,   904,   921,   923,   926,-32768,  1013,   867,-32768,
-   927,   -27,-32768,-32768,   933,   934,   935,   936,   939,   969,
-   973,   977,   984,   986,   991,   998,   999,  1000,  1071,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,  1944,  1944,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,  1944,
-  1944,  1944,  1944,  1944,  1944,  1944,  1015,-32768,  1976,    41,
--32768,  1072,  1976,   938,    44,  1944,  1073,  1118,   890,-32768,
-  1115,   968,     2,  1150,  1944,-32768,    24,   -80,  1116,  1116,
-  1154,  1116,  1157,  1116,  1116,-32768,  1976,   716,   446,-32768,
-  1911,  1063,  1001,  1158,  1160,  1165,   388,  1167,  1168,  1177,
-  1180,  1181,  1183,  1185,  1191,   208,  3102,  3123,-32768,-32768,
-  2463,   -80,   -80,   -80,  1976,  1976,  1976,  1173,  1206,  1944,
-  1944,  1116,  1116,  1944,  1207,  1116,  1209,  3144,-32768,  1937,
-   610,  1213,  1066,  1219,  1944,  1944,   -80,  1226,  1236,  1067,
-  1238,  1239,  1116,  1116,  1240,   -80,  1243,  1246,  1116,  1116,
-  1247,  1248,  1250,  1251,  1252,  1116,   237,  1116,  1253,  1255,
-  1256,  1266,  1267,-32768,  1265,   502,  1268,-32768,  1021,  1944,
-  1944,  1944,  1944,  1944,  1944,  1944,  1944,  1944,  1944,  1944,
-  1944,  1944,  1944,-32768,  6814,  5744,  6837,  5769,  6860,  5794,
-  6883,  5819,  5844,  1090,    76,  1091,-32768,  1700,-32768,    26,
-   331,  1094,  1270,  1205,-32768,-32768,-32768,     2,  1944,-32768,
-   458,-32768,  2065,  1276,    22,    29,  1278,  1116,  1280,  1116,
-  1283,  1284,   462,-32768,  1976,-32768,  1944,-32768,  1944,  1116,
-  1116,  1116,-32768,   297,  1116,  1116,  1116,  1116,  1116,  1116,
-  1116,   609,  1944,  1944,  1944,  1088,   -92,   -86,   -73,   465,
-   468,   469,-32768,-32768,  3165,  3186,  1286,  1288,  6906,  -135,
-  1204,-32768,  1944,  1944,  1944,-32768,  1108,    10,  1112,  3207,
-  3228,   330,  1113,  1119,  1114,  1120,  1121,  1122,  1123,  1124,
-   343,  1134,  1126,  1139,  1136,  1137,  1140,  1141,  1142,  1143,
-  1148,-32768,-32768,-32768,-32768,-32768,  1145,  1146,  1162,  1163,
-  1164,  1169,  1166,-32768,  1170,   144,  1300,  3249,  3270,  3291,
-  3312,  3333,  3354,  3375,  3396,  3417,  3438,  3459,  3480,  3501,
-  3522,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,  1172,
--32768,-32768,-32768,  1116,    41,  1944,  1301,  1322,     7,-32768,
-  1349,  5869,     2,-32768,-32768,-32768,-32768,   -80,-32768,  1350,
--32768,  1353,-32768,-32768,  1175,   472,  2065,  3543,  1357,  1358,
-  1365,  1944,  1944,  1375,  1376,  1377,  1378,  1379,  1394,  1395,
--32768,  1769,  2486,  6929,  2345,   567,   -80,  1396,   -80,  1402,
-   -80,  1412,  1413,  1414,  1416,  1944,  1944,-32768,-32768,  1417,
-  1116,  1116,  1334,  1116,  2382,   291,  6952,  1944,    10,  1423,
-  1944,  1116,  1421,  1425,  1429,  1273,  1441,   237,  1443,  1458,
-  1944,  1457,  1462,  1460,  1461,  1465,   237,  1944,  1944,  1944,
-  1116,  1463,  1467,   237,  1944,  1468,  1469,  1471,  1944,   502,
--32768,-32768,  1944,  1944,  1944,  1944,  1944,  1944,  1944,  1944,
-  1944,  1944,  1944,  1944,  1944,  1944,  1472,  1497,  1498,  1242,
--32768,  1501,  1499,-32768,  1289,-32768,    34,-32768,-32768,-32768,
-  1293,  1944,-32768,-32768,-32768,  1356,  1424,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,  1549,  1503,  1344,-32768,  1944,-32768,
-  1321,   212,-32768,   216,-32768,  1345,   313,-32768,  1346,-32768,
--32768,-32768,  3564,  3585,  -135,   109,-32768,   492,  1347,  1434,
-  1944,-32768,  1944,-32768,-32768,  3606,    10,  1355,  3627,  1352,
--32768,  1369,-32768,  1370,-32768,  1359,-32768,  1371,  6975,-32768,
-  1372,-32768,-32768,  1360,  1361,  6998,  3648,  7021,  1373,-32768,
-  1362,  1380,  3669,  1374,  1381,-32768,  3690,  1382,  3711,  3732,
-  3753,  3774,  3795,  3816,  3837,  3858,  3879,  3900,  3921,  3942,
-  3963,  3984,  1383,-32768,-32768,-32768,     2,-32768,  1447,-32768,
--32768,  4005,-32768,-32768,-32768,-32768,   567,  2411,-32768,  1671,
-  1671,    48,  1671,    48,  1944,  1944,  1445,-32768,  1116,-32768,
-  1116,  1944,  2509,  2532,  1116,  1415,  1556,  -135,   237,  1564,
-  1944,  1562,   237,  1565,  1567,  1566,  1575,  1577,  1944,  1584,
-  1116,  1594,  1595,  1944,  1570,  1601,  1944,  1604,  1944,  1944,
-  1944,  1944,  1944,  1944,  1944,  1944,  1944,  1944,  1944,  1944,
-  1944,  1944,-32768,  1605,-32768,  1608,  1426,  1944,-32768,  1671,
-  1671,  1944,  2555,   321,  2578,   324,  1616,  1422,   -41,-32768,
-  2601,   353,   -40,  2624,  2647,  1435,-32768,  1427,  1658,-32768,
--32768,  1436,    10,-32768,  1437,  1439,  1440,  4026,-32768,  1446,
--32768,  1448,-32768,-32768,-32768,  7044,-32768,  1450,-32768,-32768,
-  7067,  1449,-32768,  7090,  1452,  4047,  4068,  4089,  4110,  4131,
-  4152,  4173,  4194,  4215,  7113,  7136,  7159,  7182,  4236,-32768,
-  1456,-32768,  2670,  1968,  1624,  1944,  1638,  1944,-32768,  1116,
-  1639,-32768,  1640,  1944,  1642,  1643,  1644,  1116,  1116,-32768,
-  1645,    10,   237,   237,   237,   237,  1647,  1648,  1649,   237,
-  1650,  1651,  1653,  1660,  1944,  1944,  1944,  1944,  1944,  1944,
-  1944,  1944,  1944,-32768,-32768,-32768,-32768,  1944,  1661,-32768,
--32768,  2693,-32768,  1475,  2716,  1480,-32768,-32768,  1482,  2739,
--32768,-32768,-32768,  1481,  1483,-32768,    10,  1489,  1490,  1495,
-  1496,-32768,-32768,-32768,  1517,-32768,-32768,-32768,  1518,  4257,
-  4278,  4299,  4320,  4341,  4362,  4383,  4404,  4425,  1519,  1521,
-  1527,  1537,  7205,  1539,  1722,    48,  1723,  1116,    48,  1725,
-  1116,  1618,  1582,   237,   237,  1727,  1728,   237,  1735,  1944,
-  1944,  1944,  1944,  1944,  1944,  1944,  1944,  1944,  1944,  1944,
-  1944,    41,-32768,  1737,-32768,   -39,-32768,  1579,   493,   -31,
--32768,  1587,  1588,  1614,    10,  1589,  1619,-32768,-32768,  1625,
-  1626,  4446,  4467,  4488,  4509,  4530,  4551,  4572,  4593,  4614,
-   496,  2065,   523,  2065,   526,  2065,   529,-32768,  1622,  1623,
-  1801,    48,  1116,  1805,  1807,    48,  1726,  1944,    10,   237,
-  1116,  1810,  1811,  1944,  1944,  1944,  1944,  1944,  1944,  1944,
-  1944,  1944,  1944,  1818,  1944,  1828,  1944,  1829,    41,  1830,
-    41,  1831,-32768,   -29,  1652,-32768,-32768,   -20,  1656,  4635,
-    10,  1659,  1662,-32768,-32768,  4656,  4677,  4698,  4719,  4740,
-  4761,  7228,  7251,  7274,  2065,-32768,  2065,-32768,  2065,-32768,
--32768,-32768,   562,-32768,-32768,  1832,  1834,  1839,  1944,  1944,
-  1692,   237,  1116,  1944,  1944,  1944,  1944,  1944,  1944,-32768,
--32768,-32768,    41,  1844,-32768,-32768,-32768,  4782,  2762,  1695,
-  1665,  1667,  4803,  4824,  4845,  4866,  4887,  4908,  1668,  1669,
-  1670,-32768,-32768,  1944,  1849,-32768,  1116,   237,  1944,  1944,
-  1944,  1944,  1944,  1944,  1944,  1944,  1944,  2785,-32768,  1673,
-  1683,  4929,  4950,  4971,  4992,  5013,  5034,   565,  2065,   566,
-  2065,   600,  2065,  1870,  1116,  1871,  1944,  1944,  1944,  1944,
-  1944,  1944,  1944,  1872,  1944,  1873,  1944,  1876,-32768,  1696,
--32768,  5055,  5076,  5097,  7297,  7320,  7343,  2065,-32768,  2065,
--32768,  2065,-32768,  1116,  1944,  1944,  1944,-32768,-32768,-32768,
-  1697,  5118,  5139,  5160,  1698,  1699,  1701,  1116,  1944,  1944,
-  1944,  1944,  1944,  1944,  1703,  5181,  5202,  5223,   601,  2065,
-   608,  2065,   611,  2065,   237,  1944,  1944,  1944,  1944,  1879,
-  1944,  1890,  1944,  1892,  1712,  7366,  7389,  7412,  2065,-32768,
-  2065,-32768,  2065,-32768,  1893,-32768,-32768,-32768,-32768,  1713,
-  1714,  1715,  1944,  1944,  1944,   612,  2065,   615,  2065,   616,
-  2065,  1944,  1894,  1944,  1898,  1944,  1901,  2065,-32768,  2065,
--32768,  2065,-32768,  1908,  1909,-32768
+static const short yypact[] =
+{
+    2156,   137,-32768,-32768,   -97,-32768,   480,  2336,-32768,    10,
+     108,   141,   148,   155,   193,   260,   204,   215,   224,-32768,
+  -32768,-32768,-32768,  1734,   258,   320,   261,   262,   269,   -43,
+     227,   275,   304,   448,   317,   461,   470,   477,   133,   488,
+     546,   372,   377,   -80,   -80,   383,   363,   391,   532,    14,
+     590,   593,    49,   440,   450,   -25,     2,    15,-32768,   454,
+  -32768,   642,-32768,   656,   659,   631,-32768,-32768,-32768,-32768,
+  -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+  -32768,   673,    10,  2359,-32768,-32768,-32768,-32768,-32768,   502,
+     502,   681,-32768,   -90,     3,-32768,-32768,-32768,-32768,  -128,
+     -60,   -55,   -18,    31,   116,   151,   266,   285,   294,   323,
+     351,   357,   360,   364,   382,   386,   398,   409,   413,   437,
+     508,   519,   527,-32768,-32768,-32768,-32768,  1944,  1944,  1944,
+  -32768,-32768,  1944,   346,    40,  1944,   700,   694,-32768,   711,
+     719,-32768,  1944,  1944,  1944,   574,  1944,   594,  1944,  1944,
+    1116,  1944,   606,   624,   625,  1116,   621,   622,   629,   633,
+     635,   636,   637,   809,   -80,   -80,   -80,  1944,  1944,  -114,
+  -32768,     1,   -80,   638,   639,   640,-32768,  1116,   641,   817,
+  -32768,-32768,-32768,  1116,  1116,  1944,  1944,   -51,  1944,   643,
+    1944,   645,   729,  1944,  1944,-32768,   828,-32768,   654,-32768,
+      10,   655,   657,   658,   660,   661,   662,   664,   665,   666,
+     667,   671,   678,   688,   689,   690,   691,   692,   695,   696,
+     697,   699,   701,   702,   703,   704,   707,   708,   709,   710,
+     712,   833,   713,   693,   715,  1944,   837,-32768,   -80,-32768,
+    1944,  1944,  1944,  1944,  1944,  1944,  1944,  1944,  1944,  1944,
+    1944,  1944,  1944,  1944,  1944,  1944,  1944,  1944,  1944,  1944,
+    1944,  1944,  1944,  1944,  1944,  1944,  1944,  1944,  1944,  1944,
+    1944,  1944,  1944,  1944,  1944,  1944,  1944,  1944,  1944,  1944,
+    1944,  1944,    47,    41,    41,   714,   714,   714,  5894,   875,
+    1976,  5244,   161,   717,   892,   744,-32768,-32768,  1944,  1944,
+    1944,  1944,  1944,  1944,  1944,  1944,  1944,  1944,  1944,  1944,
+    1944,  1944,  1944,-32768,   -76,  5917,  5940,  5963,  1944,  5986,
+    1944,  6009,  6032,   359,  1470,  1976,  1700,   903,-32768,  6055,
+    1944,  1944,  1944,   913,  1944,  1944,  1944,  1944,  1944,  1944,
+    1944,   738,     9,-32768,-32768,  2808,  2829,   -80,   -80,   567,
+     567,   156,  1944,  1944,  1944,   891,   254,  1944,-32768,  2223,
+     915,   917,  6078,  6101,   836,  1944,  6124,   835,  2850,-32768,
+     740,  1763,  6147,-32768,  1944,   784,   937,   940,   941,   942,
+     943,   947,   948,   949,   950,   951,   952,   953,   956,   957,
+     958,   959,   960,   961,   962,   963,   964,   965,   966,   832,
+     970,   974,   975,   976,   979,   978,-32768,   -49,   981,   983,
+     982,  5269,   144,   122,   -11,  6170,  5294,  6193,  5319,  6216,
+    5344,  6239,  5369,  6262,  5394,  6285,  5419,  6308,  5444,  6331,
+    5469,  6354,  5494,  6377,  5519,  6400,  5544,  2871,  2892,  6423,
+    5569,  6446,  5594,  6469,  5619,  6492,  5644,  6515,  5669,  6538,
+    5694,  2913,  2934,  2955,  2976,  2997,  3018,   214,-32768,     5,
+     797,   807,-32768,  1116,  2006,  1700,-32768,   286,   146,    41,
+    1944,   985,   988,     7,-32768,  1889,  1269,   524,   497,   497,
+     439,   439,   439,   439,    35,    35,   714,   714,   714,   714,
+     987,  1976,   989,   990,   992,  6561,   993,  6584,   994,   995,
+     404,   399,  1976,   442,  1944,  1944,   996,  2001,  6607,  6630,
+    1944,  2182,  2440,  6653,  6676,  6699,  6722,  6745,   808,   -80,
+    1944,  1944,-32768,-32768,-32768,   806,  2401,-32768,   815,  1944,
+    3039,  3060,  3081,  -139,   -42,   -32,-32768,-32768,-32768,  1944,
+    5719,-32768,   820,   821,  1003,  1004,   831,  6768,  1007,   829,
+    1944,  2273,  1944,  1944,-32768,  6791,   863,   847,   848,   849,
+     850,   852,   853,   854,   855,   856,   857,   858,   859,   861,
+     880,   881,   883,   885,   886,   887,   888,   889,   894,   895,
+     896,   897,   899,   904,   921,   923,   926,-32768,  1013,   867,
+  -32768,   927,   -27,-32768,-32768,   933,   934,   935,   936,   939,
+     969,   973,   977,   984,   986,   991,   998,   999,  1000,  1071,
+  -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+  -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+  -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+  -32768,-32768,-32768,-32768,-32768,-32768,  1944,  1944,-32768,-32768,
+  -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+    1944,  1944,  1944,  1944,  1944,  1944,  1944,  1015,-32768,  1976,
+      41,-32768,  1072,  1976,   938,    44,  1944,  1073,  1118,   890,
+  -32768,  1115,   968,     2,  1150,  1944,-32768,    24,   -80,  1116,
+    1116,  1154,  1116,  1157,  1116,  1116,-32768,  1976,   716,   446,
+  -32768,  1911,  1063,  1001,  1158,  1160,  1165,   388,  1167,  1168,
+    1177,  1180,  1181,  1183,  1185,  1191,   208,  3102,  3123,-32768,
+  -32768,  2463,   -80,   -80,   -80,  1976,  1976,  1976,  1173,  1206,
+    1944,  1944,  1116,  1116,  1944,  1207,  1116,  1209,  3144,-32768,
+    1937,   610,  1213,  1066,  1219,  1944,  1944,   -80,  1226,  1236,
+    1067,  1238,  1239,  1116,  1116,  1240,   -80,  1243,  1246,  1116,
+    1116,  1247,  1248,  1250,  1251,  1252,  1116,   237,  1116,  1253,
+    1255,  1256,  1266,  1267,-32768,  1265,   502,  1268,-32768,  1021,
+    1944,  1944,  1944,  1944,  1944,  1944,  1944,  1944,  1944,  1944,
+    1944,  1944,  1944,  1944,-32768,  6814,  5744,  6837,  5769,  6860,
+    5794,  6883,  5819,  5844,  1090,    76,  1091,-32768,  1700,-32768,
+      26,   331,  1094,  1270,  1205,-32768,-32768,-32768,     2,  1944,
+  -32768,   458,-32768,  2065,  1276,    22,    29,  1278,  1116,  1280,
+    1116,  1283,  1284,   462,-32768,  1976,-32768,  1944,-32768,  1944,
+    1116,  1116,  1116,-32768,   297,  1116,  1116,  1116,  1116,  1116,
+    1116,  1116,   609,  1944,  1944,  1944,  1088,   -92,   -86,   -73,
+     465,   468,   469,-32768,-32768,  3165,  3186,  1286,  1288,  6906,
+    -135,  1204,-32768,  1944,  1944,  1944,-32768,  1108,    10,  1112,
+    3207,  3228,   330,  1113,  1119,  1114,  1120,  1121,  1122,  1123,
+    1124,   343,  1134,  1126,  1139,  1136,  1137,  1140,  1141,  1142,
+    1143,  1148,-32768,-32768,-32768,-32768,-32768,  1145,  1146,  1162,
+    1163,  1164,  1169,  1166,-32768,  1170,   144,  1300,  3249,  3270,
+    3291,  3312,  3333,  3354,  3375,  3396,  3417,  3438,  3459,  3480,
+    3501,  3522,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+    1172,-32768,-32768,-32768,  1116,    41,  1944,  1301,  1322,     7,
+  -32768,  1349,  5869,     2,-32768,-32768,-32768,-32768,   -80,-32768,
+    1350,-32768,  1353,-32768,-32768,  1175,   472,  2065,  3543,  1357,
+    1358,  1365,  1944,  1944,  1375,  1376,  1377,  1378,  1379,  1394,
+    1395,-32768,  1769,  2486,  6929,  2345,   567,   -80,  1396,   -80,
+    1402,   -80,  1412,  1413,  1414,  1416,  1944,  1944,-32768,-32768,
+    1417,  1116,  1116,  1334,  1116,  2382,   291,  6952,  1944,    10,
+    1423,  1944,  1116,  1421,  1425,  1429,  1273,  1441,   237,  1443,
+    1458,  1944,  1457,  1462,  1460,  1461,  1465,   237,  1944,  1944,
+    1944,  1116,  1463,  1467,   237,  1944,  1468,  1469,  1471,  1944,
+     502,-32768,-32768,  1944,  1944,  1944,  1944,  1944,  1944,  1944,
+    1944,  1944,  1944,  1944,  1944,  1944,  1944,  1472,  1497,  1498,
+    1242,-32768,  1501,  1499,-32768,  1289,-32768,    34,-32768,-32768,
+  -32768,  1293,  1944,-32768,-32768,-32768,  1356,  1424,-32768,-32768,
+  -32768,-32768,-32768,-32768,-32768,  1549,  1503,  1344,-32768,  1944,
+  -32768,  1321,   212,-32768,   216,-32768,  1345,   313,-32768,  1346,
+  -32768,-32768,-32768,  3564,  3585,  -135,   109,-32768,   492,  1347,
+    1434,  1944,-32768,  1944,-32768,-32768,  3606,    10,  1355,  3627,
+    1352,-32768,  1369,-32768,  1370,-32768,  1359,-32768,  1371,  6975,
+  -32768,  1372,-32768,-32768,  1360,  1361,  6998,  3648,  7021,  1373,
+  -32768,  1362,  1380,  3669,  1374,  1381,-32768,  3690,  1382,  3711,
+    3732,  3753,  3774,  3795,  3816,  3837,  3858,  3879,  3900,  3921,
+    3942,  3963,  3984,  1383,-32768,-32768,-32768,     2,-32768,  1447,
+  -32768,-32768,  4005,-32768,-32768,-32768,-32768,   567,  2411,-32768,
+    1671,  1671,    48,  1671,    48,  1944,  1944,  1445,-32768,  1116,
+  -32768,  1116,  1944,  2509,  2532,  1116,  1415,  1556,  -135,   237,
+    1564,  1944,  1562,   237,  1565,  1567,  1566,  1575,  1577,  1944,
+    1584,  1116,  1594,  1595,  1944,  1570,  1601,  1944,  1604,  1944,
+    1944,  1944,  1944,  1944,  1944,  1944,  1944,  1944,  1944,  1944,
+    1944,  1944,  1944,-32768,  1605,-32768,  1608,  1426,  1944,-32768,
+    1671,  1671,  1944,  2555,   321,  2578,   324,  1616,  1422,   -41,
+  -32768,  2601,   353,   -40,  2624,  2647,  1435,-32768,  1427,  1658,
+  -32768,-32768,  1436,    10,-32768,  1437,  1439,  1440,  4026,-32768,
+    1446,-32768,  1448,-32768,-32768,-32768,  7044,-32768,  1450,-32768,
+  -32768,  7067,  1449,-32768,  7090,  1452,  4047,  4068,  4089,  4110,
+    4131,  4152,  4173,  4194,  4215,  7113,  7136,  7159,  7182,  4236,
+  -32768,  1456,-32768,  2670,  1968,  1624,  1944,  1638,  1944,-32768,
+    1116,  1639,-32768,  1640,  1944,  1642,  1643,  1644,  1116,  1116,
+  -32768,  1645,    10,   237,   237,   237,   237,  1647,  1648,  1649,
+     237,  1650,  1651,  1653,  1660,  1944,  1944,  1944,  1944,  1944,
+    1944,  1944,  1944,  1944,-32768,-32768,-32768,-32768,  1944,  1661,
+  -32768,-32768,  2693,-32768,  1475,  2716,  1480,-32768,-32768,  1482,
+    2739,-32768,-32768,-32768,  1481,  1483,-32768,    10,  1489,  1490,
+    1495,  1496,-32768,-32768,-32768,  1517,-32768,-32768,-32768,  1518,
+    4257,  4278,  4299,  4320,  4341,  4362,  4383,  4404,  4425,  1519,
+    1521,  1527,  1537,  7205,  1539,  1722,    48,  1723,  1116,    48,
+    1725,  1116,  1618,  1582,   237,   237,  1727,  1728,   237,  1735,
+    1944,  1944,  1944,  1944,  1944,  1944,  1944,  1944,  1944,  1944,
+    1944,  1944,    41,-32768,  1737,-32768,   -39,-32768,  1579,   493,
+     -31,-32768,  1587,  1588,  1614,    10,  1589,  1619,-32768,-32768,
+    1625,  1626,  4446,  4467,  4488,  4509,  4530,  4551,  4572,  4593,
+    4614,   496,  2065,   523,  2065,   526,  2065,   529,-32768,  1622,
+    1623,  1801,    48,  1116,  1805,  1807,    48,  1726,  1944,    10,
+     237,  1116,  1810,  1811,  1944,  1944,  1944,  1944,  1944,  1944,
+    1944,  1944,  1944,  1944,  1818,  1944,  1828,  1944,  1829,    41,
+    1830,    41,  1831,-32768,   -29,  1652,-32768,-32768,   -20,  1656,
+    4635,    10,  1659,  1662,-32768,-32768,  4656,  4677,  4698,  4719,
+    4740,  4761,  7228,  7251,  7274,  2065,-32768,  2065,-32768,  2065,
+  -32768,-32768,-32768,   562,-32768,-32768,  1832,  1834,  1839,  1944,
+    1944,  1692,   237,  1116,  1944,  1944,  1944,  1944,  1944,  1944,
+  -32768,-32768,-32768,    41,  1844,-32768,-32768,-32768,  4782,  2762,
+    1695,  1665,  1667,  4803,  4824,  4845,  4866,  4887,  4908,  1668,
+    1669,  1670,-32768,-32768,  1944,  1849,-32768,  1116,   237,  1944,
+    1944,  1944,  1944,  1944,  1944,  1944,  1944,  1944,  2785,-32768,
+    1673,  1683,  4929,  4950,  4971,  4992,  5013,  5034,   565,  2065,
+     566,  2065,   600,  2065,  1870,  1116,  1871,  1944,  1944,  1944,
+    1944,  1944,  1944,  1944,  1872,  1944,  1873,  1944,  1876,-32768,
+    1696,-32768,  5055,  5076,  5097,  7297,  7320,  7343,  2065,-32768,
+    2065,-32768,  2065,-32768,  1116,  1944,  1944,  1944,-32768,-32768,
+  -32768,  1697,  5118,  5139,  5160,  1698,  1699,  1701,  1116,  1944,
+    1944,  1944,  1944,  1944,  1944,  1703,  5181,  5202,  5223,   601,
+    2065,   608,  2065,   611,  2065,   237,  1944,  1944,  1944,  1944,
+    1879,  1944,  1890,  1944,  1892,  1712,  7366,  7389,  7412,  2065,
+  -32768,  2065,-32768,  2065,-32768,  1893,-32768,-32768,-32768,-32768,
+    1713,  1714,  1715,  1944,  1944,  1944,   612,  2065,   615,  2065,
+     616,  2065,  1944,  1894,  1944,  1898,  1944,  1901,  2065,-32768,
+    2065,-32768,  2065,-32768,  1908,  1909,-32768
 };
 
-static const short yypgoto[] = {-32768,
-   -70,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,  1316,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,  -289,   -19,-32768,  1907,  1910,  -342,
-  -171,  1914,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768, -1125, -1226,-32768,-32768,  -934,   -23,-32768,
-    98,-32768,   -89,-32768, -1063,   920,   417,  -288,  -315,  -663,
-   980,-32768,  -268
+static const short yypgoto[] =
+{
+  -32768,   -70,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+  -32768,-32768,  1316,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+  -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+  -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+  -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+  -32768,-32768,-32768,-32768,-32768,  -289,   -19,-32768,  1907,  1910,
+    -342,  -171,  1914,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+  -32768,-32768,-32768,-32768, -1125, -1226,-32768,-32768,  -934,   -23,
+  -32768,    98,-32768,   -89,-32768, -1063,   920,   417,  -288,  -315,
+    -663,   980,-32768,  -268
 };
 
 
 #define	YYLAST		7595
 
 
-static const short yytable[] = {   137,
-   233,   466,   470,   136,   355,   189,   238,   528,   359,   503,
-   682,   200,    80,   459,   460,   461,   187,   178,   192,   820,
-   145,   145,  1312,  1247,  1247,  1247,  1312,   956,  1248,  1248,
-  1248,   147,    95,  1247,   957,  1247,   466,   364,  1248,  1170,
-  1248,  1187,   142,   292,  1247,   458,  1001,   811,   725,  1248,
-   457,   458,  1002,   240,     9,   241,   347,   348,  1253,   595,
-   596,   597,   598,   599,   600,   601,   602,   603,   604,   605,
-   606,   607,   608,   349,   120,   121,   122,   958,   347,   348,
-   120,   121,   122,  1126,   347,   348,   183,   130,   131,   184,
-   165,   166,  1135,   235,   987,   236,   988,   347,   348,  1142,
-   989,   167,   990,   285,   286,   287,   490,   168,   288,   291,
-   491,   295,  1247,   991,    83,   992,   179,  1248,   315,   316,
-   317,   242,   319,   243,   321,   322,   244,   329,   245,   375,
-   365,   293,   294,   587,  1265,   812,   813,   588,   146,   146,
-   169,   171,     8,   345,   346,   726,    84,  1311,  1315,  1461,
-   130,   131,    95,    85,   951,   727,   188,  1465,   777,  1526,
-    86,   362,   363,   246,   366,   247,   368,   469,  1528,   371,
-   372,   347,   348,   155,   156,   687,   157,   609,   676,   347,
-   348,    81,   123,   124,   125,   126,   699,   668,   350,   190,
-   239,   669,   347,   348,   683,   519,   193,   551,    87,  1312,
-   678,   180,   466,  1312,   347,   348,   824,   309,   310,   311,
-   673,   411,   248,   466,   249,   312,   415,   416,   417,   418,
-   419,   420,   421,   422,   423,   424,   425,   426,   427,   428,
-   429,   430,   431,   432,   433,   434,   435,   436,   437,   438,
-   439,   440,   441,   442,   443,   444,   445,   446,   447,   448,
-   449,   450,   451,   452,   453,   454,   455,   456,   942,   538,
-   539,   342,   673,   344,  1266,    88,   465,  1312,  1270,   351,
-  1426,  1312,   471,  1430,   475,   476,   477,   478,   479,   480,
-   481,   482,   483,   484,   485,   486,   487,   488,   489,  1066,
-   147,  1188,   347,   348,   495,  1189,   497,   250,  1113,   251,
-   286,   465,   123,   124,   125,   126,   507,   508,   509,   594,
-   511,   512,   513,   514,   515,   516,   517,   123,   124,   125,
-   126,   130,   131,   130,   131,   141,   347,   348,   530,   531,
-   532,   675,   252,   540,   253,   413,  1494,   945,   130,   131,
-  1498,   547,   529,   902,   903,   904,   905,   906,    92,    93,
-   555,   972,   973,   805,    96,    97,    98,    99,   100,   101,
-   102,   103,   104,   105,   106,   107,   108,   109,   110,   111,
-   112,   113,   114,   115,   116,   117,   118,   119,   347,   348,
-   466,   833,   347,   348,   809,    89,   347,   348,  1368,  1369,
-  1370,  1371,   593,   843,   853,  1375,    90,   666,  1180,   667,
-   173,   806,  1181,   174,   175,    91,    92,    93,   466,   860,
-   861,   862,    96,    97,    98,    99,   100,   101,   102,   103,
-   104,   105,   106,   107,   108,   109,   110,   111,   112,   113,
-   114,   115,   116,   117,   118,   119,   466,   466,   466,   140,
-   286,   844,   142,   143,   522,   523,   679,   254,   677,   255,
-   144,   298,   299,   300,   301,   302,   148,   303,   304,   305,
-   306,   307,   308,   309,   310,   311,   256,   465,   257,  1436,
-  1437,   312,   673,  1440,   674,   258,   411,   259,   465,  1114,
-   701,   702,    10,   347,   348,   149,   707,   123,   124,   125,
-   126,   347,   348,   150,   347,   348,   717,   718,   151,  1183,
-   347,   348,   152,  1234,   260,   721,   261,  1306,   130,   131,
-  1308,   153,  1013,   347,   348,   728,   127,   128,   154,   966,
-   944,   946,   129,   347,   348,  1022,   738,   132,   740,   741,
-   289,   158,   262,   290,   263,  1502,   130,   131,   264,  1314,
-   265,   266,   500,   267,   236,   268,   466,   269,   298,   299,
-   300,   301,   302,   163,   303,   304,   305,   306,   307,   308,
-   309,   310,   311,   270,   164,   271,   327,   272,   312,   273,
-   172,   333,   778,   177,   127,   128,   130,   131,   176,   274,
-   129,   275,   698,   159,   236,   132,   160,   161,   696,   162,
-   276,   697,   277,   356,   278,   181,   279,  1551,   182,   360,
-   361,    11,    12,    13,    14,    15,    16,    17,    18,   307,
-   308,   309,   310,   311,   981,   982,   716,   875,   280,   312,
-   281,   185,   795,   796,    42,    43,    44,    45,   673,    47,
-   700,   186,   673,  1581,   836,   194,   797,   798,   799,   800,
-   801,   802,   803,  1091,   953,   465,   954,   195,   673,   808,
-   965,   673,   814,   993,   673,   673,   994,   995,   673,   196,
-  1071,   823,   197,   303,   304,   305,   306,   307,   308,   309,
-   310,   311,   198,   465,   411,   199,  1059,   312,  1189,  1463,
-  1190,  1464,  1483,   231,  1484,   234,   915,   301,   302,   282,
-   303,   304,   305,   306,   307,   308,   309,   310,   311,   297,
-   283,   465,   465,   465,   312,   296,   865,   866,   284,  1485,
-   869,  1486,  1487,  1086,  1488,  1489,   313,  1490,    92,    93,
-  1665,   880,   881,   314,    96,    97,    98,    99,   100,   101,
-   102,   103,   104,   105,   106,   107,   108,   109,   110,   111,
-   112,   113,   114,   115,   116,   117,   118,   119,  1543,   474,
-  1544,  1603,  1605,  1604,  1606,   318,   918,   919,   920,   921,
-   922,   923,   924,   925,   926,   927,   928,   929,   930,   931,
-   298,   299,   300,   301,   302,   320,   303,   304,   305,   306,
-   307,   308,   309,   310,   311,   825,  1607,  1659,  1608,  1660,
-   312,   947,   876,   330,  1661,   952,  1662,  1663,  1692,  1664,
-  1693,  1694,  1696,  1695,  1697,   331,   332,  1009,   334,   335,
-   336,   465,   341,   967,   337,   968,   338,   339,   340,   857,
-   858,   859,   358,   370,   357,   352,   353,   354,   367,   983,
-   984,   985,   369,   373,  1237,   374,   376,   406,   377,   378,
-   412,   379,   380,   381,   882,   382,   383,   384,   385,  1005,
-  1006,  1007,   386,   891,   298,   299,   300,   301,   302,   387,
-   303,   304,   305,   306,   307,   308,   309,   310,   311,   388,
-   389,   390,   391,   392,   312,   409,   393,   394,   395,   672,
-   396,   463,   397,   398,   399,   400,   127,   128,   401,   402,
-   403,   404,   129,   405,   312,   817,  1041,   132,   473,   408,
-   834,   410,   472,   835,   298,   299,   300,   301,   302,   505,
-   303,   304,   305,   306,   307,   308,   309,   310,   311,   510,
-   518,   542,  1060,   543,   312,   546,   549,   552,   533,    27,
-    28,   534,   535,    31,    32,    33,   556,    34,  1117,    36,
-    37,   557,    39,    40,   558,   559,   560,   561,  1076,  1077,
-  1148,   562,   563,   564,   565,   566,   567,   568,  1085,    52,
-   569,   570,   571,   572,   573,   574,   575,   576,   577,   578,
-   579,   580,  1103,  1104,   581,    53,    54,    55,   582,   583,
-   584,   585,   586,   670,  1116,   589,   591,  1119,   590,   671,
-   680,   681,   686,   715,   719,   688,   689,  1129,   690,   692,
-   694,   695,   703,   720,  1136,  1137,  1138,   730,   731,   732,
-   733,  1143,   734,   736,   737,  1147,   743,   774,   804,  1149,
-  1150,  1151,  1152,  1153,  1154,  1155,  1156,  1157,  1158,  1159,
-  1160,  1161,  1162,   744,   745,   746,   747,    65,   748,   749,
-   750,   751,   752,   753,   754,   755,  1196,   756,  1172,   775,
-   298,   299,   300,   301,   302,  1067,   303,   304,   305,   306,
-   307,   308,   309,   310,   311,  1178,   757,   758,   838,   759,
-   312,   760,   761,   762,   763,   764,   794,   807,   815,   536,
-   765,   766,   767,   768,  1092,   769,  1094,  1193,  1097,  1194,
-   770,   595,   596,   597,   598,   599,   600,   601,   602,   603,
-   604,   605,   606,   607,   608,   826,   827,   771,   829,   772,
-   831,   832,   773,   776,   780,   781,   782,   783,    92,   323,
-   784,   818,   810,   816,    96,    97,    98,    99,   100,   101,
-   102,   103,   104,   105,   106,   107,   108,   109,   110,   111,
-   112,   113,   114,   115,   116,   117,   118,   119,   867,   868,
-   785,   819,   871,  1458,   786,   822,  1243,  1245,   787,  1251,
-   828,  1254,  1255,   830,   840,   788,   841,   789,  1259,   888,
-   889,   842,   790,   845,   846,   894,   895,  1268,   863,   791,
-   792,   793,   901,   847,   908,  1276,   848,   849,   839,   850,
-  1281,   851,  1322,  1284,   852,  1286,  1287,  1288,  1289,  1290,
-  1291,  1292,  1293,  1294,  1295,  1296,  1297,  1298,  1299,   917,
-   950,   864,   872,   870,  1303,   878,   285,   286,  1304,   877,
-  1521,   879,  1524,   298,   299,   300,   301,   302,   883,   303,
-   304,   305,   306,   307,   308,   309,   310,   311,   884,   885,
-   886,   887,   890,   312,   960,   892,   962,  1166,   893,   896,
-   897,  1367,   898,   899,   900,   909,   969,   970,   971,   910,
-   911,   974,   975,   976,   977,   978,   979,   980,   912,   913,
-   914,   916,   941,   943,  1562,   986,   949,  1244,  1246,   948,
-  1252,   955,  1352,   959,  1355,   961,   127,   324,   963,   964,
-  1360,   998,   129,   999,  1004,  1008,  1403,   132,  1010,  1014,
-  1016,  1015,  1017,   325,  1019,  1042,  1061,  1018,  1024,  1020,
-  1021,  1380,  1381,  1382,  1383,  1384,  1385,  1386,  1387,  1388,
-  1023,  1025,  1026,  1027,  1393,  1062,  1028,  1029,  1030,  1031,
-  1032,  1033,  1034,   298,   299,   300,   301,   302,   344,   303,
-   304,   305,   306,   307,   308,   309,   310,   311,  1035,  1036,
-  1037,  1038,  1039,   312,  1064,  1068,  1040,  1057,  1069,  1070,
-  1058,  1173,  1073,  1074,  1469,   298,   299,   300,   301,   302,
-  1075,   303,   304,   305,   306,   307,   308,   309,   310,   311,
-  1078,  1079,  1080,  1081,  1082,   312,  1442,  1443,  1444,  1445,
-  1446,  1447,  1448,  1449,  1450,  1452,  1454,  1456,  1501,  1083,
-  1084,  1093,   298,   299,   300,   301,   302,  1095,   303,   304,
-   305,   306,   307,   308,   309,   310,   311,  1098,  1100,  1101,
-  1110,  1102,   312,  1105,  1109,  1118,  1121,  1122,  1120,  1174,
-  1531,   300,   301,   302,  1123,   303,   304,   305,   306,   307,
-   308,   309,   310,   311,  1500,  1124,  1125,  1139,  1127,   312,
-  1506,  1507,  1508,  1509,  1510,  1511,  1512,  1513,  1514,  1515,
-  1128,  1517,  1130,  1519,  1131,  1132,  1133,  1134,  1140,  1141,
-  1144,  1145,    92,   501,  1169,  1163,  1146,  1171,    96,    97,
-    98,    99,   100,   101,   102,   103,   104,   105,   106,   107,
-   108,   109,   110,   111,   112,   113,   114,   115,   116,   117,
-   118,   119,  1164,  1165,  1168,  1548,  1549,  1167,  1176,  1179,
-  1553,  1554,  1555,  1556,  1557,  1558,   298,   299,   300,   301,
-   302,  1192,   303,   304,   305,   306,   307,   308,   309,   310,
-   311,  1177,  1182,  1184,  1191,  1256,   312,  1197,  1199,  1235,
-  1578,  1202,  1206,  1207,  1212,  1582,  1583,  1584,  1585,  1586,
-  1587,  1589,  1591,  1593,  1175,  1200,  1201,  1203,  1205,  1211,
-  1215,  1264,  1213,  1216,  1263,  1233,  1267,  1269,  1218,  1272,
-  1271,  1273,  1282,  1612,  1613,  1614,  1615,  1616,  1617,  1618,
-  1274,  1620,  1275,  1622,   298,   299,   300,   301,   302,  1277,
-   303,   304,   305,   306,   307,   308,   309,   310,   311,  1279,
-  1280,  1632,  1633,  1634,   312,  1257,  1283,  1258,  1285,  1310,
-  1300,  1262,  1301,  1319,  1302,  1646,  1647,  1648,  1650,  1652,
-  1654,  1309,  1318,  1323,  1321,  1324,  1325,  1278,  1327,  1351,
-  1328,  1332,  1666,  1667,  1668,  1669,  1330,  1671,  1334,  1673,
-   127,   128,  1349,  1353,  1357,  1358,   129,  1361,  1362,  1363,
-  1366,   132,  1372,  1373,  1374,  1376,  1377,   502,  1378,  1687,
-  1689,  1691,  1396,  1320,  1379,  1394,  1398,  1401,  1698,  1399,
-  1700,  1402,  1702,    92,    93,  1404,  1405,  1406,  1407,    96,
-    97,    98,    99,   100,   101,   102,   103,   104,   105,   106,
-   107,   108,   109,   110,   111,   112,   113,   114,   115,   116,
-   117,   118,   119,  1408,  1409,  1434,  1419,   504,  1420,   298,
-   299,   300,   301,   302,  1421,   303,   304,   305,   306,   307,
-   308,   309,   310,   311,  1422,  1424,  1356,  1425,  1427,   312,
-  1431,  1435,  1438,  1439,  1364,  1365,    92,    93,    94,  1441,
-    95,  1460,    96,    97,    98,    99,   100,   101,   102,   103,
-   104,   105,   106,   107,   108,   109,   110,   111,   112,   113,
-   114,   115,   116,   117,   118,   119,  1462,   120,   121,   122,
-   553,    92,    93,   458,  1466,  1470,  1467,    96,    97,    98,
-    99,   100,   101,   102,   103,   104,   105,   106,   107,   108,
-   109,   110,   111,   112,   113,   114,   115,   116,   117,   118,
-   119,  1468,   120,   121,   122,  1471,  1493,  1472,  1473,  1491,
-  1496,  1492,  1497,  1499,  1429,  1504,  1505,  1433,   298,   299,
-   300,   301,   302,  1516,   303,   304,   305,   306,   307,   308,
-   309,   310,   311,  1518,  1520,  1522,  1525,  1545,   312,  1546,
-  1527,  1240,  1241,  1529,  1547,  1532,  1550,   129,  1533,  1563,
-  1566,  1567,  1242,  1568,  1579,  1575,  1576,  1577,   168,  1595,
-   298,   299,   300,   301,   302,  1596,   303,   304,   305,   306,
-   307,   308,   309,   310,   311,  1609,  1611,  1619,  1621,  1495,
-   312,  1623,  1624,  1638,  1670,  1642,  1643,  1503,  1644,  1655,
-   123,   124,   125,   126,  1675,  1672,   685,  1674,  1679,  1699,
-  1683,  1684,  1685,  1701,   127,   128,  1703,  1705,  1706,   779,
-   129,   130,   131,    70,     0,   132,    71,   133,   837,   134,
-    72,  1108,     0,   298,   299,   300,   301,   302,  1063,   303,
-   304,   305,   306,   307,   308,   309,   310,   311,     0,   127,
-   128,     0,     0,   312,   874,   129,    92,    93,     0,  1552,
-   132,     0,    96,    97,    98,    99,   100,   101,   102,   103,
-   104,   105,   106,   107,   108,   109,   110,   111,   112,   113,
-   114,   115,   116,   117,   118,   119,     0,     0,    92,   323,
-     0,     0,     0,  1580,    96,    97,    98,    99,   100,   101,
-   102,   103,   104,   105,   106,   107,   108,   109,   110,   111,
-   112,   113,   114,   115,   116,   117,   118,   119,    92,   501,
-     0,  1610,     0,     0,    96,    97,    98,    99,   100,   101,
-   102,   103,   104,   105,   106,   107,   108,   109,   110,   111,
-   112,   113,   114,   115,   116,   117,   118,   119,     0,     0,
-  1631,     0,     0,     0,     0,     0,     0,     0,     0,   298,
-   299,   300,   301,   302,  1645,   303,   304,   305,   306,   307,
-   308,   309,   310,   311,     0,     0,     0,     0,     0,   312,
-     0,   298,   299,   300,   301,   302,     0,   303,   304,   305,
-   306,   307,   308,   309,   310,   311,     0,     0,     0,     0,
-     0,   312,     0,     0,     0,     0,     0,   298,   299,   300,
-   301,   302,     0,   303,   304,   305,   306,   307,   308,   309,
-   310,   311,     0,     0,   127,   128,     0,   312,     0,     0,
-   129,     0,     0,     0,     0,   132,     0,     0,   298,   299,
-   300,   301,   302,     0,   303,   304,   305,   306,   307,   308,
-   309,   310,   311,     0,     0,     0,   127,   464,   312,     0,
-   462,     0,   129,     0,   520,   -10,     1,   132,   -10,   -53,
-     0,   298,   299,   300,   301,   302,     0,   303,   304,   305,
-   306,   307,   308,   309,   310,   311,   127,   128,     0,     0,
-     0,   312,   129,     0,     0,     0,     0,   132,   -53,   704,
-     0,     0,   -53,   -53,   -53,   -53,   -53,   -53,   -53,   -53,
-   -53,     0,   -53,   -53,   -53,   -53,   -53,   -53,   -53,     0,
-     0,     0,   -53,   -53,   -53,   -53,   -53,   -53,   -53,     0,
-   -53,   -53,   -53,   -53,   -53,   298,   299,   300,   301,   302,
-     0,   303,   304,   305,   306,   307,   308,   309,   310,   311,
-   -53,   -53,   -53,     0,     0,   312,     0,   -53,     0,   -53,
-     0,   -53,   -53,   -53,   -53,   -53,   -53,   -53,     0,     0,
-   533,    27,    28,   534,   535,    31,    32,    33,     0,    34,
-     0,    36,    37,     0,    39,    40,     0,   -10,   -10,   -10,
-   -10,   -10,   -10,   -10,   -10,     0,     0,     0,     0,     0,
-     0,    52,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,   -53,     2,     3,     0,     4,    53,    54,    55,
-   533,    27,    28,   534,   535,    31,    32,    33,     0,    34,
-     0,    36,    37,     0,    39,    40,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,    23,
-     0,    52,   298,   299,   300,   301,   302,     0,   303,   304,
-   305,   306,   307,   308,   309,   310,   311,    53,    54,    55,
-     0,     0,   312,     0,     0,     0,     0,     0,    24,    65,
-   708,     0,    25,    26,    27,    28,    29,    30,    31,    32,
-    33,     0,    34,    35,    36,    37,    38,    39,    40,     0,
-     0,     0,    41,    42,    43,    44,    45,    46,    47,   201,
-    48,    49,    50,    51,    52,     0,     0,     0,     0,     0,
-     0,   541,     0,     0,     0,     0,     0,     0,     0,    65,
-    53,    54,    55,     0,     0,     0,     0,    56,     0,    57,
-     0,    58,    59,    60,    61,    62,    63,    64,   533,    27,
-    28,   534,   535,    31,    32,    33,     0,    34,     0,    36,
-    37,     0,    39,    40,     0,     0,     0,     0,     0,     0,
-     0,   739,   202,   203,   204,     0,     0,     0,     0,    52,
-   205,   206,   207,   208,   209,   210,   211,   212,   213,   214,
-     0,     0,    65,     0,     0,    53,    54,    55,   215,   216,
-   217,   218,   219,   220,   221,   222,   223,   224,     0,   225,
-   226,   227,   228,   229,   230,   298,   299,   300,   301,   302,
-     0,   303,   304,   305,   306,   307,   308,   309,   310,   311,
-     0,     0,     0,     0,     0,   312,     0,     0,     0,     0,
-     0,  1089,     0,  1090,     0,     0,     0,     0,     0,     0,
-     0,     0,   298,   299,   300,   301,   302,    65,   303,   304,
-   305,   306,   307,   308,   309,   310,   311,     0,     0,     0,
-     0,     0,   312,     0,     0,     0,     0,     0,  1111,     0,
-  1112,   298,   299,   300,   301,   302,     0,   303,   304,   305,
-   306,   307,   308,   309,   310,   311,     0,     0,     0,     0,
-     0,   312,     0,     0,     0,     0,     0,  1238,     0,  1239,
-   298,   299,   300,   301,   302,     0,   303,   304,   305,   306,
-   307,   308,   309,   310,   311,     0,     0,     0,     0,     0,
-   312,     0,     0,   298,   299,   300,   301,   302,   709,   303,
-   304,   305,   306,   307,   308,   309,   310,   311,     0,     0,
-     0,     0,     0,   312,     0,     0,   298,   299,   300,   301,
-   302,   856,   303,   304,   305,   306,   307,   308,   309,   310,
-   311,     0,     0,     0,     0,     0,   312,     0,     0,   298,
-   299,   300,   301,   302,  1087,   303,   304,   305,   306,   307,
-   308,   309,   310,   311,     0,     0,     0,     0,     0,   312,
-     0,     0,   298,   299,   300,   301,   302,  1260,   303,   304,
-   305,   306,   307,   308,   309,   310,   311,     0,     0,     0,
-     0,     0,   312,     0,     0,   298,   299,   300,   301,   302,
-  1261,   303,   304,   305,   306,   307,   308,   309,   310,   311,
-     0,     0,     0,     0,     0,   312,     0,     0,   298,   299,
-   300,   301,   302,  1305,   303,   304,   305,   306,   307,   308,
-   309,   310,   311,     0,     0,     0,     0,     0,   312,     0,
-     0,   298,   299,   300,   301,   302,  1307,   303,   304,   305,
-   306,   307,   308,   309,   310,   311,     0,     0,     0,     0,
-     0,   312,     0,     0,   298,   299,   300,   301,   302,  1313,
-   303,   304,   305,   306,   307,   308,   309,   310,   311,     0,
-     0,     0,     0,     0,   312,     0,     0,   298,   299,   300,
-   301,   302,  1316,   303,   304,   305,   306,   307,   308,   309,
-   310,   311,     0,     0,     0,     0,     0,   312,     0,     0,
-   298,   299,   300,   301,   302,  1317,   303,   304,   305,   306,
-   307,   308,   309,   310,   311,     0,     0,     0,     0,     0,
-   312,     0,     0,   298,   299,   300,   301,   302,  1350,   303,
-   304,   305,   306,   307,   308,   309,   310,   311,     0,     0,
-     0,     0,     0,   312,     0,     0,   298,   299,   300,   301,
-   302,  1395,   303,   304,   305,   306,   307,   308,   309,   310,
-   311,     0,     0,     0,     0,     0,   312,     0,     0,   298,
-   299,   300,   301,   302,  1397,   303,   304,   305,   306,   307,
-   308,   309,   310,   311,     0,     0,     0,     0,     0,   312,
-     0,     0,   298,   299,   300,   301,   302,  1400,   303,   304,
-   305,   306,   307,   308,   309,   310,   311,     0,     0,     0,
-     0,     0,   312,     0,     0,   298,   299,   300,   301,   302,
-  1565,   303,   304,   305,   306,   307,   308,   309,   310,   311,
-     0,     0,     0,     0,     0,   312,     0,     0,   298,   299,
-   300,   301,   302,  1594,   303,   304,   305,   306,   307,   308,
-   309,   310,   311,     0,     0,     0,     0,     0,   312,   298,
-   299,   300,   301,   302,   520,   303,   304,   305,   306,   307,
-   308,   309,   310,   311,     0,     0,     0,     0,     0,   312,
-   298,   299,   300,   301,   302,   521,   303,   304,   305,   306,
-   307,   308,   309,   310,   311,     0,     0,     0,     0,     0,
-   312,   298,   299,   300,   301,   302,   550,   303,   304,   305,
-   306,   307,   308,   309,   310,   311,     0,     0,     0,     0,
-     0,   312,   298,   299,   300,   301,   302,   646,   303,   304,
-   305,   306,   307,   308,   309,   310,   311,     0,     0,     0,
-     0,     0,   312,   298,   299,   300,   301,   302,   647,   303,
-   304,   305,   306,   307,   308,   309,   310,   311,     0,     0,
-     0,     0,     0,   312,   298,   299,   300,   301,   302,   660,
-   303,   304,   305,   306,   307,   308,   309,   310,   311,     0,
-     0,     0,     0,     0,   312,   298,   299,   300,   301,   302,
-   661,   303,   304,   305,   306,   307,   308,   309,   310,   311,
-     0,     0,     0,     0,     0,   312,   298,   299,   300,   301,
-   302,   662,   303,   304,   305,   306,   307,   308,   309,   310,
-   311,     0,     0,     0,     0,     0,   312,   298,   299,   300,
-   301,   302,   663,   303,   304,   305,   306,   307,   308,   309,
-   310,   311,     0,     0,     0,     0,     0,   312,   298,   299,
-   300,   301,   302,   664,   303,   304,   305,   306,   307,   308,
-   309,   310,   311,     0,     0,     0,     0,     0,   312,   298,
-   299,   300,   301,   302,   665,   303,   304,   305,   306,   307,
-   308,   309,   310,   311,     0,     0,     0,     0,     0,   312,
-   298,   299,   300,   301,   302,   722,   303,   304,   305,   306,
-   307,   308,   309,   310,   311,     0,     0,     0,     0,     0,
-   312,   298,   299,   300,   301,   302,   723,   303,   304,   305,
-   306,   307,   308,   309,   310,   311,     0,     0,     0,     0,
-     0,   312,   298,   299,   300,   301,   302,   724,   303,   304,
-   305,   306,   307,   308,   309,   310,   311,     0,     0,     0,
-     0,     0,   312,   298,   299,   300,   301,   302,   854,   303,
-   304,   305,   306,   307,   308,   309,   310,   311,     0,     0,
-     0,     0,     0,   312,   298,   299,   300,   301,   302,   855,
-   303,   304,   305,   306,   307,   308,   309,   310,   311,     0,
-     0,     0,     0,     0,   312,   298,   299,   300,   301,   302,
-   873,   303,   304,   305,   306,   307,   308,   309,   310,   311,
-     0,     0,     0,     0,     0,   312,   298,   299,   300,   301,
-   302,   996,   303,   304,   305,   306,   307,   308,   309,   310,
-   311,     0,     0,     0,     0,     0,   312,   298,   299,   300,
-   301,   302,   997,   303,   304,   305,   306,   307,   308,   309,
-   310,   311,     0,     0,     0,     0,     0,   312,   298,   299,
-   300,   301,   302,  1011,   303,   304,   305,   306,   307,   308,
-   309,   310,   311,     0,     0,     0,     0,     0,   312,   298,
-   299,   300,   301,   302,  1012,   303,   304,   305,   306,   307,
-   308,   309,   310,   311,     0,     0,     0,     0,     0,   312,
-   298,   299,   300,   301,   302,  1043,   303,   304,   305,   306,
-   307,   308,   309,   310,   311,     0,     0,     0,     0,     0,
-   312,   298,   299,   300,   301,   302,  1044,   303,   304,   305,
-   306,   307,   308,   309,   310,   311,     0,     0,     0,     0,
-     0,   312,   298,   299,   300,   301,   302,  1045,   303,   304,
-   305,   306,   307,   308,   309,   310,   311,     0,     0,     0,
-     0,     0,   312,   298,   299,   300,   301,   302,  1046,   303,
-   304,   305,   306,   307,   308,   309,   310,   311,     0,     0,
-     0,     0,     0,   312,   298,   299,   300,   301,   302,  1047,
-   303,   304,   305,   306,   307,   308,   309,   310,   311,     0,
-     0,     0,     0,     0,   312,   298,   299,   300,   301,   302,
-  1048,   303,   304,   305,   306,   307,   308,   309,   310,   311,
-     0,     0,     0,     0,     0,   312,   298,   299,   300,   301,
-   302,  1049,   303,   304,   305,   306,   307,   308,   309,   310,
-   311,     0,     0,     0,     0,     0,   312,   298,   299,   300,
-   301,   302,  1050,   303,   304,   305,   306,   307,   308,   309,
-   310,   311,     0,     0,     0,     0,     0,   312,   298,   299,
-   300,   301,   302,  1051,   303,   304,   305,   306,   307,   308,
-   309,   310,   311,     0,     0,     0,     0,     0,   312,   298,
-   299,   300,   301,   302,  1052,   303,   304,   305,   306,   307,
-   308,   309,   310,   311,     0,     0,     0,     0,     0,   312,
-   298,   299,   300,   301,   302,  1053,   303,   304,   305,   306,
-   307,   308,   309,   310,   311,     0,     0,     0,     0,     0,
-   312,   298,   299,   300,   301,   302,  1054,   303,   304,   305,
-   306,   307,   308,   309,   310,   311,     0,     0,     0,     0,
-     0,   312,   298,   299,   300,   301,   302,  1055,   303,   304,
-   305,   306,   307,   308,   309,   310,   311,     0,     0,     0,
-     0,     0,   312,   298,   299,   300,   301,   302,  1056,   303,
-   304,   305,   306,   307,   308,   309,   310,   311,     0,     0,
-     0,     0,     0,   312,   298,   299,   300,   301,   302,  1072,
-   303,   304,   305,   306,   307,   308,   309,   310,   311,     0,
-     0,     0,     0,     0,   312,   298,   299,   300,   301,   302,
-  1185,   303,   304,   305,   306,   307,   308,   309,   310,   311,
-     0,     0,     0,     0,     0,   312,   298,   299,   300,   301,
-   302,  1186,   303,   304,   305,   306,   307,   308,   309,   310,
-   311,     0,     0,     0,     0,     0,   312,   298,   299,   300,
-   301,   302,  1195,   303,   304,   305,   306,   307,   308,   309,
-   310,   311,     0,     0,     0,     0,     0,   312,   298,   299,
-   300,   301,   302,  1198,   303,   304,   305,   306,   307,   308,
-   309,   310,   311,     0,     0,     0,     0,     0,   312,   298,
-   299,   300,   301,   302,  1209,   303,   304,   305,   306,   307,
-   308,   309,   310,   311,     0,     0,     0,     0,     0,   312,
-   298,   299,   300,   301,   302,  1214,   303,   304,   305,   306,
-   307,   308,   309,   310,   311,     0,     0,     0,     0,     0,
-   312,   298,   299,   300,   301,   302,  1217,   303,   304,   305,
-   306,   307,   308,   309,   310,   311,     0,     0,     0,     0,
-     0,   312,   298,   299,   300,   301,   302,  1219,   303,   304,
-   305,   306,   307,   308,   309,   310,   311,     0,     0,     0,
-     0,     0,   312,   298,   299,   300,   301,   302,  1220,   303,
-   304,   305,   306,   307,   308,   309,   310,   311,     0,     0,
-     0,     0,     0,   312,   298,   299,   300,   301,   302,  1221,
-   303,   304,   305,   306,   307,   308,   309,   310,   311,     0,
-     0,     0,     0,     0,   312,   298,   299,   300,   301,   302,
-  1222,   303,   304,   305,   306,   307,   308,   309,   310,   311,
-     0,     0,     0,     0,     0,   312,   298,   299,   300,   301,
-   302,  1223,   303,   304,   305,   306,   307,   308,   309,   310,
-   311,     0,     0,     0,     0,     0,   312,   298,   299,   300,
-   301,   302,  1224,   303,   304,   305,   306,   307,   308,   309,
-   310,   311,     0,     0,     0,     0,     0,   312,   298,   299,
-   300,   301,   302,  1225,   303,   304,   305,   306,   307,   308,
-   309,   310,   311,     0,     0,     0,     0,     0,   312,   298,
-   299,   300,   301,   302,  1226,   303,   304,   305,   306,   307,
-   308,   309,   310,   311,     0,     0,     0,     0,     0,   312,
-   298,   299,   300,   301,   302,  1227,   303,   304,   305,   306,
-   307,   308,   309,   310,   311,     0,     0,     0,     0,     0,
-   312,   298,   299,   300,   301,   302,  1228,   303,   304,   305,
-   306,   307,   308,   309,   310,   311,     0,     0,     0,     0,
-     0,   312,   298,   299,   300,   301,   302,  1229,   303,   304,
-   305,   306,   307,   308,   309,   310,   311,     0,     0,     0,
-     0,     0,   312,   298,   299,   300,   301,   302,  1230,   303,
-   304,   305,   306,   307,   308,   309,   310,   311,     0,     0,
-     0,     0,     0,   312,   298,   299,   300,   301,   302,  1231,
-   303,   304,   305,   306,   307,   308,   309,   310,   311,     0,
-     0,     0,     0,     0,   312,   298,   299,   300,   301,   302,
-  1232,   303,   304,   305,   306,   307,   308,   309,   310,   311,
-     0,     0,     0,     0,     0,   312,   298,   299,   300,   301,
-   302,  1236,   303,   304,   305,   306,   307,   308,   309,   310,
-   311,     0,     0,     0,     0,     0,   312,   298,   299,   300,
-   301,   302,  1326,   303,   304,   305,   306,   307,   308,   309,
-   310,   311,     0,     0,     0,     0,     0,   312,   298,   299,
-   300,   301,   302,  1335,   303,   304,   305,   306,   307,   308,
-   309,   310,   311,     0,     0,     0,     0,     0,   312,   298,
-   299,   300,   301,   302,  1336,   303,   304,   305,   306,   307,
-   308,   309,   310,   311,     0,     0,     0,     0,     0,   312,
-   298,   299,   300,   301,   302,  1337,   303,   304,   305,   306,
-   307,   308,   309,   310,   311,     0,     0,     0,     0,     0,
-   312,   298,   299,   300,   301,   302,  1338,   303,   304,   305,
-   306,   307,   308,   309,   310,   311,     0,     0,     0,     0,
-     0,   312,   298,   299,   300,   301,   302,  1339,   303,   304,
-   305,   306,   307,   308,   309,   310,   311,     0,     0,     0,
-     0,     0,   312,   298,   299,   300,   301,   302,  1340,   303,
-   304,   305,   306,   307,   308,   309,   310,   311,     0,     0,
-     0,     0,     0,   312,   298,   299,   300,   301,   302,  1341,
-   303,   304,   305,   306,   307,   308,   309,   310,   311,     0,
-     0,     0,     0,     0,   312,   298,   299,   300,   301,   302,
-  1342,   303,   304,   305,   306,   307,   308,   309,   310,   311,
-     0,     0,     0,     0,     0,   312,   298,   299,   300,   301,
-   302,  1343,   303,   304,   305,   306,   307,   308,   309,   310,
-   311,     0,     0,     0,     0,     0,   312,   298,   299,   300,
-   301,   302,  1348,   303,   304,   305,   306,   307,   308,   309,
-   310,   311,     0,     0,     0,     0,     0,   312,   298,   299,
-   300,   301,   302,  1410,   303,   304,   305,   306,   307,   308,
-   309,   310,   311,     0,     0,     0,     0,     0,   312,   298,
-   299,   300,   301,   302,  1411,   303,   304,   305,   306,   307,
-   308,   309,   310,   311,     0,     0,     0,     0,     0,   312,
-   298,   299,   300,   301,   302,  1412,   303,   304,   305,   306,
-   307,   308,   309,   310,   311,     0,     0,     0,     0,     0,
-   312,   298,   299,   300,   301,   302,  1413,   303,   304,   305,
-   306,   307,   308,   309,   310,   311,     0,     0,     0,     0,
-     0,   312,   298,   299,   300,   301,   302,  1414,   303,   304,
-   305,   306,   307,   308,   309,   310,   311,     0,     0,     0,
-     0,     0,   312,   298,   299,   300,   301,   302,  1415,   303,
-   304,   305,   306,   307,   308,   309,   310,   311,     0,     0,
-     0,     0,     0,   312,   298,   299,   300,   301,   302,  1416,
-   303,   304,   305,   306,   307,   308,   309,   310,   311,     0,
-     0,     0,     0,     0,   312,   298,   299,   300,   301,   302,
-  1417,   303,   304,   305,   306,   307,   308,   309,   310,   311,
-     0,     0,     0,     0,     0,   312,   298,   299,   300,   301,
-   302,  1418,   303,   304,   305,   306,   307,   308,   309,   310,
-   311,     0,     0,     0,     0,     0,   312,   298,   299,   300,
-   301,   302,  1474,   303,   304,   305,   306,   307,   308,   309,
-   310,   311,     0,     0,     0,     0,     0,   312,   298,   299,
-   300,   301,   302,  1475,   303,   304,   305,   306,   307,   308,
-   309,   310,   311,     0,     0,     0,     0,     0,   312,   298,
-   299,   300,   301,   302,  1476,   303,   304,   305,   306,   307,
-   308,   309,   310,   311,     0,     0,     0,     0,     0,   312,
-   298,   299,   300,   301,   302,  1477,   303,   304,   305,   306,
-   307,   308,   309,   310,   311,     0,     0,     0,     0,     0,
-   312,   298,   299,   300,   301,   302,  1478,   303,   304,   305,
-   306,   307,   308,   309,   310,   311,     0,     0,     0,     0,
-     0,   312,   298,   299,   300,   301,   302,  1479,   303,   304,
-   305,   306,   307,   308,   309,   310,   311,     0,     0,     0,
-     0,     0,   312,   298,   299,   300,   301,   302,  1480,   303,
-   304,   305,   306,   307,   308,   309,   310,   311,     0,     0,
-     0,     0,     0,   312,   298,   299,   300,   301,   302,  1481,
-   303,   304,   305,   306,   307,   308,   309,   310,   311,     0,
-     0,     0,     0,     0,   312,   298,   299,   300,   301,   302,
-  1482,   303,   304,   305,   306,   307,   308,   309,   310,   311,
-     0,     0,     0,     0,     0,   312,   298,   299,   300,   301,
-   302,  1530,   303,   304,   305,   306,   307,   308,   309,   310,
-   311,     0,     0,     0,     0,     0,   312,   298,   299,   300,
-   301,   302,  1534,   303,   304,   305,   306,   307,   308,   309,
-   310,   311,     0,     0,     0,     0,     0,   312,   298,   299,
-   300,   301,   302,  1535,   303,   304,   305,   306,   307,   308,
-   309,   310,   311,     0,     0,     0,     0,     0,   312,   298,
-   299,   300,   301,   302,  1536,   303,   304,   305,   306,   307,
-   308,   309,   310,   311,     0,     0,     0,     0,     0,   312,
-   298,   299,   300,   301,   302,  1537,   303,   304,   305,   306,
-   307,   308,   309,   310,   311,     0,     0,     0,     0,     0,
-   312,   298,   299,   300,   301,   302,  1538,   303,   304,   305,
-   306,   307,   308,   309,   310,   311,     0,     0,     0,     0,
-     0,   312,   298,   299,   300,   301,   302,  1539,   303,   304,
-   305,   306,   307,   308,   309,   310,   311,     0,     0,     0,
-     0,     0,   312,   298,   299,   300,   301,   302,  1564,   303,
-   304,   305,   306,   307,   308,   309,   310,   311,     0,     0,
-     0,     0,     0,   312,   298,   299,   300,   301,   302,  1569,
-   303,   304,   305,   306,   307,   308,   309,   310,   311,     0,
-     0,     0,     0,     0,   312,   298,   299,   300,   301,   302,
-  1570,   303,   304,   305,   306,   307,   308,   309,   310,   311,
-     0,     0,     0,     0,     0,   312,   298,   299,   300,   301,
-   302,  1571,   303,   304,   305,   306,   307,   308,   309,   310,
-   311,     0,     0,     0,     0,     0,   312,   298,   299,   300,
-   301,   302,  1572,   303,   304,   305,   306,   307,   308,   309,
-   310,   311,     0,     0,     0,     0,     0,   312,   298,   299,
-   300,   301,   302,  1573,   303,   304,   305,   306,   307,   308,
-   309,   310,   311,     0,     0,     0,     0,     0,   312,   298,
-   299,   300,   301,   302,  1574,   303,   304,   305,   306,   307,
-   308,   309,   310,   311,     0,     0,     0,     0,     0,   312,
-   298,   299,   300,   301,   302,  1597,   303,   304,   305,   306,
-   307,   308,   309,   310,   311,     0,     0,     0,     0,     0,
-   312,   298,   299,   300,   301,   302,  1598,   303,   304,   305,
-   306,   307,   308,   309,   310,   311,     0,     0,     0,     0,
-     0,   312,   298,   299,   300,   301,   302,  1599,   303,   304,
-   305,   306,   307,   308,   309,   310,   311,     0,     0,     0,
-     0,     0,   312,   298,   299,   300,   301,   302,  1600,   303,
-   304,   305,   306,   307,   308,   309,   310,   311,     0,     0,
-     0,     0,     0,   312,   298,   299,   300,   301,   302,  1601,
-   303,   304,   305,   306,   307,   308,   309,   310,   311,     0,
-     0,     0,     0,     0,   312,   298,   299,   300,   301,   302,
-  1602,   303,   304,   305,   306,   307,   308,   309,   310,   311,
-     0,     0,     0,     0,     0,   312,   298,   299,   300,   301,
-   302,  1625,   303,   304,   305,   306,   307,   308,   309,   310,
-   311,     0,     0,     0,     0,     0,   312,   298,   299,   300,
-   301,   302,  1626,   303,   304,   305,   306,   307,   308,   309,
-   310,   311,     0,     0,     0,     0,     0,   312,   298,   299,
-   300,   301,   302,  1627,   303,   304,   305,   306,   307,   308,
-   309,   310,   311,     0,     0,     0,     0,     0,   312,   298,
-   299,   300,   301,   302,  1639,   303,   304,   305,   306,   307,
-   308,   309,   310,   311,     0,     0,     0,     0,     0,   312,
-   298,   299,   300,   301,   302,  1640,   303,   304,   305,   306,
-   307,   308,   309,   310,   311,     0,     0,     0,     0,     0,
-   312,   298,   299,   300,   301,   302,  1641,   303,   304,   305,
-   306,   307,   308,   309,   310,   311,     0,     0,     0,     0,
-     0,   312,   298,   299,   300,   301,   302,  1656,   303,   304,
-   305,   306,   307,   308,   309,   310,   311,     0,     0,     0,
-     0,     0,   312,   298,   299,   300,   301,   302,  1657,   303,
-   304,   305,   306,   307,   308,   309,   310,   311,     0,     0,
-     0,     0,     0,   312,   298,   299,   300,   301,   302,  1658,
-   303,   304,   305,   306,   307,   308,   309,   310,   311,     0,
-     0,     0,     0,     0,   312,     0,     0,     0,   468,   298,
-   299,   300,   301,   302,     0,   303,   304,   305,   306,   307,
-   308,   309,   310,   311,     0,     0,     0,     0,     0,   312,
-     0,     0,     0,   592,   298,   299,   300,   301,   302,     0,
-   303,   304,   305,   306,   307,   308,   309,   310,   311,     0,
-     0,     0,     0,     0,   312,     0,     0,     0,   625,   298,
-   299,   300,   301,   302,     0,   303,   304,   305,   306,   307,
-   308,   309,   310,   311,     0,     0,     0,     0,     0,   312,
-     0,     0,     0,   627,   298,   299,   300,   301,   302,     0,
-   303,   304,   305,   306,   307,   308,   309,   310,   311,     0,
-     0,     0,     0,     0,   312,     0,     0,     0,   629,   298,
-   299,   300,   301,   302,     0,   303,   304,   305,   306,   307,
-   308,   309,   310,   311,     0,     0,     0,     0,     0,   312,
-     0,     0,     0,   631,   298,   299,   300,   301,   302,     0,
-   303,   304,   305,   306,   307,   308,   309,   310,   311,     0,
-     0,     0,     0,     0,   312,     0,     0,     0,   633,   298,
-   299,   300,   301,   302,     0,   303,   304,   305,   306,   307,
-   308,   309,   310,   311,     0,     0,     0,     0,     0,   312,
-     0,     0,     0,   635,   298,   299,   300,   301,   302,     0,
-   303,   304,   305,   306,   307,   308,   309,   310,   311,     0,
-     0,     0,     0,     0,   312,     0,     0,     0,   637,   298,
-   299,   300,   301,   302,     0,   303,   304,   305,   306,   307,
-   308,   309,   310,   311,     0,     0,     0,     0,     0,   312,
-     0,     0,     0,   639,   298,   299,   300,   301,   302,     0,
-   303,   304,   305,   306,   307,   308,   309,   310,   311,     0,
-     0,     0,     0,     0,   312,     0,     0,     0,   641,   298,
-   299,   300,   301,   302,     0,   303,   304,   305,   306,   307,
-   308,   309,   310,   311,     0,     0,     0,     0,     0,   312,
-     0,     0,     0,   643,   298,   299,   300,   301,   302,     0,
-   303,   304,   305,   306,   307,   308,   309,   310,   311,     0,
-     0,     0,     0,     0,   312,     0,     0,     0,   645,   298,
-   299,   300,   301,   302,     0,   303,   304,   305,   306,   307,
-   308,   309,   310,   311,     0,     0,     0,     0,     0,   312,
-     0,     0,     0,   649,   298,   299,   300,   301,   302,     0,
-   303,   304,   305,   306,   307,   308,   309,   310,   311,     0,
-     0,     0,     0,     0,   312,     0,     0,     0,   651,   298,
-   299,   300,   301,   302,     0,   303,   304,   305,   306,   307,
-   308,   309,   310,   311,     0,     0,     0,     0,     0,   312,
-     0,     0,     0,   653,   298,   299,   300,   301,   302,     0,
-   303,   304,   305,   306,   307,   308,   309,   310,   311,     0,
-     0,     0,     0,     0,   312,     0,     0,     0,   655,   298,
-   299,   300,   301,   302,     0,   303,   304,   305,   306,   307,
-   308,   309,   310,   311,     0,     0,     0,     0,     0,   312,
-     0,     0,     0,   657,   298,   299,   300,   301,   302,     0,
-   303,   304,   305,   306,   307,   308,   309,   310,   311,     0,
-     0,     0,     0,     0,   312,     0,     0,     0,   659,   298,
-   299,   300,   301,   302,     0,   303,   304,   305,   306,   307,
-   308,   309,   310,   311,     0,     0,     0,     0,     0,   312,
-     0,     0,     0,   729,   298,   299,   300,   301,   302,     0,
-   303,   304,   305,   306,   307,   308,   309,   310,   311,     0,
-     0,     0,     0,     0,   312,     0,     0,     0,   933,   298,
-   299,   300,   301,   302,     0,   303,   304,   305,   306,   307,
-   308,   309,   310,   311,     0,     0,     0,     0,     0,   312,
-     0,     0,     0,   935,   298,   299,   300,   301,   302,     0,
-   303,   304,   305,   306,   307,   308,   309,   310,   311,     0,
-     0,     0,     0,     0,   312,     0,     0,     0,   937,   298,
-   299,   300,   301,   302,     0,   303,   304,   305,   306,   307,
-   308,   309,   310,   311,     0,     0,     0,     0,     0,   312,
-     0,     0,     0,   939,   298,   299,   300,   301,   302,     0,
-   303,   304,   305,   306,   307,   308,   309,   310,   311,     0,
-     0,     0,     0,     0,   312,     0,     0,     0,   940,   298,
-   299,   300,   301,   302,     0,   303,   304,   305,   306,   307,
-   308,   309,   310,   311,     0,     0,     0,     0,     0,   312,
-     0,     0,     0,  1065,   298,   299,   300,   301,   302,     0,
-   303,   304,   305,   306,   307,   308,   309,   310,   311,     0,
-     0,     0,     0,     0,   312,     0,   462,   298,   299,   300,
-   301,   302,     0,   303,   304,   305,   306,   307,   308,   309,
-   310,   311,     0,     0,     0,     0,     0,   312,     0,   492,
-   298,   299,   300,   301,   302,     0,   303,   304,   305,   306,
-   307,   308,   309,   310,   311,     0,     0,     0,     0,     0,
-   312,     0,   493,   298,   299,   300,   301,   302,     0,   303,
-   304,   305,   306,   307,   308,   309,   310,   311,     0,     0,
-     0,     0,     0,   312,     0,   494,   298,   299,   300,   301,
-   302,     0,   303,   304,   305,   306,   307,   308,   309,   310,
-   311,     0,     0,     0,     0,     0,   312,     0,   496,   298,
-   299,   300,   301,   302,     0,   303,   304,   305,   306,   307,
-   308,   309,   310,   311,     0,     0,     0,     0,     0,   312,
-     0,   498,   298,   299,   300,   301,   302,     0,   303,   304,
-   305,   306,   307,   308,   309,   310,   311,     0,     0,     0,
-     0,     0,   312,     0,   499,   298,   299,   300,   301,   302,
-     0,   303,   304,   305,   306,   307,   308,   309,   310,   311,
-     0,     0,     0,     0,     0,   312,     0,   506,   298,   299,
-   300,   301,   302,     0,   303,   304,   305,   306,   307,   308,
-   309,   310,   311,     0,     0,     0,     0,     0,   312,     0,
-   544,   298,   299,   300,   301,   302,     0,   303,   304,   305,
-   306,   307,   308,   309,   310,   311,     0,     0,     0,     0,
-     0,   312,     0,   545,   298,   299,   300,   301,   302,     0,
-   303,   304,   305,   306,   307,   308,   309,   310,   311,     0,
-     0,     0,     0,     0,   312,     0,   548,   298,   299,   300,
-   301,   302,     0,   303,   304,   305,   306,   307,   308,   309,
-   310,   311,     0,     0,     0,     0,     0,   312,     0,   554,
-   298,   299,   300,   301,   302,     0,   303,   304,   305,   306,
-   307,   308,   309,   310,   311,     0,     0,     0,     0,     0,
-   312,     0,   624,   298,   299,   300,   301,   302,     0,   303,
-   304,   305,   306,   307,   308,   309,   310,   311,     0,     0,
-     0,     0,     0,   312,     0,   626,   298,   299,   300,   301,
-   302,     0,   303,   304,   305,   306,   307,   308,   309,   310,
-   311,     0,     0,     0,     0,     0,   312,     0,   628,   298,
-   299,   300,   301,   302,     0,   303,   304,   305,   306,   307,
-   308,   309,   310,   311,     0,     0,     0,     0,     0,   312,
-     0,   630,   298,   299,   300,   301,   302,     0,   303,   304,
-   305,   306,   307,   308,   309,   310,   311,     0,     0,     0,
-     0,     0,   312,     0,   632,   298,   299,   300,   301,   302,
-     0,   303,   304,   305,   306,   307,   308,   309,   310,   311,
-     0,     0,     0,     0,     0,   312,     0,   634,   298,   299,
-   300,   301,   302,     0,   303,   304,   305,   306,   307,   308,
-   309,   310,   311,     0,     0,     0,     0,     0,   312,     0,
-   636,   298,   299,   300,   301,   302,     0,   303,   304,   305,
-   306,   307,   308,   309,   310,   311,     0,     0,     0,     0,
-     0,   312,     0,   638,   298,   299,   300,   301,   302,     0,
-   303,   304,   305,   306,   307,   308,   309,   310,   311,     0,
-     0,     0,     0,     0,   312,     0,   640,   298,   299,   300,
-   301,   302,     0,   303,   304,   305,   306,   307,   308,   309,
-   310,   311,     0,     0,     0,     0,     0,   312,     0,   642,
-   298,   299,   300,   301,   302,     0,   303,   304,   305,   306,
-   307,   308,   309,   310,   311,     0,     0,     0,     0,     0,
-   312,     0,   644,   298,   299,   300,   301,   302,     0,   303,
-   304,   305,   306,   307,   308,   309,   310,   311,     0,     0,
-     0,     0,     0,   312,     0,   648,   298,   299,   300,   301,
-   302,     0,   303,   304,   305,   306,   307,   308,   309,   310,
-   311,     0,     0,     0,     0,     0,   312,     0,   650,   298,
-   299,   300,   301,   302,     0,   303,   304,   305,   306,   307,
-   308,   309,   310,   311,     0,     0,     0,     0,     0,   312,
-     0,   652,   298,   299,   300,   301,   302,     0,   303,   304,
-   305,   306,   307,   308,   309,   310,   311,     0,     0,     0,
-     0,     0,   312,     0,   654,   298,   299,   300,   301,   302,
-     0,   303,   304,   305,   306,   307,   308,   309,   310,   311,
-     0,     0,     0,     0,     0,   312,     0,   656,   298,   299,
-   300,   301,   302,     0,   303,   304,   305,   306,   307,   308,
-   309,   310,   311,     0,     0,     0,     0,     0,   312,     0,
-   658,   298,   299,   300,   301,   302,     0,   303,   304,   305,
-   306,   307,   308,   309,   310,   311,     0,     0,     0,     0,
-     0,   312,     0,   691,   298,   299,   300,   301,   302,     0,
-   303,   304,   305,   306,   307,   308,   309,   310,   311,     0,
-     0,     0,     0,     0,   312,     0,   693,   298,   299,   300,
-   301,   302,     0,   303,   304,   305,   306,   307,   308,   309,
-   310,   311,     0,     0,     0,     0,     0,   312,     0,   705,
-   298,   299,   300,   301,   302,     0,   303,   304,   305,   306,
-   307,   308,   309,   310,   311,     0,     0,     0,     0,     0,
-   312,     0,   706,   298,   299,   300,   301,   302,     0,   303,
-   304,   305,   306,   307,   308,   309,   310,   311,     0,     0,
-     0,     0,     0,   312,     0,   710,   298,   299,   300,   301,
-   302,     0,   303,   304,   305,   306,   307,   308,   309,   310,
-   311,     0,     0,     0,     0,     0,   312,     0,   711,   298,
-   299,   300,   301,   302,     0,   303,   304,   305,   306,   307,
-   308,   309,   310,   311,     0,     0,     0,     0,     0,   312,
-     0,   712,   298,   299,   300,   301,   302,     0,   303,   304,
-   305,   306,   307,   308,   309,   310,   311,     0,     0,     0,
-     0,     0,   312,     0,   713,   298,   299,   300,   301,   302,
-     0,   303,   304,   305,   306,   307,   308,   309,   310,   311,
-     0,     0,     0,     0,     0,   312,     0,   714,   298,   299,
-   300,   301,   302,     0,   303,   304,   305,   306,   307,   308,
-   309,   310,   311,     0,     0,     0,     0,     0,   312,     0,
-   735,   298,   299,   300,   301,   302,     0,   303,   304,   305,
-   306,   307,   308,   309,   310,   311,     0,     0,     0,     0,
-     0,   312,     0,   742,   298,   299,   300,   301,   302,     0,
-   303,   304,   305,   306,   307,   308,   309,   310,   311,     0,
-     0,     0,     0,     0,   312,     0,   932,   298,   299,   300,
-   301,   302,     0,   303,   304,   305,   306,   307,   308,   309,
-   310,   311,     0,     0,     0,     0,     0,   312,     0,   934,
-   298,   299,   300,   301,   302,     0,   303,   304,   305,   306,
-   307,   308,   309,   310,   311,     0,     0,     0,     0,     0,
-   312,     0,   936,   298,   299,   300,   301,   302,     0,   303,
-   304,   305,   306,   307,   308,   309,   310,   311,     0,     0,
-     0,     0,     0,   312,     0,   938,   298,   299,   300,   301,
-   302,     0,   303,   304,   305,   306,   307,   308,   309,   310,
-   311,     0,     0,     0,     0,     0,   312,     0,  1000,   298,
-   299,   300,   301,   302,     0,   303,   304,   305,   306,   307,
-   308,   309,   310,   311,     0,     0,     0,     0,     0,   312,
-     0,  1088,   298,   299,   300,   301,   302,     0,   303,   304,
-   305,   306,   307,   308,   309,   310,   311,     0,     0,     0,
-     0,     0,   312,     0,  1115,   298,   299,   300,   301,   302,
-     0,   303,   304,   305,   306,   307,   308,   309,   310,   311,
-     0,     0,     0,     0,     0,   312,     0,  1204,   298,   299,
-   300,   301,   302,     0,   303,   304,   305,   306,   307,   308,
-   309,   310,   311,     0,     0,     0,     0,     0,   312,     0,
-  1208,   298,   299,   300,   301,   302,     0,   303,   304,   305,
-   306,   307,   308,   309,   310,   311,     0,     0,     0,     0,
-     0,   312,     0,  1210,   298,   299,   300,   301,   302,     0,
-   303,   304,   305,   306,   307,   308,   309,   310,   311,     0,
-     0,     0,     0,     0,   312,     0,  1329,   298,   299,   300,
-   301,   302,     0,   303,   304,   305,   306,   307,   308,   309,
-   310,   311,     0,     0,     0,     0,     0,   312,     0,  1331,
-   298,   299,   300,   301,   302,     0,   303,   304,   305,   306,
-   307,   308,   309,   310,   311,     0,     0,     0,     0,     0,
-   312,     0,  1333,   298,   299,   300,   301,   302,     0,   303,
-   304,   305,   306,   307,   308,   309,   310,   311,     0,     0,
-     0,     0,     0,   312,     0,  1344,   298,   299,   300,   301,
-   302,     0,   303,   304,   305,   306,   307,   308,   309,   310,
-   311,     0,     0,     0,     0,     0,   312,     0,  1345,   298,
-   299,   300,   301,   302,     0,   303,   304,   305,   306,   307,
-   308,   309,   310,   311,     0,     0,     0,     0,     0,   312,
-     0,  1346,   298,   299,   300,   301,   302,     0,   303,   304,
-   305,   306,   307,   308,   309,   310,   311,     0,     0,     0,
-     0,     0,   312,     0,  1347,   298,   299,   300,   301,   302,
-     0,   303,   304,   305,   306,   307,   308,   309,   310,   311,
-     0,     0,     0,     0,     0,   312,     0,  1423,   298,   299,
-   300,   301,   302,     0,   303,   304,   305,   306,   307,   308,
-   309,   310,   311,     0,     0,     0,     0,     0,   312,     0,
-  1540,   298,   299,   300,   301,   302,     0,   303,   304,   305,
-   306,   307,   308,   309,   310,   311,     0,     0,     0,     0,
-     0,   312,     0,  1541,   298,   299,   300,   301,   302,     0,
-   303,   304,   305,   306,   307,   308,   309,   310,   311,     0,
-     0,     0,     0,     0,   312,     0,  1542,   298,   299,   300,
-   301,   302,     0,   303,   304,   305,   306,   307,   308,   309,
-   310,   311,     0,     0,     0,     0,     0,   312,     0,  1628,
-   298,   299,   300,   301,   302,     0,   303,   304,   305,   306,
-   307,   308,   309,   310,   311,     0,     0,     0,     0,     0,
-   312,     0,  1629,   298,   299,   300,   301,   302,     0,   303,
-   304,   305,   306,   307,   308,   309,   310,   311,     0,     0,
-     0,     0,     0,   312,     0,  1630,   298,   299,   300,   301,
-   302,     0,   303,   304,   305,   306,   307,   308,   309,   310,
-   311,     0,     0,     0,     0,     0,   312,     0,  1676,   298,
-   299,   300,   301,   302,     0,   303,   304,   305,   306,   307,
-   308,   309,   310,   311,     0,     0,     0,     0,     0,   312,
-     0,  1677,   298,   299,   300,   301,   302,     0,   303,   304,
-   305,   306,   307,   308,   309,   310,   311,     0,     0,     0,
-     0,     0,   312,     0,  1678
+static const short yytable[] =
+{
+     137,   233,   466,   470,   136,   355,   189,   238,   528,   359,
+     503,   682,   200,    80,   459,   460,   461,   187,   178,   192,
+     820,   145,   145,  1312,  1247,  1247,  1247,  1312,   956,  1248,
+    1248,  1248,   147,    95,  1247,   957,  1247,   466,   364,  1248,
+    1170,  1248,  1187,   142,   292,  1247,   458,  1001,   811,   725,
+    1248,   457,   458,  1002,   240,     9,   241,   347,   348,  1253,
+     595,   596,   597,   598,   599,   600,   601,   602,   603,   604,
+     605,   606,   607,   608,   349,   120,   121,   122,   958,   347,
+     348,   120,   121,   122,  1126,   347,   348,   183,   130,   131,
+     184,   165,   166,  1135,   235,   987,   236,   988,   347,   348,
+    1142,   989,   167,   990,   285,   286,   287,   490,   168,   288,
+     291,   491,   295,  1247,   991,    83,   992,   179,  1248,   315,
+     316,   317,   242,   319,   243,   321,   322,   244,   329,   245,
+     375,   365,   293,   294,   587,  1265,   812,   813,   588,   146,
+     146,   169,   171,     8,   345,   346,   726,    84,  1311,  1315,
+    1461,   130,   131,    95,    85,   951,   727,   188,  1465,   777,
+    1526,    86,   362,   363,   246,   366,   247,   368,   469,  1528,
+     371,   372,   347,   348,   155,   156,   687,   157,   609,   676,
+     347,   348,    81,   123,   124,   125,   126,   699,   668,   350,
+     190,   239,   669,   347,   348,   683,   519,   193,   551,    87,
+    1312,   678,   180,   466,  1312,   347,   348,   824,   309,   310,
+     311,   673,   411,   248,   466,   249,   312,   415,   416,   417,
+     418,   419,   420,   421,   422,   423,   424,   425,   426,   427,
+     428,   429,   430,   431,   432,   433,   434,   435,   436,   437,
+     438,   439,   440,   441,   442,   443,   444,   445,   446,   447,
+     448,   449,   450,   451,   452,   453,   454,   455,   456,   942,
+     538,   539,   342,   673,   344,  1266,    88,   465,  1312,  1270,
+     351,  1426,  1312,   471,  1430,   475,   476,   477,   478,   479,
+     480,   481,   482,   483,   484,   485,   486,   487,   488,   489,
+    1066,   147,  1188,   347,   348,   495,  1189,   497,   250,  1113,
+     251,   286,   465,   123,   124,   125,   126,   507,   508,   509,
+     594,   511,   512,   513,   514,   515,   516,   517,   123,   124,
+     125,   126,   130,   131,   130,   131,   141,   347,   348,   530,
+     531,   532,   675,   252,   540,   253,   413,  1494,   945,   130,
+     131,  1498,   547,   529,   902,   903,   904,   905,   906,    92,
+      93,   555,   972,   973,   805,    96,    97,    98,    99,   100,
+     101,   102,   103,   104,   105,   106,   107,   108,   109,   110,
+     111,   112,   113,   114,   115,   116,   117,   118,   119,   347,
+     348,   466,   833,   347,   348,   809,    89,   347,   348,  1368,
+    1369,  1370,  1371,   593,   843,   853,  1375,    90,   666,  1180,
+     667,   173,   806,  1181,   174,   175,    91,    92,    93,   466,
+     860,   861,   862,    96,    97,    98,    99,   100,   101,   102,
+     103,   104,   105,   106,   107,   108,   109,   110,   111,   112,
+     113,   114,   115,   116,   117,   118,   119,   466,   466,   466,
+     140,   286,   844,   142,   143,   522,   523,   679,   254,   677,
+     255,   144,   298,   299,   300,   301,   302,   148,   303,   304,
+     305,   306,   307,   308,   309,   310,   311,   256,   465,   257,
+    1436,  1437,   312,   673,  1440,   674,   258,   411,   259,   465,
+    1114,   701,   702,    10,   347,   348,   149,   707,   123,   124,
+     125,   126,   347,   348,   150,   347,   348,   717,   718,   151,
+    1183,   347,   348,   152,  1234,   260,   721,   261,  1306,   130,
+     131,  1308,   153,  1013,   347,   348,   728,   127,   128,   154,
+     966,   944,   946,   129,   347,   348,  1022,   738,   132,   740,
+     741,   289,   158,   262,   290,   263,  1502,   130,   131,   264,
+    1314,   265,   266,   500,   267,   236,   268,   466,   269,   298,
+     299,   300,   301,   302,   163,   303,   304,   305,   306,   307,
+     308,   309,   310,   311,   270,   164,   271,   327,   272,   312,
+     273,   172,   333,   778,   177,   127,   128,   130,   131,   176,
+     274,   129,   275,   698,   159,   236,   132,   160,   161,   696,
+     162,   276,   697,   277,   356,   278,   181,   279,  1551,   182,
+     360,   361,    11,    12,    13,    14,    15,    16,    17,    18,
+     307,   308,   309,   310,   311,   981,   982,   716,   875,   280,
+     312,   281,   185,   795,   796,    42,    43,    44,    45,   673,
+      47,   700,   186,   673,  1581,   836,   194,   797,   798,   799,
+     800,   801,   802,   803,  1091,   953,   465,   954,   195,   673,
+     808,   965,   673,   814,   993,   673,   673,   994,   995,   673,
+     196,  1071,   823,   197,   303,   304,   305,   306,   307,   308,
+     309,   310,   311,   198,   465,   411,   199,  1059,   312,  1189,
+    1463,  1190,  1464,  1483,   231,  1484,   234,   915,   301,   302,
+     282,   303,   304,   305,   306,   307,   308,   309,   310,   311,
+     297,   283,   465,   465,   465,   312,   296,   865,   866,   284,
+    1485,   869,  1486,  1487,  1086,  1488,  1489,   313,  1490,    92,
+      93,  1665,   880,   881,   314,    96,    97,    98,    99,   100,
+     101,   102,   103,   104,   105,   106,   107,   108,   109,   110,
+     111,   112,   113,   114,   115,   116,   117,   118,   119,  1543,
+     474,  1544,  1603,  1605,  1604,  1606,   318,   918,   919,   920,
+     921,   922,   923,   924,   925,   926,   927,   928,   929,   930,
+     931,   298,   299,   300,   301,   302,   320,   303,   304,   305,
+     306,   307,   308,   309,   310,   311,   825,  1607,  1659,  1608,
+    1660,   312,   947,   876,   330,  1661,   952,  1662,  1663,  1692,
+    1664,  1693,  1694,  1696,  1695,  1697,   331,   332,  1009,   334,
+     335,   336,   465,   341,   967,   337,   968,   338,   339,   340,
+     857,   858,   859,   358,   370,   357,   352,   353,   354,   367,
+     983,   984,   985,   369,   373,  1237,   374,   376,   406,   377,
+     378,   412,   379,   380,   381,   882,   382,   383,   384,   385,
+    1005,  1006,  1007,   386,   891,   298,   299,   300,   301,   302,
+     387,   303,   304,   305,   306,   307,   308,   309,   310,   311,
+     388,   389,   390,   391,   392,   312,   409,   393,   394,   395,
+     672,   396,   463,   397,   398,   399,   400,   127,   128,   401,
+     402,   403,   404,   129,   405,   312,   817,  1041,   132,   473,
+     408,   834,   410,   472,   835,   298,   299,   300,   301,   302,
+     505,   303,   304,   305,   306,   307,   308,   309,   310,   311,
+     510,   518,   542,  1060,   543,   312,   546,   549,   552,   533,
+      27,    28,   534,   535,    31,    32,    33,   556,    34,  1117,
+      36,    37,   557,    39,    40,   558,   559,   560,   561,  1076,
+    1077,  1148,   562,   563,   564,   565,   566,   567,   568,  1085,
+      52,   569,   570,   571,   572,   573,   574,   575,   576,   577,
+     578,   579,   580,  1103,  1104,   581,    53,    54,    55,   582,
+     583,   584,   585,   586,   670,  1116,   589,   591,  1119,   590,
+     671,   680,   681,   686,   715,   719,   688,   689,  1129,   690,
+     692,   694,   695,   703,   720,  1136,  1137,  1138,   730,   731,
+     732,   733,  1143,   734,   736,   737,  1147,   743,   774,   804,
+    1149,  1150,  1151,  1152,  1153,  1154,  1155,  1156,  1157,  1158,
+    1159,  1160,  1161,  1162,   744,   745,   746,   747,    65,   748,
+     749,   750,   751,   752,   753,   754,   755,  1196,   756,  1172,
+     775,   298,   299,   300,   301,   302,  1067,   303,   304,   305,
+     306,   307,   308,   309,   310,   311,  1178,   757,   758,   838,
+     759,   312,   760,   761,   762,   763,   764,   794,   807,   815,
+     536,   765,   766,   767,   768,  1092,   769,  1094,  1193,  1097,
+    1194,   770,   595,   596,   597,   598,   599,   600,   601,   602,
+     603,   604,   605,   606,   607,   608,   826,   827,   771,   829,
+     772,   831,   832,   773,   776,   780,   781,   782,   783,    92,
+     323,   784,   818,   810,   816,    96,    97,    98,    99,   100,
+     101,   102,   103,   104,   105,   106,   107,   108,   109,   110,
+     111,   112,   113,   114,   115,   116,   117,   118,   119,   867,
+     868,   785,   819,   871,  1458,   786,   822,  1243,  1245,   787,
+    1251,   828,  1254,  1255,   830,   840,   788,   841,   789,  1259,
+     888,   889,   842,   790,   845,   846,   894,   895,  1268,   863,
+     791,   792,   793,   901,   847,   908,  1276,   848,   849,   839,
+     850,  1281,   851,  1322,  1284,   852,  1286,  1287,  1288,  1289,
+    1290,  1291,  1292,  1293,  1294,  1295,  1296,  1297,  1298,  1299,
+     917,   950,   864,   872,   870,  1303,   878,   285,   286,  1304,
+     877,  1521,   879,  1524,   298,   299,   300,   301,   302,   883,
+     303,   304,   305,   306,   307,   308,   309,   310,   311,   884,
+     885,   886,   887,   890,   312,   960,   892,   962,  1166,   893,
+     896,   897,  1367,   898,   899,   900,   909,   969,   970,   971,
+     910,   911,   974,   975,   976,   977,   978,   979,   980,   912,
+     913,   914,   916,   941,   943,  1562,   986,   949,  1244,  1246,
+     948,  1252,   955,  1352,   959,  1355,   961,   127,   324,   963,
+     964,  1360,   998,   129,   999,  1004,  1008,  1403,   132,  1010,
+    1014,  1016,  1015,  1017,   325,  1019,  1042,  1061,  1018,  1024,
+    1020,  1021,  1380,  1381,  1382,  1383,  1384,  1385,  1386,  1387,
+    1388,  1023,  1025,  1026,  1027,  1393,  1062,  1028,  1029,  1030,
+    1031,  1032,  1033,  1034,   298,   299,   300,   301,   302,   344,
+     303,   304,   305,   306,   307,   308,   309,   310,   311,  1035,
+    1036,  1037,  1038,  1039,   312,  1064,  1068,  1040,  1057,  1069,
+    1070,  1058,  1173,  1073,  1074,  1469,   298,   299,   300,   301,
+     302,  1075,   303,   304,   305,   306,   307,   308,   309,   310,
+     311,  1078,  1079,  1080,  1081,  1082,   312,  1442,  1443,  1444,
+    1445,  1446,  1447,  1448,  1449,  1450,  1452,  1454,  1456,  1501,
+    1083,  1084,  1093,   298,   299,   300,   301,   302,  1095,   303,
+     304,   305,   306,   307,   308,   309,   310,   311,  1098,  1100,
+    1101,  1110,  1102,   312,  1105,  1109,  1118,  1121,  1122,  1120,
+    1174,  1531,   300,   301,   302,  1123,   303,   304,   305,   306,
+     307,   308,   309,   310,   311,  1500,  1124,  1125,  1139,  1127,
+     312,  1506,  1507,  1508,  1509,  1510,  1511,  1512,  1513,  1514,
+    1515,  1128,  1517,  1130,  1519,  1131,  1132,  1133,  1134,  1140,
+    1141,  1144,  1145,    92,   501,  1169,  1163,  1146,  1171,    96,
+      97,    98,    99,   100,   101,   102,   103,   104,   105,   106,
+     107,   108,   109,   110,   111,   112,   113,   114,   115,   116,
+     117,   118,   119,  1164,  1165,  1168,  1548,  1549,  1167,  1176,
+    1179,  1553,  1554,  1555,  1556,  1557,  1558,   298,   299,   300,
+     301,   302,  1192,   303,   304,   305,   306,   307,   308,   309,
+     310,   311,  1177,  1182,  1184,  1191,  1256,   312,  1197,  1199,
+    1235,  1578,  1202,  1206,  1207,  1212,  1582,  1583,  1584,  1585,
+    1586,  1587,  1589,  1591,  1593,  1175,  1200,  1201,  1203,  1205,
+    1211,  1215,  1264,  1213,  1216,  1263,  1233,  1267,  1269,  1218,
+    1272,  1271,  1273,  1282,  1612,  1613,  1614,  1615,  1616,  1617,
+    1618,  1274,  1620,  1275,  1622,   298,   299,   300,   301,   302,
+    1277,   303,   304,   305,   306,   307,   308,   309,   310,   311,
+    1279,  1280,  1632,  1633,  1634,   312,  1257,  1283,  1258,  1285,
+    1310,  1300,  1262,  1301,  1319,  1302,  1646,  1647,  1648,  1650,
+    1652,  1654,  1309,  1318,  1323,  1321,  1324,  1325,  1278,  1327,
+    1351,  1328,  1332,  1666,  1667,  1668,  1669,  1330,  1671,  1334,
+    1673,   127,   128,  1349,  1353,  1357,  1358,   129,  1361,  1362,
+    1363,  1366,   132,  1372,  1373,  1374,  1376,  1377,   502,  1378,
+    1687,  1689,  1691,  1396,  1320,  1379,  1394,  1398,  1401,  1698,
+    1399,  1700,  1402,  1702,    92,    93,  1404,  1405,  1406,  1407,
+      96,    97,    98,    99,   100,   101,   102,   103,   104,   105,
+     106,   107,   108,   109,   110,   111,   112,   113,   114,   115,
+     116,   117,   118,   119,  1408,  1409,  1434,  1419,   504,  1420,
+     298,   299,   300,   301,   302,  1421,   303,   304,   305,   306,
+     307,   308,   309,   310,   311,  1422,  1424,  1356,  1425,  1427,
+     312,  1431,  1435,  1438,  1439,  1364,  1365,    92,    93,    94,
+    1441,    95,  1460,    96,    97,    98,    99,   100,   101,   102,
+     103,   104,   105,   106,   107,   108,   109,   110,   111,   112,
+     113,   114,   115,   116,   117,   118,   119,  1462,   120,   121,
+     122,   553,    92,    93,   458,  1466,  1470,  1467,    96,    97,
+      98,    99,   100,   101,   102,   103,   104,   105,   106,   107,
+     108,   109,   110,   111,   112,   113,   114,   115,   116,   117,
+     118,   119,  1468,   120,   121,   122,  1471,  1493,  1472,  1473,
+    1491,  1496,  1492,  1497,  1499,  1429,  1504,  1505,  1433,   298,
+     299,   300,   301,   302,  1516,   303,   304,   305,   306,   307,
+     308,   309,   310,   311,  1518,  1520,  1522,  1525,  1545,   312,
+    1546,  1527,  1240,  1241,  1529,  1547,  1532,  1550,   129,  1533,
+    1563,  1566,  1567,  1242,  1568,  1579,  1575,  1576,  1577,   168,
+    1595,   298,   299,   300,   301,   302,  1596,   303,   304,   305,
+     306,   307,   308,   309,   310,   311,  1609,  1611,  1619,  1621,
+    1495,   312,  1623,  1624,  1638,  1670,  1642,  1643,  1503,  1644,
+    1655,   123,   124,   125,   126,  1675,  1672,   685,  1674,  1679,
+    1699,  1683,  1684,  1685,  1701,   127,   128,  1703,  1705,  1706,
+     779,   129,   130,   131,    70,     0,   132,    71,   133,   837,
+     134,    72,  1108,     0,   298,   299,   300,   301,   302,  1063,
+     303,   304,   305,   306,   307,   308,   309,   310,   311,     0,
+     127,   128,     0,     0,   312,   874,   129,    92,    93,     0,
+    1552,   132,     0,    96,    97,    98,    99,   100,   101,   102,
+     103,   104,   105,   106,   107,   108,   109,   110,   111,   112,
+     113,   114,   115,   116,   117,   118,   119,     0,     0,    92,
+     323,     0,     0,     0,  1580,    96,    97,    98,    99,   100,
+     101,   102,   103,   104,   105,   106,   107,   108,   109,   110,
+     111,   112,   113,   114,   115,   116,   117,   118,   119,    92,
+     501,     0,  1610,     0,     0,    96,    97,    98,    99,   100,
+     101,   102,   103,   104,   105,   106,   107,   108,   109,   110,
+     111,   112,   113,   114,   115,   116,   117,   118,   119,     0,
+       0,  1631,     0,     0,     0,     0,     0,     0,     0,     0,
+     298,   299,   300,   301,   302,  1645,   303,   304,   305,   306,
+     307,   308,   309,   310,   311,     0,     0,     0,     0,     0,
+     312,     0,   298,   299,   300,   301,   302,     0,   303,   304,
+     305,   306,   307,   308,   309,   310,   311,     0,     0,     0,
+       0,     0,   312,     0,     0,     0,     0,     0,   298,   299,
+     300,   301,   302,     0,   303,   304,   305,   306,   307,   308,
+     309,   310,   311,     0,     0,   127,   128,     0,   312,     0,
+       0,   129,     0,     0,     0,     0,   132,     0,     0,   298,
+     299,   300,   301,   302,     0,   303,   304,   305,   306,   307,
+     308,   309,   310,   311,     0,     0,     0,   127,   464,   312,
+       0,   462,     0,   129,     0,   520,   -10,     1,   132,   -10,
+     -53,     0,   298,   299,   300,   301,   302,     0,   303,   304,
+     305,   306,   307,   308,   309,   310,   311,   127,   128,     0,
+       0,     0,   312,   129,     0,     0,     0,     0,   132,   -53,
+     704,     0,     0,   -53,   -53,   -53,   -53,   -53,   -53,   -53,
+     -53,   -53,     0,   -53,   -53,   -53,   -53,   -53,   -53,   -53,
+       0,     0,     0,   -53,   -53,   -53,   -53,   -53,   -53,   -53,
+       0,   -53,   -53,   -53,   -53,   -53,   298,   299,   300,   301,
+     302,     0,   303,   304,   305,   306,   307,   308,   309,   310,
+     311,   -53,   -53,   -53,     0,     0,   312,     0,   -53,     0,
+     -53,     0,   -53,   -53,   -53,   -53,   -53,   -53,   -53,     0,
+       0,   533,    27,    28,   534,   535,    31,    32,    33,     0,
+      34,     0,    36,    37,     0,    39,    40,     0,   -10,   -10,
+     -10,   -10,   -10,   -10,   -10,   -10,     0,     0,     0,     0,
+       0,     0,    52,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   -53,     2,     3,     0,     4,    53,    54,
+      55,   533,    27,    28,   534,   535,    31,    32,    33,     0,
+      34,     0,    36,    37,     0,    39,    40,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      23,     0,    52,   298,   299,   300,   301,   302,     0,   303,
+     304,   305,   306,   307,   308,   309,   310,   311,    53,    54,
+      55,     0,     0,   312,     0,     0,     0,     0,     0,    24,
+      65,   708,     0,    25,    26,    27,    28,    29,    30,    31,
+      32,    33,     0,    34,    35,    36,    37,    38,    39,    40,
+       0,     0,     0,    41,    42,    43,    44,    45,    46,    47,
+     201,    48,    49,    50,    51,    52,     0,     0,     0,     0,
+       0,     0,   541,     0,     0,     0,     0,     0,     0,     0,
+      65,    53,    54,    55,     0,     0,     0,     0,    56,     0,
+      57,     0,    58,    59,    60,    61,    62,    63,    64,   533,
+      27,    28,   534,   535,    31,    32,    33,     0,    34,     0,
+      36,    37,     0,    39,    40,     0,     0,     0,     0,     0,
+       0,     0,   739,   202,   203,   204,     0,     0,     0,     0,
+      52,   205,   206,   207,   208,   209,   210,   211,   212,   213,
+     214,     0,     0,    65,     0,     0,    53,    54,    55,   215,
+     216,   217,   218,   219,   220,   221,   222,   223,   224,     0,
+     225,   226,   227,   228,   229,   230,   298,   299,   300,   301,
+     302,     0,   303,   304,   305,   306,   307,   308,   309,   310,
+     311,     0,     0,     0,     0,     0,   312,     0,     0,     0,
+       0,     0,  1089,     0,  1090,     0,     0,     0,     0,     0,
+       0,     0,     0,   298,   299,   300,   301,   302,    65,   303,
+     304,   305,   306,   307,   308,   309,   310,   311,     0,     0,
+       0,     0,     0,   312,     0,     0,     0,     0,     0,  1111,
+       0,  1112,   298,   299,   300,   301,   302,     0,   303,   304,
+     305,   306,   307,   308,   309,   310,   311,     0,     0,     0,
+       0,     0,   312,     0,     0,     0,     0,     0,  1238,     0,
+    1239,   298,   299,   300,   301,   302,     0,   303,   304,   305,
+     306,   307,   308,   309,   310,   311,     0,     0,     0,     0,
+       0,   312,     0,     0,   298,   299,   300,   301,   302,   709,
+     303,   304,   305,   306,   307,   308,   309,   310,   311,     0,
+       0,     0,     0,     0,   312,     0,     0,   298,   299,   300,
+     301,   302,   856,   303,   304,   305,   306,   307,   308,   309,
+     310,   311,     0,     0,     0,     0,     0,   312,     0,     0,
+     298,   299,   300,   301,   302,  1087,   303,   304,   305,   306,
+     307,   308,   309,   310,   311,     0,     0,     0,     0,     0,
+     312,     0,     0,   298,   299,   300,   301,   302,  1260,   303,
+     304,   305,   306,   307,   308,   309,   310,   311,     0,     0,
+       0,     0,     0,   312,     0,     0,   298,   299,   300,   301,
+     302,  1261,   303,   304,   305,   306,   307,   308,   309,   310,
+     311,     0,     0,     0,     0,     0,   312,     0,     0,   298,
+     299,   300,   301,   302,  1305,   303,   304,   305,   306,   307,
+     308,   309,   310,   311,     0,     0,     0,     0,     0,   312,
+       0,     0,   298,   299,   300,   301,   302,  1307,   303,   304,
+     305,   306,   307,   308,   309,   310,   311,     0,     0,     0,
+       0,     0,   312,     0,     0,   298,   299,   300,   301,   302,
+    1313,   303,   304,   305,   306,   307,   308,   309,   310,   311,
+       0,     0,     0,     0,     0,   312,     0,     0,   298,   299,
+     300,   301,   302,  1316,   303,   304,   305,   306,   307,   308,
+     309,   310,   311,     0,     0,     0,     0,     0,   312,     0,
+       0,   298,   299,   300,   301,   302,  1317,   303,   304,   305,
+     306,   307,   308,   309,   310,   311,     0,     0,     0,     0,
+       0,   312,     0,     0,   298,   299,   300,   301,   302,  1350,
+     303,   304,   305,   306,   307,   308,   309,   310,   311,     0,
+       0,     0,     0,     0,   312,     0,     0,   298,   299,   300,
+     301,   302,  1395,   303,   304,   305,   306,   307,   308,   309,
+     310,   311,     0,     0,     0,     0,     0,   312,     0,     0,
+     298,   299,   300,   301,   302,  1397,   303,   304,   305,   306,
+     307,   308,   309,   310,   311,     0,     0,     0,     0,     0,
+     312,     0,     0,   298,   299,   300,   301,   302,  1400,   303,
+     304,   305,   306,   307,   308,   309,   310,   311,     0,     0,
+       0,     0,     0,   312,     0,     0,   298,   299,   300,   301,
+     302,  1565,   303,   304,   305,   306,   307,   308,   309,   310,
+     311,     0,     0,     0,     0,     0,   312,     0,     0,   298,
+     299,   300,   301,   302,  1594,   303,   304,   305,   306,   307,
+     308,   309,   310,   311,     0,     0,     0,     0,     0,   312,
+     298,   299,   300,   301,   302,   520,   303,   304,   305,   306,
+     307,   308,   309,   310,   311,     0,     0,     0,     0,     0,
+     312,   298,   299,   300,   301,   302,   521,   303,   304,   305,
+     306,   307,   308,   309,   310,   311,     0,     0,     0,     0,
+       0,   312,   298,   299,   300,   301,   302,   550,   303,   304,
+     305,   306,   307,   308,   309,   310,   311,     0,     0,     0,
+       0,     0,   312,   298,   299,   300,   301,   302,   646,   303,
+     304,   305,   306,   307,   308,   309,   310,   311,     0,     0,
+       0,     0,     0,   312,   298,   299,   300,   301,   302,   647,
+     303,   304,   305,   306,   307,   308,   309,   310,   311,     0,
+       0,     0,     0,     0,   312,   298,   299,   300,   301,   302,
+     660,   303,   304,   305,   306,   307,   308,   309,   310,   311,
+       0,     0,     0,     0,     0,   312,   298,   299,   300,   301,
+     302,   661,   303,   304,   305,   306,   307,   308,   309,   310,
+     311,     0,     0,     0,     0,     0,   312,   298,   299,   300,
+     301,   302,   662,   303,   304,   305,   306,   307,   308,   309,
+     310,   311,     0,     0,     0,     0,     0,   312,   298,   299,
+     300,   301,   302,   663,   303,   304,   305,   306,   307,   308,
+     309,   310,   311,     0,     0,     0,     0,     0,   312,   298,
+     299,   300,   301,   302,   664,   303,   304,   305,   306,   307,
+     308,   309,   310,   311,     0,     0,     0,     0,     0,   312,
+     298,   299,   300,   301,   302,   665,   303,   304,   305,   306,
+     307,   308,   309,   310,   311,     0,     0,     0,     0,     0,
+     312,   298,   299,   300,   301,   302,   722,   303,   304,   305,
+     306,   307,   308,   309,   310,   311,     0,     0,     0,     0,
+       0,   312,   298,   299,   300,   301,   302,   723,   303,   304,
+     305,   306,   307,   308,   309,   310,   311,     0,     0,     0,
+       0,     0,   312,   298,   299,   300,   301,   302,   724,   303,
+     304,   305,   306,   307,   308,   309,   310,   311,     0,     0,
+       0,     0,     0,   312,   298,   299,   300,   301,   302,   854,
+     303,   304,   305,   306,   307,   308,   309,   310,   311,     0,
+       0,     0,     0,     0,   312,   298,   299,   300,   301,   302,
+     855,   303,   304,   305,   306,   307,   308,   309,   310,   311,
+       0,     0,     0,     0,     0,   312,   298,   299,   300,   301,
+     302,   873,   303,   304,   305,   306,   307,   308,   309,   310,
+     311,     0,     0,     0,     0,     0,   312,   298,   299,   300,
+     301,   302,   996,   303,   304,   305,   306,   307,   308,   309,
+     310,   311,     0,     0,     0,     0,     0,   312,   298,   299,
+     300,   301,   302,   997,   303,   304,   305,   306,   307,   308,
+     309,   310,   311,     0,     0,     0,     0,     0,   312,   298,
+     299,   300,   301,   302,  1011,   303,   304,   305,   306,   307,
+     308,   309,   310,   311,     0,     0,     0,     0,     0,   312,
+     298,   299,   300,   301,   302,  1012,   303,   304,   305,   306,
+     307,   308,   309,   310,   311,     0,     0,     0,     0,     0,
+     312,   298,   299,   300,   301,   302,  1043,   303,   304,   305,
+     306,   307,   308,   309,   310,   311,     0,     0,     0,     0,
+       0,   312,   298,   299,   300,   301,   302,  1044,   303,   304,
+     305,   306,   307,   308,   309,   310,   311,     0,     0,     0,
+       0,     0,   312,   298,   299,   300,   301,   302,  1045,   303,
+     304,   305,   306,   307,   308,   309,   310,   311,     0,     0,
+       0,     0,     0,   312,   298,   299,   300,   301,   302,  1046,
+     303,   304,   305,   306,   307,   308,   309,   310,   311,     0,
+       0,     0,     0,     0,   312,   298,   299,   300,   301,   302,
+    1047,   303,   304,   305,   306,   307,   308,   309,   310,   311,
+       0,     0,     0,     0,     0,   312,   298,   299,   300,   301,
+     302,  1048,   303,   304,   305,   306,   307,   308,   309,   310,
+     311,     0,     0,     0,     0,     0,   312,   298,   299,   300,
+     301,   302,  1049,   303,   304,   305,   306,   307,   308,   309,
+     310,   311,     0,     0,     0,     0,     0,   312,   298,   299,
+     300,   301,   302,  1050,   303,   304,   305,   306,   307,   308,
+     309,   310,   311,     0,     0,     0,     0,     0,   312,   298,
+     299,   300,   301,   302,  1051,   303,   304,   305,   306,   307,
+     308,   309,   310,   311,     0,     0,     0,     0,     0,   312,
+     298,   299,   300,   301,   302,  1052,   303,   304,   305,   306,
+     307,   308,   309,   310,   311,     0,     0,     0,     0,     0,
+     312,   298,   299,   300,   301,   302,  1053,   303,   304,   305,
+     306,   307,   308,   309,   310,   311,     0,     0,     0,     0,
+       0,   312,   298,   299,   300,   301,   302,  1054,   303,   304,
+     305,   306,   307,   308,   309,   310,   311,     0,     0,     0,
+       0,     0,   312,   298,   299,   300,   301,   302,  1055,   303,
+     304,   305,   306,   307,   308,   309,   310,   311,     0,     0,
+       0,     0,     0,   312,   298,   299,   300,   301,   302,  1056,
+     303,   304,   305,   306,   307,   308,   309,   310,   311,     0,
+       0,     0,     0,     0,   312,   298,   299,   300,   301,   302,
+    1072,   303,   304,   305,   306,   307,   308,   309,   310,   311,
+       0,     0,     0,     0,     0,   312,   298,   299,   300,   301,
+     302,  1185,   303,   304,   305,   306,   307,   308,   309,   310,
+     311,     0,     0,     0,     0,     0,   312,   298,   299,   300,
+     301,   302,  1186,   303,   304,   305,   306,   307,   308,   309,
+     310,   311,     0,     0,     0,     0,     0,   312,   298,   299,
+     300,   301,   302,  1195,   303,   304,   305,   306,   307,   308,
+     309,   310,   311,     0,     0,     0,     0,     0,   312,   298,
+     299,   300,   301,   302,  1198,   303,   304,   305,   306,   307,
+     308,   309,   310,   311,     0,     0,     0,     0,     0,   312,
+     298,   299,   300,   301,   302,  1209,   303,   304,   305,   306,
+     307,   308,   309,   310,   311,     0,     0,     0,     0,     0,
+     312,   298,   299,   300,   301,   302,  1214,   303,   304,   305,
+     306,   307,   308,   309,   310,   311,     0,     0,     0,     0,
+       0,   312,   298,   299,   300,   301,   302,  1217,   303,   304,
+     305,   306,   307,   308,   309,   310,   311,     0,     0,     0,
+       0,     0,   312,   298,   299,   300,   301,   302,  1219,   303,
+     304,   305,   306,   307,   308,   309,   310,   311,     0,     0,
+       0,     0,     0,   312,   298,   299,   300,   301,   302,  1220,
+     303,   304,   305,   306,   307,   308,   309,   310,   311,     0,
+       0,     0,     0,     0,   312,   298,   299,   300,   301,   302,
+    1221,   303,   304,   305,   306,   307,   308,   309,   310,   311,
+       0,     0,     0,     0,     0,   312,   298,   299,   300,   301,
+     302,  1222,   303,   304,   305,   306,   307,   308,   309,   310,
+     311,     0,     0,     0,     0,     0,   312,   298,   299,   300,
+     301,   302,  1223,   303,   304,   305,   306,   307,   308,   309,
+     310,   311,     0,     0,     0,     0,     0,   312,   298,   299,
+     300,   301,   302,  1224,   303,   304,   305,   306,   307,   308,
+     309,   310,   311,     0,     0,     0,     0,     0,   312,   298,
+     299,   300,   301,   302,  1225,   303,   304,   305,   306,   307,
+     308,   309,   310,   311,     0,     0,     0,     0,     0,   312,
+     298,   299,   300,   301,   302,  1226,   303,   304,   305,   306,
+     307,   308,   309,   310,   311,     0,     0,     0,     0,     0,
+     312,   298,   299,   300,   301,   302,  1227,   303,   304,   305,
+     306,   307,   308,   309,   310,   311,     0,     0,     0,     0,
+       0,   312,   298,   299,   300,   301,   302,  1228,   303,   304,
+     305,   306,   307,   308,   309,   310,   311,     0,     0,     0,
+       0,     0,   312,   298,   299,   300,   301,   302,  1229,   303,
+     304,   305,   306,   307,   308,   309,   310,   311,     0,     0,
+       0,     0,     0,   312,   298,   299,   300,   301,   302,  1230,
+     303,   304,   305,   306,   307,   308,   309,   310,   311,     0,
+       0,     0,     0,     0,   312,   298,   299,   300,   301,   302,
+    1231,   303,   304,   305,   306,   307,   308,   309,   310,   311,
+       0,     0,     0,     0,     0,   312,   298,   299,   300,   301,
+     302,  1232,   303,   304,   305,   306,   307,   308,   309,   310,
+     311,     0,     0,     0,     0,     0,   312,   298,   299,   300,
+     301,   302,  1236,   303,   304,   305,   306,   307,   308,   309,
+     310,   311,     0,     0,     0,     0,     0,   312,   298,   299,
+     300,   301,   302,  1326,   303,   304,   305,   306,   307,   308,
+     309,   310,   311,     0,     0,     0,     0,     0,   312,   298,
+     299,   300,   301,   302,  1335,   303,   304,   305,   306,   307,
+     308,   309,   310,   311,     0,     0,     0,     0,     0,   312,
+     298,   299,   300,   301,   302,  1336,   303,   304,   305,   306,
+     307,   308,   309,   310,   311,     0,     0,     0,     0,     0,
+     312,   298,   299,   300,   301,   302,  1337,   303,   304,   305,
+     306,   307,   308,   309,   310,   311,     0,     0,     0,     0,
+       0,   312,   298,   299,   300,   301,   302,  1338,   303,   304,
+     305,   306,   307,   308,   309,   310,   311,     0,     0,     0,
+       0,     0,   312,   298,   299,   300,   301,   302,  1339,   303,
+     304,   305,   306,   307,   308,   309,   310,   311,     0,     0,
+       0,     0,     0,   312,   298,   299,   300,   301,   302,  1340,
+     303,   304,   305,   306,   307,   308,   309,   310,   311,     0,
+       0,     0,     0,     0,   312,   298,   299,   300,   301,   302,
+    1341,   303,   304,   305,   306,   307,   308,   309,   310,   311,
+       0,     0,     0,     0,     0,   312,   298,   299,   300,   301,
+     302,  1342,   303,   304,   305,   306,   307,   308,   309,   310,
+     311,     0,     0,     0,     0,     0,   312,   298,   299,   300,
+     301,   302,  1343,   303,   304,   305,   306,   307,   308,   309,
+     310,   311,     0,     0,     0,     0,     0,   312,   298,   299,
+     300,   301,   302,  1348,   303,   304,   305,   306,   307,   308,
+     309,   310,   311,     0,     0,     0,     0,     0,   312,   298,
+     299,   300,   301,   302,  1410,   303,   304,   305,   306,   307,
+     308,   309,   310,   311,     0,     0,     0,     0,     0,   312,
+     298,   299,   300,   301,   302,  1411,   303,   304,   305,   306,
+     307,   308,   309,   310,   311,     0,     0,     0,     0,     0,
+     312,   298,   299,   300,   301,   302,  1412,   303,   304,   305,
+     306,   307,   308,   309,   310,   311,     0,     0,     0,     0,
+       0,   312,   298,   299,   300,   301,   302,  1413,   303,   304,
+     305,   306,   307,   308,   309,   310,   311,     0,     0,     0,
+       0,     0,   312,   298,   299,   300,   301,   302,  1414,   303,
+     304,   305,   306,   307,   308,   309,   310,   311,     0,     0,
+       0,     0,     0,   312,   298,   299,   300,   301,   302,  1415,
+     303,   304,   305,   306,   307,   308,   309,   310,   311,     0,
+       0,     0,     0,     0,   312,   298,   299,   300,   301,   302,
+    1416,   303,   304,   305,   306,   307,   308,   309,   310,   311,
+       0,     0,     0,     0,     0,   312,   298,   299,   300,   301,
+     302,  1417,   303,   304,   305,   306,   307,   308,   309,   310,
+     311,     0,     0,     0,     0,     0,   312,   298,   299,   300,
+     301,   302,  1418,   303,   304,   305,   306,   307,   308,   309,
+     310,   311,     0,     0,     0,     0,     0,   312,   298,   299,
+     300,   301,   302,  1474,   303,   304,   305,   306,   307,   308,
+     309,   310,   311,     0,     0,     0,     0,     0,   312,   298,
+     299,   300,   301,   302,  1475,   303,   304,   305,   306,   307,
+     308,   309,   310,   311,     0,     0,     0,     0,     0,   312,
+     298,   299,   300,   301,   302,  1476,   303,   304,   305,   306,
+     307,   308,   309,   310,   311,     0,     0,     0,     0,     0,
+     312,   298,   299,   300,   301,   302,  1477,   303,   304,   305,
+     306,   307,   308,   309,   310,   311,     0,     0,     0,     0,
+       0,   312,   298,   299,   300,   301,   302,  1478,   303,   304,
+     305,   306,   307,   308,   309,   310,   311,     0,     0,     0,
+       0,     0,   312,   298,   299,   300,   301,   302,  1479,   303,
+     304,   305,   306,   307,   308,   309,   310,   311,     0,     0,
+       0,     0,     0,   312,   298,   299,   300,   301,   302,  1480,
+     303,   304,   305,   306,   307,   308,   309,   310,   311,     0,
+       0,     0,     0,     0,   312,   298,   299,   300,   301,   302,
+    1481,   303,   304,   305,   306,   307,   308,   309,   310,   311,
+       0,     0,     0,     0,     0,   312,   298,   299,   300,   301,
+     302,  1482,   303,   304,   305,   306,   307,   308,   309,   310,
+     311,     0,     0,     0,     0,     0,   312,   298,   299,   300,
+     301,   302,  1530,   303,   304,   305,   306,   307,   308,   309,
+     310,   311,     0,     0,     0,     0,     0,   312,   298,   299,
+     300,   301,   302,  1534,   303,   304,   305,   306,   307,   308,
+     309,   310,   311,     0,     0,     0,     0,     0,   312,   298,
+     299,   300,   301,   302,  1535,   303,   304,   305,   306,   307,
+     308,   309,   310,   311,     0,     0,     0,     0,     0,   312,
+     298,   299,   300,   301,   302,  1536,   303,   304,   305,   306,
+     307,   308,   309,   310,   311,     0,     0,     0,     0,     0,
+     312,   298,   299,   300,   301,   302,  1537,   303,   304,   305,
+     306,   307,   308,   309,   310,   311,     0,     0,     0,     0,
+       0,   312,   298,   299,   300,   301,   302,  1538,   303,   304,
+     305,   306,   307,   308,   309,   310,   311,     0,     0,     0,
+       0,     0,   312,   298,   299,   300,   301,   302,  1539,   303,
+     304,   305,   306,   307,   308,   309,   310,   311,     0,     0,
+       0,     0,     0,   312,   298,   299,   300,   301,   302,  1564,
+     303,   304,   305,   306,   307,   308,   309,   310,   311,     0,
+       0,     0,     0,     0,   312,   298,   299,   300,   301,   302,
+    1569,   303,   304,   305,   306,   307,   308,   309,   310,   311,
+       0,     0,     0,     0,     0,   312,   298,   299,   300,   301,
+     302,  1570,   303,   304,   305,   306,   307,   308,   309,   310,
+     311,     0,     0,     0,     0,     0,   312,   298,   299,   300,
+     301,   302,  1571,   303,   304,   305,   306,   307,   308,   309,
+     310,   311,     0,     0,     0,     0,     0,   312,   298,   299,
+     300,   301,   302,  1572,   303,   304,   305,   306,   307,   308,
+     309,   310,   311,     0,     0,     0,     0,     0,   312,   298,
+     299,   300,   301,   302,  1573,   303,   304,   305,   306,   307,
+     308,   309,   310,   311,     0,     0,     0,     0,     0,   312,
+     298,   299,   300,   301,   302,  1574,   303,   304,   305,   306,
+     307,   308,   309,   310,   311,     0,     0,     0,     0,     0,
+     312,   298,   299,   300,   301,   302,  1597,   303,   304,   305,
+     306,   307,   308,   309,   310,   311,     0,     0,     0,     0,
+       0,   312,   298,   299,   300,   301,   302,  1598,   303,   304,
+     305,   306,   307,   308,   309,   310,   311,     0,     0,     0,
+       0,     0,   312,   298,   299,   300,   301,   302,  1599,   303,
+     304,   305,   306,   307,   308,   309,   310,   311,     0,     0,
+       0,     0,     0,   312,   298,   299,   300,   301,   302,  1600,
+     303,   304,   305,   306,   307,   308,   309,   310,   311,     0,
+       0,     0,     0,     0,   312,   298,   299,   300,   301,   302,
+    1601,   303,   304,   305,   306,   307,   308,   309,   310,   311,
+       0,     0,     0,     0,     0,   312,   298,   299,   300,   301,
+     302,  1602,   303,   304,   305,   306,   307,   308,   309,   310,
+     311,     0,     0,     0,     0,     0,   312,   298,   299,   300,
+     301,   302,  1625,   303,   304,   305,   306,   307,   308,   309,
+     310,   311,     0,     0,     0,     0,     0,   312,   298,   299,
+     300,   301,   302,  1626,   303,   304,   305,   306,   307,   308,
+     309,   310,   311,     0,     0,     0,     0,     0,   312,   298,
+     299,   300,   301,   302,  1627,   303,   304,   305,   306,   307,
+     308,   309,   310,   311,     0,     0,     0,     0,     0,   312,
+     298,   299,   300,   301,   302,  1639,   303,   304,   305,   306,
+     307,   308,   309,   310,   311,     0,     0,     0,     0,     0,
+     312,   298,   299,   300,   301,   302,  1640,   303,   304,   305,
+     306,   307,   308,   309,   310,   311,     0,     0,     0,     0,
+       0,   312,   298,   299,   300,   301,   302,  1641,   303,   304,
+     305,   306,   307,   308,   309,   310,   311,     0,     0,     0,
+       0,     0,   312,   298,   299,   300,   301,   302,  1656,   303,
+     304,   305,   306,   307,   308,   309,   310,   311,     0,     0,
+       0,     0,     0,   312,   298,   299,   300,   301,   302,  1657,
+     303,   304,   305,   306,   307,   308,   309,   310,   311,     0,
+       0,     0,     0,     0,   312,   298,   299,   300,   301,   302,
+    1658,   303,   304,   305,   306,   307,   308,   309,   310,   311,
+       0,     0,     0,     0,     0,   312,     0,     0,     0,   468,
+     298,   299,   300,   301,   302,     0,   303,   304,   305,   306,
+     307,   308,   309,   310,   311,     0,     0,     0,     0,     0,
+     312,     0,     0,     0,   592,   298,   299,   300,   301,   302,
+       0,   303,   304,   305,   306,   307,   308,   309,   310,   311,
+       0,     0,     0,     0,     0,   312,     0,     0,     0,   625,
+     298,   299,   300,   301,   302,     0,   303,   304,   305,   306,
+     307,   308,   309,   310,   311,     0,     0,     0,     0,     0,
+     312,     0,     0,     0,   627,   298,   299,   300,   301,   302,
+       0,   303,   304,   305,   306,   307,   308,   309,   310,   311,
+       0,     0,     0,     0,     0,   312,     0,     0,     0,   629,
+     298,   299,   300,   301,   302,     0,   303,   304,   305,   306,
+     307,   308,   309,   310,   311,     0,     0,     0,     0,     0,
+     312,     0,     0,     0,   631,   298,   299,   300,   301,   302,
+       0,   303,   304,   305,   306,   307,   308,   309,   310,   311,
+       0,     0,     0,     0,     0,   312,     0,     0,     0,   633,
+     298,   299,   300,   301,   302,     0,   303,   304,   305,   306,
+     307,   308,   309,   310,   311,     0,     0,     0,     0,     0,
+     312,     0,     0,     0,   635,   298,   299,   300,   301,   302,
+       0,   303,   304,   305,   306,   307,   308,   309,   310,   311,
+       0,     0,     0,     0,     0,   312,     0,     0,     0,   637,
+     298,   299,   300,   301,   302,     0,   303,   304,   305,   306,
+     307,   308,   309,   310,   311,     0,     0,     0,     0,     0,
+     312,     0,     0,     0,   639,   298,   299,   300,   301,   302,
+       0,   303,   304,   305,   306,   307,   308,   309,   310,   311,
+       0,     0,     0,     0,     0,   312,     0,     0,     0,   641,
+     298,   299,   300,   301,   302,     0,   303,   304,   305,   306,
+     307,   308,   309,   310,   311,     0,     0,     0,     0,     0,
+     312,     0,     0,     0,   643,   298,   299,   300,   301,   302,
+       0,   303,   304,   305,   306,   307,   308,   309,   310,   311,
+       0,     0,     0,     0,     0,   312,     0,     0,     0,   645,
+     298,   299,   300,   301,   302,     0,   303,   304,   305,   306,
+     307,   308,   309,   310,   311,     0,     0,     0,     0,     0,
+     312,     0,     0,     0,   649,   298,   299,   300,   301,   302,
+       0,   303,   304,   305,   306,   307,   308,   309,   310,   311,
+       0,     0,     0,     0,     0,   312,     0,     0,     0,   651,
+     298,   299,   300,   301,   302,     0,   303,   304,   305,   306,
+     307,   308,   309,   310,   311,     0,     0,     0,     0,     0,
+     312,     0,     0,     0,   653,   298,   299,   300,   301,   302,
+       0,   303,   304,   305,   306,   307,   308,   309,   310,   311,
+       0,     0,     0,     0,     0,   312,     0,     0,     0,   655,
+     298,   299,   300,   301,   302,     0,   303,   304,   305,   306,
+     307,   308,   309,   310,   311,     0,     0,     0,     0,     0,
+     312,     0,     0,     0,   657,   298,   299,   300,   301,   302,
+       0,   303,   304,   305,   306,   307,   308,   309,   310,   311,
+       0,     0,     0,     0,     0,   312,     0,     0,     0,   659,
+     298,   299,   300,   301,   302,     0,   303,   304,   305,   306,
+     307,   308,   309,   310,   311,     0,     0,     0,     0,     0,
+     312,     0,     0,     0,   729,   298,   299,   300,   301,   302,
+       0,   303,   304,   305,   306,   307,   308,   309,   310,   311,
+       0,     0,     0,     0,     0,   312,     0,     0,     0,   933,
+     298,   299,   300,   301,   302,     0,   303,   304,   305,   306,
+     307,   308,   309,   310,   311,     0,     0,     0,     0,     0,
+     312,     0,     0,     0,   935,   298,   299,   300,   301,   302,
+       0,   303,   304,   305,   306,   307,   308,   309,   310,   311,
+       0,     0,     0,     0,     0,   312,     0,     0,     0,   937,
+     298,   299,   300,   301,   302,     0,   303,   304,   305,   306,
+     307,   308,   309,   310,   311,     0,     0,     0,     0,     0,
+     312,     0,     0,     0,   939,   298,   299,   300,   301,   302,
+       0,   303,   304,   305,   306,   307,   308,   309,   310,   311,
+       0,     0,     0,     0,     0,   312,     0,     0,     0,   940,
+     298,   299,   300,   301,   302,     0,   303,   304,   305,   306,
+     307,   308,   309,   310,   311,     0,     0,     0,     0,     0,
+     312,     0,     0,     0,  1065,   298,   299,   300,   301,   302,
+       0,   303,   304,   305,   306,   307,   308,   309,   310,   311,
+       0,     0,     0,     0,     0,   312,     0,   462,   298,   299,
+     300,   301,   302,     0,   303,   304,   305,   306,   307,   308,
+     309,   310,   311,     0,     0,     0,     0,     0,   312,     0,
+     492,   298,   299,   300,   301,   302,     0,   303,   304,   305,
+     306,   307,   308,   309,   310,   311,     0,     0,     0,     0,
+       0,   312,     0,   493,   298,   299,   300,   301,   302,     0,
+     303,   304,   305,   306,   307,   308,   309,   310,   311,     0,
+       0,     0,     0,     0,   312,     0,   494,   298,   299,   300,
+     301,   302,     0,   303,   304,   305,   306,   307,   308,   309,
+     310,   311,     0,     0,     0,     0,     0,   312,     0,   496,
+     298,   299,   300,   301,   302,     0,   303,   304,   305,   306,
+     307,   308,   309,   310,   311,     0,     0,     0,     0,     0,
+     312,     0,   498,   298,   299,   300,   301,   302,     0,   303,
+     304,   305,   306,   307,   308,   309,   310,   311,     0,     0,
+       0,     0,     0,   312,     0,   499,   298,   299,   300,   301,
+     302,     0,   303,   304,   305,   306,   307,   308,   309,   310,
+     311,     0,     0,     0,     0,     0,   312,     0,   506,   298,
+     299,   300,   301,   302,     0,   303,   304,   305,   306,   307,
+     308,   309,   310,   311,     0,     0,     0,     0,     0,   312,
+       0,   544,   298,   299,   300,   301,   302,     0,   303,   304,
+     305,   306,   307,   308,   309,   310,   311,     0,     0,     0,
+       0,     0,   312,     0,   545,   298,   299,   300,   301,   302,
+       0,   303,   304,   305,   306,   307,   308,   309,   310,   311,
+       0,     0,     0,     0,     0,   312,     0,   548,   298,   299,
+     300,   301,   302,     0,   303,   304,   305,   306,   307,   308,
+     309,   310,   311,     0,     0,     0,     0,     0,   312,     0,
+     554,   298,   299,   300,   301,   302,     0,   303,   304,   305,
+     306,   307,   308,   309,   310,   311,     0,     0,     0,     0,
+       0,   312,     0,   624,   298,   299,   300,   301,   302,     0,
+     303,   304,   305,   306,   307,   308,   309,   310,   311,     0,
+       0,     0,     0,     0,   312,     0,   626,   298,   299,   300,
+     301,   302,     0,   303,   304,   305,   306,   307,   308,   309,
+     310,   311,     0,     0,     0,     0,     0,   312,     0,   628,
+     298,   299,   300,   301,   302,     0,   303,   304,   305,   306,
+     307,   308,   309,   310,   311,     0,     0,     0,     0,     0,
+     312,     0,   630,   298,   299,   300,   301,   302,     0,   303,
+     304,   305,   306,   307,   308,   309,   310,   311,     0,     0,
+       0,     0,     0,   312,     0,   632,   298,   299,   300,   301,
+     302,     0,   303,   304,   305,   306,   307,   308,   309,   310,
+     311,     0,     0,     0,     0,     0,   312,     0,   634,   298,
+     299,   300,   301,   302,     0,   303,   304,   305,   306,   307,
+     308,   309,   310,   311,     0,     0,     0,     0,     0,   312,
+       0,   636,   298,   299,   300,   301,   302,     0,   303,   304,
+     305,   306,   307,   308,   309,   310,   311,     0,     0,     0,
+       0,     0,   312,     0,   638,   298,   299,   300,   301,   302,
+       0,   303,   304,   305,   306,   307,   308,   309,   310,   311,
+       0,     0,     0,     0,     0,   312,     0,   640,   298,   299,
+     300,   301,   302,     0,   303,   304,   305,   306,   307,   308,
+     309,   310,   311,     0,     0,     0,     0,     0,   312,     0,
+     642,   298,   299,   300,   301,   302,     0,   303,   304,   305,
+     306,   307,   308,   309,   310,   311,     0,     0,     0,     0,
+       0,   312,     0,   644,   298,   299,   300,   301,   302,     0,
+     303,   304,   305,   306,   307,   308,   309,   310,   311,     0,
+       0,     0,     0,     0,   312,     0,   648,   298,   299,   300,
+     301,   302,     0,   303,   304,   305,   306,   307,   308,   309,
+     310,   311,     0,     0,     0,     0,     0,   312,     0,   650,
+     298,   299,   300,   301,   302,     0,   303,   304,   305,   306,
+     307,   308,   309,   310,   311,     0,     0,     0,     0,     0,
+     312,     0,   652,   298,   299,   300,   301,   302,     0,   303,
+     304,   305,   306,   307,   308,   309,   310,   311,     0,     0,
+       0,     0,     0,   312,     0,   654,   298,   299,   300,   301,
+     302,     0,   303,   304,   305,   306,   307,   308,   309,   310,
+     311,     0,     0,     0,     0,     0,   312,     0,   656,   298,
+     299,   300,   301,   302,     0,   303,   304,   305,   306,   307,
+     308,   309,   310,   311,     0,     0,     0,     0,     0,   312,
+       0,   658,   298,   299,   300,   301,   302,     0,   303,   304,
+     305,   306,   307,   308,   309,   310,   311,     0,     0,     0,
+       0,     0,   312,     0,   691,   298,   299,   300,   301,   302,
+       0,   303,   304,   305,   306,   307,   308,   309,   310,   311,
+       0,     0,     0,     0,     0,   312,     0,   693,   298,   299,
+     300,   301,   302,     0,   303,   304,   305,   306,   307,   308,
+     309,   310,   311,     0,     0,     0,     0,     0,   312,     0,
+     705,   298,   299,   300,   301,   302,     0,   303,   304,   305,
+     306,   307,   308,   309,   310,   311,     0,     0,     0,     0,
+       0,   312,     0,   706,   298,   299,   300,   301,   302,     0,
+     303,   304,   305,   306,   307,   308,   309,   310,   311,     0,
+       0,     0,     0,     0,   312,     0,   710,   298,   299,   300,
+     301,   302,     0,   303,   304,   305,   306,   307,   308,   309,
+     310,   311,     0,     0,     0,     0,     0,   312,     0,   711,
+     298,   299,   300,   301,   302,     0,   303,   304,   305,   306,
+     307,   308,   309,   310,   311,     0,     0,     0,     0,     0,
+     312,     0,   712,   298,   299,   300,   301,   302,     0,   303,
+     304,   305,   306,   307,   308,   309,   310,   311,     0,     0,
+       0,     0,     0,   312,     0,   713,   298,   299,   300,   301,
+     302,     0,   303,   304,   305,   306,   307,   308,   309,   310,
+     311,     0,     0,     0,     0,     0,   312,     0,   714,   298,
+     299,   300,   301,   302,     0,   303,   304,   305,   306,   307,
+     308,   309,   310,   311,     0,     0,     0,     0,     0,   312,
+       0,   735,   298,   299,   300,   301,   302,     0,   303,   304,
+     305,   306,   307,   308,   309,   310,   311,     0,     0,     0,
+       0,     0,   312,     0,   742,   298,   299,   300,   301,   302,
+       0,   303,   304,   305,   306,   307,   308,   309,   310,   311,
+       0,     0,     0,     0,     0,   312,     0,   932,   298,   299,
+     300,   301,   302,     0,   303,   304,   305,   306,   307,   308,
+     309,   310,   311,     0,     0,     0,     0,     0,   312,     0,
+     934,   298,   299,   300,   301,   302,     0,   303,   304,   305,
+     306,   307,   308,   309,   310,   311,     0,     0,     0,     0,
+       0,   312,     0,   936,   298,   299,   300,   301,   302,     0,
+     303,   304,   305,   306,   307,   308,   309,   310,   311,     0,
+       0,     0,     0,     0,   312,     0,   938,   298,   299,   300,
+     301,   302,     0,   303,   304,   305,   306,   307,   308,   309,
+     310,   311,     0,     0,     0,     0,     0,   312,     0,  1000,
+     298,   299,   300,   301,   302,     0,   303,   304,   305,   306,
+     307,   308,   309,   310,   311,     0,     0,     0,     0,     0,
+     312,     0,  1088,   298,   299,   300,   301,   302,     0,   303,
+     304,   305,   306,   307,   308,   309,   310,   311,     0,     0,
+       0,     0,     0,   312,     0,  1115,   298,   299,   300,   301,
+     302,     0,   303,   304,   305,   306,   307,   308,   309,   310,
+     311,     0,     0,     0,     0,     0,   312,     0,  1204,   298,
+     299,   300,   301,   302,     0,   303,   304,   305,   306,   307,
+     308,   309,   310,   311,     0,     0,     0,     0,     0,   312,
+       0,  1208,   298,   299,   300,   301,   302,     0,   303,   304,
+     305,   306,   307,   308,   309,   310,   311,     0,     0,     0,
+       0,     0,   312,     0,  1210,   298,   299,   300,   301,   302,
+       0,   303,   304,   305,   306,   307,   308,   309,   310,   311,
+       0,     0,     0,     0,     0,   312,     0,  1329,   298,   299,
+     300,   301,   302,     0,   303,   304,   305,   306,   307,   308,
+     309,   310,   311,     0,     0,     0,     0,     0,   312,     0,
+    1331,   298,   299,   300,   301,   302,     0,   303,   304,   305,
+     306,   307,   308,   309,   310,   311,     0,     0,     0,     0,
+       0,   312,     0,  1333,   298,   299,   300,   301,   302,     0,
+     303,   304,   305,   306,   307,   308,   309,   310,   311,     0,
+       0,     0,     0,     0,   312,     0,  1344,   298,   299,   300,
+     301,   302,     0,   303,   304,   305,   306,   307,   308,   309,
+     310,   311,     0,     0,     0,     0,     0,   312,     0,  1345,
+     298,   299,   300,   301,   302,     0,   303,   304,   305,   306,
+     307,   308,   309,   310,   311,     0,     0,     0,     0,     0,
+     312,     0,  1346,   298,   299,   300,   301,   302,     0,   303,
+     304,   305,   306,   307,   308,   309,   310,   311,     0,     0,
+       0,     0,     0,   312,     0,  1347,   298,   299,   300,   301,
+     302,     0,   303,   304,   305,   306,   307,   308,   309,   310,
+     311,     0,     0,     0,     0,     0,   312,     0,  1423,   298,
+     299,   300,   301,   302,     0,   303,   304,   305,   306,   307,
+     308,   309,   310,   311,     0,     0,     0,     0,     0,   312,
+       0,  1540,   298,   299,   300,   301,   302,     0,   303,   304,
+     305,   306,   307,   308,   309,   310,   311,     0,     0,     0,
+       0,     0,   312,     0,  1541,   298,   299,   300,   301,   302,
+       0,   303,   304,   305,   306,   307,   308,   309,   310,   311,
+       0,     0,     0,     0,     0,   312,     0,  1542,   298,   299,
+     300,   301,   302,     0,   303,   304,   305,   306,   307,   308,
+     309,   310,   311,     0,     0,     0,     0,     0,   312,     0,
+    1628,   298,   299,   300,   301,   302,     0,   303,   304,   305,
+     306,   307,   308,   309,   310,   311,     0,     0,     0,     0,
+       0,   312,     0,  1629,   298,   299,   300,   301,   302,     0,
+     303,   304,   305,   306,   307,   308,   309,   310,   311,     0,
+       0,     0,     0,     0,   312,     0,  1630,   298,   299,   300,
+     301,   302,     0,   303,   304,   305,   306,   307,   308,   309,
+     310,   311,     0,     0,     0,     0,     0,   312,     0,  1676,
+     298,   299,   300,   301,   302,     0,   303,   304,   305,   306,
+     307,   308,   309,   310,   311,     0,     0,     0,     0,     0,
+     312,     0,  1677,   298,   299,   300,   301,   302,     0,   303,
+     304,   305,   306,   307,   308,   309,   310,   311,     0,     0,
+       0,     0,     0,   312,     0,  1678
 };
 
-static const short yycheck[] = {    23,
-    90,   290,   292,    23,   176,     4,     4,   350,   180,   325,
-     4,    82,     3,   282,   283,   284,    42,     4,     4,   683,
-    64,    64,  1249,    65,    65,    65,  1253,     6,    70,    70,
-    70,    64,     7,    65,     6,    65,   325,    89,    70,     6,
-    70,  1105,   182,     4,    65,     5,   182,     4,   188,    70,
-     4,     5,   188,   182,   152,   184,   171,   172,  1184,    71,
-    72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
-    82,    83,    84,   188,    34,    35,    36,    49,   171,   172,
-    34,    35,    36,  1018,   171,   172,    38,   178,   179,    41,
-   171,   172,  1027,   184,   187,   186,   189,   171,   172,  1034,
-   187,   182,   189,   127,   128,   129,   183,   188,   132,   133,
-   187,   135,    65,   187,     7,   189,   103,    70,   142,   143,
-   144,   182,   146,   184,   148,   149,   182,   151,   184,   200,
-   182,    92,    93,   183,  1198,    92,    93,   187,   182,   182,
-    43,    44,     6,   167,   168,   188,     6,   189,   189,   189,
-   178,   179,     7,     6,   818,   188,   182,   189,   186,   189,
-     6,   185,   186,   182,   188,   184,   190,     7,   189,   193,
-   194,   171,   172,    41,    42,   491,    44,   189,   468,   171,
-   172,   172,   157,   158,   159,   160,   502,   183,   188,   188,
-   188,   187,   171,   172,   188,   187,   182,   369,     6,  1426,
-   469,   188,   491,  1430,   171,   172,   183,   173,   174,   175,
-   187,   235,   182,   502,   184,   181,   240,   241,   242,   243,
-   244,   245,   246,   247,   248,   249,   250,   251,   252,   253,
-   254,   255,   256,   257,   258,   259,   260,   261,   262,   263,
-   264,   265,   266,   267,   268,   269,   270,   271,   272,   273,
-   274,   275,   276,   277,   278,   279,   280,   281,   183,     6,
-     7,   164,   187,   166,  1199,     6,   290,  1494,  1203,   172,
-  1396,  1498,   292,  1399,   298,   299,   300,   301,   302,   303,
-   304,   305,   306,   307,   308,   309,   310,   311,   312,   953,
-    64,   183,   171,   172,   318,   187,   320,   182,     8,   184,
-   324,   325,   157,   158,   159,   160,   330,   331,   332,   188,
-   334,   335,   336,   337,   338,   339,   340,   157,   158,   159,
-   160,   178,   179,   178,   179,     6,   171,   172,   352,   353,
-   354,   186,   182,   357,   184,   238,  1462,     7,   178,   179,
-  1466,   365,   187,   107,   108,   109,   110,   111,     3,     4,
-   374,    55,    56,   669,     9,    10,    11,    12,    13,    14,
-    15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-    25,    26,    27,    28,    29,    30,    31,    32,   171,   172,
-   669,   697,   171,   172,   673,   182,   171,   172,  1323,  1324,
-  1325,  1326,   412,     6,   187,  1330,   182,   184,   187,   186,
-    38,   670,   187,    41,    42,   182,     3,     4,   697,   725,
-   726,   727,     9,    10,    11,    12,    13,    14,    15,    16,
-    17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
-    27,    28,    29,    30,    31,    32,   725,   726,   727,   182,
-   464,    54,   182,   182,   347,   348,   470,   182,   468,   184,
-   182,   161,   162,   163,   164,   165,   182,   167,   168,   169,
-   170,   171,   172,   173,   174,   175,   182,   491,   184,  1404,
-  1405,   181,   187,  1408,   189,   182,   500,   184,   502,   189,
-   504,   505,     3,   171,   172,   182,   510,   157,   158,   159,
-   160,   171,   172,    46,   171,   172,   520,   521,   182,   187,
-   171,   172,    42,  1167,   182,   529,   184,   187,   178,   179,
-   187,    42,   183,   171,   172,   539,   171,   172,    42,   835,
-   810,   811,   177,   171,   172,   183,   550,   182,   552,   553,
-   185,    44,   182,   188,   184,  1470,   178,   179,   182,   187,
-   184,   182,   184,   184,   186,   182,   835,   184,   161,   162,
-   163,   164,   165,   182,   167,   168,   169,   170,   171,   172,
-   173,   174,   175,   182,   188,   184,   150,   182,   181,   184,
-   188,   155,   592,    42,   171,   172,   178,   179,   188,   182,
-   177,   184,   184,    38,   186,   182,    41,    42,   185,    44,
-   182,   188,   184,   177,   182,     6,   184,  1532,     6,   183,
-   184,   122,   123,   124,   125,   126,   127,   128,   129,   171,
-   172,   173,   174,   175,     6,     7,   519,     8,   182,   181,
-   184,   182,   646,   647,    58,    59,    60,    61,   187,    63,
-   189,   182,   187,  1568,   189,   182,   660,   661,   662,   663,
-   664,   665,   666,   986,   187,   669,   189,     6,   187,   673,
-   189,   187,   676,   189,   187,   187,   189,   189,   187,     4,
-   189,   685,     4,   167,   168,   169,   170,   171,   172,   173,
-   174,   175,    42,   697,   698,     3,   945,   181,   187,   187,
-   189,   189,   187,   182,   189,     5,   776,   164,   165,   182,
-   167,   168,   169,   170,   171,   172,   173,   174,   175,     6,
-   182,   725,   726,   727,   181,     6,   730,   731,   182,   187,
-   734,   189,   187,   982,   189,   187,     6,   189,     3,     4,
-  1655,   745,   746,     5,     9,    10,    11,    12,    13,    14,
-    15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-    25,    26,    27,    28,    29,    30,    31,    32,   187,     6,
-   189,   187,   187,   189,   189,   182,   780,   781,   782,   783,
-   784,   785,   786,   787,   788,   789,   790,   791,   792,   793,
-   161,   162,   163,   164,   165,   182,   167,   168,   169,   170,
-   171,   172,   173,   174,   175,   688,   187,   187,   189,   189,
-   181,   811,   183,   188,   187,   819,   189,   187,   187,   189,
-   189,   187,   187,   189,   189,   182,   182,   878,   188,   188,
-   182,   835,     4,   837,   182,   839,   182,   182,   182,   722,
-   723,   724,     6,    95,   184,   188,   188,   188,   186,   853,
-   854,   855,   188,     6,  1177,   182,   182,     5,   182,   182,
-     4,   182,   182,   182,   747,   182,   182,   182,   182,   873,
-   874,   875,   182,   756,   161,   162,   163,   164,   165,   182,
-   167,   168,   169,   170,   171,   172,   173,   174,   175,   182,
-   182,   182,   182,   182,   181,   183,   182,   182,   182,   463,
-   182,     7,   182,   182,   182,   182,   171,   172,   182,   182,
-   182,   182,   177,   182,   181,     6,   916,   182,     7,   187,
-   185,   187,   186,   188,   161,   162,   163,   164,   165,     7,
-   167,   168,   169,   170,   171,   172,   173,   174,   175,     7,
-   183,     7,   946,     7,   181,    90,    92,   188,    38,    39,
-    40,    41,    42,    43,    44,    45,   153,    47,  1009,    49,
-    50,     5,    52,    53,     5,     5,     5,     5,   972,   973,
-  1040,     5,     5,     5,     5,     5,     5,     5,   982,    69,
-     5,     5,     5,     5,     5,     5,     5,     5,     5,     5,
-     5,   140,   996,   997,     5,    85,    86,    87,     5,     5,
-     5,     3,     5,   187,  1008,     5,     5,  1011,     6,   183,
-     6,     4,     6,   186,   189,     7,     7,  1021,     7,     7,
-     7,     7,     7,   189,  1028,  1029,  1030,   188,   188,     7,
-     7,  1035,   182,     7,   186,  1039,   154,     5,     4,  1043,
-  1044,  1045,  1046,  1047,  1048,  1049,  1050,  1051,  1052,  1053,
-  1054,  1055,  1056,   187,   187,   187,   187,   147,   187,   187,
-   187,   187,   187,   187,   187,   187,  1117,   187,  1072,   183,
-   161,   162,   163,   164,   165,   958,   167,   168,   169,   170,
-   171,   172,   173,   174,   175,  1089,   187,   187,     6,   187,
-   181,   187,   187,   187,   187,   187,     6,     6,     6,   189,
-   187,   187,   187,   187,   987,   187,   989,  1111,   991,  1113,
-   187,    71,    72,    73,    74,    75,    76,    77,    78,    79,
-    80,    81,    82,    83,    84,   689,   690,   187,   692,   187,
-   694,   695,   187,   187,   182,   182,   182,   182,     3,     4,
-   182,     7,   185,     6,     9,    10,    11,    12,    13,    14,
-    15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-    25,    26,    27,    28,    29,    30,    31,    32,   732,   733,
-   182,   184,   736,  1422,   182,     6,  1180,  1181,   182,  1183,
-     7,  1185,  1186,     7,     7,   182,     7,   182,  1192,   753,
-   754,     7,   182,     7,     7,   759,   760,  1201,     6,   182,
-   182,   182,   766,     7,   768,  1209,     7,     7,   188,     7,
-  1214,     7,  1263,  1217,     4,  1219,  1220,  1221,  1222,  1223,
-  1224,  1225,  1226,  1227,  1228,  1229,  1230,  1231,  1232,   189,
-     6,     6,     4,     7,  1238,   150,  1240,  1241,  1242,     7,
-  1489,     3,  1491,   161,   162,   163,   164,   165,     3,   167,
-   168,   169,   170,   171,   172,   173,   174,   175,     3,   173,
-     3,     3,     3,   181,   828,     3,   830,     6,     3,     3,
-     3,  1322,     3,     3,     3,     3,   840,   841,   842,     5,
-     5,   845,   846,   847,   848,   849,   850,   851,     3,     3,
-     6,     4,   183,   183,  1543,   188,     7,  1180,  1181,   186,
-  1183,     6,  1306,     6,  1308,     6,   171,   172,     6,     6,
-  1314,     6,   177,     6,    91,   188,  1367,   182,   187,   187,
-   187,   183,   183,   188,   183,     6,     6,   187,   183,   187,
-   187,  1335,  1336,  1337,  1338,  1339,  1340,  1341,  1342,  1343,
-   187,   183,   187,   187,  1348,     4,   187,   187,   187,   187,
-   183,   187,   187,   161,   162,   163,   164,   165,  1241,   167,
-   168,   169,   170,   171,   172,   173,   174,   175,   187,   187,
-   187,   183,   187,   181,     6,     6,   187,   186,     6,   185,
-   944,     6,     6,     6,  1435,   161,   162,   163,   164,   165,
-     6,   167,   168,   169,   170,   171,   172,   173,   174,   175,
-     6,     6,     6,     6,     6,   181,  1410,  1411,  1412,  1413,
-  1414,  1415,  1416,  1417,  1418,  1419,  1420,  1421,  1469,     6,
-     6,     6,   161,   162,   163,   164,   165,     6,   167,   168,
-   169,   170,   171,   172,   173,   174,   175,     6,     6,     6,
-  1004,     6,   181,     7,    91,     3,     6,     3,  1012,     6,
-  1501,   163,   164,   165,     6,   167,   168,   169,   170,   171,
-   172,   173,   174,   175,  1468,   173,     6,  1031,     6,   181,
-  1474,  1475,  1476,  1477,  1478,  1479,  1480,  1481,  1482,  1483,
-     3,  1485,     6,  1487,     3,     6,     6,     3,     6,     3,
-     3,     3,     3,     4,   186,     4,     6,   185,     9,    10,
-    11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-    21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
-    31,    32,     6,     6,     6,  1529,  1530,     7,     6,   189,
-  1534,  1535,  1536,  1537,  1538,  1539,   161,   162,   163,   164,
-   165,    88,   167,   168,   169,   170,   171,   172,   173,   174,
-   175,   188,   188,   188,   188,    91,   181,   183,   187,    93,
-  1564,   183,   183,   183,   183,  1569,  1570,  1571,  1572,  1573,
-  1574,  1575,  1576,  1577,     6,   187,   187,   187,   187,   187,
-   187,     6,   183,   183,   150,   183,     3,     6,   187,     3,
-     6,     6,     3,  1597,  1598,  1599,  1600,  1601,  1602,  1603,
-     6,  1605,     6,  1607,   161,   162,   163,   164,   165,     6,
-   167,   168,   169,   170,   171,   172,   173,   174,   175,     6,
-     6,  1625,  1626,  1627,   181,  1189,     6,  1191,     5,   188,
-     6,  1195,     5,   187,   189,  1639,  1640,  1641,  1642,  1643,
-  1644,     6,   188,   187,   189,   187,   187,  1211,   183,     6,
-   183,   183,  1656,  1657,  1658,  1659,   187,  1661,   187,  1663,
-   171,   172,   187,     6,     6,     6,   177,     6,     6,     6,
-     6,   182,     6,     6,     6,     6,     6,   188,     6,  1683,
-  1684,  1685,   188,     6,     5,     5,   187,   187,  1692,   188,
-  1694,   189,  1696,     3,     4,   187,   187,   183,   183,     9,
-    10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
-    20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
-    30,    31,    32,   187,   187,    88,   188,     8,   188,   161,
-   162,   163,   164,   165,   188,   167,   168,   169,   170,   171,
-   172,   173,   174,   175,   188,   187,  1310,     6,     6,   181,
-     6,   150,     6,     6,  1318,  1319,     3,     4,     5,     5,
-     7,     5,     9,    10,    11,    12,    13,    14,    15,    16,
-    17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
-    27,    28,    29,    30,    31,    32,   188,    34,    35,    36,
-     8,     3,     4,     5,   188,   187,   189,     9,    10,    11,
-    12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-    22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
-    32,   188,    34,    35,    36,   187,     6,   183,   183,   188,
-     6,   189,     6,    88,  1398,     6,     6,  1401,   161,   162,
-   163,   164,   165,     6,   167,   168,   169,   170,   171,   172,
-   173,   174,   175,     6,     6,     6,     6,     6,   181,     6,
-   189,   171,   172,   188,     6,   187,   155,   177,   187,     6,
-   156,   187,   182,   187,     6,   188,   188,   188,   188,   187,
-   161,   162,   163,   164,   165,   183,   167,   168,   169,   170,
-   171,   172,   173,   174,   175,     6,     6,     6,     6,  1463,
-   181,     6,   187,   187,     6,   188,   188,  1471,   188,   187,
-   157,   158,   159,   160,   183,     6,     8,     6,     6,     6,
-   188,   188,   188,     6,   171,   172,     6,     0,     0,   594,
-   177,   178,   179,     7,    -1,   182,     7,   184,     8,   186,
-     7,  1002,    -1,   161,   162,   163,   164,   165,   949,   167,
-   168,   169,   170,   171,   172,   173,   174,   175,    -1,   171,
-   172,    -1,    -1,   181,     8,   177,     3,     4,    -1,  1533,
-   182,    -1,     9,    10,    11,    12,    13,    14,    15,    16,
-    17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
-    27,    28,    29,    30,    31,    32,    -1,    -1,     3,     4,
-    -1,    -1,    -1,  1567,     9,    10,    11,    12,    13,    14,
-    15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-    25,    26,    27,    28,    29,    30,    31,    32,     3,     4,
-    -1,  1595,    -1,    -1,     9,    10,    11,    12,    13,    14,
-    15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-    25,    26,    27,    28,    29,    30,    31,    32,    -1,    -1,
-  1624,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   161,
-   162,   163,   164,   165,  1638,   167,   168,   169,   170,   171,
-   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,
-    -1,   161,   162,   163,   164,   165,    -1,   167,   168,   169,
-   170,   171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,
-    -1,   181,    -1,    -1,    -1,    -1,    -1,   161,   162,   163,
-   164,   165,    -1,   167,   168,   169,   170,   171,   172,   173,
-   174,   175,    -1,    -1,   171,   172,    -1,   181,    -1,    -1,
-   177,    -1,    -1,    -1,    -1,   182,    -1,    -1,   161,   162,
-   163,   164,   165,    -1,   167,   168,   169,   170,   171,   172,
-   173,   174,   175,    -1,    -1,    -1,   171,   172,   181,    -1,
-   183,    -1,   177,    -1,   187,     0,     1,   182,     3,     4,
-    -1,   161,   162,   163,   164,   165,    -1,   167,   168,   169,
-   170,   171,   172,   173,   174,   175,   171,   172,    -1,    -1,
-    -1,   181,   177,    -1,    -1,    -1,    -1,   182,    33,   189,
-    -1,    -1,    37,    38,    39,    40,    41,    42,    43,    44,
-    45,    -1,    47,    48,    49,    50,    51,    52,    53,    -1,
-    -1,    -1,    57,    58,    59,    60,    61,    62,    63,    -1,
-    65,    66,    67,    68,    69,   161,   162,   163,   164,   165,
-    -1,   167,   168,   169,   170,   171,   172,   173,   174,   175,
-    85,    86,    87,    -1,    -1,   181,    -1,    92,    -1,    94,
-    -1,    96,    97,    98,    99,   100,   101,   102,    -1,    -1,
-    38,    39,    40,    41,    42,    43,    44,    45,    -1,    47,
-    -1,    49,    50,    -1,    52,    53,    -1,   122,   123,   124,
-   125,   126,   127,   128,   129,    -1,    -1,    -1,    -1,    -1,
-    -1,    69,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,   147,   148,   149,    -1,   151,    85,    86,    87,
-    38,    39,    40,    41,    42,    43,    44,    45,    -1,    47,
-    -1,    49,    50,    -1,    52,    53,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     4,
-    -1,    69,   161,   162,   163,   164,   165,    -1,   167,   168,
-   169,   170,   171,   172,   173,   174,   175,    85,    86,    87,
-    -1,    -1,   181,    -1,    -1,    -1,    -1,    -1,    33,   147,
-   189,    -1,    37,    38,    39,    40,    41,    42,    43,    44,
-    45,    -1,    47,    48,    49,    50,    51,    52,    53,    -1,
-    -1,    -1,    57,    58,    59,    60,    61,    62,    63,    41,
-    65,    66,    67,    68,    69,    -1,    -1,    -1,    -1,    -1,
-    -1,   189,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   147,
-    85,    86,    87,    -1,    -1,    -1,    -1,    92,    -1,    94,
-    -1,    96,    97,    98,    99,   100,   101,   102,    38,    39,
-    40,    41,    42,    43,    44,    45,    -1,    47,    -1,    49,
-    50,    -1,    52,    53,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,   189,   104,   105,   106,    -1,    -1,    -1,    -1,    69,
-   112,   113,   114,   115,   116,   117,   118,   119,   120,   121,
-    -1,    -1,   147,    -1,    -1,    85,    86,    87,   130,   131,
-   132,   133,   134,   135,   136,   137,   138,   139,    -1,   141,
-   142,   143,   144,   145,   146,   161,   162,   163,   164,   165,
-    -1,   167,   168,   169,   170,   171,   172,   173,   174,   175,
-    -1,    -1,    -1,    -1,    -1,   181,    -1,    -1,    -1,    -1,
-    -1,   187,    -1,   189,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,   161,   162,   163,   164,   165,   147,   167,   168,
-   169,   170,   171,   172,   173,   174,   175,    -1,    -1,    -1,
-    -1,    -1,   181,    -1,    -1,    -1,    -1,    -1,   187,    -1,
-   189,   161,   162,   163,   164,   165,    -1,   167,   168,   169,
-   170,   171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,
-    -1,   181,    -1,    -1,    -1,    -1,    -1,   187,    -1,   189,
-   161,   162,   163,   164,   165,    -1,   167,   168,   169,   170,
-   171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,
-   181,    -1,    -1,   161,   162,   163,   164,   165,   189,   167,
-   168,   169,   170,   171,   172,   173,   174,   175,    -1,    -1,
-    -1,    -1,    -1,   181,    -1,    -1,   161,   162,   163,   164,
-   165,   189,   167,   168,   169,   170,   171,   172,   173,   174,
-   175,    -1,    -1,    -1,    -1,    -1,   181,    -1,    -1,   161,
-   162,   163,   164,   165,   189,   167,   168,   169,   170,   171,
-   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,
-    -1,    -1,   161,   162,   163,   164,   165,   189,   167,   168,
-   169,   170,   171,   172,   173,   174,   175,    -1,    -1,    -1,
-    -1,    -1,   181,    -1,    -1,   161,   162,   163,   164,   165,
-   189,   167,   168,   169,   170,   171,   172,   173,   174,   175,
-    -1,    -1,    -1,    -1,    -1,   181,    -1,    -1,   161,   162,
-   163,   164,   165,   189,   167,   168,   169,   170,   171,   172,
-   173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,    -1,
-    -1,   161,   162,   163,   164,   165,   189,   167,   168,   169,
-   170,   171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,
-    -1,   181,    -1,    -1,   161,   162,   163,   164,   165,   189,
-   167,   168,   169,   170,   171,   172,   173,   174,   175,    -1,
-    -1,    -1,    -1,    -1,   181,    -1,    -1,   161,   162,   163,
-   164,   165,   189,   167,   168,   169,   170,   171,   172,   173,
-   174,   175,    -1,    -1,    -1,    -1,    -1,   181,    -1,    -1,
-   161,   162,   163,   164,   165,   189,   167,   168,   169,   170,
-   171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,
-   181,    -1,    -1,   161,   162,   163,   164,   165,   189,   167,
-   168,   169,   170,   171,   172,   173,   174,   175,    -1,    -1,
-    -1,    -1,    -1,   181,    -1,    -1,   161,   162,   163,   164,
-   165,   189,   167,   168,   169,   170,   171,   172,   173,   174,
-   175,    -1,    -1,    -1,    -1,    -1,   181,    -1,    -1,   161,
-   162,   163,   164,   165,   189,   167,   168,   169,   170,   171,
-   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,
-    -1,    -1,   161,   162,   163,   164,   165,   189,   167,   168,
-   169,   170,   171,   172,   173,   174,   175,    -1,    -1,    -1,
-    -1,    -1,   181,    -1,    -1,   161,   162,   163,   164,   165,
-   189,   167,   168,   169,   170,   171,   172,   173,   174,   175,
-    -1,    -1,    -1,    -1,    -1,   181,    -1,    -1,   161,   162,
-   163,   164,   165,   189,   167,   168,   169,   170,   171,   172,
-   173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,   161,
-   162,   163,   164,   165,   187,   167,   168,   169,   170,   171,
-   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,
-   161,   162,   163,   164,   165,   187,   167,   168,   169,   170,
-   171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,
-   181,   161,   162,   163,   164,   165,   187,   167,   168,   169,
-   170,   171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,
-    -1,   181,   161,   162,   163,   164,   165,   187,   167,   168,
-   169,   170,   171,   172,   173,   174,   175,    -1,    -1,    -1,
-    -1,    -1,   181,   161,   162,   163,   164,   165,   187,   167,
-   168,   169,   170,   171,   172,   173,   174,   175,    -1,    -1,
-    -1,    -1,    -1,   181,   161,   162,   163,   164,   165,   187,
-   167,   168,   169,   170,   171,   172,   173,   174,   175,    -1,
-    -1,    -1,    -1,    -1,   181,   161,   162,   163,   164,   165,
-   187,   167,   168,   169,   170,   171,   172,   173,   174,   175,
-    -1,    -1,    -1,    -1,    -1,   181,   161,   162,   163,   164,
-   165,   187,   167,   168,   169,   170,   171,   172,   173,   174,
-   175,    -1,    -1,    -1,    -1,    -1,   181,   161,   162,   163,
-   164,   165,   187,   167,   168,   169,   170,   171,   172,   173,
-   174,   175,    -1,    -1,    -1,    -1,    -1,   181,   161,   162,
-   163,   164,   165,   187,   167,   168,   169,   170,   171,   172,
-   173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,   161,
-   162,   163,   164,   165,   187,   167,   168,   169,   170,   171,
-   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,
-   161,   162,   163,   164,   165,   187,   167,   168,   169,   170,
-   171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,
-   181,   161,   162,   163,   164,   165,   187,   167,   168,   169,
-   170,   171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,
-    -1,   181,   161,   162,   163,   164,   165,   187,   167,   168,
-   169,   170,   171,   172,   173,   174,   175,    -1,    -1,    -1,
-    -1,    -1,   181,   161,   162,   163,   164,   165,   187,   167,
-   168,   169,   170,   171,   172,   173,   174,   175,    -1,    -1,
-    -1,    -1,    -1,   181,   161,   162,   163,   164,   165,   187,
-   167,   168,   169,   170,   171,   172,   173,   174,   175,    -1,
-    -1,    -1,    -1,    -1,   181,   161,   162,   163,   164,   165,
-   187,   167,   168,   169,   170,   171,   172,   173,   174,   175,
-    -1,    -1,    -1,    -1,    -1,   181,   161,   162,   163,   164,
-   165,   187,   167,   168,   169,   170,   171,   172,   173,   174,
-   175,    -1,    -1,    -1,    -1,    -1,   181,   161,   162,   163,
-   164,   165,   187,   167,   168,   169,   170,   171,   172,   173,
-   174,   175,    -1,    -1,    -1,    -1,    -1,   181,   161,   162,
-   163,   164,   165,   187,   167,   168,   169,   170,   171,   172,
-   173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,   161,
-   162,   163,   164,   165,   187,   167,   168,   169,   170,   171,
-   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,
-   161,   162,   163,   164,   165,   187,   167,   168,   169,   170,
-   171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,
-   181,   161,   162,   163,   164,   165,   187,   167,   168,   169,
-   170,   171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,
-    -1,   181,   161,   162,   163,   164,   165,   187,   167,   168,
-   169,   170,   171,   172,   173,   174,   175,    -1,    -1,    -1,
-    -1,    -1,   181,   161,   162,   163,   164,   165,   187,   167,
-   168,   169,   170,   171,   172,   173,   174,   175,    -1,    -1,
-    -1,    -1,    -1,   181,   161,   162,   163,   164,   165,   187,
-   167,   168,   169,   170,   171,   172,   173,   174,   175,    -1,
-    -1,    -1,    -1,    -1,   181,   161,   162,   163,   164,   165,
-   187,   167,   168,   169,   170,   171,   172,   173,   174,   175,
-    -1,    -1,    -1,    -1,    -1,   181,   161,   162,   163,   164,
-   165,   187,   167,   168,   169,   170,   171,   172,   173,   174,
-   175,    -1,    -1,    -1,    -1,    -1,   181,   161,   162,   163,
-   164,   165,   187,   167,   168,   169,   170,   171,   172,   173,
-   174,   175,    -1,    -1,    -1,    -1,    -1,   181,   161,   162,
-   163,   164,   165,   187,   167,   168,   169,   170,   171,   172,
-   173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,   161,
-   162,   163,   164,   165,   187,   167,   168,   169,   170,   171,
-   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,
-   161,   162,   163,   164,   165,   187,   167,   168,   169,   170,
-   171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,
-   181,   161,   162,   163,   164,   165,   187,   167,   168,   169,
-   170,   171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,
-    -1,   181,   161,   162,   163,   164,   165,   187,   167,   168,
-   169,   170,   171,   172,   173,   174,   175,    -1,    -1,    -1,
-    -1,    -1,   181,   161,   162,   163,   164,   165,   187,   167,
-   168,   169,   170,   171,   172,   173,   174,   175,    -1,    -1,
-    -1,    -1,    -1,   181,   161,   162,   163,   164,   165,   187,
-   167,   168,   169,   170,   171,   172,   173,   174,   175,    -1,
-    -1,    -1,    -1,    -1,   181,   161,   162,   163,   164,   165,
-   187,   167,   168,   169,   170,   171,   172,   173,   174,   175,
-    -1,    -1,    -1,    -1,    -1,   181,   161,   162,   163,   164,
-   165,   187,   167,   168,   169,   170,   171,   172,   173,   174,
-   175,    -1,    -1,    -1,    -1,    -1,   181,   161,   162,   163,
-   164,   165,   187,   167,   168,   169,   170,   171,   172,   173,
-   174,   175,    -1,    -1,    -1,    -1,    -1,   181,   161,   162,
-   163,   164,   165,   187,   167,   168,   169,   170,   171,   172,
-   173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,   161,
-   162,   163,   164,   165,   187,   167,   168,   169,   170,   171,
-   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,
-   161,   162,   163,   164,   165,   187,   167,   168,   169,   170,
-   171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,
-   181,   161,   162,   163,   164,   165,   187,   167,   168,   169,
-   170,   171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,
-    -1,   181,   161,   162,   163,   164,   165,   187,   167,   168,
-   169,   170,   171,   172,   173,   174,   175,    -1,    -1,    -1,
-    -1,    -1,   181,   161,   162,   163,   164,   165,   187,   167,
-   168,   169,   170,   171,   172,   173,   174,   175,    -1,    -1,
-    -1,    -1,    -1,   181,   161,   162,   163,   164,   165,   187,
-   167,   168,   169,   170,   171,   172,   173,   174,   175,    -1,
-    -1,    -1,    -1,    -1,   181,   161,   162,   163,   164,   165,
-   187,   167,   168,   169,   170,   171,   172,   173,   174,   175,
-    -1,    -1,    -1,    -1,    -1,   181,   161,   162,   163,   164,
-   165,   187,   167,   168,   169,   170,   171,   172,   173,   174,
-   175,    -1,    -1,    -1,    -1,    -1,   181,   161,   162,   163,
-   164,   165,   187,   167,   168,   169,   170,   171,   172,   173,
-   174,   175,    -1,    -1,    -1,    -1,    -1,   181,   161,   162,
-   163,   164,   165,   187,   167,   168,   169,   170,   171,   172,
-   173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,   161,
-   162,   163,   164,   165,   187,   167,   168,   169,   170,   171,
-   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,
-   161,   162,   163,   164,   165,   187,   167,   168,   169,   170,
-   171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,
-   181,   161,   162,   163,   164,   165,   187,   167,   168,   169,
-   170,   171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,
-    -1,   181,   161,   162,   163,   164,   165,   187,   167,   168,
-   169,   170,   171,   172,   173,   174,   175,    -1,    -1,    -1,
-    -1,    -1,   181,   161,   162,   163,   164,   165,   187,   167,
-   168,   169,   170,   171,   172,   173,   174,   175,    -1,    -1,
-    -1,    -1,    -1,   181,   161,   162,   163,   164,   165,   187,
-   167,   168,   169,   170,   171,   172,   173,   174,   175,    -1,
-    -1,    -1,    -1,    -1,   181,   161,   162,   163,   164,   165,
-   187,   167,   168,   169,   170,   171,   172,   173,   174,   175,
-    -1,    -1,    -1,    -1,    -1,   181,   161,   162,   163,   164,
-   165,   187,   167,   168,   169,   170,   171,   172,   173,   174,
-   175,    -1,    -1,    -1,    -1,    -1,   181,   161,   162,   163,
-   164,   165,   187,   167,   168,   169,   170,   171,   172,   173,
-   174,   175,    -1,    -1,    -1,    -1,    -1,   181,   161,   162,
-   163,   164,   165,   187,   167,   168,   169,   170,   171,   172,
-   173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,   161,
-   162,   163,   164,   165,   187,   167,   168,   169,   170,   171,
-   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,
-   161,   162,   163,   164,   165,   187,   167,   168,   169,   170,
-   171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,
-   181,   161,   162,   163,   164,   165,   187,   167,   168,   169,
-   170,   171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,
-    -1,   181,   161,   162,   163,   164,   165,   187,   167,   168,
-   169,   170,   171,   172,   173,   174,   175,    -1,    -1,    -1,
-    -1,    -1,   181,   161,   162,   163,   164,   165,   187,   167,
-   168,   169,   170,   171,   172,   173,   174,   175,    -1,    -1,
-    -1,    -1,    -1,   181,   161,   162,   163,   164,   165,   187,
-   167,   168,   169,   170,   171,   172,   173,   174,   175,    -1,
-    -1,    -1,    -1,    -1,   181,   161,   162,   163,   164,   165,
-   187,   167,   168,   169,   170,   171,   172,   173,   174,   175,
-    -1,    -1,    -1,    -1,    -1,   181,   161,   162,   163,   164,
-   165,   187,   167,   168,   169,   170,   171,   172,   173,   174,
-   175,    -1,    -1,    -1,    -1,    -1,   181,   161,   162,   163,
-   164,   165,   187,   167,   168,   169,   170,   171,   172,   173,
-   174,   175,    -1,    -1,    -1,    -1,    -1,   181,   161,   162,
-   163,   164,   165,   187,   167,   168,   169,   170,   171,   172,
-   173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,   161,
-   162,   163,   164,   165,   187,   167,   168,   169,   170,   171,
-   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,
-   161,   162,   163,   164,   165,   187,   167,   168,   169,   170,
-   171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,
-   181,   161,   162,   163,   164,   165,   187,   167,   168,   169,
-   170,   171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,
-    -1,   181,   161,   162,   163,   164,   165,   187,   167,   168,
-   169,   170,   171,   172,   173,   174,   175,    -1,    -1,    -1,
-    -1,    -1,   181,   161,   162,   163,   164,   165,   187,   167,
-   168,   169,   170,   171,   172,   173,   174,   175,    -1,    -1,
-    -1,    -1,    -1,   181,   161,   162,   163,   164,   165,   187,
-   167,   168,   169,   170,   171,   172,   173,   174,   175,    -1,
-    -1,    -1,    -1,    -1,   181,   161,   162,   163,   164,   165,
-   187,   167,   168,   169,   170,   171,   172,   173,   174,   175,
-    -1,    -1,    -1,    -1,    -1,   181,   161,   162,   163,   164,
-   165,   187,   167,   168,   169,   170,   171,   172,   173,   174,
-   175,    -1,    -1,    -1,    -1,    -1,   181,   161,   162,   163,
-   164,   165,   187,   167,   168,   169,   170,   171,   172,   173,
-   174,   175,    -1,    -1,    -1,    -1,    -1,   181,   161,   162,
-   163,   164,   165,   187,   167,   168,   169,   170,   171,   172,
-   173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,   161,
-   162,   163,   164,   165,   187,   167,   168,   169,   170,   171,
-   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,
-   161,   162,   163,   164,   165,   187,   167,   168,   169,   170,
-   171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,
-   181,   161,   162,   163,   164,   165,   187,   167,   168,   169,
-   170,   171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,
-    -1,   181,   161,   162,   163,   164,   165,   187,   167,   168,
-   169,   170,   171,   172,   173,   174,   175,    -1,    -1,    -1,
-    -1,    -1,   181,   161,   162,   163,   164,   165,   187,   167,
-   168,   169,   170,   171,   172,   173,   174,   175,    -1,    -1,
-    -1,    -1,    -1,   181,   161,   162,   163,   164,   165,   187,
-   167,   168,   169,   170,   171,   172,   173,   174,   175,    -1,
-    -1,    -1,    -1,    -1,   181,   161,   162,   163,   164,   165,
-   187,   167,   168,   169,   170,   171,   172,   173,   174,   175,
-    -1,    -1,    -1,    -1,    -1,   181,   161,   162,   163,   164,
-   165,   187,   167,   168,   169,   170,   171,   172,   173,   174,
-   175,    -1,    -1,    -1,    -1,    -1,   181,   161,   162,   163,
-   164,   165,   187,   167,   168,   169,   170,   171,   172,   173,
-   174,   175,    -1,    -1,    -1,    -1,    -1,   181,   161,   162,
-   163,   164,   165,   187,   167,   168,   169,   170,   171,   172,
-   173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,   161,
-   162,   163,   164,   165,   187,   167,   168,   169,   170,   171,
-   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,
-   161,   162,   163,   164,   165,   187,   167,   168,   169,   170,
-   171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,
-   181,   161,   162,   163,   164,   165,   187,   167,   168,   169,
-   170,   171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,
-    -1,   181,   161,   162,   163,   164,   165,   187,   167,   168,
-   169,   170,   171,   172,   173,   174,   175,    -1,    -1,    -1,
-    -1,    -1,   181,   161,   162,   163,   164,   165,   187,   167,
-   168,   169,   170,   171,   172,   173,   174,   175,    -1,    -1,
-    -1,    -1,    -1,   181,   161,   162,   163,   164,   165,   187,
-   167,   168,   169,   170,   171,   172,   173,   174,   175,    -1,
-    -1,    -1,    -1,    -1,   181,   161,   162,   163,   164,   165,
-   187,   167,   168,   169,   170,   171,   172,   173,   174,   175,
-    -1,    -1,    -1,    -1,    -1,   181,   161,   162,   163,   164,
-   165,   187,   167,   168,   169,   170,   171,   172,   173,   174,
-   175,    -1,    -1,    -1,    -1,    -1,   181,   161,   162,   163,
-   164,   165,   187,   167,   168,   169,   170,   171,   172,   173,
-   174,   175,    -1,    -1,    -1,    -1,    -1,   181,   161,   162,
-   163,   164,   165,   187,   167,   168,   169,   170,   171,   172,
-   173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,   161,
-   162,   163,   164,   165,   187,   167,   168,   169,   170,   171,
-   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,
-   161,   162,   163,   164,   165,   187,   167,   168,   169,   170,
-   171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,
-   181,   161,   162,   163,   164,   165,   187,   167,   168,   169,
-   170,   171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,
-    -1,   181,   161,   162,   163,   164,   165,   187,   167,   168,
-   169,   170,   171,   172,   173,   174,   175,    -1,    -1,    -1,
-    -1,    -1,   181,   161,   162,   163,   164,   165,   187,   167,
-   168,   169,   170,   171,   172,   173,   174,   175,    -1,    -1,
-    -1,    -1,    -1,   181,   161,   162,   163,   164,   165,   187,
-   167,   168,   169,   170,   171,   172,   173,   174,   175,    -1,
-    -1,    -1,    -1,    -1,   181,   161,   162,   163,   164,   165,
-   187,   167,   168,   169,   170,   171,   172,   173,   174,   175,
-    -1,    -1,    -1,    -1,    -1,   181,   161,   162,   163,   164,
-   165,   187,   167,   168,   169,   170,   171,   172,   173,   174,
-   175,    -1,    -1,    -1,    -1,    -1,   181,   161,   162,   163,
-   164,   165,   187,   167,   168,   169,   170,   171,   172,   173,
-   174,   175,    -1,    -1,    -1,    -1,    -1,   181,   161,   162,
-   163,   164,   165,   187,   167,   168,   169,   170,   171,   172,
-   173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,   161,
-   162,   163,   164,   165,   187,   167,   168,   169,   170,   171,
-   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,
-   161,   162,   163,   164,   165,   187,   167,   168,   169,   170,
-   171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,
-   181,   161,   162,   163,   164,   165,   187,   167,   168,   169,
-   170,   171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,
-    -1,   181,   161,   162,   163,   164,   165,   187,   167,   168,
-   169,   170,   171,   172,   173,   174,   175,    -1,    -1,    -1,
-    -1,    -1,   181,   161,   162,   163,   164,   165,   187,   167,
-   168,   169,   170,   171,   172,   173,   174,   175,    -1,    -1,
-    -1,    -1,    -1,   181,   161,   162,   163,   164,   165,   187,
-   167,   168,   169,   170,   171,   172,   173,   174,   175,    -1,
-    -1,    -1,    -1,    -1,   181,    -1,    -1,    -1,   185,   161,
-   162,   163,   164,   165,    -1,   167,   168,   169,   170,   171,
-   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,
-    -1,    -1,    -1,   185,   161,   162,   163,   164,   165,    -1,
-   167,   168,   169,   170,   171,   172,   173,   174,   175,    -1,
-    -1,    -1,    -1,    -1,   181,    -1,    -1,    -1,   185,   161,
-   162,   163,   164,   165,    -1,   167,   168,   169,   170,   171,
-   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,
-    -1,    -1,    -1,   185,   161,   162,   163,   164,   165,    -1,
-   167,   168,   169,   170,   171,   172,   173,   174,   175,    -1,
-    -1,    -1,    -1,    -1,   181,    -1,    -1,    -1,   185,   161,
-   162,   163,   164,   165,    -1,   167,   168,   169,   170,   171,
-   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,
-    -1,    -1,    -1,   185,   161,   162,   163,   164,   165,    -1,
-   167,   168,   169,   170,   171,   172,   173,   174,   175,    -1,
-    -1,    -1,    -1,    -1,   181,    -1,    -1,    -1,   185,   161,
-   162,   163,   164,   165,    -1,   167,   168,   169,   170,   171,
-   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,
-    -1,    -1,    -1,   185,   161,   162,   163,   164,   165,    -1,
-   167,   168,   169,   170,   171,   172,   173,   174,   175,    -1,
-    -1,    -1,    -1,    -1,   181,    -1,    -1,    -1,   185,   161,
-   162,   163,   164,   165,    -1,   167,   168,   169,   170,   171,
-   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,
-    -1,    -1,    -1,   185,   161,   162,   163,   164,   165,    -1,
-   167,   168,   169,   170,   171,   172,   173,   174,   175,    -1,
-    -1,    -1,    -1,    -1,   181,    -1,    -1,    -1,   185,   161,
-   162,   163,   164,   165,    -1,   167,   168,   169,   170,   171,
-   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,
-    -1,    -1,    -1,   185,   161,   162,   163,   164,   165,    -1,
-   167,   168,   169,   170,   171,   172,   173,   174,   175,    -1,
-    -1,    -1,    -1,    -1,   181,    -1,    -1,    -1,   185,   161,
-   162,   163,   164,   165,    -1,   167,   168,   169,   170,   171,
-   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,
-    -1,    -1,    -1,   185,   161,   162,   163,   164,   165,    -1,
-   167,   168,   169,   170,   171,   172,   173,   174,   175,    -1,
-    -1,    -1,    -1,    -1,   181,    -1,    -1,    -1,   185,   161,
-   162,   163,   164,   165,    -1,   167,   168,   169,   170,   171,
-   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,
-    -1,    -1,    -1,   185,   161,   162,   163,   164,   165,    -1,
-   167,   168,   169,   170,   171,   172,   173,   174,   175,    -1,
-    -1,    -1,    -1,    -1,   181,    -1,    -1,    -1,   185,   161,
-   162,   163,   164,   165,    -1,   167,   168,   169,   170,   171,
-   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,
-    -1,    -1,    -1,   185,   161,   162,   163,   164,   165,    -1,
-   167,   168,   169,   170,   171,   172,   173,   174,   175,    -1,
-    -1,    -1,    -1,    -1,   181,    -1,    -1,    -1,   185,   161,
-   162,   163,   164,   165,    -1,   167,   168,   169,   170,   171,
-   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,
-    -1,    -1,    -1,   185,   161,   162,   163,   164,   165,    -1,
-   167,   168,   169,   170,   171,   172,   173,   174,   175,    -1,
-    -1,    -1,    -1,    -1,   181,    -1,    -1,    -1,   185,   161,
-   162,   163,   164,   165,    -1,   167,   168,   169,   170,   171,
-   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,
-    -1,    -1,    -1,   185,   161,   162,   163,   164,   165,    -1,
-   167,   168,   169,   170,   171,   172,   173,   174,   175,    -1,
-    -1,    -1,    -1,    -1,   181,    -1,    -1,    -1,   185,   161,
-   162,   163,   164,   165,    -1,   167,   168,   169,   170,   171,
-   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,
-    -1,    -1,    -1,   185,   161,   162,   163,   164,   165,    -1,
-   167,   168,   169,   170,   171,   172,   173,   174,   175,    -1,
-    -1,    -1,    -1,    -1,   181,    -1,    -1,    -1,   185,   161,
-   162,   163,   164,   165,    -1,   167,   168,   169,   170,   171,
-   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,
-    -1,    -1,    -1,   185,   161,   162,   163,   164,   165,    -1,
-   167,   168,   169,   170,   171,   172,   173,   174,   175,    -1,
-    -1,    -1,    -1,    -1,   181,    -1,   183,   161,   162,   163,
-   164,   165,    -1,   167,   168,   169,   170,   171,   172,   173,
-   174,   175,    -1,    -1,    -1,    -1,    -1,   181,    -1,   183,
-   161,   162,   163,   164,   165,    -1,   167,   168,   169,   170,
-   171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,
-   181,    -1,   183,   161,   162,   163,   164,   165,    -1,   167,
-   168,   169,   170,   171,   172,   173,   174,   175,    -1,    -1,
-    -1,    -1,    -1,   181,    -1,   183,   161,   162,   163,   164,
-   165,    -1,   167,   168,   169,   170,   171,   172,   173,   174,
-   175,    -1,    -1,    -1,    -1,    -1,   181,    -1,   183,   161,
-   162,   163,   164,   165,    -1,   167,   168,   169,   170,   171,
-   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,
-    -1,   183,   161,   162,   163,   164,   165,    -1,   167,   168,
-   169,   170,   171,   172,   173,   174,   175,    -1,    -1,    -1,
-    -1,    -1,   181,    -1,   183,   161,   162,   163,   164,   165,
-    -1,   167,   168,   169,   170,   171,   172,   173,   174,   175,
-    -1,    -1,    -1,    -1,    -1,   181,    -1,   183,   161,   162,
-   163,   164,   165,    -1,   167,   168,   169,   170,   171,   172,
-   173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,    -1,
-   183,   161,   162,   163,   164,   165,    -1,   167,   168,   169,
-   170,   171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,
-    -1,   181,    -1,   183,   161,   162,   163,   164,   165,    -1,
-   167,   168,   169,   170,   171,   172,   173,   174,   175,    -1,
-    -1,    -1,    -1,    -1,   181,    -1,   183,   161,   162,   163,
-   164,   165,    -1,   167,   168,   169,   170,   171,   172,   173,
-   174,   175,    -1,    -1,    -1,    -1,    -1,   181,    -1,   183,
-   161,   162,   163,   164,   165,    -1,   167,   168,   169,   170,
-   171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,
-   181,    -1,   183,   161,   162,   163,   164,   165,    -1,   167,
-   168,   169,   170,   171,   172,   173,   174,   175,    -1,    -1,
-    -1,    -1,    -1,   181,    -1,   183,   161,   162,   163,   164,
-   165,    -1,   167,   168,   169,   170,   171,   172,   173,   174,
-   175,    -1,    -1,    -1,    -1,    -1,   181,    -1,   183,   161,
-   162,   163,   164,   165,    -1,   167,   168,   169,   170,   171,
-   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,
-    -1,   183,   161,   162,   163,   164,   165,    -1,   167,   168,
-   169,   170,   171,   172,   173,   174,   175,    -1,    -1,    -1,
-    -1,    -1,   181,    -1,   183,   161,   162,   163,   164,   165,
-    -1,   167,   168,   169,   170,   171,   172,   173,   174,   175,
-    -1,    -1,    -1,    -1,    -1,   181,    -1,   183,   161,   162,
-   163,   164,   165,    -1,   167,   168,   169,   170,   171,   172,
-   173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,    -1,
-   183,   161,   162,   163,   164,   165,    -1,   167,   168,   169,
-   170,   171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,
-    -1,   181,    -1,   183,   161,   162,   163,   164,   165,    -1,
-   167,   168,   169,   170,   171,   172,   173,   174,   175,    -1,
-    -1,    -1,    -1,    -1,   181,    -1,   183,   161,   162,   163,
-   164,   165,    -1,   167,   168,   169,   170,   171,   172,   173,
-   174,   175,    -1,    -1,    -1,    -1,    -1,   181,    -1,   183,
-   161,   162,   163,   164,   165,    -1,   167,   168,   169,   170,
-   171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,
-   181,    -1,   183,   161,   162,   163,   164,   165,    -1,   167,
-   168,   169,   170,   171,   172,   173,   174,   175,    -1,    -1,
-    -1,    -1,    -1,   181,    -1,   183,   161,   162,   163,   164,
-   165,    -1,   167,   168,   169,   170,   171,   172,   173,   174,
-   175,    -1,    -1,    -1,    -1,    -1,   181,    -1,   183,   161,
-   162,   163,   164,   165,    -1,   167,   168,   169,   170,   171,
-   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,
-    -1,   183,   161,   162,   163,   164,   165,    -1,   167,   168,
-   169,   170,   171,   172,   173,   174,   175,    -1,    -1,    -1,
-    -1,    -1,   181,    -1,   183,   161,   162,   163,   164,   165,
-    -1,   167,   168,   169,   170,   171,   172,   173,   174,   175,
-    -1,    -1,    -1,    -1,    -1,   181,    -1,   183,   161,   162,
-   163,   164,   165,    -1,   167,   168,   169,   170,   171,   172,
-   173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,    -1,
-   183,   161,   162,   163,   164,   165,    -1,   167,   168,   169,
-   170,   171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,
-    -1,   181,    -1,   183,   161,   162,   163,   164,   165,    -1,
-   167,   168,   169,   170,   171,   172,   173,   174,   175,    -1,
-    -1,    -1,    -1,    -1,   181,    -1,   183,   161,   162,   163,
-   164,   165,    -1,   167,   168,   169,   170,   171,   172,   173,
-   174,   175,    -1,    -1,    -1,    -1,    -1,   181,    -1,   183,
-   161,   162,   163,   164,   165,    -1,   167,   168,   169,   170,
-   171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,
-   181,    -1,   183,   161,   162,   163,   164,   165,    -1,   167,
-   168,   169,   170,   171,   172,   173,   174,   175,    -1,    -1,
-    -1,    -1,    -1,   181,    -1,   183,   161,   162,   163,   164,
-   165,    -1,   167,   168,   169,   170,   171,   172,   173,   174,
-   175,    -1,    -1,    -1,    -1,    -1,   181,    -1,   183,   161,
-   162,   163,   164,   165,    -1,   167,   168,   169,   170,   171,
-   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,
-    -1,   183,   161,   162,   163,   164,   165,    -1,   167,   168,
-   169,   170,   171,   172,   173,   174,   175,    -1,    -1,    -1,
-    -1,    -1,   181,    -1,   183,   161,   162,   163,   164,   165,
-    -1,   167,   168,   169,   170,   171,   172,   173,   174,   175,
-    -1,    -1,    -1,    -1,    -1,   181,    -1,   183,   161,   162,
-   163,   164,   165,    -1,   167,   168,   169,   170,   171,   172,
-   173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,    -1,
-   183,   161,   162,   163,   164,   165,    -1,   167,   168,   169,
-   170,   171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,
-    -1,   181,    -1,   183,   161,   162,   163,   164,   165,    -1,
-   167,   168,   169,   170,   171,   172,   173,   174,   175,    -1,
-    -1,    -1,    -1,    -1,   181,    -1,   183,   161,   162,   163,
-   164,   165,    -1,   167,   168,   169,   170,   171,   172,   173,
-   174,   175,    -1,    -1,    -1,    -1,    -1,   181,    -1,   183,
-   161,   162,   163,   164,   165,    -1,   167,   168,   169,   170,
-   171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,
-   181,    -1,   183,   161,   162,   163,   164,   165,    -1,   167,
-   168,   169,   170,   171,   172,   173,   174,   175,    -1,    -1,
-    -1,    -1,    -1,   181,    -1,   183,   161,   162,   163,   164,
-   165,    -1,   167,   168,   169,   170,   171,   172,   173,   174,
-   175,    -1,    -1,    -1,    -1,    -1,   181,    -1,   183,   161,
-   162,   163,   164,   165,    -1,   167,   168,   169,   170,   171,
-   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,
-    -1,   183,   161,   162,   163,   164,   165,    -1,   167,   168,
-   169,   170,   171,   172,   173,   174,   175,    -1,    -1,    -1,
-    -1,    -1,   181,    -1,   183,   161,   162,   163,   164,   165,
-    -1,   167,   168,   169,   170,   171,   172,   173,   174,   175,
-    -1,    -1,    -1,    -1,    -1,   181,    -1,   183,   161,   162,
-   163,   164,   165,    -1,   167,   168,   169,   170,   171,   172,
-   173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,    -1,
-   183,   161,   162,   163,   164,   165,    -1,   167,   168,   169,
-   170,   171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,
-    -1,   181,    -1,   183,   161,   162,   163,   164,   165,    -1,
-   167,   168,   169,   170,   171,   172,   173,   174,   175,    -1,
-    -1,    -1,    -1,    -1,   181,    -1,   183,   161,   162,   163,
-   164,   165,    -1,   167,   168,   169,   170,   171,   172,   173,
-   174,   175,    -1,    -1,    -1,    -1,    -1,   181,    -1,   183,
-   161,   162,   163,   164,   165,    -1,   167,   168,   169,   170,
-   171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,
-   181,    -1,   183,   161,   162,   163,   164,   165,    -1,   167,
-   168,   169,   170,   171,   172,   173,   174,   175,    -1,    -1,
-    -1,    -1,    -1,   181,    -1,   183,   161,   162,   163,   164,
-   165,    -1,   167,   168,   169,   170,   171,   172,   173,   174,
-   175,    -1,    -1,    -1,    -1,    -1,   181,    -1,   183,   161,
-   162,   163,   164,   165,    -1,   167,   168,   169,   170,   171,
-   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,
-    -1,   183,   161,   162,   163,   164,   165,    -1,   167,   168,
-   169,   170,   171,   172,   173,   174,   175,    -1,    -1,    -1,
-    -1,    -1,   181,    -1,   183,   161,   162,   163,   164,   165,
-    -1,   167,   168,   169,   170,   171,   172,   173,   174,   175,
-    -1,    -1,    -1,    -1,    -1,   181,    -1,   183,   161,   162,
-   163,   164,   165,    -1,   167,   168,   169,   170,   171,   172,
-   173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,    -1,
-   183,   161,   162,   163,   164,   165,    -1,   167,   168,   169,
-   170,   171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,
-    -1,   181,    -1,   183,   161,   162,   163,   164,   165,    -1,
-   167,   168,   169,   170,   171,   172,   173,   174,   175,    -1,
-    -1,    -1,    -1,    -1,   181,    -1,   183,   161,   162,   163,
-   164,   165,    -1,   167,   168,   169,   170,   171,   172,   173,
-   174,   175,    -1,    -1,    -1,    -1,    -1,   181,    -1,   183,
-   161,   162,   163,   164,   165,    -1,   167,   168,   169,   170,
-   171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,
-   181,    -1,   183,   161,   162,   163,   164,   165,    -1,   167,
-   168,   169,   170,   171,   172,   173,   174,   175,    -1,    -1,
-    -1,    -1,    -1,   181,    -1,   183,   161,   162,   163,   164,
-   165,    -1,   167,   168,   169,   170,   171,   172,   173,   174,
-   175,    -1,    -1,    -1,    -1,    -1,   181,    -1,   183,   161,
-   162,   163,   164,   165,    -1,   167,   168,   169,   170,   171,
-   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,
-    -1,   183,   161,   162,   163,   164,   165,    -1,   167,   168,
-   169,   170,   171,   172,   173,   174,   175,    -1,    -1,    -1,
-    -1,    -1,   181,    -1,   183
+static const short yycheck[] =
+{
+      23,    90,   290,   292,    23,   176,     4,     4,   350,   180,
+     325,     4,    82,     3,   282,   283,   284,    42,     4,     4,
+     683,    64,    64,  1249,    65,    65,    65,  1253,     6,    70,
+      70,    70,    64,     7,    65,     6,    65,   325,    89,    70,
+       6,    70,  1105,   182,     4,    65,     5,   182,     4,   188,
+      70,     4,     5,   188,   182,   152,   184,   171,   172,  1184,
+      71,    72,    73,    74,    75,    76,    77,    78,    79,    80,
+      81,    82,    83,    84,   188,    34,    35,    36,    49,   171,
+     172,    34,    35,    36,  1018,   171,   172,    38,   178,   179,
+      41,   171,   172,  1027,   184,   187,   186,   189,   171,   172,
+    1034,   187,   182,   189,   127,   128,   129,   183,   188,   132,
+     133,   187,   135,    65,   187,     7,   189,   103,    70,   142,
+     143,   144,   182,   146,   184,   148,   149,   182,   151,   184,
+     200,   182,    92,    93,   183,  1198,    92,    93,   187,   182,
+     182,    43,    44,     6,   167,   168,   188,     6,   189,   189,
+     189,   178,   179,     7,     6,   818,   188,   182,   189,   186,
+     189,     6,   185,   186,   182,   188,   184,   190,     7,   189,
+     193,   194,   171,   172,    41,    42,   491,    44,   189,   468,
+     171,   172,   172,   157,   158,   159,   160,   502,   183,   188,
+     188,   188,   187,   171,   172,   188,   187,   182,   369,     6,
+    1426,   469,   188,   491,  1430,   171,   172,   183,   173,   174,
+     175,   187,   235,   182,   502,   184,   181,   240,   241,   242,
+     243,   244,   245,   246,   247,   248,   249,   250,   251,   252,
+     253,   254,   255,   256,   257,   258,   259,   260,   261,   262,
+     263,   264,   265,   266,   267,   268,   269,   270,   271,   272,
+     273,   274,   275,   276,   277,   278,   279,   280,   281,   183,
+       6,     7,   164,   187,   166,  1199,     6,   290,  1494,  1203,
+     172,  1396,  1498,   292,  1399,   298,   299,   300,   301,   302,
+     303,   304,   305,   306,   307,   308,   309,   310,   311,   312,
+     953,    64,   183,   171,   172,   318,   187,   320,   182,     8,
+     184,   324,   325,   157,   158,   159,   160,   330,   331,   332,
+     188,   334,   335,   336,   337,   338,   339,   340,   157,   158,
+     159,   160,   178,   179,   178,   179,     6,   171,   172,   352,
+     353,   354,   186,   182,   357,   184,   238,  1462,     7,   178,
+     179,  1466,   365,   187,   107,   108,   109,   110,   111,     3,
+       4,   374,    55,    56,   669,     9,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,    25,    26,    27,    28,    29,    30,    31,    32,   171,
+     172,   669,   697,   171,   172,   673,   182,   171,   172,  1323,
+    1324,  1325,  1326,   412,     6,   187,  1330,   182,   184,   187,
+     186,    38,   670,   187,    41,    42,   182,     3,     4,   697,
+     725,   726,   727,     9,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+      26,    27,    28,    29,    30,    31,    32,   725,   726,   727,
+     182,   464,    54,   182,   182,   347,   348,   470,   182,   468,
+     184,   182,   161,   162,   163,   164,   165,   182,   167,   168,
+     169,   170,   171,   172,   173,   174,   175,   182,   491,   184,
+    1404,  1405,   181,   187,  1408,   189,   182,   500,   184,   502,
+     189,   504,   505,     3,   171,   172,   182,   510,   157,   158,
+     159,   160,   171,   172,    46,   171,   172,   520,   521,   182,
+     187,   171,   172,    42,  1167,   182,   529,   184,   187,   178,
+     179,   187,    42,   183,   171,   172,   539,   171,   172,    42,
+     835,   810,   811,   177,   171,   172,   183,   550,   182,   552,
+     553,   185,    44,   182,   188,   184,  1470,   178,   179,   182,
+     187,   184,   182,   184,   184,   186,   182,   835,   184,   161,
+     162,   163,   164,   165,   182,   167,   168,   169,   170,   171,
+     172,   173,   174,   175,   182,   188,   184,   150,   182,   181,
+     184,   188,   155,   592,    42,   171,   172,   178,   179,   188,
+     182,   177,   184,   184,    38,   186,   182,    41,    42,   185,
+      44,   182,   188,   184,   177,   182,     6,   184,  1532,     6,
+     183,   184,   122,   123,   124,   125,   126,   127,   128,   129,
+     171,   172,   173,   174,   175,     6,     7,   519,     8,   182,
+     181,   184,   182,   646,   647,    58,    59,    60,    61,   187,
+      63,   189,   182,   187,  1568,   189,   182,   660,   661,   662,
+     663,   664,   665,   666,   986,   187,   669,   189,     6,   187,
+     673,   189,   187,   676,   189,   187,   187,   189,   189,   187,
+       4,   189,   685,     4,   167,   168,   169,   170,   171,   172,
+     173,   174,   175,    42,   697,   698,     3,   945,   181,   187,
+     187,   189,   189,   187,   182,   189,     5,   776,   164,   165,
+     182,   167,   168,   169,   170,   171,   172,   173,   174,   175,
+       6,   182,   725,   726,   727,   181,     6,   730,   731,   182,
+     187,   734,   189,   187,   982,   189,   187,     6,   189,     3,
+       4,  1655,   745,   746,     5,     9,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,    25,    26,    27,    28,    29,    30,    31,    32,   187,
+       6,   189,   187,   187,   189,   189,   182,   780,   781,   782,
+     783,   784,   785,   786,   787,   788,   789,   790,   791,   792,
+     793,   161,   162,   163,   164,   165,   182,   167,   168,   169,
+     170,   171,   172,   173,   174,   175,   688,   187,   187,   189,
+     189,   181,   811,   183,   188,   187,   819,   189,   187,   187,
+     189,   189,   187,   187,   189,   189,   182,   182,   878,   188,
+     188,   182,   835,     4,   837,   182,   839,   182,   182,   182,
+     722,   723,   724,     6,    95,   184,   188,   188,   188,   186,
+     853,   854,   855,   188,     6,  1177,   182,   182,     5,   182,
+     182,     4,   182,   182,   182,   747,   182,   182,   182,   182,
+     873,   874,   875,   182,   756,   161,   162,   163,   164,   165,
+     182,   167,   168,   169,   170,   171,   172,   173,   174,   175,
+     182,   182,   182,   182,   182,   181,   183,   182,   182,   182,
+     463,   182,     7,   182,   182,   182,   182,   171,   172,   182,
+     182,   182,   182,   177,   182,   181,     6,   916,   182,     7,
+     187,   185,   187,   186,   188,   161,   162,   163,   164,   165,
+       7,   167,   168,   169,   170,   171,   172,   173,   174,   175,
+       7,   183,     7,   946,     7,   181,    90,    92,   188,    38,
+      39,    40,    41,    42,    43,    44,    45,   153,    47,  1009,
+      49,    50,     5,    52,    53,     5,     5,     5,     5,   972,
+     973,  1040,     5,     5,     5,     5,     5,     5,     5,   982,
+      69,     5,     5,     5,     5,     5,     5,     5,     5,     5,
+       5,     5,   140,   996,   997,     5,    85,    86,    87,     5,
+       5,     5,     3,     5,   187,  1008,     5,     5,  1011,     6,
+     183,     6,     4,     6,   186,   189,     7,     7,  1021,     7,
+       7,     7,     7,     7,   189,  1028,  1029,  1030,   188,   188,
+       7,     7,  1035,   182,     7,   186,  1039,   154,     5,     4,
+    1043,  1044,  1045,  1046,  1047,  1048,  1049,  1050,  1051,  1052,
+    1053,  1054,  1055,  1056,   187,   187,   187,   187,   147,   187,
+     187,   187,   187,   187,   187,   187,   187,  1117,   187,  1072,
+     183,   161,   162,   163,   164,   165,   958,   167,   168,   169,
+     170,   171,   172,   173,   174,   175,  1089,   187,   187,     6,
+     187,   181,   187,   187,   187,   187,   187,     6,     6,     6,
+     189,   187,   187,   187,   187,   987,   187,   989,  1111,   991,
+    1113,   187,    71,    72,    73,    74,    75,    76,    77,    78,
+      79,    80,    81,    82,    83,    84,   689,   690,   187,   692,
+     187,   694,   695,   187,   187,   182,   182,   182,   182,     3,
+       4,   182,     7,   185,     6,     9,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,    25,    26,    27,    28,    29,    30,    31,    32,   732,
+     733,   182,   184,   736,  1422,   182,     6,  1180,  1181,   182,
+    1183,     7,  1185,  1186,     7,     7,   182,     7,   182,  1192,
+     753,   754,     7,   182,     7,     7,   759,   760,  1201,     6,
+     182,   182,   182,   766,     7,   768,  1209,     7,     7,   188,
+       7,  1214,     7,  1263,  1217,     4,  1219,  1220,  1221,  1222,
+    1223,  1224,  1225,  1226,  1227,  1228,  1229,  1230,  1231,  1232,
+     189,     6,     6,     4,     7,  1238,   150,  1240,  1241,  1242,
+       7,  1489,     3,  1491,   161,   162,   163,   164,   165,     3,
+     167,   168,   169,   170,   171,   172,   173,   174,   175,     3,
+     173,     3,     3,     3,   181,   828,     3,   830,     6,     3,
+       3,     3,  1322,     3,     3,     3,     3,   840,   841,   842,
+       5,     5,   845,   846,   847,   848,   849,   850,   851,     3,
+       3,     6,     4,   183,   183,  1543,   188,     7,  1180,  1181,
+     186,  1183,     6,  1306,     6,  1308,     6,   171,   172,     6,
+       6,  1314,     6,   177,     6,    91,   188,  1367,   182,   187,
+     187,   187,   183,   183,   188,   183,     6,     6,   187,   183,
+     187,   187,  1335,  1336,  1337,  1338,  1339,  1340,  1341,  1342,
+    1343,   187,   183,   187,   187,  1348,     4,   187,   187,   187,
+     187,   183,   187,   187,   161,   162,   163,   164,   165,  1241,
+     167,   168,   169,   170,   171,   172,   173,   174,   175,   187,
+     187,   187,   183,   187,   181,     6,     6,   187,   186,     6,
+     185,   944,     6,     6,     6,  1435,   161,   162,   163,   164,
+     165,     6,   167,   168,   169,   170,   171,   172,   173,   174,
+     175,     6,     6,     6,     6,     6,   181,  1410,  1411,  1412,
+    1413,  1414,  1415,  1416,  1417,  1418,  1419,  1420,  1421,  1469,
+       6,     6,     6,   161,   162,   163,   164,   165,     6,   167,
+     168,   169,   170,   171,   172,   173,   174,   175,     6,     6,
+       6,  1004,     6,   181,     7,    91,     3,     6,     3,  1012,
+       6,  1501,   163,   164,   165,     6,   167,   168,   169,   170,
+     171,   172,   173,   174,   175,  1468,   173,     6,  1031,     6,
+     181,  1474,  1475,  1476,  1477,  1478,  1479,  1480,  1481,  1482,
+    1483,     3,  1485,     6,  1487,     3,     6,     6,     3,     6,
+       3,     3,     3,     3,     4,   186,     4,     6,   185,     9,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
+      30,    31,    32,     6,     6,     6,  1529,  1530,     7,     6,
+     189,  1534,  1535,  1536,  1537,  1538,  1539,   161,   162,   163,
+     164,   165,    88,   167,   168,   169,   170,   171,   172,   173,
+     174,   175,   188,   188,   188,   188,    91,   181,   183,   187,
+      93,  1564,   183,   183,   183,   183,  1569,  1570,  1571,  1572,
+    1573,  1574,  1575,  1576,  1577,     6,   187,   187,   187,   187,
+     187,   187,     6,   183,   183,   150,   183,     3,     6,   187,
+       3,     6,     6,     3,  1597,  1598,  1599,  1600,  1601,  1602,
+    1603,     6,  1605,     6,  1607,   161,   162,   163,   164,   165,
+       6,   167,   168,   169,   170,   171,   172,   173,   174,   175,
+       6,     6,  1625,  1626,  1627,   181,  1189,     6,  1191,     5,
+     188,     6,  1195,     5,   187,   189,  1639,  1640,  1641,  1642,
+    1643,  1644,     6,   188,   187,   189,   187,   187,  1211,   183,
+       6,   183,   183,  1656,  1657,  1658,  1659,   187,  1661,   187,
+    1663,   171,   172,   187,     6,     6,     6,   177,     6,     6,
+       6,     6,   182,     6,     6,     6,     6,     6,   188,     6,
+    1683,  1684,  1685,   188,     6,     5,     5,   187,   187,  1692,
+     188,  1694,   189,  1696,     3,     4,   187,   187,   183,   183,
+       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
+      29,    30,    31,    32,   187,   187,    88,   188,     8,   188,
+     161,   162,   163,   164,   165,   188,   167,   168,   169,   170,
+     171,   172,   173,   174,   175,   188,   187,  1310,     6,     6,
+     181,     6,   150,     6,     6,  1318,  1319,     3,     4,     5,
+       5,     7,     5,     9,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+      26,    27,    28,    29,    30,    31,    32,   188,    34,    35,
+      36,     8,     3,     4,     5,   188,   187,   189,     9,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
+      31,    32,   188,    34,    35,    36,   187,     6,   183,   183,
+     188,     6,   189,     6,    88,  1398,     6,     6,  1401,   161,
+     162,   163,   164,   165,     6,   167,   168,   169,   170,   171,
+     172,   173,   174,   175,     6,     6,     6,     6,     6,   181,
+       6,   189,   171,   172,   188,     6,   187,   155,   177,   187,
+       6,   156,   187,   182,   187,     6,   188,   188,   188,   188,
+     187,   161,   162,   163,   164,   165,   183,   167,   168,   169,
+     170,   171,   172,   173,   174,   175,     6,     6,     6,     6,
+    1463,   181,     6,   187,   187,     6,   188,   188,  1471,   188,
+     187,   157,   158,   159,   160,   183,     6,     8,     6,     6,
+       6,   188,   188,   188,     6,   171,   172,     6,     0,     0,
+     594,   177,   178,   179,     7,    -1,   182,     7,   184,     8,
+     186,     7,  1002,    -1,   161,   162,   163,   164,   165,   949,
+     167,   168,   169,   170,   171,   172,   173,   174,   175,    -1,
+     171,   172,    -1,    -1,   181,     8,   177,     3,     4,    -1,
+    1533,   182,    -1,     9,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+      26,    27,    28,    29,    30,    31,    32,    -1,    -1,     3,
+       4,    -1,    -1,    -1,  1567,     9,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,    25,    26,    27,    28,    29,    30,    31,    32,     3,
+       4,    -1,  1595,    -1,    -1,     9,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,    25,    26,    27,    28,    29,    30,    31,    32,    -1,
+      -1,  1624,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     161,   162,   163,   164,   165,  1638,   167,   168,   169,   170,
+     171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,
+     181,    -1,   161,   162,   163,   164,   165,    -1,   167,   168,
+     169,   170,   171,   172,   173,   174,   175,    -1,    -1,    -1,
+      -1,    -1,   181,    -1,    -1,    -1,    -1,    -1,   161,   162,
+     163,   164,   165,    -1,   167,   168,   169,   170,   171,   172,
+     173,   174,   175,    -1,    -1,   171,   172,    -1,   181,    -1,
+      -1,   177,    -1,    -1,    -1,    -1,   182,    -1,    -1,   161,
+     162,   163,   164,   165,    -1,   167,   168,   169,   170,   171,
+     172,   173,   174,   175,    -1,    -1,    -1,   171,   172,   181,
+      -1,   183,    -1,   177,    -1,   187,     0,     1,   182,     3,
+       4,    -1,   161,   162,   163,   164,   165,    -1,   167,   168,
+     169,   170,   171,   172,   173,   174,   175,   171,   172,    -1,
+      -1,    -1,   181,   177,    -1,    -1,    -1,    -1,   182,    33,
+     189,    -1,    -1,    37,    38,    39,    40,    41,    42,    43,
+      44,    45,    -1,    47,    48,    49,    50,    51,    52,    53,
+      -1,    -1,    -1,    57,    58,    59,    60,    61,    62,    63,
+      -1,    65,    66,    67,    68,    69,   161,   162,   163,   164,
+     165,    -1,   167,   168,   169,   170,   171,   172,   173,   174,
+     175,    85,    86,    87,    -1,    -1,   181,    -1,    92,    -1,
+      94,    -1,    96,    97,    98,    99,   100,   101,   102,    -1,
+      -1,    38,    39,    40,    41,    42,    43,    44,    45,    -1,
+      47,    -1,    49,    50,    -1,    52,    53,    -1,   122,   123,
+     124,   125,   126,   127,   128,   129,    -1,    -1,    -1,    -1,
+      -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   147,   148,   149,    -1,   151,    85,    86,
+      87,    38,    39,    40,    41,    42,    43,    44,    45,    -1,
+      47,    -1,    49,    50,    -1,    52,    53,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+       4,    -1,    69,   161,   162,   163,   164,   165,    -1,   167,
+     168,   169,   170,   171,   172,   173,   174,   175,    85,    86,
+      87,    -1,    -1,   181,    -1,    -1,    -1,    -1,    -1,    33,
+     147,   189,    -1,    37,    38,    39,    40,    41,    42,    43,
+      44,    45,    -1,    47,    48,    49,    50,    51,    52,    53,
+      -1,    -1,    -1,    57,    58,    59,    60,    61,    62,    63,
+      41,    65,    66,    67,    68,    69,    -1,    -1,    -1,    -1,
+      -1,    -1,   189,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     147,    85,    86,    87,    -1,    -1,    -1,    -1,    92,    -1,
+      94,    -1,    96,    97,    98,    99,   100,   101,   102,    38,
+      39,    40,    41,    42,    43,    44,    45,    -1,    47,    -1,
+      49,    50,    -1,    52,    53,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   189,   104,   105,   106,    -1,    -1,    -1,    -1,
+      69,   112,   113,   114,   115,   116,   117,   118,   119,   120,
+     121,    -1,    -1,   147,    -1,    -1,    85,    86,    87,   130,
+     131,   132,   133,   134,   135,   136,   137,   138,   139,    -1,
+     141,   142,   143,   144,   145,   146,   161,   162,   163,   164,
+     165,    -1,   167,   168,   169,   170,   171,   172,   173,   174,
+     175,    -1,    -1,    -1,    -1,    -1,   181,    -1,    -1,    -1,
+      -1,    -1,   187,    -1,   189,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   161,   162,   163,   164,   165,   147,   167,
+     168,   169,   170,   171,   172,   173,   174,   175,    -1,    -1,
+      -1,    -1,    -1,   181,    -1,    -1,    -1,    -1,    -1,   187,
+      -1,   189,   161,   162,   163,   164,   165,    -1,   167,   168,
+     169,   170,   171,   172,   173,   174,   175,    -1,    -1,    -1,
+      -1,    -1,   181,    -1,    -1,    -1,    -1,    -1,   187,    -1,
+     189,   161,   162,   163,   164,   165,    -1,   167,   168,   169,
+     170,   171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,
+      -1,   181,    -1,    -1,   161,   162,   163,   164,   165,   189,
+     167,   168,   169,   170,   171,   172,   173,   174,   175,    -1,
+      -1,    -1,    -1,    -1,   181,    -1,    -1,   161,   162,   163,
+     164,   165,   189,   167,   168,   169,   170,   171,   172,   173,
+     174,   175,    -1,    -1,    -1,    -1,    -1,   181,    -1,    -1,
+     161,   162,   163,   164,   165,   189,   167,   168,   169,   170,
+     171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,
+     181,    -1,    -1,   161,   162,   163,   164,   165,   189,   167,
+     168,   169,   170,   171,   172,   173,   174,   175,    -1,    -1,
+      -1,    -1,    -1,   181,    -1,    -1,   161,   162,   163,   164,
+     165,   189,   167,   168,   169,   170,   171,   172,   173,   174,
+     175,    -1,    -1,    -1,    -1,    -1,   181,    -1,    -1,   161,
+     162,   163,   164,   165,   189,   167,   168,   169,   170,   171,
+     172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,
+      -1,    -1,   161,   162,   163,   164,   165,   189,   167,   168,
+     169,   170,   171,   172,   173,   174,   175,    -1,    -1,    -1,
+      -1,    -1,   181,    -1,    -1,   161,   162,   163,   164,   165,
+     189,   167,   168,   169,   170,   171,   172,   173,   174,   175,
+      -1,    -1,    -1,    -1,    -1,   181,    -1,    -1,   161,   162,
+     163,   164,   165,   189,   167,   168,   169,   170,   171,   172,
+     173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,    -1,
+      -1,   161,   162,   163,   164,   165,   189,   167,   168,   169,
+     170,   171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,
+      -1,   181,    -1,    -1,   161,   162,   163,   164,   165,   189,
+     167,   168,   169,   170,   171,   172,   173,   174,   175,    -1,
+      -1,    -1,    -1,    -1,   181,    -1,    -1,   161,   162,   163,
+     164,   165,   189,   167,   168,   169,   170,   171,   172,   173,
+     174,   175,    -1,    -1,    -1,    -1,    -1,   181,    -1,    -1,
+     161,   162,   163,   164,   165,   189,   167,   168,   169,   170,
+     171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,
+     181,    -1,    -1,   161,   162,   163,   164,   165,   189,   167,
+     168,   169,   170,   171,   172,   173,   174,   175,    -1,    -1,
+      -1,    -1,    -1,   181,    -1,    -1,   161,   162,   163,   164,
+     165,   189,   167,   168,   169,   170,   171,   172,   173,   174,
+     175,    -1,    -1,    -1,    -1,    -1,   181,    -1,    -1,   161,
+     162,   163,   164,   165,   189,   167,   168,   169,   170,   171,
+     172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,
+     161,   162,   163,   164,   165,   187,   167,   168,   169,   170,
+     171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,
+     181,   161,   162,   163,   164,   165,   187,   167,   168,   169,
+     170,   171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,
+      -1,   181,   161,   162,   163,   164,   165,   187,   167,   168,
+     169,   170,   171,   172,   173,   174,   175,    -1,    -1,    -1,
+      -1,    -1,   181,   161,   162,   163,   164,   165,   187,   167,
+     168,   169,   170,   171,   172,   173,   174,   175,    -1,    -1,
+      -1,    -1,    -1,   181,   161,   162,   163,   164,   165,   187,
+     167,   168,   169,   170,   171,   172,   173,   174,   175,    -1,
+      -1,    -1,    -1,    -1,   181,   161,   162,   163,   164,   165,
+     187,   167,   168,   169,   170,   171,   172,   173,   174,   175,
+      -1,    -1,    -1,    -1,    -1,   181,   161,   162,   163,   164,
+     165,   187,   167,   168,   169,   170,   171,   172,   173,   174,
+     175,    -1,    -1,    -1,    -1,    -1,   181,   161,   162,   163,
+     164,   165,   187,   167,   168,   169,   170,   171,   172,   173,
+     174,   175,    -1,    -1,    -1,    -1,    -1,   181,   161,   162,
+     163,   164,   165,   187,   167,   168,   169,   170,   171,   172,
+     173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,   161,
+     162,   163,   164,   165,   187,   167,   168,   169,   170,   171,
+     172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,
+     161,   162,   163,   164,   165,   187,   167,   168,   169,   170,
+     171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,
+     181,   161,   162,   163,   164,   165,   187,   167,   168,   169,
+     170,   171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,
+      -1,   181,   161,   162,   163,   164,   165,   187,   167,   168,
+     169,   170,   171,   172,   173,   174,   175,    -1,    -1,    -1,
+      -1,    -1,   181,   161,   162,   163,   164,   165,   187,   167,
+     168,   169,   170,   171,   172,   173,   174,   175,    -1,    -1,
+      -1,    -1,    -1,   181,   161,   162,   163,   164,   165,   187,
+     167,   168,   169,   170,   171,   172,   173,   174,   175,    -1,
+      -1,    -1,    -1,    -1,   181,   161,   162,   163,   164,   165,
+     187,   167,   168,   169,   170,   171,   172,   173,   174,   175,
+      -1,    -1,    -1,    -1,    -1,   181,   161,   162,   163,   164,
+     165,   187,   167,   168,   169,   170,   171,   172,   173,   174,
+     175,    -1,    -1,    -1,    -1,    -1,   181,   161,   162,   163,
+     164,   165,   187,   167,   168,   169,   170,   171,   172,   173,
+     174,   175,    -1,    -1,    -1,    -1,    -1,   181,   161,   162,
+     163,   164,   165,   187,   167,   168,   169,   170,   171,   172,
+     173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,   161,
+     162,   163,   164,   165,   187,   167,   168,   169,   170,   171,
+     172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,
+     161,   162,   163,   164,   165,   187,   167,   168,   169,   170,
+     171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,
+     181,   161,   162,   163,   164,   165,   187,   167,   168,   169,
+     170,   171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,
+      -1,   181,   161,   162,   163,   164,   165,   187,   167,   168,
+     169,   170,   171,   172,   173,   174,   175,    -1,    -1,    -1,
+      -1,    -1,   181,   161,   162,   163,   164,   165,   187,   167,
+     168,   169,   170,   171,   172,   173,   174,   175,    -1,    -1,
+      -1,    -1,    -1,   181,   161,   162,   163,   164,   165,   187,
+     167,   168,   169,   170,   171,   172,   173,   174,   175,    -1,
+      -1,    -1,    -1,    -1,   181,   161,   162,   163,   164,   165,
+     187,   167,   168,   169,   170,   171,   172,   173,   174,   175,
+      -1,    -1,    -1,    -1,    -1,   181,   161,   162,   163,   164,
+     165,   187,   167,   168,   169,   170,   171,   172,   173,   174,
+     175,    -1,    -1,    -1,    -1,    -1,   181,   161,   162,   163,
+     164,   165,   187,   167,   168,   169,   170,   171,   172,   173,
+     174,   175,    -1,    -1,    -1,    -1,    -1,   181,   161,   162,
+     163,   164,   165,   187,   167,   168,   169,   170,   171,   172,
+     173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,   161,
+     162,   163,   164,   165,   187,   167,   168,   169,   170,   171,
+     172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,
+     161,   162,   163,   164,   165,   187,   167,   168,   169,   170,
+     171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,
+     181,   161,   162,   163,   164,   165,   187,   167,   168,   169,
+     170,   171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,
+      -1,   181,   161,   162,   163,   164,   165,   187,   167,   168,
+     169,   170,   171,   172,   173,   174,   175,    -1,    -1,    -1,
+      -1,    -1,   181,   161,   162,   163,   164,   165,   187,   167,
+     168,   169,   170,   171,   172,   173,   174,   175,    -1,    -1,
+      -1,    -1,    -1,   181,   161,   162,   163,   164,   165,   187,
+     167,   168,   169,   170,   171,   172,   173,   174,   175,    -1,
+      -1,    -1,    -1,    -1,   181,   161,   162,   163,   164,   165,
+     187,   167,   168,   169,   170,   171,   172,   173,   174,   175,
+      -1,    -1,    -1,    -1,    -1,   181,   161,   162,   163,   164,
+     165,   187,   167,   168,   169,   170,   171,   172,   173,   174,
+     175,    -1,    -1,    -1,    -1,    -1,   181,   161,   162,   163,
+     164,   165,   187,   167,   168,   169,   170,   171,   172,   173,
+     174,   175,    -1,    -1,    -1,    -1,    -1,   181,   161,   162,
+     163,   164,   165,   187,   167,   168,   169,   170,   171,   172,
+     173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,   161,
+     162,   163,   164,   165,   187,   167,   168,   169,   170,   171,
+     172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,
+     161,   162,   163,   164,   165,   187,   167,   168,   169,   170,
+     171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,
+     181,   161,   162,   163,   164,   165,   187,   167,   168,   169,
+     170,   171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,
+      -1,   181,   161,   162,   163,   164,   165,   187,   167,   168,
+     169,   170,   171,   172,   173,   174,   175,    -1,    -1,    -1,
+      -1,    -1,   181,   161,   162,   163,   164,   165,   187,   167,
+     168,   169,   170,   171,   172,   173,   174,   175,    -1,    -1,
+      -1,    -1,    -1,   181,   161,   162,   163,   164,   165,   187,
+     167,   168,   169,   170,   171,   172,   173,   174,   175,    -1,
+      -1,    -1,    -1,    -1,   181,   161,   162,   163,   164,   165,
+     187,   167,   168,   169,   170,   171,   172,   173,   174,   175,
+      -1,    -1,    -1,    -1,    -1,   181,   161,   162,   163,   164,
+     165,   187,   167,   168,   169,   170,   171,   172,   173,   174,
+     175,    -1,    -1,    -1,    -1,    -1,   181,   161,   162,   163,
+     164,   165,   187,   167,   168,   169,   170,   171,   172,   173,
+     174,   175,    -1,    -1,    -1,    -1,    -1,   181,   161,   162,
+     163,   164,   165,   187,   167,   168,   169,   170,   171,   172,
+     173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,   161,
+     162,   163,   164,   165,   187,   167,   168,   169,   170,   171,
+     172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,
+     161,   162,   163,   164,   165,   187,   167,   168,   169,   170,
+     171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,
+     181,   161,   162,   163,   164,   165,   187,   167,   168,   169,
+     170,   171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,
+      -1,   181,   161,   162,   163,   164,   165,   187,   167,   168,
+     169,   170,   171,   172,   173,   174,   175,    -1,    -1,    -1,
+      -1,    -1,   181,   161,   162,   163,   164,   165,   187,   167,
+     168,   169,   170,   171,   172,   173,   174,   175,    -1,    -1,
+      -1,    -1,    -1,   181,   161,   162,   163,   164,   165,   187,
+     167,   168,   169,   170,   171,   172,   173,   174,   175,    -1,
+      -1,    -1,    -1,    -1,   181,   161,   162,   163,   164,   165,
+     187,   167,   168,   169,   170,   171,   172,   173,   174,   175,
+      -1,    -1,    -1,    -1,    -1,   181,   161,   162,   163,   164,
+     165,   187,   167,   168,   169,   170,   171,   172,   173,   174,
+     175,    -1,    -1,    -1,    -1,    -1,   181,   161,   162,   163,
+     164,   165,   187,   167,   168,   169,   170,   171,   172,   173,
+     174,   175,    -1,    -1,    -1,    -1,    -1,   181,   161,   162,
+     163,   164,   165,   187,   167,   168,   169,   170,   171,   172,
+     173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,   161,
+     162,   163,   164,   165,   187,   167,   168,   169,   170,   171,
+     172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,
+     161,   162,   163,   164,   165,   187,   167,   168,   169,   170,
+     171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,
+     181,   161,   162,   163,   164,   165,   187,   167,   168,   169,
+     170,   171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,
+      -1,   181,   161,   162,   163,   164,   165,   187,   167,   168,
+     169,   170,   171,   172,   173,   174,   175,    -1,    -1,    -1,
+      -1,    -1,   181,   161,   162,   163,   164,   165,   187,   167,
+     168,   169,   170,   171,   172,   173,   174,   175,    -1,    -1,
+      -1,    -1,    -1,   181,   161,   162,   163,   164,   165,   187,
+     167,   168,   169,   170,   171,   172,   173,   174,   175,    -1,
+      -1,    -1,    -1,    -1,   181,   161,   162,   163,   164,   165,
+     187,   167,   168,   169,   170,   171,   172,   173,   174,   175,
+      -1,    -1,    -1,    -1,    -1,   181,   161,   162,   163,   164,
+     165,   187,   167,   168,   169,   170,   171,   172,   173,   174,
+     175,    -1,    -1,    -1,    -1,    -1,   181,   161,   162,   163,
+     164,   165,   187,   167,   168,   169,   170,   171,   172,   173,
+     174,   175,    -1,    -1,    -1,    -1,    -1,   181,   161,   162,
+     163,   164,   165,   187,   167,   168,   169,   170,   171,   172,
+     173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,   161,
+     162,   163,   164,   165,   187,   167,   168,   169,   170,   171,
+     172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,
+     161,   162,   163,   164,   165,   187,   167,   168,   169,   170,
+     171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,
+     181,   161,   162,   163,   164,   165,   187,   167,   168,   169,
+     170,   171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,
+      -1,   181,   161,   162,   163,   164,   165,   187,   167,   168,
+     169,   170,   171,   172,   173,   174,   175,    -1,    -1,    -1,
+      -1,    -1,   181,   161,   162,   163,   164,   165,   187,   167,
+     168,   169,   170,   171,   172,   173,   174,   175,    -1,    -1,
+      -1,    -1,    -1,   181,   161,   162,   163,   164,   165,   187,
+     167,   168,   169,   170,   171,   172,   173,   174,   175,    -1,
+      -1,    -1,    -1,    -1,   181,   161,   162,   163,   164,   165,
+     187,   167,   168,   169,   170,   171,   172,   173,   174,   175,
+      -1,    -1,    -1,    -1,    -1,   181,   161,   162,   163,   164,
+     165,   187,   167,   168,   169,   170,   171,   172,   173,   174,
+     175,    -1,    -1,    -1,    -1,    -1,   181,   161,   162,   163,
+     164,   165,   187,   167,   168,   169,   170,   171,   172,   173,
+     174,   175,    -1,    -1,    -1,    -1,    -1,   181,   161,   162,
+     163,   164,   165,   187,   167,   168,   169,   170,   171,   172,
+     173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,   161,
+     162,   163,   164,   165,   187,   167,   168,   169,   170,   171,
+     172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,
+     161,   162,   163,   164,   165,   187,   167,   168,   169,   170,
+     171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,
+     181,   161,   162,   163,   164,   165,   187,   167,   168,   169,
+     170,   171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,
+      -1,   181,   161,   162,   163,   164,   165,   187,   167,   168,
+     169,   170,   171,   172,   173,   174,   175,    -1,    -1,    -1,
+      -1,    -1,   181,   161,   162,   163,   164,   165,   187,   167,
+     168,   169,   170,   171,   172,   173,   174,   175,    -1,    -1,
+      -1,    -1,    -1,   181,   161,   162,   163,   164,   165,   187,
+     167,   168,   169,   170,   171,   172,   173,   174,   175,    -1,
+      -1,    -1,    -1,    -1,   181,   161,   162,   163,   164,   165,
+     187,   167,   168,   169,   170,   171,   172,   173,   174,   175,
+      -1,    -1,    -1,    -1,    -1,   181,   161,   162,   163,   164,
+     165,   187,   167,   168,   169,   170,   171,   172,   173,   174,
+     175,    -1,    -1,    -1,    -1,    -1,   181,   161,   162,   163,
+     164,   165,   187,   167,   168,   169,   170,   171,   172,   173,
+     174,   175,    -1,    -1,    -1,    -1,    -1,   181,   161,   162,
+     163,   164,   165,   187,   167,   168,   169,   170,   171,   172,
+     173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,   161,
+     162,   163,   164,   165,   187,   167,   168,   169,   170,   171,
+     172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,
+     161,   162,   163,   164,   165,   187,   167,   168,   169,   170,
+     171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,
+     181,   161,   162,   163,   164,   165,   187,   167,   168,   169,
+     170,   171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,
+      -1,   181,   161,   162,   163,   164,   165,   187,   167,   168,
+     169,   170,   171,   172,   173,   174,   175,    -1,    -1,    -1,
+      -1,    -1,   181,   161,   162,   163,   164,   165,   187,   167,
+     168,   169,   170,   171,   172,   173,   174,   175,    -1,    -1,
+      -1,    -1,    -1,   181,   161,   162,   163,   164,   165,   187,
+     167,   168,   169,   170,   171,   172,   173,   174,   175,    -1,
+      -1,    -1,    -1,    -1,   181,   161,   162,   163,   164,   165,
+     187,   167,   168,   169,   170,   171,   172,   173,   174,   175,
+      -1,    -1,    -1,    -1,    -1,   181,   161,   162,   163,   164,
+     165,   187,   167,   168,   169,   170,   171,   172,   173,   174,
+     175,    -1,    -1,    -1,    -1,    -1,   181,   161,   162,   163,
+     164,   165,   187,   167,   168,   169,   170,   171,   172,   173,
+     174,   175,    -1,    -1,    -1,    -1,    -1,   181,   161,   162,
+     163,   164,   165,   187,   167,   168,   169,   170,   171,   172,
+     173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,   161,
+     162,   163,   164,   165,   187,   167,   168,   169,   170,   171,
+     172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,
+     161,   162,   163,   164,   165,   187,   167,   168,   169,   170,
+     171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,
+     181,   161,   162,   163,   164,   165,   187,   167,   168,   169,
+     170,   171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,
+      -1,   181,   161,   162,   163,   164,   165,   187,   167,   168,
+     169,   170,   171,   172,   173,   174,   175,    -1,    -1,    -1,
+      -1,    -1,   181,   161,   162,   163,   164,   165,   187,   167,
+     168,   169,   170,   171,   172,   173,   174,   175,    -1,    -1,
+      -1,    -1,    -1,   181,   161,   162,   163,   164,   165,   187,
+     167,   168,   169,   170,   171,   172,   173,   174,   175,    -1,
+      -1,    -1,    -1,    -1,   181,   161,   162,   163,   164,   165,
+     187,   167,   168,   169,   170,   171,   172,   173,   174,   175,
+      -1,    -1,    -1,    -1,    -1,   181,   161,   162,   163,   164,
+     165,   187,   167,   168,   169,   170,   171,   172,   173,   174,
+     175,    -1,    -1,    -1,    -1,    -1,   181,   161,   162,   163,
+     164,   165,   187,   167,   168,   169,   170,   171,   172,   173,
+     174,   175,    -1,    -1,    -1,    -1,    -1,   181,   161,   162,
+     163,   164,   165,   187,   167,   168,   169,   170,   171,   172,
+     173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,   161,
+     162,   163,   164,   165,   187,   167,   168,   169,   170,   171,
+     172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,
+     161,   162,   163,   164,   165,   187,   167,   168,   169,   170,
+     171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,
+     181,   161,   162,   163,   164,   165,   187,   167,   168,   169,
+     170,   171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,
+      -1,   181,   161,   162,   163,   164,   165,   187,   167,   168,
+     169,   170,   171,   172,   173,   174,   175,    -1,    -1,    -1,
+      -1,    -1,   181,   161,   162,   163,   164,   165,   187,   167,
+     168,   169,   170,   171,   172,   173,   174,   175,    -1,    -1,
+      -1,    -1,    -1,   181,   161,   162,   163,   164,   165,   187,
+     167,   168,   169,   170,   171,   172,   173,   174,   175,    -1,
+      -1,    -1,    -1,    -1,   181,   161,   162,   163,   164,   165,
+     187,   167,   168,   169,   170,   171,   172,   173,   174,   175,
+      -1,    -1,    -1,    -1,    -1,   181,    -1,    -1,    -1,   185,
+     161,   162,   163,   164,   165,    -1,   167,   168,   169,   170,
+     171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,
+     181,    -1,    -1,    -1,   185,   161,   162,   163,   164,   165,
+      -1,   167,   168,   169,   170,   171,   172,   173,   174,   175,
+      -1,    -1,    -1,    -1,    -1,   181,    -1,    -1,    -1,   185,
+     161,   162,   163,   164,   165,    -1,   167,   168,   169,   170,
+     171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,
+     181,    -1,    -1,    -1,   185,   161,   162,   163,   164,   165,
+      -1,   167,   168,   169,   170,   171,   172,   173,   174,   175,
+      -1,    -1,    -1,    -1,    -1,   181,    -1,    -1,    -1,   185,
+     161,   162,   163,   164,   165,    -1,   167,   168,   169,   170,
+     171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,
+     181,    -1,    -1,    -1,   185,   161,   162,   163,   164,   165,
+      -1,   167,   168,   169,   170,   171,   172,   173,   174,   175,
+      -1,    -1,    -1,    -1,    -1,   181,    -1,    -1,    -1,   185,
+     161,   162,   163,   164,   165,    -1,   167,   168,   169,   170,
+     171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,
+     181,    -1,    -1,    -1,   185,   161,   162,   163,   164,   165,
+      -1,   167,   168,   169,   170,   171,   172,   173,   174,   175,
+      -1,    -1,    -1,    -1,    -1,   181,    -1,    -1,    -1,   185,
+     161,   162,   163,   164,   165,    -1,   167,   168,   169,   170,
+     171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,
+     181,    -1,    -1,    -1,   185,   161,   162,   163,   164,   165,
+      -1,   167,   168,   169,   170,   171,   172,   173,   174,   175,
+      -1,    -1,    -1,    -1,    -1,   181,    -1,    -1,    -1,   185,
+     161,   162,   163,   164,   165,    -1,   167,   168,   169,   170,
+     171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,
+     181,    -1,    -1,    -1,   185,   161,   162,   163,   164,   165,
+      -1,   167,   168,   169,   170,   171,   172,   173,   174,   175,
+      -1,    -1,    -1,    -1,    -1,   181,    -1,    -1,    -1,   185,
+     161,   162,   163,   164,   165,    -1,   167,   168,   169,   170,
+     171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,
+     181,    -1,    -1,    -1,   185,   161,   162,   163,   164,   165,
+      -1,   167,   168,   169,   170,   171,   172,   173,   174,   175,
+      -1,    -1,    -1,    -1,    -1,   181,    -1,    -1,    -1,   185,
+     161,   162,   163,   164,   165,    -1,   167,   168,   169,   170,
+     171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,
+     181,    -1,    -1,    -1,   185,   161,   162,   163,   164,   165,
+      -1,   167,   168,   169,   170,   171,   172,   173,   174,   175,
+      -1,    -1,    -1,    -1,    -1,   181,    -1,    -1,    -1,   185,
+     161,   162,   163,   164,   165,    -1,   167,   168,   169,   170,
+     171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,
+     181,    -1,    -1,    -1,   185,   161,   162,   163,   164,   165,
+      -1,   167,   168,   169,   170,   171,   172,   173,   174,   175,
+      -1,    -1,    -1,    -1,    -1,   181,    -1,    -1,    -1,   185,
+     161,   162,   163,   164,   165,    -1,   167,   168,   169,   170,
+     171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,
+     181,    -1,    -1,    -1,   185,   161,   162,   163,   164,   165,
+      -1,   167,   168,   169,   170,   171,   172,   173,   174,   175,
+      -1,    -1,    -1,    -1,    -1,   181,    -1,    -1,    -1,   185,
+     161,   162,   163,   164,   165,    -1,   167,   168,   169,   170,
+     171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,
+     181,    -1,    -1,    -1,   185,   161,   162,   163,   164,   165,
+      -1,   167,   168,   169,   170,   171,   172,   173,   174,   175,
+      -1,    -1,    -1,    -1,    -1,   181,    -1,    -1,    -1,   185,
+     161,   162,   163,   164,   165,    -1,   167,   168,   169,   170,
+     171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,
+     181,    -1,    -1,    -1,   185,   161,   162,   163,   164,   165,
+      -1,   167,   168,   169,   170,   171,   172,   173,   174,   175,
+      -1,    -1,    -1,    -1,    -1,   181,    -1,    -1,    -1,   185,
+     161,   162,   163,   164,   165,    -1,   167,   168,   169,   170,
+     171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,
+     181,    -1,    -1,    -1,   185,   161,   162,   163,   164,   165,
+      -1,   167,   168,   169,   170,   171,   172,   173,   174,   175,
+      -1,    -1,    -1,    -1,    -1,   181,    -1,   183,   161,   162,
+     163,   164,   165,    -1,   167,   168,   169,   170,   171,   172,
+     173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,    -1,
+     183,   161,   162,   163,   164,   165,    -1,   167,   168,   169,
+     170,   171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,
+      -1,   181,    -1,   183,   161,   162,   163,   164,   165,    -1,
+     167,   168,   169,   170,   171,   172,   173,   174,   175,    -1,
+      -1,    -1,    -1,    -1,   181,    -1,   183,   161,   162,   163,
+     164,   165,    -1,   167,   168,   169,   170,   171,   172,   173,
+     174,   175,    -1,    -1,    -1,    -1,    -1,   181,    -1,   183,
+     161,   162,   163,   164,   165,    -1,   167,   168,   169,   170,
+     171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,
+     181,    -1,   183,   161,   162,   163,   164,   165,    -1,   167,
+     168,   169,   170,   171,   172,   173,   174,   175,    -1,    -1,
+      -1,    -1,    -1,   181,    -1,   183,   161,   162,   163,   164,
+     165,    -1,   167,   168,   169,   170,   171,   172,   173,   174,
+     175,    -1,    -1,    -1,    -1,    -1,   181,    -1,   183,   161,
+     162,   163,   164,   165,    -1,   167,   168,   169,   170,   171,
+     172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,
+      -1,   183,   161,   162,   163,   164,   165,    -1,   167,   168,
+     169,   170,   171,   172,   173,   174,   175,    -1,    -1,    -1,
+      -1,    -1,   181,    -1,   183,   161,   162,   163,   164,   165,
+      -1,   167,   168,   169,   170,   171,   172,   173,   174,   175,
+      -1,    -1,    -1,    -1,    -1,   181,    -1,   183,   161,   162,
+     163,   164,   165,    -1,   167,   168,   169,   170,   171,   172,
+     173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,    -1,
+     183,   161,   162,   163,   164,   165,    -1,   167,   168,   169,
+     170,   171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,
+      -1,   181,    -1,   183,   161,   162,   163,   164,   165,    -1,
+     167,   168,   169,   170,   171,   172,   173,   174,   175,    -1,
+      -1,    -1,    -1,    -1,   181,    -1,   183,   161,   162,   163,
+     164,   165,    -1,   167,   168,   169,   170,   171,   172,   173,
+     174,   175,    -1,    -1,    -1,    -1,    -1,   181,    -1,   183,
+     161,   162,   163,   164,   165,    -1,   167,   168,   169,   170,
+     171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,
+     181,    -1,   183,   161,   162,   163,   164,   165,    -1,   167,
+     168,   169,   170,   171,   172,   173,   174,   175,    -1,    -1,
+      -1,    -1,    -1,   181,    -1,   183,   161,   162,   163,   164,
+     165,    -1,   167,   168,   169,   170,   171,   172,   173,   174,
+     175,    -1,    -1,    -1,    -1,    -1,   181,    -1,   183,   161,
+     162,   163,   164,   165,    -1,   167,   168,   169,   170,   171,
+     172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,
+      -1,   183,   161,   162,   163,   164,   165,    -1,   167,   168,
+     169,   170,   171,   172,   173,   174,   175,    -1,    -1,    -1,
+      -1,    -1,   181,    -1,   183,   161,   162,   163,   164,   165,
+      -1,   167,   168,   169,   170,   171,   172,   173,   174,   175,
+      -1,    -1,    -1,    -1,    -1,   181,    -1,   183,   161,   162,
+     163,   164,   165,    -1,   167,   168,   169,   170,   171,   172,
+     173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,    -1,
+     183,   161,   162,   163,   164,   165,    -1,   167,   168,   169,
+     170,   171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,
+      -1,   181,    -1,   183,   161,   162,   163,   164,   165,    -1,
+     167,   168,   169,   170,   171,   172,   173,   174,   175,    -1,
+      -1,    -1,    -1,    -1,   181,    -1,   183,   161,   162,   163,
+     164,   165,    -1,   167,   168,   169,   170,   171,   172,   173,
+     174,   175,    -1,    -1,    -1,    -1,    -1,   181,    -1,   183,
+     161,   162,   163,   164,   165,    -1,   167,   168,   169,   170,
+     171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,
+     181,    -1,   183,   161,   162,   163,   164,   165,    -1,   167,
+     168,   169,   170,   171,   172,   173,   174,   175,    -1,    -1,
+      -1,    -1,    -1,   181,    -1,   183,   161,   162,   163,   164,
+     165,    -1,   167,   168,   169,   170,   171,   172,   173,   174,
+     175,    -1,    -1,    -1,    -1,    -1,   181,    -1,   183,   161,
+     162,   163,   164,   165,    -1,   167,   168,   169,   170,   171,
+     172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,
+      -1,   183,   161,   162,   163,   164,   165,    -1,   167,   168,
+     169,   170,   171,   172,   173,   174,   175,    -1,    -1,    -1,
+      -1,    -1,   181,    -1,   183,   161,   162,   163,   164,   165,
+      -1,   167,   168,   169,   170,   171,   172,   173,   174,   175,
+      -1,    -1,    -1,    -1,    -1,   181,    -1,   183,   161,   162,
+     163,   164,   165,    -1,   167,   168,   169,   170,   171,   172,
+     173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,    -1,
+     183,   161,   162,   163,   164,   165,    -1,   167,   168,   169,
+     170,   171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,
+      -1,   181,    -1,   183,   161,   162,   163,   164,   165,    -1,
+     167,   168,   169,   170,   171,   172,   173,   174,   175,    -1,
+      -1,    -1,    -1,    -1,   181,    -1,   183,   161,   162,   163,
+     164,   165,    -1,   167,   168,   169,   170,   171,   172,   173,
+     174,   175,    -1,    -1,    -1,    -1,    -1,   181,    -1,   183,
+     161,   162,   163,   164,   165,    -1,   167,   168,   169,   170,
+     171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,
+     181,    -1,   183,   161,   162,   163,   164,   165,    -1,   167,
+     168,   169,   170,   171,   172,   173,   174,   175,    -1,    -1,
+      -1,    -1,    -1,   181,    -1,   183,   161,   162,   163,   164,
+     165,    -1,   167,   168,   169,   170,   171,   172,   173,   174,
+     175,    -1,    -1,    -1,    -1,    -1,   181,    -1,   183,   161,
+     162,   163,   164,   165,    -1,   167,   168,   169,   170,   171,
+     172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,
+      -1,   183,   161,   162,   163,   164,   165,    -1,   167,   168,
+     169,   170,   171,   172,   173,   174,   175,    -1,    -1,    -1,
+      -1,    -1,   181,    -1,   183,   161,   162,   163,   164,   165,
+      -1,   167,   168,   169,   170,   171,   172,   173,   174,   175,
+      -1,    -1,    -1,    -1,    -1,   181,    -1,   183,   161,   162,
+     163,   164,   165,    -1,   167,   168,   169,   170,   171,   172,
+     173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,    -1,
+     183,   161,   162,   163,   164,   165,    -1,   167,   168,   169,
+     170,   171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,
+      -1,   181,    -1,   183,   161,   162,   163,   164,   165,    -1,
+     167,   168,   169,   170,   171,   172,   173,   174,   175,    -1,
+      -1,    -1,    -1,    -1,   181,    -1,   183,   161,   162,   163,
+     164,   165,    -1,   167,   168,   169,   170,   171,   172,   173,
+     174,   175,    -1,    -1,    -1,    -1,    -1,   181,    -1,   183,
+     161,   162,   163,   164,   165,    -1,   167,   168,   169,   170,
+     171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,
+     181,    -1,   183,   161,   162,   163,   164,   165,    -1,   167,
+     168,   169,   170,   171,   172,   173,   174,   175,    -1,    -1,
+      -1,    -1,    -1,   181,    -1,   183,   161,   162,   163,   164,
+     165,    -1,   167,   168,   169,   170,   171,   172,   173,   174,
+     175,    -1,    -1,    -1,    -1,    -1,   181,    -1,   183,   161,
+     162,   163,   164,   165,    -1,   167,   168,   169,   170,   171,
+     172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,
+      -1,   183,   161,   162,   163,   164,   165,    -1,   167,   168,
+     169,   170,   171,   172,   173,   174,   175,    -1,    -1,    -1,
+      -1,    -1,   181,    -1,   183,   161,   162,   163,   164,   165,
+      -1,   167,   168,   169,   170,   171,   172,   173,   174,   175,
+      -1,    -1,    -1,    -1,    -1,   181,    -1,   183,   161,   162,
+     163,   164,   165,    -1,   167,   168,   169,   170,   171,   172,
+     173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,    -1,
+     183,   161,   162,   163,   164,   165,    -1,   167,   168,   169,
+     170,   171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,
+      -1,   181,    -1,   183,   161,   162,   163,   164,   165,    -1,
+     167,   168,   169,   170,   171,   172,   173,   174,   175,    -1,
+      -1,    -1,    -1,    -1,   181,    -1,   183,   161,   162,   163,
+     164,   165,    -1,   167,   168,   169,   170,   171,   172,   173,
+     174,   175,    -1,    -1,    -1,    -1,    -1,   181,    -1,   183,
+     161,   162,   163,   164,   165,    -1,   167,   168,   169,   170,
+     171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,
+     181,    -1,   183,   161,   162,   163,   164,   165,    -1,   167,
+     168,   169,   170,   171,   172,   173,   174,   175,    -1,    -1,
+      -1,    -1,    -1,   181,    -1,   183,   161,   162,   163,   164,
+     165,    -1,   167,   168,   169,   170,   171,   172,   173,   174,
+     175,    -1,    -1,    -1,    -1,    -1,   181,    -1,   183,   161,
+     162,   163,   164,   165,    -1,   167,   168,   169,   170,   171,
+     172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,
+      -1,   183,   161,   162,   163,   164,   165,    -1,   167,   168,
+     169,   170,   171,   172,   173,   174,   175,    -1,    -1,    -1,
+      -1,    -1,   181,    -1,   183,   161,   162,   163,   164,   165,
+      -1,   167,   168,   169,   170,   171,   172,   173,   174,   175,
+      -1,    -1,    -1,    -1,    -1,   181,    -1,   183,   161,   162,
+     163,   164,   165,    -1,   167,   168,   169,   170,   171,   172,
+     173,   174,   175,    -1,    -1,    -1,    -1,    -1,   181,    -1,
+     183,   161,   162,   163,   164,   165,    -1,   167,   168,   169,
+     170,   171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,
+      -1,   181,    -1,   183,   161,   162,   163,   164,   165,    -1,
+     167,   168,   169,   170,   171,   172,   173,   174,   175,    -1,
+      -1,    -1,    -1,    -1,   181,    -1,   183,   161,   162,   163,
+     164,   165,    -1,   167,   168,   169,   170,   171,   172,   173,
+     174,   175,    -1,    -1,    -1,    -1,    -1,   181,    -1,   183,
+     161,   162,   163,   164,   165,    -1,   167,   168,   169,   170,
+     171,   172,   173,   174,   175,    -1,    -1,    -1,    -1,    -1,
+     181,    -1,   183,   161,   162,   163,   164,   165,    -1,   167,
+     168,   169,   170,   171,   172,   173,   174,   175,    -1,    -1,
+      -1,    -1,    -1,   181,    -1,   183
 };
 /* -*-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/share/bison/bison.simple"
 
 /* Skeleton output parser for bison,
-   Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
+
+   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002 Free Software
+   Foundation, Inc.
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -2722,62 +2759,131 @@ static const short yycheck[] = {    23,
    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.  */
+/* 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.  */
+
+/* All symbols defined below should begin with yy or YY, to avoid
+   infringing on user name space.  This should be done even for local
+   variables, as they might otherwise be expanded by user macros.
+   There are some unavoidable exceptions within include files to
+   define necessary library symbols; they are noted "INFRINGES ON
+   USER NAME SPACE" below.  */
+
+#if ! defined (yyoverflow) || defined (YYERROR_VERBOSE)
+
+/* The parser invokes alloca or malloc; define the necessary symbols.  */
+
+# if YYSTACK_USE_ALLOCA
+#  define YYSTACK_ALLOC alloca
+# else
+#  ifndef YYSTACK_USE_ALLOCA
+#   if defined (alloca) || defined (_ALLOCA_H)
+#    define YYSTACK_ALLOC alloca
+#   else
+#    ifdef __GNUC__
+#     define YYSTACK_ALLOC __builtin_alloca
+#    endif
+#   endif
+#  endif
+# endif
+
+# ifdef YYSTACK_ALLOC
+   /* Pacify GCC's `empty if-body' warning. */
+#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
+# else
+#  if defined (__STDC__) || defined (__cplusplus)
+#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+#   define YYSIZE_T size_t
+#  endif
+#  define YYSTACK_ALLOC malloc
+#  define YYSTACK_FREE free
+# endif
+#endif /* ! defined (yyoverflow) || defined (YYERROR_VERBOSE) */
+
+
+#if (! defined (yyoverflow) \
+     && (! defined (__cplusplus) \
+	 || (YYLTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
+
+/* A type that is properly aligned for any stack member.  */
+union yyalloc
+{
+  short yyss;
+  YYSTYPE yyvs;
+# if YYLSP_NEEDED
+  YYLTYPE yyls;
+# endif
+};
+
+/* The size of the maximum gap between one aligned stack and the next.  */
+# define YYSTACK_GAP_MAX (sizeof (union yyalloc) - 1)
+
+/* The size of an array large to enough to hold all stacks, each with
+   N elements.  */
+# if YYLSP_NEEDED
+#  define YYSTACK_BYTES(N) \
+     ((N) * (sizeof (short) + sizeof (YYSTYPE) + sizeof (YYLTYPE))	\
+      + 2 * YYSTACK_GAP_MAX)
+# else
+#  define YYSTACK_BYTES(N) \
+     ((N) * (sizeof (short) + sizeof (YYSTYPE))				\
+      + YYSTACK_GAP_MAX)
+# endif
+
+/* Copy COUNT objects from FROM to TO.  The source and destination do
+   not overlap.  */
+# ifndef YYCOPY
+#  if 1 < __GNUC__
+#   define YYCOPY(To, From, Count) \
+      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
+#  else
+#   define YYCOPY(To, From, Count)		\
+      do					\
+	{					\
+	  register YYSIZE_T yyi;		\
+	  for (yyi = 0; yyi < (Count); yyi++)	\
+	    (To)[yyi] = (From)[yyi];		\
+	}					\
+      while (0)
+#  endif
+# endif
+
+/* Relocate STACK from its old location to the new one.  The
+   local variables YYSIZE and YYSTACKSIZE give the old and new number of
+   elements in the stack, and YYPTR gives the new location of the
+   stack.  Advance YYPTR to a properly aligned location for the next
+   stack.  */
+# define YYSTACK_RELOCATE(Stack)					\
+    do									\
+      {									\
+	YYSIZE_T yynewbytes;						\
+	YYCOPY (&yyptr->Stack, Stack, yysize);				\
+	Stack = &yyptr->Stack;						\
+	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAX;	\
+	yyptr += yynewbytes / sizeof (*yyptr);				\
+      }									\
+    while (0)
 
-#ifndef YYSTACK_USE_ALLOCA
-#ifdef alloca
-#define YYSTACK_USE_ALLOCA
-#else /* alloca not defined */
-#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
-#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.  */
-#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>  */
- #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
-#endif /* __hpux */
+
+
+#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
+# define YYSIZE_T __SIZE_TYPE__
 #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 */
-
-#ifdef YYSTACK_USE_ALLOCA
-#define YYSTACK_ALLOC alloca
-#else
-#define YYSTACK_ALLOC malloc
+#if ! defined (YYSIZE_T) && defined (size_t)
+# define YYSIZE_T size_t
+#endif
+#if ! defined (YYSIZE_T)
+# if defined (__STDC__) || defined (__cplusplus)
+#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+#  define YYSIZE_T size_t
+# endif
+#endif
+#if ! defined (YYSIZE_T)
+# define YYSIZE_T unsigned int
 #endif
-
-/* Note: there must be only one dollar sign in this file.
-   It is replaced by the list of actions, each action
-   as one case of the switch.  */
 
 #define yyerrok		(yyerrstatus = 0)
 #define yyclearin	(yychar = YYEMPTY)
@@ -2786,131 +2892,161 @@ static const short yycheck[] = {    23,
 #define YYACCEPT	goto yyacceptlab
 #define YYABORT 	goto yyabortlab
 #define YYERROR		goto yyerrlab1
-/* Like YYERROR except do call yyerror.
-   This remains here temporarily to ease the
-   transition to the new meaning of YYERROR, for GCC.
+/* Like YYERROR except do call yyerror.  This remains here temporarily
+   to ease the transition to the new meaning of YYERROR, for GCC.
    Once GCC version 2 has supplanted version 1, this can go.  */
 #define YYFAIL		goto yyerrlab
 #define YYRECOVERING()  (!!yyerrstatus)
-#define YYBACKUP(token, value) \
+#define YYBACKUP(Token, Value)					\
 do								\
   if (yychar == YYEMPTY && yylen == 1)				\
-    { yychar = (token), yylval = (value);			\
+    {								\
+      yychar = (Token);						\
+      yylval = (Value);						\
       yychar1 = YYTRANSLATE (yychar);				\
       YYPOPSTACK;						\
       goto yybackup;						\
     }								\
   else								\
-    { yyerror ("syntax error: cannot back up"); YYERROR; }	\
+    { 								\
+      yyerror ("syntax error: cannot back up");			\
+      YYERROR;							\
+    }								\
 while (0)
 
 #define YYTERROR	1
 #define YYERRCODE	256
 
-#ifndef YYPURE
-#define YYLEX		yylex()
-#endif
-
-#ifdef YYPURE
-#ifdef YYLSP_NEEDED
-#ifdef YYLEX_PARAM
-#define YYLEX		yylex(&yylval, &yylloc, YYLEX_PARAM)
-#else
-#define YYLEX		yylex(&yylval, &yylloc)
-#endif
-#else /* not YYLSP_NEEDED */
-#ifdef YYLEX_PARAM
-#define YYLEX		yylex(&yylval, YYLEX_PARAM)
-#else
-#define YYLEX		yylex(&yylval)
-#endif
-#endif /* not YYLSP_NEEDED */
-#endif
-
-/* If nonreentrant, generate the variables here */
 
-#ifndef YYPURE
+/* YYLLOC_DEFAULT -- Compute the default location (before the actions
+   are run).
 
-int	yychar;			/*  the lookahead symbol		*/
-YYSTYPE	yylval;			/*  the semantic value of the		*/
-				/*  lookahead symbol			*/
+   When YYLLOC_DEFAULT is run, CURRENT is set the location of the
+   first token.  By default, to implement support for ranges, extend
+   its range to the last symbol.  */
 
-#ifdef YYLSP_NEEDED
-YYLTYPE yylloc;			/*  location data for the lookahead	*/
-				/*  symbol				*/
+#ifndef YYLLOC_DEFAULT
+# define YYLLOC_DEFAULT(Current, Rhs, N)       	\
+   Current.last_line   = Rhs[N].last_line;	\
+   Current.last_column = Rhs[N].last_column;
 #endif
 
-int yynerrs;			/*  number of parse errors so far       */
-#endif  /* not YYPURE */
-
-#if YYDEBUG != 0
-int yydebug;			/*  nonzero means print parse trace	*/
-/* Since this is uninitialized, it does not stop multiple parsers
-   from coexisting.  */
-#endif
-
-/*  YYINITDEPTH indicates the initial size of the parser's stacks	*/
 
+/* YYLEX -- calling `yylex' with the right arguments.  */
+
+#if YYPURE
+# if YYLSP_NEEDED
+#  ifdef YYLEX_PARAM
+#   define YYLEX		yylex (&yylval, &yylloc, YYLEX_PARAM)
+#  else
+#   define YYLEX		yylex (&yylval, &yylloc)
+#  endif
+# else /* !YYLSP_NEEDED */
+#  ifdef YYLEX_PARAM
+#   define YYLEX		yylex (&yylval, YYLEX_PARAM)
+#  else
+#   define YYLEX		yylex (&yylval)
+#  endif
+# endif /* !YYLSP_NEEDED */
+#else /* !YYPURE */
+# define YYLEX			yylex ()
+#endif /* !YYPURE */
+
+
+/* Enable debugging if requested.  */
+#if YYDEBUG
+
+# ifndef YYFPRINTF
+#  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
+#  define YYFPRINTF fprintf
+# endif
+
+# define YYDPRINTF(Args)			\
+do {						\
+  if (yydebug)					\
+    YYFPRINTF Args;				\
+} while (0)
+/* Nonzero means print parse trace.  It is left uninitialized so that
+   multiple parsers can coexist.  */
+int yydebug;
+#else /* !YYDEBUG */
+# define YYDPRINTF(Args)
+#endif /* !YYDEBUG */
+
+/* YYINITDEPTH -- initial size of the parser's stacks.  */
 #ifndef	YYINITDEPTH
-#define YYINITDEPTH 200
+# define YYINITDEPTH 200
 #endif
 
-/*  YYMAXDEPTH is the maximum size the stacks can grow to
-    (effective only if the built-in stack extension method is used).  */
+/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
+   if the built-in stack extension method is used).
+
+   Do not make this value too large; the results are undefined if
+   SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH)
+   evaluated with infinite-precision integer arithmetic.  */
 
 #if YYMAXDEPTH == 0
-#undef YYMAXDEPTH
+# undef YYMAXDEPTH
 #endif
 
 #ifndef YYMAXDEPTH
-#define YYMAXDEPTH 10000
+# 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.  */
-
-#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++ */
-#ifndef __cplusplus
-
-/* This is the most reliable way to avoid incompatibilities
-   in available built-in functions on various systems.  */
-static void
-__yy_memcpy (to, from, count)
-     char *to;
-     char *from;
-     unsigned int count;
-{
-  register char *f = from;
-  register char *t = to;
-  register int i = count;
-
-  while (i-- > 0)
-    *t++ = *f++;
-}
-
-#else /* __cplusplus */
-
-/* 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)
-{
-  register char *t = to;
-  register char *f = from;
-  register int i = count;
+#ifdef YYERROR_VERBOSE
 
-  while (i-- > 0)
-    *t++ = *f++;
+# ifndef yystrlen
+#  if defined (__GLIBC__) && defined (_STRING_H)
+#   define yystrlen strlen
+#  else
+/* Return the length of YYSTR.  */
+static YYSIZE_T
+#   if defined (__STDC__) || defined (__cplusplus)
+yystrlen (const char *yystr)
+#   else
+yystrlen (yystr)
+     const char *yystr;
+#   endif
+{
+  register const char *yys = yystr;
+
+  while (*yys++ != '\0')
+    continue;
+
+  return yys - yystr - 1;
 }
-
-#endif
+#  endif
+# endif
+
+# ifndef yystpcpy
+#  if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
+#   define yystpcpy stpcpy
+#  else
+/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
+   YYDEST.  */
+static char *
+#   if defined (__STDC__) || defined (__cplusplus)
+yystpcpy (char *yydest, const char *yysrc)
+#   else
+yystpcpy (yydest, yysrc)
+     char *yydest;
+     const char *yysrc;
+#   endif
+{
+  register char *yyd = yydest;
+  register const char *yys = yysrc;
+
+  while ((*yyd++ = *yys++) != '\0')
+    continue;
+
+  return yyd - 1;
+}
+#  endif
+# endif
 #endif
 
-#line 217 "/usr/lib/bison.simple"
+#line 315 "/usr/share/bison/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 *.
@@ -2919,76 +3055,121 @@ __yy_memcpy (char *to, char *from, unsigned int count)
    to the proper pointer type.  */
 
 #ifdef YYPARSE_PARAM
-#ifdef __cplusplus
-#define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
-#define YYPARSE_PARAM_DECL
-#else /* not __cplusplus */
-#define YYPARSE_PARAM_ARG YYPARSE_PARAM
-#define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
-#endif /* not __cplusplus */
-#else /* not YYPARSE_PARAM */
-#define YYPARSE_PARAM_ARG
-#define YYPARSE_PARAM_DECL
-#endif /* not YYPARSE_PARAM */
+# if defined (__STDC__) || defined (__cplusplus)
+#  define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
+#  define YYPARSE_PARAM_DECL
+# else
+#  define YYPARSE_PARAM_ARG YYPARSE_PARAM
+#  define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
+# endif
+#else /* !YYPARSE_PARAM */
+# define YYPARSE_PARAM_ARG
+# define YYPARSE_PARAM_DECL
+#endif /* !YYPARSE_PARAM */
 
 /* Prevent warning if -Wstrict-prototypes.  */
 #ifdef __GNUC__
-#ifdef YYPARSE_PARAM
+# ifdef YYPARSE_PARAM
 int yyparse (void *);
-#else
+# else
 int yyparse (void);
+# endif
 #endif
+
+/* YY_DECL_VARIABLES -- depending whether we use a pure parser,
+   variables are global, or local to YYPARSE.  */
+
+#define YY_DECL_NON_LSP_VARIABLES			\
+/* The lookahead symbol.  */				\
+int yychar;						\
+							\
+/* The semantic value of the lookahead symbol. */	\
+YYSTYPE yylval;						\
+							\
+/* Number of parse errors so far.  */			\
+int yynerrs;
+
+#if YYLSP_NEEDED
+# define YY_DECL_VARIABLES			\
+YY_DECL_NON_LSP_VARIABLES			\
+						\
+/* Location data for the lookahead symbol.  */	\
+YYLTYPE yylloc;
+#else
+# define YY_DECL_VARIABLES			\
+YY_DECL_NON_LSP_VARIABLES
 #endif
 
+
+/* If nonreentrant, generate the variables here. */
+
+#if !YYPURE
+YY_DECL_VARIABLES
+#endif  /* !YYPURE */
+
 int
-yyparse(YYPARSE_PARAM_ARG)
+yyparse (YYPARSE_PARAM_ARG)
      YYPARSE_PARAM_DECL
 {
+  /* If reentrant, generate the variables here. */
+#if YYPURE
+  YY_DECL_VARIABLES
+#endif  /* !YYPURE */
+
   register int yystate;
   register int yyn;
+  int yyresult;
+  /* Number of tokens to shift before error messages enabled.  */
+  int yyerrstatus;
+  /* Lookahead token as an internal (translated) token number.  */
+  int yychar1 = 0;
+
+  /* Three stacks and their tools:
+     `yyss': related to states,
+     `yyvs': related to semantic values,
+     `yyls': related to locations.
+
+     Refer to the stacks thru separate pointers, to allow yyoverflow
+     to reallocate them elsewhere.  */
+
+  /* The state stack. */
+  short	yyssa[YYINITDEPTH];
+  short *yyss = yyssa;
   register short *yyssp;
-  register YYSTYPE *yyvsp;
-  int yyerrstatus;	/*  number of tokens to shift before error messages enabled */
-  int yychar1 = 0;		/*  lookahead token as an internal (translated) token number */
 
-  short	yyssa[YYINITDEPTH];	/*  the state stack			*/
-  YYSTYPE yyvsa[YYINITDEPTH];	/*  the semantic value stack		*/
-
-  short *yyss = yyssa;		/*  refer to the stacks thru separate pointers */
-  YYSTYPE *yyvs = yyvsa;	/*  to allow yyoverflow to reallocate them elsewhere */
+  /* The semantic value stack.  */
+  YYSTYPE yyvsa[YYINITDEPTH];
+  YYSTYPE *yyvs = yyvsa;
+  register YYSTYPE *yyvsp;
 
-#ifdef YYLSP_NEEDED
-  YYLTYPE yylsa[YYINITDEPTH];	/*  the location stack			*/
+#if YYLSP_NEEDED
+  /* The location stack.  */
+  YYLTYPE yylsa[YYINITDEPTH];
   YYLTYPE *yyls = yylsa;
   YYLTYPE *yylsp;
+#endif
 
-#define YYPOPSTACK   (yyvsp--, yyssp--, yylsp--)
+#if YYLSP_NEEDED
+# define YYPOPSTACK   (yyvsp--, yyssp--, yylsp--)
 #else
-#define YYPOPSTACK   (yyvsp--, yyssp--)
+# define YYPOPSTACK   (yyvsp--, yyssp--)
 #endif
 
-  int yystacksize = YYINITDEPTH;
-  int yyfree_stacks = 0;
+  YYSIZE_T yystacksize = YYINITDEPTH;
 
-#ifdef YYPURE
-  int yychar;
-  YYSTYPE yylval;
-  int yynerrs;
-#ifdef YYLSP_NEEDED
-  YYLTYPE yylloc;
-#endif
-#endif
 
-  YYSTYPE yyval;		/*  the variable used to return		*/
-				/*  semantic values from the action	*/
-				/*  routines				*/
+  /* The variables used to return semantic value and location from the
+     action routines.  */
+  YYSTYPE yyval;
+#if YYLSP_NEEDED
+  YYLTYPE yyloc;
+#endif
 
+  /* When reducing, the number of symbols on the RHS of the reduced
+     rule. */
   int yylen;
 
-#if YYDEBUG != 0
-  if (yydebug)
-    fprintf(stderr, "Starting parse\n");
-#endif
+  YYDPRINTF ((stderr, "Starting parse\n"));
 
   yystate = 0;
   yyerrstatus = 0;
@@ -3000,110 +3181,110 @@ yyparse(YYPARSE_PARAM_ARG)
      so that they stay on the same level as the state stack.
      The wasted elements are never initialized.  */
 
-  yyssp = yyss - 1;
+  yyssp = yyss;
   yyvsp = yyvs;
-#ifdef YYLSP_NEEDED
+#if YYLSP_NEEDED
   yylsp = yyls;
 #endif
+  goto yysetstate;
 
-/* Push a new state, which is found in  yystate  .  */
-/* In all cases, when you get here, the value and location stacks
-   have just been pushed. so pushing a state here evens the stacks.  */
-yynewstate:
+/*------------------------------------------------------------.
+| yynewstate -- Push a new state, which is found in yystate.  |
+`------------------------------------------------------------*/
+ yynewstate:
+  /* In all cases, when you get here, the value and location stacks
+     have just been pushed. so pushing a state here evens the stacks.
+     */
+  yyssp++;
 
-  *++yyssp = yystate;
+ yysetstate:
+  *yyssp = yystate;
 
   if (yyssp >= yyss + yystacksize - 1)
     {
-      /* Give user a chance to reallocate the stack */
-      /* Use copies of these so that the &'s don't force the real ones into memory. */
-      YYSTYPE *yyvs1 = yyvs;
-      short *yyss1 = yyss;
-#ifdef YYLSP_NEEDED
-      YYLTYPE *yyls1 = yyls;
-#endif
-
       /* Get the current used size of the three stacks, in elements.  */
-      int size = yyssp - yyss + 1;
+      YYSIZE_T yysize = yyssp - yyss + 1;
 
 #ifdef yyoverflow
-      /* Each stack pointer address is followed by the size of
-	 the data in use in that stack, in bytes.  */
-#ifdef YYLSP_NEEDED
-      /* This used to be a conditional around just the two extra args,
-	 but that might be undefined if yyoverflow is a macro.  */
-      yyoverflow("parser stack overflow",
-		 &yyss1, size * sizeof (*yyssp),
-		 &yyvs1, size * sizeof (*yyvsp),
-		 &yyls1, size * sizeof (*yylsp),
-		 &yystacksize);
-#else
-      yyoverflow("parser stack overflow",
-		 &yyss1, size * sizeof (*yyssp),
-		 &yyvs1, size * sizeof (*yyvsp),
-		 &yystacksize);
-#endif
-
-      yyss = yyss1; yyvs = yyvs1;
-#ifdef YYLSP_NEEDED
-      yyls = yyls1;
-#endif
+      {
+	/* Give user a chance to reallocate the stack. Use copies of
+	   these so that the &'s don't force the real ones into
+	   memory.  */
+	YYSTYPE *yyvs1 = yyvs;
+	short *yyss1 = yyss;
+
+	/* Each stack pointer address is followed by the size of the
+	   data in use in that stack, in bytes.  */
+# if YYLSP_NEEDED
+	YYLTYPE *yyls1 = yyls;
+	/* This used to be a conditional around just the two extra args,
+	   but that might be undefined if yyoverflow is a macro.  */
+	yyoverflow ("parser stack overflow",
+		    &yyss1, yysize * sizeof (*yyssp),
+		    &yyvs1, yysize * sizeof (*yyvsp),
+		    &yyls1, yysize * sizeof (*yylsp),
+		    &yystacksize);
+	yyls = yyls1;
+# else
+	yyoverflow ("parser stack overflow",
+		    &yyss1, yysize * sizeof (*yyssp),
+		    &yyvs1, yysize * sizeof (*yyvsp),
+		    &yystacksize);
+# endif
+	yyss = yyss1;
+	yyvs = yyvs1;
+      }
 #else /* no yyoverflow */
+# ifndef YYSTACK_RELOCATE
+      goto yyoverflowlab;
+# else
       /* Extend the stack our own way.  */
       if (yystacksize >= YYMAXDEPTH)
-	{
-	  yyerror("parser stack overflow");
-	  if (yyfree_stacks)
-	    {
-	      free (yyss);
-	      free (yyvs);
-#ifdef YYLSP_NEEDED
-	      free (yyls);
-#endif
-	    }
-	  return 2;
-	}
+	goto yyoverflowlab;
       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));
-#ifdef YYLSP_NEEDED
-      yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp));
-      __yy_memcpy ((char *)yyls, (char *)yyls1,
-		   size * (unsigned int) sizeof (*yylsp));
-#endif
+
+      {
+	short *yyss1 = yyss;
+	union yyalloc *yyptr =
+	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+	if (! yyptr)
+	  goto yyoverflowlab;
+	YYSTACK_RELOCATE (yyss);
+	YYSTACK_RELOCATE (yyvs);
+# if YYLSP_NEEDED
+	YYSTACK_RELOCATE (yyls);
+# endif
+# undef YYSTACK_RELOCATE
+	if (yyss1 != yyssa)
+	  YYSTACK_FREE (yyss1);
+      }
+# endif
 #endif /* no yyoverflow */
 
-      yyssp = yyss + size - 1;
-      yyvsp = yyvs + size - 1;
-#ifdef YYLSP_NEEDED
-      yylsp = yyls + size - 1;
+      yyssp = yyss + yysize - 1;
+      yyvsp = yyvs + yysize - 1;
+#if YYLSP_NEEDED
+      yylsp = yyls + yysize - 1;
 #endif
 
-#if YYDEBUG != 0
-      if (yydebug)
-	fprintf(stderr, "Stack size increased to %d\n", yystacksize);
-#endif
+      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
+		  (unsigned long int) yystacksize));
 
       if (yyssp >= yyss + yystacksize - 1)
 	YYABORT;
     }
 
-#if YYDEBUG != 0
-  if (yydebug)
-    fprintf(stderr, "Entering state %d\n", yystate);
-#endif
+  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
 
   goto yybackup;
- yybackup:
+
+
+/*-----------.
+| yybackup.  |
+`-----------*/
+yybackup:
 
 /* Do appropriate processing given the current state.  */
 /* Read a lookahead token if we need one and don't already have one.  */
@@ -3122,10 +3303,7 @@ yynewstate:
 
   if (yychar == YYEMPTY)
     {
-#if YYDEBUG != 0
-      if (yydebug)
-	fprintf(stderr, "Reading a token: ");
-#endif
+      YYDPRINTF ((stderr, "Reading a token: "));
       yychar = YYLEX;
     }
 
@@ -3136,25 +3314,25 @@ yynewstate:
       yychar1 = 0;
       yychar = YYEOF;		/* Don't call YYLEX any more */
 
-#if YYDEBUG != 0
-      if (yydebug)
-	fprintf(stderr, "Now at end of input.\n");
-#endif
+      YYDPRINTF ((stderr, "Now at end of input.\n"));
     }
   else
     {
-      yychar1 = YYTRANSLATE(yychar);
+      yychar1 = YYTRANSLATE (yychar);
 
-#if YYDEBUG != 0
+#if YYDEBUG
+     /* We have to keep this `#if YYDEBUG', since we use variables
+	which are defined only if `YYDEBUG' is set.  */
       if (yydebug)
 	{
-	  fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
-	  /* Give the individual parser a way to print the precise meaning
-	     of a token, for further debugging info.  */
-#ifdef YYPRINT
+	  YYFPRINTF (stderr, "Next token is %d (%s",
+		     yychar, yytname[yychar1]);
+	  /* Give the individual parser a way to print the precise
+	     meaning of a token, for further debugging info.  */
+# ifdef YYPRINT
 	  YYPRINT (stderr, yychar, yylval);
-#endif
-	  fprintf (stderr, ")\n");
+# endif
+	  YYFPRINTF (stderr, ")\n");
 	}
 #endif
     }
@@ -3186,56 +3364,78 @@ yynewstate:
     YYACCEPT;
 
   /* Shift the lookahead token.  */
-
-#if YYDEBUG != 0
-  if (yydebug)
-    fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
-#endif
+  YYDPRINTF ((stderr, "Shifting token %d (%s), ",
+	      yychar, yytname[yychar1]));
 
   /* Discard the token being shifted unless it is eof.  */
   if (yychar != YYEOF)
     yychar = YYEMPTY;
 
   *++yyvsp = yylval;
-#ifdef YYLSP_NEEDED
+#if YYLSP_NEEDED
   *++yylsp = yylloc;
 #endif
 
-  /* count tokens shifted since error; after three, turn off error status.  */
-  if (yyerrstatus) yyerrstatus--;
+  /* Count tokens shifted since error; after three, turn off error
+     status.  */
+  if (yyerrstatus)
+    yyerrstatus--;
 
   yystate = yyn;
   goto yynewstate;
 
-/* Do the default action for the current state.  */
-yydefault:
 
+/*-----------------------------------------------------------.
+| yydefault -- do the default action for the current state.  |
+`-----------------------------------------------------------*/
+yydefault:
   yyn = yydefact[yystate];
   if (yyn == 0)
     goto yyerrlab;
+  goto yyreduce;
 
-/* Do a reduction.  yyn is the number of a rule to reduce with.  */
+
+/*-----------------------------.
+| yyreduce -- Do a reduction.  |
+`-----------------------------*/
 yyreduce:
+  /* yyn is the number of a rule to reduce with.  */
   yylen = yyr2[yyn];
-  if (yylen > 0)
-    yyval = yyvsp[1-yylen]; /* implement default value of the action */
 
-#if YYDEBUG != 0
+  /* If YYLEN is nonzero, implement the default value of the action:
+     `$$ = $1'.
+
+     Otherwise, the following line sets YYVAL to the semantic value of
+     the lookahead token.  This behavior is undocumented and Bison
+     users should not rely upon it.  Assigning to YYVAL
+     unconditionally makes the parser a bit smaller, and it avoids a
+     GCC warning that YYVAL may be used uninitialized.  */
+  yyval = yyvsp[1-yylen];
+
+#if YYLSP_NEEDED
+  /* Similarly for the default location.  Let the user run additional
+     commands if for instance locations are ranges.  */
+  yyloc = yylsp[1-yylen];
+  YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);
+#endif
+
+#if YYDEBUG
+  /* We have to keep this `#if YYDEBUG', since we use variables which
+     are defined only if `YYDEBUG' is set.  */
   if (yydebug)
     {
-      int i;
+      int yyi;
 
-      fprintf (stderr, "Reducing via rule %d (line %d), ",
-	       yyn, yyrline[yyn]);
+      YYFPRINTF (stderr, "Reducing via rule %d (line %d), ",
+		 yyn, yyrline[yyn]);
 
       /* Print the symbols being reduced, and their result.  */
-      for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)
-	fprintf (stderr, "%s ", yytname[yyrhs[i]]);
-      fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
+      for (yyi = yyprhs[yyn]; yyrhs[yyi] > 0; yyi++)
+	YYFPRINTF (stderr, "%s ", yytname[yyrhs[yyi]]);
+      YYFPRINTF (stderr, " -> %s\n", yytname[yyr1[yyn]]);
     }
 #endif
 
-
   switch (yyn) {
 
 case 4:
@@ -3949,15 +4149,15 @@ case 147:
 { yyval.i = 4 ; ;
     break;}
 case 148:
-#line 798 "Gmsh.y"
+#line 799 "Gmsh.y"
 { yyval.i = 1 ; ;
     break;}
 case 149:
-#line 799 "Gmsh.y"
+#line 800 "Gmsh.y"
 { yyval.i = -1 ; ;
     break;}
 case 150:
-#line 806 "Gmsh.y"
+#line 808 "Gmsh.y"
 {
       TheSymbol.Name = yyvsp[-3].c;
       if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))){
@@ -3985,7 +4185,7 @@ case 150:
     ;
     break;}
 case 151:
-#line 833 "Gmsh.y"
+#line 835 "Gmsh.y"
 {
       TheSymbol.Name = yyvsp[-6].c;
       if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))){
@@ -4020,7 +4220,7 @@ case 151:
     ;
     break;}
 case 152:
-#line 867 "Gmsh.y"
+#line 869 "Gmsh.y"
 {
       if(List_Nbr(yyvsp[-5].l) != List_Nbr(yyvsp[-1].l))
 	vyyerror("Incompatible array dimensions in affectation");
@@ -4068,7 +4268,7 @@ case 152:
     ;
     break;}
 case 153:
-#line 914 "Gmsh.y"
+#line 916 "Gmsh.y"
 {
       TheSymbol.Name = yyvsp[-5].c;
       if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))){
@@ -4084,7 +4284,7 @@ case 153:
     ;
     break;}
 case 154:
-#line 929 "Gmsh.y"
+#line 931 "Gmsh.y"
 {
       TheSymbol.Name = yyvsp[-2].c;
       if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols)))
@@ -4094,7 +4294,7 @@ case 154:
     ;
     break;}
 case 155:
-#line 938 "Gmsh.y"
+#line 940 "Gmsh.y"
 {
       TheSymbol.Name = yyvsp[-5].c ;
       if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols)))
@@ -4108,7 +4308,7 @@ case 155:
     ;
     break;}
 case 156:
-#line 953 "Gmsh.y"
+#line 955 "Gmsh.y"
 { 
       if(!(pStrCat = Get_StringOptionCategory(yyvsp[-5].c)))
 	vyyerror("Unknown string option class '%s'", yyvsp[-5].c);
@@ -4121,7 +4321,7 @@ case 156:
     ;
     break;}
 case 157:
-#line 965 "Gmsh.y"
+#line 967 "Gmsh.y"
 { 
       if(!(pStrCat = Get_StringOptionCategory(yyvsp[-8].c)))
 	vyyerror("Unknown string option class '%s'", yyvsp[-8].c);
@@ -4134,7 +4334,7 @@ case 157:
     ;
     break;}
 case 158:
-#line 979 "Gmsh.y"
+#line 981 "Gmsh.y"
 {
       if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-5].c)))
 	vyyerror("Unknown numeric option class '%s'", yyvsp[-5].c);
@@ -4158,7 +4358,7 @@ case 158:
     ;
     break;}
 case 159:
-#line 1002 "Gmsh.y"
+#line 1004 "Gmsh.y"
 {
       if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-8].c)))
 	vyyerror("Unknown numeric option class '%s'", yyvsp[-8].c);
@@ -4183,7 +4383,7 @@ case 159:
     ;
     break;}
 case 160:
-#line 1026 "Gmsh.y"
+#line 1028 "Gmsh.y"
 {
       if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-4].c)))
 	vyyerror("Unknown numeric option class '%s'", yyvsp[-4].c);
@@ -4196,7 +4396,7 @@ case 160:
     ;
     break;}
 case 161:
-#line 1038 "Gmsh.y"
+#line 1040 "Gmsh.y"
 {
       if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-7].c)))
 	vyyerror("Unknown numeric option class '%s'", yyvsp[-7].c);
@@ -4209,7 +4409,7 @@ case 161:
     ;
     break;}
 case 162:
-#line 1052 "Gmsh.y"
+#line 1054 "Gmsh.y"
 {
       if(!(pColCat = Get_ColorOptionCategory(yyvsp[-7].c)))
 	vyyerror("Unknown color option class '%s'", yyvsp[-7].c);
@@ -4222,7 +4422,7 @@ case 162:
     ;
     break;}
 case 163:
-#line 1064 "Gmsh.y"
+#line 1066 "Gmsh.y"
 {
       if(!(pColCat = Get_ColorOptionCategory(yyvsp[-10].c)))
 	vyyerror("Unknown color option class '%s'", yyvsp[-10].c);
@@ -4235,7 +4435,7 @@ case 163:
     ;
     break;}
 case 164:
-#line 1078 "Gmsh.y"
+#line 1080 "Gmsh.y"
 {
       GmshColorTable *ct = Get_ColorTable(0);
       if(!ct)
@@ -4256,7 +4456,7 @@ case 164:
     ;
     break;}
 case 165:
-#line 1098 "Gmsh.y"
+#line 1100 "Gmsh.y"
 {
       GmshColorTable *ct = Get_ColorTable((int)yyvsp[-6].d);
       if(!ct)
@@ -4277,7 +4477,7 @@ case 165:
     ;
     break;}
 case 166:
-#line 1120 "Gmsh.y"
+#line 1122 "Gmsh.y"
 {
       if(CTX.default_plugins){
 	try {
@@ -4290,7 +4490,7 @@ case 166:
     ;
     break;}
 case 167:
-#line 1132 "Gmsh.y"
+#line 1134 "Gmsh.y"
 {
       if(CTX.default_plugins){
 	try {
@@ -4303,7 +4503,7 @@ case 167:
     ;
     break;}
 case 168:
-#line 1154 "Gmsh.y"
+#line 1156 "Gmsh.y"
 {
       Cdbpts101((int)yyvsp[-4].d,yyvsp[-1].v[0],yyvsp[-1].v[1],yyvsp[-1].v[2],yyvsp[-1].v[3],yyvsp[-1].v[4]);
       yyval.s.Type = MSH_POINT;
@@ -4311,7 +4511,7 @@ case 168:
     ;
     break;}
 case 169:
-#line 1161 "Gmsh.y"
+#line 1163 "Gmsh.y"
 {
       Cdbz101((int)yyvsp[-4].d,MSH_PHYSICAL_POINT,0,0,0,0,0,NULL,yyvsp[-1].l,NULL);
       yyval.s.Type = MSH_PHYSICAL_POINT;
@@ -4319,7 +4519,7 @@ case 169:
     ;
     break;}
 case 170:
-#line 1167 "Gmsh.y"
+#line 1169 "Gmsh.y"
 {
       Vertex *v;
       Attractor *a;
@@ -4340,7 +4540,7 @@ case 170:
     ;
     break;}
 case 171:
-#line 1186 "Gmsh.y"
+#line 1188 "Gmsh.y"
 {
       for(i=0;i<List_Nbr(yyvsp[-3].l);i++){
 	List_Read(yyvsp[-3].l,i,&d);
@@ -4353,7 +4553,7 @@ case 171:
     ;
     break;}
 case 172:
-#line 1200 "Gmsh.y"
+#line 1202 "Gmsh.y"
 {
       Cdbseg101((int)yyvsp[-4].d,MSH_SEGM_LINE,1,yyvsp[-1].l,NULL,-1,-1,0.,1.,NULL,NULL,NULL);
       yyval.s.Type = MSH_SEGM_LINE;
@@ -4361,7 +4561,7 @@ case 172:
     ;
     break;}
 case 173:
-#line 1206 "Gmsh.y"
+#line 1208 "Gmsh.y"
 {
       Cdbseg101((int)yyvsp[-4].d,MSH_SEGM_SPLN,3,yyvsp[-1].l,NULL,-1,-1,0.,1.,NULL,NULL,NULL);
       yyval.s.Type = MSH_SEGM_SPLN;
@@ -4369,7 +4569,7 @@ case 173:
     ;
     break;}
 case 174:
-#line 1212 "Gmsh.y"
+#line 1214 "Gmsh.y"
 {
       Curve *c;
       Attractor *a;
@@ -4390,7 +4590,7 @@ case 174:
     ;
     break;}
 case 175:
-#line 1231 "Gmsh.y"
+#line 1233 "Gmsh.y"
 {
       Cdbseg101((int)yyvsp[-4].d,MSH_SEGM_CIRC,2,yyvsp[-1].l,NULL,-1,-1,0.,1.,NULL,NULL,NULL);
       yyval.s.Type = MSH_SEGM_CIRC ;
@@ -4398,7 +4598,7 @@ case 175:
     ;
     break;}
 case 176:
-#line 1237 "Gmsh.y"
+#line 1239 "Gmsh.y"
 {
       Cdbseg101((int)yyvsp[-4].d,MSH_SEGM_ELLI,2,yyvsp[-1].l,NULL,-1,-1,0.,1.,NULL,NULL,NULL);
       yyval.s.Type = MSH_SEGM_ELLI ;
@@ -4406,7 +4606,7 @@ case 176:
     ;
     break;}
 case 177:
-#line 1243 "Gmsh.y"
+#line 1245 "Gmsh.y"
 {
       List_T *temp;
       int i,j;
@@ -4424,7 +4624,7 @@ case 177:
     ;
     break;}
 case 178:
-#line 1260 "Gmsh.y"
+#line 1262 "Gmsh.y"
 {
       Cdbseg101((int)yyvsp[-14].d,MSH_SEGM_PARAMETRIC,2,NULL,NULL,-1,-1,yyvsp[-10].d,yyvsp[-8].d,yyvsp[-6].c,yyvsp[-4].c,yyvsp[-2].c);
       yyval.s.Type = MSH_SEGM_PARAMETRIC ;
@@ -4432,7 +4632,7 @@ case 178:
     ;
     break;}
 case 179:
-#line 1266 "Gmsh.y"
+#line 1268 "Gmsh.y"
 {
       Cdbz101((int)yyvsp[-4].d,MSH_PHYSICAL_LINE,0,0,0,0,0,NULL,yyvsp[-1].l,NULL);
       yyval.s.Type = MSH_PHYSICAL_LINE;
@@ -4440,7 +4640,7 @@ case 179:
     ;
     break;}
 case 180:
-#line 1272 "Gmsh.y"
+#line 1274 "Gmsh.y"
 {
       yyval.s.Type = MSH_SEGM_LOOP;
       Cdbz101((int)yyvsp[-4].d,yyval.s.Type,0,0,0,0,0,NULL,yyvsp[-1].l,NULL);
@@ -4448,7 +4648,7 @@ case 180:
     ;
     break;}
 case 181:
-#line 1278 "Gmsh.y"
+#line 1280 "Gmsh.y"
 {
       if(List_Nbr(yyvsp[-1].l) > 3){
 	Cdbseg101((int)yyvsp[-4].d,MSH_SEGM_BSPLN,2,yyvsp[-1].l,NULL,-1,-1,0.,1.,NULL,NULL,NULL);
@@ -4461,7 +4661,7 @@ case 181:
     ;
     break;}
 case 182:
-#line 1289 "Gmsh.y"
+#line 1291 "Gmsh.y"
 {
       if(List_Nbr(yyvsp[-1].l) > 3){
 	Cdbseg101((int)yyvsp[-4].d,MSH_SEGM_BEZIER,2,yyvsp[-1].l,NULL,-1,-1,0.,1.,NULL,NULL,NULL);
@@ -4474,7 +4674,7 @@ case 182:
     ;
     break;}
 case 183:
-#line 1300 "Gmsh.y"
+#line 1302 "Gmsh.y"
 {
       List_T *Temp;
       int i;
@@ -4498,7 +4698,7 @@ case 183:
     ;
     break;}
 case 184:
-#line 1325 "Gmsh.y"
+#line 1327 "Gmsh.y"
 {
       Cdbz101((int)yyvsp[-4].d,MSH_SURF_PLAN,0,0,0,0,0,NULL,yyvsp[-1].l,NULL);
       yyval.s.Type = MSH_SURF_PLAN;
@@ -4506,7 +4706,7 @@ case 184:
     ;
     break;}
 case 185:
-#line 1331 "Gmsh.y"
+#line 1333 "Gmsh.y"
 {
       Surface *s,*support;
       support = FindSurface((int)yyvsp[-4].d,THEM);
@@ -4527,7 +4727,7 @@ case 185:
     ;
     break;}
 case 186:
-#line 1350 "Gmsh.y"
+#line 1352 "Gmsh.y"
 {
       List_Read(yyvsp[-1].l,0,&d);
       i = (int)d;
@@ -4550,7 +4750,7 @@ case 186:
     ;
     break;}
 case 187:
-#line 1373 "Gmsh.y"
+#line 1375 "Gmsh.y"
 {
       CreateNurbsSurface ( (int) yyvsp[-16].d , (int)yyvsp[-4].d , (int)yyvsp[-2].d  , yyvsp[-13].l, yyvsp[-10].l, yyvsp[-8].l);
       yyval.s.Type  = MSH_SURF_NURBS;
@@ -4558,13 +4758,13 @@ case 187:
     ;
     break;}
 case 188:
-#line 1381 "Gmsh.y"
+#line 1383 "Gmsh.y"
 {
       CreateNurbsSurfaceSupport ((int)yyvsp[-16].d, (int) yyvsp[-4].d , (int) yyvsp[-2].d , yyvsp[-13].l, yyvsp[-10].l, yyvsp[-8].l);
     ;
     break;}
 case 189:
-#line 1385 "Gmsh.y"
+#line 1387 "Gmsh.y"
 {
       Cdbz101((int)yyvsp[-4].d,MSH_PHYSICAL_SURFACE,0,0,0,0,0,NULL,yyvsp[-1].l,NULL);
       yyval.s.Type = MSH_PHYSICAL_SURFACE;
@@ -4572,7 +4772,7 @@ case 189:
     ;
     break;}
 case 190:
-#line 1391 "Gmsh.y"
+#line 1393 "Gmsh.y"
 {
       Cdbz101((int)yyvsp[-4].d,MSH_SURF_LOOP,0,0,0,0,0,NULL,yyvsp[-1].l,NULL);
       yyval.s.Type = MSH_SURF_LOOP;
@@ -4580,7 +4780,7 @@ case 190:
     ;
     break;}
 case 191:
-#line 1400 "Gmsh.y"
+#line 1402 "Gmsh.y"
 {
       Cdbz101((int)yyvsp[-4].d,MSH_VOLUME,0,0,0,0,0,NULL,yyvsp[-1].l,NULL);
       yyval.s.Type = MSH_VOLUME;
@@ -4588,7 +4788,7 @@ case 191:
     ;
     break;}
 case 192:
-#line 1406 "Gmsh.y"
+#line 1408 "Gmsh.y"
 {
       Cdbz101((int)yyvsp[-4].d,MSH_VOLUME,0,0,0,0,0,NULL,yyvsp[-1].l,NULL);
       yyval.s.Type = MSH_VOLUME;
@@ -4596,7 +4796,7 @@ case 192:
     ;
     break;}
 case 193:
-#line 1412 "Gmsh.y"
+#line 1414 "Gmsh.y"
 {
       Cdbz101((int)yyvsp[-4].d,MSH_PHYSICAL_VOLUME,0,0,0,0,0,NULL,yyvsp[-1].l,NULL);
       yyval.s.Type = MSH_PHYSICAL_VOLUME;
@@ -4604,60 +4804,60 @@ case 193:
     ;
     break;}
 case 194:
-#line 1425 "Gmsh.y"
+#line 1427 "Gmsh.y"
 {
       TranslateShapes (yyvsp[-3].v[0],yyvsp[-3].v[1],yyvsp[-3].v[2],yyvsp[-1].l,1);
       yyval.l = yyvsp[-1].l;
     ;
     break;}
 case 195:
-#line 1430 "Gmsh.y"
+#line 1432 "Gmsh.y"
 {
       RotateShapes(yyvsp[-8].v[0],yyvsp[-8].v[1],yyvsp[-8].v[2],yyvsp[-6].v[0],yyvsp[-6].v[1],yyvsp[-6].v[2],yyvsp[-4].d,yyvsp[-1].l);
       yyval.l = yyvsp[-1].l;
     ;
     break;}
 case 196:
-#line 1435 "Gmsh.y"
+#line 1437 "Gmsh.y"
 {
       SymmetryShapes(yyvsp[-3].v[0],yyvsp[-3].v[1],yyvsp[-3].v[2],yyvsp[-3].v[3],yyvsp[-1].l,1);
       yyval.l = yyvsp[-1].l;
     ;
     break;}
 case 197:
-#line 1440 "Gmsh.y"
+#line 1442 "Gmsh.y"
 {
       DilatShapes(yyvsp[-6].v[0],yyvsp[-6].v[1],yyvsp[-6].v[2],yyvsp[-4].d,yyvsp[-1].l,1);
       yyval.l = yyvsp[-1].l;
     ;
     break;}
 case 198:
-#line 1447 "Gmsh.y"
+#line 1449 "Gmsh.y"
 { yyval.l = yyvsp[0].l; ;
     break;}
 case 199:
-#line 1448 "Gmsh.y"
+#line 1450 "Gmsh.y"
 { yyval.l = yyvsp[0].l; ;
     break;}
 case 200:
-#line 1449 "Gmsh.y"
+#line 1451 "Gmsh.y"
 { yyval.l = yyvsp[0].l; ;
     break;}
 case 201:
-#line 1454 "Gmsh.y"
+#line 1456 "Gmsh.y"
 {
       yyval.l = List_Create(3,3,sizeof(Shape));
     ;
     break;}
 case 202:
-#line 1458 "Gmsh.y"
+#line 1460 "Gmsh.y"
 {
       List_Add(yyval.l,&yyvsp[0].s);
       yyval.l = yyvsp[-1].l;
     ;
     break;}
 case 203:
-#line 1463 "Gmsh.y"
+#line 1465 "Gmsh.y"
 {
       for(i=0;i<List_Nbr(yyvsp[-2].l);i++){
 	List_Read(yyvsp[-2].l, i, &d);
@@ -4674,7 +4874,7 @@ case 203:
     ;
     break;}
 case 204:
-#line 1478 "Gmsh.y"
+#line 1480 "Gmsh.y"
 {
       for(i=0;i<List_Nbr(yyvsp[-2].l);i++){
 	List_Read(yyvsp[-2].l, i, &d);
@@ -4691,7 +4891,7 @@ case 204:
     ;
     break;}
 case 205:
-#line 1493 "Gmsh.y"
+#line 1495 "Gmsh.y"
 {
       for(i=0;i<List_Nbr(yyvsp[-2].l);i++){
 	List_Read(yyvsp[-2].l, i, &d);
@@ -4708,7 +4908,7 @@ case 205:
     ;
     break;}
 case 206:
-#line 1515 "Gmsh.y"
+#line 1517 "Gmsh.y"
 {
       yyval.l = List_Create(3,3,sizeof(Shape));
       for(i=0;i<List_Nbr(yyvsp[-1].l);i++){
@@ -4720,7 +4920,7 @@ case 206:
     ;
     break;}
 case 207:
-#line 1533 "Gmsh.y"
+#line 1535 "Gmsh.y"
 {
       for(i=0;i<List_Nbr(yyvsp[-1].l);i++){
 	List_Read (yyvsp[-1].l,i,&TheShape);
@@ -4729,20 +4929,20 @@ case 207:
     ;
     break;}
 case 208:
-#line 1540 "Gmsh.y"
+#line 1542 "Gmsh.y"
 {
 	if(!strcmp(yyvsp[-4].c, "View"))
 	  FreeView((int)yyvsp[-2].d);
       ;
     break;}
 case 209:
-#line 1545 "Gmsh.y"
+#line 1547 "Gmsh.y"
 {
       Init_Mesh(THEM, 1);
     ;
     break;}
 case 210:
-#line 1556 "Gmsh.y"
+#line 1558 "Gmsh.y"
 {
       for(i=0;i<List_Nbr(yyvsp[-1].l);i++){
 	List_Read (yyvsp[-1].l,i,&TheShape);
@@ -4751,7 +4951,7 @@ case 210:
     ;
     break;}
 case 211:
-#line 1570 "Gmsh.y"
+#line 1572 "Gmsh.y"
 {
       if(!strcmp(yyvsp[-2].c, "Include")){
 
@@ -4820,7 +5020,7 @@ case 211:
     ;
     break;}
 case 212:
-#line 1637 "Gmsh.y"
+#line 1639 "Gmsh.y"
 {
       if(!strcmp(yyvsp[-2].c, "Sleep")){
 
@@ -4842,7 +5042,7 @@ case 212:
     ;
     break;}
 case 213:
-#line 1657 "Gmsh.y"
+#line 1659 "Gmsh.y"
 {
 #ifndef _NOPLUGIN
     if(CTX.default_plugins)
@@ -4851,14 +5051,15 @@ case 213:
    ;
     break;}
 case 214:
-#line 1664 "Gmsh.y"
+#line 1666 "Gmsh.y"
 {
       exit(0);
     ;
     break;}
 case 215:
-#line 1668 "Gmsh.y"
+#line 1670 "Gmsh.y"
 {
+#ifndef _BLACKBOX
       if(!CTX.batch){ // we're in interactive mode
 	if(Tree_Nbr(THEM->Points) != Last_NumberOfPoints){
 	  Last_NumberOfPoints = Tree_Nbr(THEM->Points);
@@ -4870,10 +5071,11 @@ case 215:
 	  DrawUI();
 	}
       }
+#endif
     ;
     break;}
 case 216:
-#line 1690 "Gmsh.y"
+#line 1694 "Gmsh.y"
 {
       LoopControlVariablesTab[ImbricatedLoop][0] = yyvsp[-3].d ;
       LoopControlVariablesTab[ImbricatedLoop][1] = yyvsp[-1].d ;
@@ -4885,7 +5087,7 @@ case 216:
     ;
     break;}
 case 217:
-#line 1700 "Gmsh.y"
+#line 1704 "Gmsh.y"
 {
       LoopControlVariablesTab[ImbricatedLoop][0] = yyvsp[-5].d ;
       LoopControlVariablesTab[ImbricatedLoop][1] = yyvsp[-3].d ;
@@ -4897,7 +5099,7 @@ case 217:
     ;
     break;}
 case 218:
-#line 1710 "Gmsh.y"
+#line 1714 "Gmsh.y"
 {
       LoopControlVariablesTab[ImbricatedLoop][0] = yyvsp[-3].d ;
       LoopControlVariablesTab[ImbricatedLoop][1] = yyvsp[-1].d ;
@@ -4920,7 +5122,7 @@ case 218:
     ;
     break;}
 case 219:
-#line 1731 "Gmsh.y"
+#line 1735 "Gmsh.y"
 {
       LoopControlVariablesTab[ImbricatedLoop][0] = yyvsp[-5].d ;
       LoopControlVariablesTab[ImbricatedLoop][1] = yyvsp[-3].d ;
@@ -4943,7 +5145,7 @@ case 219:
     ;
     break;}
 case 220:
-#line 1752 "Gmsh.y"
+#line 1756 "Gmsh.y"
 {
       if(LoopControlVariablesTab[ImbricatedLoop-1][1] >  
 	 LoopControlVariablesTab[ImbricatedLoop-1][0]){
@@ -4966,7 +5168,7 @@ case 220:
     ;
     break;}
 case 221:
-#line 1773 "Gmsh.y"
+#line 1777 "Gmsh.y"
 {
       if(!FunctionManager::Instance()->createFunction(yyvsp[0].c,yyin,yyname,yylineno))
 	vyyerror("Redefinition of function %s",yyvsp[0].c);
@@ -4974,32 +5176,32 @@ case 221:
     ;
     break;}
 case 222:
-#line 1779 "Gmsh.y"
+#line 1783 "Gmsh.y"
 {
       if(!FunctionManager::Instance()->leaveFunction(&yyin,yyname,yylineno))
 	vyyerror("Error while exiting function");
     ;
     break;}
 case 223:
-#line 1784 "Gmsh.y"
+#line 1788 "Gmsh.y"
 {
       if(!FunctionManager::Instance()->enterFunction(yyvsp[-1].c,&yyin,yyname,yylineno))
 	vyyerror("Unknown function %s",yyvsp[-1].c);
     ;
     break;}
 case 224:
-#line 1789 "Gmsh.y"
+#line 1793 "Gmsh.y"
 {
       if(!yyvsp[-1].d) skip_until("If", "EndIf");
     ;
     break;}
 case 225:
-#line 1793 "Gmsh.y"
+#line 1797 "Gmsh.y"
 {
     ;
     break;}
 case 226:
-#line 1805 "Gmsh.y"
+#line 1809 "Gmsh.y"
 {
       Curve *pc, *prc;
       Extrude_ProtudePoint(TRANSLATE,(int)yyvsp[-4].d,yyvsp[-2].v[0],yyvsp[-2].v[1],yyvsp[-2].v[2],
@@ -5008,7 +5210,7 @@ case 226:
     ;
     break;}
 case 227:
-#line 1812 "Gmsh.y"
+#line 1816 "Gmsh.y"
 {
       Curve *pc, *prc;
       Extrude_ProtudePoint(ROTATE,(int)yyvsp[-8].d,0.,0.,0.,
@@ -5017,7 +5219,7 @@ case 227:
     ;
     break;}
 case 228:
-#line 1819 "Gmsh.y"
+#line 1823 "Gmsh.y"
 {
       Curve *pc, *prc;
       Extrude_ProtudePoint(TRANSLATE_ROTATE,(int)yyvsp[-10].d,yyvsp[-8].v[0],yyvsp[-8].v[1],yyvsp[-8].v[2],
@@ -5026,98 +5228,98 @@ case 228:
     ;
     break;}
 case 229:
-#line 1828 "Gmsh.y"
+#line 1832 "Gmsh.y"
 {
       Extrude_ProtudeCurve(TRANSLATE,(int)yyvsp[-4].d,yyvsp[-2].v[0],yyvsp[-2].v[1],yyvsp[-2].v[2],
 			   0.,0.,0.,0.,0.,0.,0.,1,NULL);
     ;
     break;}
 case 230:
-#line 1833 "Gmsh.y"
+#line 1837 "Gmsh.y"
 {
       Extrude_ProtudeCurve(ROTATE,(int)yyvsp[-8].d,0.,0.,0.,
 			   yyvsp[-6].v[0],yyvsp[-6].v[1],yyvsp[-6].v[2],yyvsp[-4].v[0],yyvsp[-4].v[1],yyvsp[-4].v[2],yyvsp[-2].d,1,NULL);
     ;
     break;}
 case 231:
-#line 1838 "Gmsh.y"
+#line 1842 "Gmsh.y"
 {
       Extrude_ProtudeCurve(TRANSLATE_ROTATE,(int)yyvsp[-10].d,yyvsp[-8].v[0],yyvsp[-8].v[1],yyvsp[-8].v[2],
 			   yyvsp[-6].v[0],yyvsp[-6].v[1],yyvsp[-6].v[2],yyvsp[-4].v[0],yyvsp[-4].v[1],yyvsp[-4].v[2],yyvsp[-2].d,1,NULL);
     ;
     break;}
 case 232:
-#line 1843 "Gmsh.y"
+#line 1847 "Gmsh.y"
 {
       extr.mesh.ExtrudeMesh = false;
       extr.mesh.Recombine = false;
     ;
     break;}
 case 233:
-#line 1848 "Gmsh.y"
+#line 1852 "Gmsh.y"
 {
       Extrude_ProtudeCurve(TRANSLATE,(int)yyvsp[-8].d,yyvsp[-6].v[0],yyvsp[-6].v[1],yyvsp[-6].v[2],
 			   0.,0.,0.,0.,0.,0.,0.,1,&extr);
     ;
     break;}
 case 234:
-#line 1853 "Gmsh.y"
+#line 1857 "Gmsh.y"
 {
       extr.mesh.ExtrudeMesh = false;
       extr.mesh.Recombine = false;
     ;
     break;}
 case 235:
-#line 1858 "Gmsh.y"
+#line 1862 "Gmsh.y"
 {
       Extrude_ProtudeCurve(ROTATE,(int)yyvsp[-12].d,0.,0.,0.,
 			   yyvsp[-10].v[0],yyvsp[-10].v[1],yyvsp[-10].v[2],yyvsp[-8].v[0],yyvsp[-8].v[1],yyvsp[-8].v[2],yyvsp[-6].d,1,&extr);
     ;
     break;}
 case 236:
-#line 1863 "Gmsh.y"
+#line 1867 "Gmsh.y"
 {
       extr.mesh.ExtrudeMesh = false;
       extr.mesh.Recombine = false;
     ;
     break;}
 case 237:
-#line 1868 "Gmsh.y"
+#line 1872 "Gmsh.y"
 {
       Extrude_ProtudeCurve(TRANSLATE_ROTATE,(int)yyvsp[-14].d,yyvsp[-12].v[0],yyvsp[-12].v[1],yyvsp[-12].v[2],
 			   yyvsp[-10].v[0],yyvsp[-10].v[1],yyvsp[-10].v[2],yyvsp[-8].v[0],yyvsp[-8].v[1],yyvsp[-8].v[2],yyvsp[-6].d,1,&extr);
     ;
     break;}
 case 238:
-#line 1876 "Gmsh.y"
+#line 1880 "Gmsh.y"
 {
       Extrude_ProtudeSurface(TRANSLATE,(int)yyvsp[-4].d,yyvsp[-2].v[0],yyvsp[-2].v[1],yyvsp[-2].v[2],
 			     0.,0.,0.,0.,0.,0.,0.,0,NULL);
     ;
     break;}
 case 239:
-#line 1881 "Gmsh.y"
+#line 1885 "Gmsh.y"
 {
       Extrude_ProtudeSurface(ROTATE,(int)yyvsp[-8].d,0.,0.,0.,
 			     yyvsp[-6].v[0],yyvsp[-6].v[1],yyvsp[-6].v[2],yyvsp[-4].v[0],yyvsp[-4].v[1],yyvsp[-4].v[2],yyvsp[-2].d,0,NULL);
     ;
     break;}
 case 240:
-#line 1886 "Gmsh.y"
+#line 1890 "Gmsh.y"
 {
       Extrude_ProtudeSurface(TRANSLATE_ROTATE,(int)yyvsp[-10].d,yyvsp[-8].v[0],yyvsp[-8].v[1],yyvsp[-8].v[2],
 			     yyvsp[-6].v[0],yyvsp[-6].v[1],yyvsp[-6].v[2],yyvsp[-4].v[0],yyvsp[-4].v[1],yyvsp[-4].v[2],yyvsp[-2].d,0,NULL);
     ;
     break;}
 case 241:
-#line 1891 "Gmsh.y"
+#line 1895 "Gmsh.y"
 {
       extr.mesh.ExtrudeMesh = false;
       extr.mesh.Recombine = false;
     ;
     break;}
 case 242:
-#line 1896 "Gmsh.y"
+#line 1900 "Gmsh.y"
 {
       int vol = NEWREG();
       Extrude_ProtudeSurface(TRANSLATE,(int)yyvsp[-8].d,yyvsp[-6].v[0],yyvsp[-6].v[1],yyvsp[-6].v[2],
@@ -5125,14 +5327,14 @@ case 242:
     ;
     break;}
 case 243:
-#line 1902 "Gmsh.y"
+#line 1906 "Gmsh.y"
 {
       extr.mesh.ExtrudeMesh = false;
       extr.mesh.Recombine = false;
     ;
     break;}
 case 244:
-#line 1908 "Gmsh.y"
+#line 1912 "Gmsh.y"
 {
       int vol = NEWREG();
       Extrude_ProtudeSurface(ROTATE,(int)yyvsp[-12].d,0.,0.,0.,
@@ -5140,14 +5342,14 @@ case 244:
     ;
     break;}
 case 245:
-#line 1914 "Gmsh.y"
+#line 1918 "Gmsh.y"
 {
       extr.mesh.ExtrudeMesh = false;
       extr.mesh.Recombine = false;
     ;
     break;}
 case 246:
-#line 1920 "Gmsh.y"
+#line 1924 "Gmsh.y"
 {
       int vol = NEWREG();
       Extrude_ProtudeSurface(TRANSLATE_ROTATE,(int)yyvsp[-14].d,yyvsp[-12].v[0],yyvsp[-12].v[1],yyvsp[-12].v[2],
@@ -5155,17 +5357,17 @@ case 246:
     ;
     break;}
 case 247:
-#line 1929 "Gmsh.y"
+#line 1933 "Gmsh.y"
 {
     ;
     break;}
 case 248:
-#line 1932 "Gmsh.y"
+#line 1936 "Gmsh.y"
 {
     ;
     break;}
 case 249:
-#line 1938 "Gmsh.y"
+#line 1942 "Gmsh.y"
 {
       double d;
       extr.mesh.ExtrudeMesh = true;
@@ -5193,7 +5395,7 @@ case 249:
     ;
     break;}
 case 250:
-#line 1964 "Gmsh.y"
+#line 1968 "Gmsh.y"
 {
       double d;
       extr.mesh.ExtrudeMesh = true;
@@ -5219,13 +5421,13 @@ case 250:
     ;
     break;}
 case 251:
-#line 1988 "Gmsh.y"
+#line 1992 "Gmsh.y"
 {
       extr.mesh.Recombine = true;
     ;
     break;}
 case 252:
-#line 1999 "Gmsh.y"
+#line 2003 "Gmsh.y"
 {
       Curve *c;
       for(i=0;i<List_Nbr(yyvsp[-3].l);i++){
@@ -5245,7 +5447,7 @@ case 252:
     ;
     break;}
 case 253:
-#line 2017 "Gmsh.y"
+#line 2021 "Gmsh.y"
 {
       Curve *c;
       for(i=0;i<List_Nbr(yyvsp[-6].l);i++){
@@ -5265,7 +5467,7 @@ case 253:
     ;
     break;}
 case 254:
-#line 2035 "Gmsh.y"
+#line 2039 "Gmsh.y"
 {
       Curve *c;
       for(i=0;i<List_Nbr(yyvsp[-6].l);i++){
@@ -5285,7 +5487,7 @@ case 254:
     ;
     break;}
 case 255:
-#line 2053 "Gmsh.y"
+#line 2057 "Gmsh.y"
 {
       Surface *s = FindSurface((int)yyvsp[-4].d,THEM);
       if(!s)
@@ -5309,7 +5511,7 @@ case 255:
     ;
     break;}
 case 256:
-#line 2075 "Gmsh.y"
+#line 2079 "Gmsh.y"
 {
       Surface *s = FindSurface((int)yyvsp[-4].d,THEM);
       if(!s)
@@ -5332,7 +5534,7 @@ case 256:
     ;
     break;}
 case 257:
-#line 2096 "Gmsh.y"
+#line 2100 "Gmsh.y"
 {
       Volume *v = FindVolume((int)yyvsp[-4].d,THEM);
       if(!v)
@@ -5355,7 +5557,7 @@ case 257:
     ;
     break;}
 case 258:
-#line 2117 "Gmsh.y"
+#line 2121 "Gmsh.y"
 {
       Surface *s;
       for(i=0;i<List_Nbr(yyvsp[-3].l);i++){
@@ -5371,7 +5573,7 @@ case 258:
     ;
     break;}
 case 259:
-#line 2131 "Gmsh.y"
+#line 2135 "Gmsh.y"
 {
       Surface *s;
       for(i=0;i<List_Nbr(yyvsp[-1].l);i++){
@@ -5387,71 +5589,71 @@ case 259:
     ;
     break;}
 case 260:
-#line 2153 "Gmsh.y"
+#line 2157 "Gmsh.y"
 { 
       ReplaceAllDuplicates(THEM);
     ;
     break;}
 case 261:
-#line 2157 "Gmsh.y"
+#line 2161 "Gmsh.y"
 { 
       IntersectAllSegmentsTogether();
     ;
     break;}
 case 262:
-#line 2168 "Gmsh.y"
+#line 2172 "Gmsh.y"
 {yyval.i = 1;;
     break;}
 case 263:
-#line 2169 "Gmsh.y"
+#line 2173 "Gmsh.y"
 {yyval.i = 0;;
     break;}
 case 264:
-#line 2170 "Gmsh.y"
+#line 2174 "Gmsh.y"
 {yyval.i = -1;;
     break;}
 case 265:
-#line 2171 "Gmsh.y"
+#line 2175 "Gmsh.y"
 {yyval.i = -1;;
     break;}
 case 266:
-#line 2172 "Gmsh.y"
+#line 2176 "Gmsh.y"
 {yyval.i = -1;;
     break;}
 case 267:
-#line 2176 "Gmsh.y"
+#line 2180 "Gmsh.y"
 { yyval.d = yyvsp[0].d;           ;
     break;}
 case 268:
-#line 2177 "Gmsh.y"
+#line 2181 "Gmsh.y"
 { yyval.d = yyvsp[-1].d ;          ;
     break;}
 case 269:
-#line 2178 "Gmsh.y"
+#line 2182 "Gmsh.y"
 { yyval.d = -yyvsp[0].d ;         ;
     break;}
 case 270:
-#line 2179 "Gmsh.y"
+#line 2183 "Gmsh.y"
 { yyval.d = yyvsp[0].d;           ;
     break;}
 case 271:
-#line 2180 "Gmsh.y"
+#line 2184 "Gmsh.y"
 { yyval.d = !yyvsp[0].d ;         ;
     break;}
 case 272:
-#line 2181 "Gmsh.y"
+#line 2185 "Gmsh.y"
 { yyval.d = yyvsp[-2].d - yyvsp[0].d ;     ;
     break;}
 case 273:
-#line 2182 "Gmsh.y"
+#line 2186 "Gmsh.y"
 { yyval.d = yyvsp[-2].d + yyvsp[0].d ;     ;
     break;}
 case 274:
-#line 2183 "Gmsh.y"
+#line 2187 "Gmsh.y"
 { yyval.d = yyvsp[-2].d * yyvsp[0].d ;     ;
     break;}
 case 275:
-#line 2185 "Gmsh.y"
+#line 2189 "Gmsh.y"
 { 
       if(!yyvsp[0].d)
 	vyyerror("Division by zero in '%g / %g'", yyvsp[-2].d, yyvsp[0].d);
@@ -5460,235 +5662,235 @@ case 275:
     ;
     break;}
 case 276:
-#line 2191 "Gmsh.y"
+#line 2195 "Gmsh.y"
 { yyval.d = (int)yyvsp[-2].d % (int)yyvsp[0].d ;  ;
     break;}
 case 277:
-#line 2192 "Gmsh.y"
+#line 2196 "Gmsh.y"
 { yyval.d = pow(yyvsp[-2].d,yyvsp[0].d) ;  ;
     break;}
 case 278:
-#line 2193 "Gmsh.y"
+#line 2197 "Gmsh.y"
 { yyval.d = yyvsp[-2].d < yyvsp[0].d ;     ;
     break;}
 case 279:
-#line 2194 "Gmsh.y"
+#line 2198 "Gmsh.y"
 { yyval.d = yyvsp[-2].d > yyvsp[0].d ;     ;
     break;}
 case 280:
-#line 2195 "Gmsh.y"
+#line 2199 "Gmsh.y"
 { yyval.d = yyvsp[-2].d <= yyvsp[0].d ;    ;
     break;}
 case 281:
-#line 2196 "Gmsh.y"
+#line 2200 "Gmsh.y"
 { yyval.d = yyvsp[-2].d >= yyvsp[0].d ;    ;
     break;}
 case 282:
-#line 2197 "Gmsh.y"
+#line 2201 "Gmsh.y"
 { yyval.d = yyvsp[-2].d == yyvsp[0].d ;    ;
     break;}
 case 283:
-#line 2198 "Gmsh.y"
+#line 2202 "Gmsh.y"
 { yyval.d = yyvsp[-2].d != yyvsp[0].d ;    ;
     break;}
 case 284:
-#line 2199 "Gmsh.y"
+#line 2203 "Gmsh.y"
 { yyval.d = yyvsp[-2].d && yyvsp[0].d ;    ;
     break;}
 case 285:
-#line 2200 "Gmsh.y"
+#line 2204 "Gmsh.y"
 { yyval.d = yyvsp[-2].d || yyvsp[0].d ;    ;
     break;}
 case 286:
-#line 2201 "Gmsh.y"
+#line 2205 "Gmsh.y"
 { yyval.d = yyvsp[-4].d? yyvsp[-2].d : yyvsp[0].d ; ;
     break;}
 case 287:
-#line 2202 "Gmsh.y"
+#line 2206 "Gmsh.y"
 { yyval.d = exp(yyvsp[-1].d);      ;
     break;}
 case 288:
-#line 2203 "Gmsh.y"
+#line 2207 "Gmsh.y"
 { yyval.d = log(yyvsp[-1].d);      ;
     break;}
 case 289:
-#line 2204 "Gmsh.y"
+#line 2208 "Gmsh.y"
 { yyval.d = log10(yyvsp[-1].d);    ;
     break;}
 case 290:
-#line 2205 "Gmsh.y"
+#line 2209 "Gmsh.y"
 { yyval.d = sqrt(yyvsp[-1].d);     ;
     break;}
 case 291:
-#line 2206 "Gmsh.y"
+#line 2210 "Gmsh.y"
 { yyval.d = sin(yyvsp[-1].d);      ;
     break;}
 case 292:
-#line 2207 "Gmsh.y"
+#line 2211 "Gmsh.y"
 { yyval.d = asin(yyvsp[-1].d);     ;
     break;}
 case 293:
-#line 2208 "Gmsh.y"
+#line 2212 "Gmsh.y"
 { yyval.d = cos(yyvsp[-1].d);      ;
     break;}
 case 294:
-#line 2209 "Gmsh.y"
+#line 2213 "Gmsh.y"
 { yyval.d = acos(yyvsp[-1].d);     ;
     break;}
 case 295:
-#line 2210 "Gmsh.y"
+#line 2214 "Gmsh.y"
 { yyval.d = tan(yyvsp[-1].d);      ;
     break;}
 case 296:
-#line 2211 "Gmsh.y"
+#line 2215 "Gmsh.y"
 { yyval.d = atan(yyvsp[-1].d);     ;
     break;}
 case 297:
-#line 2212 "Gmsh.y"
+#line 2216 "Gmsh.y"
 { yyval.d = atan2(yyvsp[-3].d,yyvsp[-1].d); ;
     break;}
 case 298:
-#line 2213 "Gmsh.y"
+#line 2217 "Gmsh.y"
 { yyval.d = sinh(yyvsp[-1].d);     ;
     break;}
 case 299:
-#line 2214 "Gmsh.y"
+#line 2218 "Gmsh.y"
 { yyval.d = cosh(yyvsp[-1].d);     ;
     break;}
 case 300:
-#line 2215 "Gmsh.y"
+#line 2219 "Gmsh.y"
 { yyval.d = tanh(yyvsp[-1].d);     ;
     break;}
 case 301:
-#line 2216 "Gmsh.y"
+#line 2220 "Gmsh.y"
 { yyval.d = fabs(yyvsp[-1].d);     ;
     break;}
 case 302:
-#line 2217 "Gmsh.y"
+#line 2221 "Gmsh.y"
 { yyval.d = floor(yyvsp[-1].d);    ;
     break;}
 case 303:
-#line 2218 "Gmsh.y"
+#line 2222 "Gmsh.y"
 { yyval.d = ceil(yyvsp[-1].d);     ;
     break;}
 case 304:
-#line 2219 "Gmsh.y"
+#line 2223 "Gmsh.y"
 { yyval.d = fmod(yyvsp[-3].d,yyvsp[-1].d);  ;
     break;}
 case 305:
-#line 2220 "Gmsh.y"
+#line 2224 "Gmsh.y"
 { yyval.d = fmod(yyvsp[-3].d,yyvsp[-1].d);  ;
     break;}
 case 306:
-#line 2221 "Gmsh.y"
+#line 2225 "Gmsh.y"
 { yyval.d = sqrt(yyvsp[-3].d*yyvsp[-3].d+yyvsp[-1].d*yyvsp[-1].d); ;
     break;}
 case 307:
-#line 2222 "Gmsh.y"
+#line 2226 "Gmsh.y"
 { yyval.d = yyvsp[-1].d*(double)rand()/(double)RAND_MAX; ;
     break;}
 case 308:
-#line 2224 "Gmsh.y"
+#line 2228 "Gmsh.y"
 { yyval.d = exp(yyvsp[-1].d);      ;
     break;}
 case 309:
-#line 2225 "Gmsh.y"
+#line 2229 "Gmsh.y"
 { yyval.d = log(yyvsp[-1].d);      ;
     break;}
 case 310:
-#line 2226 "Gmsh.y"
+#line 2230 "Gmsh.y"
 { yyval.d = log10(yyvsp[-1].d);    ;
     break;}
 case 311:
-#line 2227 "Gmsh.y"
+#line 2231 "Gmsh.y"
 { yyval.d = sqrt(yyvsp[-1].d);     ;
     break;}
 case 312:
-#line 2228 "Gmsh.y"
+#line 2232 "Gmsh.y"
 { yyval.d = sin(yyvsp[-1].d);      ;
     break;}
 case 313:
-#line 2229 "Gmsh.y"
+#line 2233 "Gmsh.y"
 { yyval.d = asin(yyvsp[-1].d);     ;
     break;}
 case 314:
-#line 2230 "Gmsh.y"
+#line 2234 "Gmsh.y"
 { yyval.d = cos(yyvsp[-1].d);      ;
     break;}
 case 315:
-#line 2231 "Gmsh.y"
+#line 2235 "Gmsh.y"
 { yyval.d = acos(yyvsp[-1].d);     ;
     break;}
 case 316:
-#line 2232 "Gmsh.y"
+#line 2236 "Gmsh.y"
 { yyval.d = tan(yyvsp[-1].d);      ;
     break;}
 case 317:
-#line 2233 "Gmsh.y"
+#line 2237 "Gmsh.y"
 { yyval.d = atan(yyvsp[-1].d);     ;
     break;}
 case 318:
-#line 2234 "Gmsh.y"
+#line 2238 "Gmsh.y"
 { yyval.d = atan2(yyvsp[-3].d,yyvsp[-1].d); ;
     break;}
 case 319:
-#line 2235 "Gmsh.y"
+#line 2239 "Gmsh.y"
 { yyval.d = sinh(yyvsp[-1].d);     ;
     break;}
 case 320:
-#line 2236 "Gmsh.y"
+#line 2240 "Gmsh.y"
 { yyval.d = cosh(yyvsp[-1].d);     ;
     break;}
 case 321:
-#line 2237 "Gmsh.y"
+#line 2241 "Gmsh.y"
 { yyval.d = tanh(yyvsp[-1].d);     ;
     break;}
 case 322:
-#line 2238 "Gmsh.y"
+#line 2242 "Gmsh.y"
 { yyval.d = fabs(yyvsp[-1].d);     ;
     break;}
 case 323:
-#line 2239 "Gmsh.y"
+#line 2243 "Gmsh.y"
 { yyval.d = floor(yyvsp[-1].d);    ;
     break;}
 case 324:
-#line 2240 "Gmsh.y"
+#line 2244 "Gmsh.y"
 { yyval.d = ceil(yyvsp[-1].d);     ;
     break;}
 case 325:
-#line 2241 "Gmsh.y"
+#line 2245 "Gmsh.y"
 { yyval.d = fmod(yyvsp[-3].d,yyvsp[-1].d);  ;
     break;}
 case 326:
-#line 2242 "Gmsh.y"
+#line 2246 "Gmsh.y"
 { yyval.d = fmod(yyvsp[-3].d,yyvsp[-1].d);  ;
     break;}
 case 327:
-#line 2243 "Gmsh.y"
+#line 2247 "Gmsh.y"
 { yyval.d = sqrt(yyvsp[-3].d*yyvsp[-3].d+yyvsp[-1].d*yyvsp[-1].d); ;
     break;}
 case 328:
-#line 2244 "Gmsh.y"
+#line 2248 "Gmsh.y"
 { yyval.d = yyvsp[-1].d*(double)rand()/(double)RAND_MAX; ;
     break;}
 case 329:
-#line 2253 "Gmsh.y"
+#line 2257 "Gmsh.y"
 { yyval.d = yyvsp[0].d; ;
     break;}
 case 330:
-#line 2254 "Gmsh.y"
+#line 2258 "Gmsh.y"
 { yyval.d = 3.141592653589793; ;
     break;}
 case 331:
-#line 2255 "Gmsh.y"
+#line 2259 "Gmsh.y"
 { yyval.d = ParUtil::Instance()->rank(); ;
     break;}
 case 332:
-#line 2256 "Gmsh.y"
+#line 2260 "Gmsh.y"
 { yyval.d = ParUtil::Instance()->size(); ;
     break;}
 case 333:
-#line 2261 "Gmsh.y"
+#line 2265 "Gmsh.y"
 {
       TheSymbol.Name = yyvsp[0].c ;
       if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) {
@@ -5700,7 +5902,7 @@ case 333:
     ;
     break;}
 case 334:
-#line 2272 "Gmsh.y"
+#line 2276 "Gmsh.y"
 {
       TheSymbol.Name = yyvsp[-3].c ;
       if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) {
@@ -5718,7 +5920,7 @@ case 334:
     ;
     break;}
 case 335:
-#line 2289 "Gmsh.y"
+#line 2293 "Gmsh.y"
 {
       TheSymbol.Name = yyvsp[-1].c ;
       if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) {
@@ -5730,7 +5932,7 @@ case 335:
     ;
     break;}
 case 336:
-#line 2300 "Gmsh.y"
+#line 2304 "Gmsh.y"
 {
       TheSymbol.Name = yyvsp[-4].c ;
       if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) {
@@ -5748,7 +5950,7 @@ case 336:
     ;
     break;}
 case 337:
-#line 2319 "Gmsh.y"
+#line 2323 "Gmsh.y"
 {
       if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-2].c))){
 	vyyerror("Unknown numeric option class '%s'", yyvsp[-2].c);
@@ -5765,7 +5967,7 @@ case 337:
     ;
     break;}
 case 338:
-#line 2335 "Gmsh.y"
+#line 2339 "Gmsh.y"
 {
       if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-5].c))){
 	vyyerror("Unknown numeric option class '%s'", yyvsp[-5].c);
@@ -5782,7 +5984,7 @@ case 338:
     ;
     break;}
 case 339:
-#line 2351 "Gmsh.y"
+#line 2355 "Gmsh.y"
 {
       if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-3].c))){
 	vyyerror("Unknown numeric option class '%s'", yyvsp[-3].c);
@@ -5799,7 +6001,7 @@ case 339:
     ;
     break;}
 case 340:
-#line 2367 "Gmsh.y"
+#line 2371 "Gmsh.y"
 {
       if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-6].c))){
 	vyyerror("Unknown numeric option class '%s'", yyvsp[-6].c);
@@ -5816,130 +6018,130 @@ case 340:
     ;
     break;}
 case 341:
-#line 2385 "Gmsh.y"
+#line 2389 "Gmsh.y"
 {
       memcpy(yyval.v, yyvsp[0].v, 5*sizeof(double)) ;
     ;
     break;}
 case 342:
-#line 2389 "Gmsh.y"
+#line 2393 "Gmsh.y"
 {
       for(i=0 ; i<5 ; i++) yyval.v[i] = -yyvsp[0].v[i] ;
     ;
     break;}
 case 343:
-#line 2393 "Gmsh.y"
+#line 2397 "Gmsh.y"
 { 
       for(i=0 ; i<5 ; i++) yyval.v[i] = yyvsp[0].v[i];
     ;
     break;}
 case 344:
-#line 2397 "Gmsh.y"
+#line 2401 "Gmsh.y"
 { 
       for(i=0 ; i<5 ; i++) yyval.v[i] = yyvsp[-2].v[i] - yyvsp[0].v[i] ;
     ;
     break;}
 case 345:
-#line 2401 "Gmsh.y"
+#line 2405 "Gmsh.y"
 {
       for(i=0 ; i<5 ; i++) yyval.v[i] = yyvsp[-2].v[i] + yyvsp[0].v[i] ;
     ;
     break;}
 case 346:
-#line 2407 "Gmsh.y"
+#line 2412 "Gmsh.y"
 { 
       yyval.v[0]=yyvsp[-9].d;  yyval.v[1]=yyvsp[-7].d;  yyval.v[2]=yyvsp[-5].d;  yyval.v[3]=yyvsp[-3].d; yyval.v[4]=yyvsp[-1].d;
     ;
     break;}
 case 347:
-#line 2411 "Gmsh.y"
+#line 2416 "Gmsh.y"
 { 
       yyval.v[0]=yyvsp[-7].d;  yyval.v[1]=yyvsp[-5].d;  yyval.v[2]=yyvsp[-3].d;  yyval.v[3]=yyvsp[-1].d; yyval.v[4]=1.0;
     ;
     break;}
 case 348:
-#line 2415 "Gmsh.y"
+#line 2420 "Gmsh.y"
 {
       yyval.v[0]=yyvsp[-5].d;  yyval.v[1]=yyvsp[-3].d;  yyval.v[2]=yyvsp[-1].d;  yyval.v[3]=0.0; yyval.v[4]=1.0;
     ;
     break;}
 case 349:
-#line 2419 "Gmsh.y"
+#line 2424 "Gmsh.y"
 {
       yyval.v[0]=yyvsp[-5].d;  yyval.v[1]=yyvsp[-3].d;  yyval.v[2]=yyvsp[-1].d;  yyval.v[3]=0.0; yyval.v[4]=1.0;
     ;
     break;}
 case 350:
-#line 2426 "Gmsh.y"
+#line 2431 "Gmsh.y"
 {
     ;
     break;}
 case 351:
-#line 2429 "Gmsh.y"
+#line 2434 "Gmsh.y"
 {
     ;
     break;}
 case 352:
-#line 2435 "Gmsh.y"
+#line 2440 "Gmsh.y"
 {
     ;
     break;}
 case 353:
-#line 2438 "Gmsh.y"
+#line 2443 "Gmsh.y"
 {
     ;
     break;}
 case 354:
-#line 2444 "Gmsh.y"
+#line 2449 "Gmsh.y"
 {
     ;
     break;}
 case 355:
-#line 2447 "Gmsh.y"
+#line 2452 "Gmsh.y"
 {
        yyval.l=yyvsp[-1].l;
     ;
     break;}
 case 356:
-#line 2451 "Gmsh.y"
+#line 2456 "Gmsh.y"
 {
        yyval.l=yyvsp[-1].l;
     ;
     break;}
 case 357:
-#line 2458 "Gmsh.y"
+#line 2463 "Gmsh.y"
 {
       yyval.l = List_Create(2,1,sizeof(List_T*)) ;
       List_Add(yyval.l, &(yyvsp[0].l)) ;
     ;
     break;}
 case 358:
-#line 2463 "Gmsh.y"
+#line 2468 "Gmsh.y"
 {
       List_Add(yyval.l, &(yyvsp[0].l)) ;
     ;
     break;}
 case 359:
-#line 2471 "Gmsh.y"
+#line 2476 "Gmsh.y"
 {
       yyval.l = List_Create(2,1,sizeof(double)) ;
       List_Add(yyval.l, &(yyvsp[0].d)) ;
     ;
     break;}
 case 360:
-#line 2476 "Gmsh.y"
+#line 2481 "Gmsh.y"
 {
       yyval.l = yyvsp[0].l ;
     ;
     break;}
 case 361:
-#line 2480 "Gmsh.y"
+#line 2485 "Gmsh.y"
 {
       yyval.l=yyvsp[-1].l;
     ;
     break;}
 case 362:
-#line 2484 "Gmsh.y"
+#line 2489 "Gmsh.y"
 {
       yyval.l=yyvsp[-1].l;
       for(i=0 ; i<List_Nbr(yyval.l) ; i++){
@@ -5949,7 +6151,7 @@ case 362:
     ;
     break;}
 case 363:
-#line 2495 "Gmsh.y"
+#line 2500 "Gmsh.y"
 { 
       yyval.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.)) 
@@ -5957,7 +6159,7 @@ case 363:
     ;
     break;}
 case 364:
-#line 2501 "Gmsh.y"
+#line 2506 "Gmsh.y"
 {
       yyval.l = List_Create(2,1,sizeof(double)) ; 
       if(!yyvsp[0].d || (yyvsp[-4].d<yyvsp[-2].d && yyvsp[0].d<0) || (yyvsp[-4].d>yyvsp[-2].d && yyvsp[0].d>0)){
@@ -5970,7 +6172,7 @@ case 364:
    ;
     break;}
 case 365:
-#line 2512 "Gmsh.y"
+#line 2517 "Gmsh.y"
 {
       yyval.l = List_Create(2,1,sizeof(double)) ;
       TheSymbol.Name = yyvsp[-2].c ;
@@ -5986,7 +6188,7 @@ case 365:
     ;
     break;}
 case 366:
-#line 2526 "Gmsh.y"
+#line 2531 "Gmsh.y"
 {
       yyval.l = List_Create(2,1,sizeof(double)) ;
       TheSymbol.Name = yyvsp[-2].c ;
@@ -6004,7 +6206,7 @@ case 366:
     ;
     break;}
 case 367:
-#line 2542 "Gmsh.y"
+#line 2547 "Gmsh.y"
 {
       yyval.l = List_Create(2,1,sizeof(double)) ;
       TheSymbol.Name = yyvsp[-5].c ;
@@ -6026,7 +6228,7 @@ case 367:
     ;
     break;}
 case 368:
-#line 2562 "Gmsh.y"
+#line 2567 "Gmsh.y"
 {
       yyval.l = List_Create(2,1,sizeof(double)) ;
       TheSymbol.Name = yyvsp[-5].c ;
@@ -6050,26 +6252,26 @@ case 368:
     ;
     break;}
 case 369:
-#line 2587 "Gmsh.y"
+#line 2592 "Gmsh.y"
 {
       yyval.l = List_Create(2,1,sizeof(double)) ;
       List_Add(yyval.l, &(yyvsp[0].d)) ;
     ;
     break;}
 case 370:
-#line 2592 "Gmsh.y"
+#line 2597 "Gmsh.y"
 {
       yyval.l = yyvsp[0].l ;
     ;
     break;}
 case 371:
-#line 2596 "Gmsh.y"
+#line 2601 "Gmsh.y"
 {
       List_Add(yyval.l, &(yyvsp[0].d)) ;
     ;
     break;}
 case 372:
-#line 2600 "Gmsh.y"
+#line 2605 "Gmsh.y"
 {
       for(i=0 ; i<List_Nbr(yyvsp[0].l) ; i++){
 	List_Read(yyvsp[0].l, i, &d) ;
@@ -6079,26 +6281,26 @@ case 372:
     ;
     break;}
 case 373:
-#line 2612 "Gmsh.y"
+#line 2617 "Gmsh.y"
 {
       yyval.u = PACK_COLOR((int)yyvsp[-7].d, (int)yyvsp[-5].d, (int)yyvsp[-3].d, (int)yyvsp[-1].d);
     ;
     break;}
 case 374:
-#line 2616 "Gmsh.y"
+#line 2621 "Gmsh.y"
 {
       yyval.u = PACK_COLOR((int)yyvsp[-5].d, (int)yyvsp[-3].d, (int)yyvsp[-1].d, 255);
     ;
     break;}
 case 375:
-#line 2627 "Gmsh.y"
+#line 2632 "Gmsh.y"
 {
       yyval.u = Get_ColorForString(ColorString, -1, yyvsp[0].c, &flag);
       if(flag) vyyerror("Unknown color '%s'", yyvsp[0].c);
     ;
     break;}
 case 376:
-#line 2632 "Gmsh.y"
+#line 2637 "Gmsh.y"
 {
       if(!(pColCat = Get_ColorOptionCategory(yyvsp[-4].c))){
 	vyyerror("Unknown color option class '%s'", yyvsp[-4].c);
@@ -6116,13 +6318,13 @@ case 376:
     ;
     break;}
 case 377:
-#line 2651 "Gmsh.y"
+#line 2656 "Gmsh.y"
 {
       yyval.l = yyvsp[-1].l;
     ;
     break;}
 case 378:
-#line 2655 "Gmsh.y"
+#line 2660 "Gmsh.y"
 {
       yyval.l = List_Create(256,10,sizeof(unsigned int)) ;
       GmshColorTable *ct = Get_ColorTable((int)yyvsp[-3].d);
@@ -6135,26 +6337,26 @@ case 378:
     ;
     break;}
 case 379:
-#line 2669 "Gmsh.y"
+#line 2674 "Gmsh.y"
 {
       yyval.l = List_Create(256,10,sizeof(unsigned int)) ;
       List_Add(yyval.l, &(yyvsp[0].u)) ;
     ;
     break;}
 case 380:
-#line 2674 "Gmsh.y"
+#line 2679 "Gmsh.y"
 {
       List_Add(yyval.l, &(yyvsp[0].u)) ;
     ;
     break;}
 case 381:
-#line 2681 "Gmsh.y"
+#line 2686 "Gmsh.y"
 {
       yyval.c = yyvsp[0].c;
     ;
     break;}
 case 382:
-#line 2685 "Gmsh.y"
+#line 2690 "Gmsh.y"
 {
       yyval.c = (char *)Malloc((strlen(yyvsp[-3].c)+strlen(yyvsp[-1].c)+1)*sizeof(char)) ;
       strcpy(yyval.c, yyvsp[-3].c) ;  
@@ -6164,7 +6366,7 @@ case 382:
     ;
     break;}
 case 383:
-#line 2693 "Gmsh.y"
+#line 2698 "Gmsh.y"
 {
       yyval.c = (char *)Malloc((strlen(yyvsp[-1].c)+1)*sizeof(char)) ;
       for(i=strlen(yyvsp[-1].c)-1; i>=0; i--){
@@ -6179,13 +6381,13 @@ case 383:
     ;
     break;}
 case 384:
-#line 2706 "Gmsh.y"
+#line 2711 "Gmsh.y"
 {
       yyval.c = yyvsp[-1].c;
     ;
     break;}
 case 385:
-#line 2710 "Gmsh.y"
+#line 2715 "Gmsh.y"
 {
       i = PrintListOfDouble(yyvsp[-3].c,yyvsp[-1].l,tmpstring);
       if(i<0){
@@ -6205,7 +6407,7 @@ case 385:
     ;
     break;}
 case 386:
-#line 2728 "Gmsh.y"
+#line 2733 "Gmsh.y"
 { 
       if(!(pStrCat = Get_StringOptionCategory(yyvsp[-3].c)))
 	vyyerror("Unknown string option class '%s'", yyvsp[-3].c);
@@ -6221,7 +6423,7 @@ case 386:
     ;
     break;}
 case 387:
-#line 2742 "Gmsh.y"
+#line 2747 "Gmsh.y"
 { 
       if(!(pStrCat = Get_StringOptionCategory(yyvsp[-6].c)))
 	vyyerror("Unknown string option class '%s'", yyvsp[-6].c);
@@ -6237,49 +6439,35 @@ case 387:
     ;
     break;}
 }
-   /* the action file gets copied in in place of this dollarsign */
-#line 543 "/usr/lib/bison.simple"
+
+#line 705 "/usr/share/bison/bison.simple"
+
 
   yyvsp -= yylen;
   yyssp -= yylen;
-#ifdef YYLSP_NEEDED
+#if YYLSP_NEEDED
   yylsp -= yylen;
 #endif
 
-#if YYDEBUG != 0
+#if YYDEBUG
   if (yydebug)
     {
-      short *ssp1 = yyss - 1;
-      fprintf (stderr, "state stack now");
-      while (ssp1 != yyssp)
-	fprintf (stderr, " %d", *++ssp1);
-      fprintf (stderr, "\n");
+      short *yyssp1 = yyss - 1;
+      YYFPRINTF (stderr, "state stack now");
+      while (yyssp1 != yyssp)
+	YYFPRINTF (stderr, " %d", *++yyssp1);
+      YYFPRINTF (stderr, "\n");
     }
 #endif
 
   *++yyvsp = yyval;
-
-#ifdef YYLSP_NEEDED
-  yylsp++;
-  if (yylen == 0)
-    {
-      yylsp->first_line = yylloc.first_line;
-      yylsp->first_column = yylloc.first_column;
-      yylsp->last_line = (yylsp-1)->last_line;
-      yylsp->last_column = (yylsp-1)->last_column;
-      yylsp->text = 0;
-    }
-  else
-    {
-      yylsp->last_line = (yylsp+yylen-1)->last_line;
-      yylsp->last_column = (yylsp+yylen-1)->last_column;
-    }
+#if YYLSP_NEEDED
+  *++yylsp = yyloc;
 #endif
 
-  /* Now "shift" the result of the reduction.
-     Determine what state that goes to,
-     based on the state we popped back to
-     and the rule number reduced by.  */
+  /* Now `shift' the result of the reduction.  Determine what state
+     that goes to, based on the state we popped back to and the rule
+     number reduced by.  */
 
   yyn = yyr1[yyn];
 
@@ -6291,10 +6479,13 @@ case 387:
 
   goto yynewstate;
 
-yyerrlab:   /* here on detecting error */
 
-  if (! yyerrstatus)
-    /* If not already recovering from an error, report this error.  */
+/*------------------------------------.
+| yyerrlab -- here on detecting error |
+`------------------------------------*/
+yyerrlab:
+  /* If not already recovering from an error, report this error.  */
+  if (!yyerrstatus)
     {
       ++yynerrs;
 
@@ -6303,102 +6494,121 @@ yyerrlab:   /* here on detecting error */
 
       if (yyn > YYFLAG && yyn < YYLAST)
 	{
-	  int size = 0;
-	  char *msg;
-	  int x, count;
-
-	  count = 0;
-	  /* Start X at -yyn if nec to avoid negative indexes in yycheck.  */
-	  for (x = (yyn < 0 ? -yyn : 0);
-	       x < (sizeof(yytname) / sizeof(char *)); x++)
-	    if (yycheck[x + yyn] == x)
-	      size += strlen(yytname[x]) + 15, count++;
-	  msg = (char *) malloc(size + 15);
-	  if (msg != 0)
+	  YYSIZE_T yysize = 0;
+	  char *yymsg;
+	  int yyx, yycount;
+
+	  yycount = 0;
+	  /* Start YYX at -YYN if negative to avoid negative indexes in
+	     YYCHECK.  */
+	  for (yyx = yyn < 0 ? -yyn : 0;
+	       yyx < (int) (sizeof (yytname) / sizeof (char *)); yyx++)
+	    if (yycheck[yyx + yyn] == yyx)
+	      yysize += yystrlen (yytname[yyx]) + 15, yycount++;
+	  yysize += yystrlen ("parse error, unexpected ") + 1;
+	  yysize += yystrlen (yytname[YYTRANSLATE (yychar)]);
+	  yymsg = (char *) YYSTACK_ALLOC (yysize);
+	  if (yymsg != 0)
 	    {
-	      strcpy(msg, "parse error");
+	      char *yyp = yystpcpy (yymsg, "parse error, unexpected ");
+	      yyp = yystpcpy (yyp, yytname[YYTRANSLATE (yychar)]);
 
-	      if (count < 5)
+	      if (yycount < 5)
 		{
-		  count = 0;
-		  for (x = (yyn < 0 ? -yyn : 0);
-		       x < (sizeof(yytname) / sizeof(char *)); x++)
-		    if (yycheck[x + yyn] == x)
+		  yycount = 0;
+		  for (yyx = yyn < 0 ? -yyn : 0;
+		       yyx < (int) (sizeof (yytname) / sizeof (char *));
+		       yyx++)
+		    if (yycheck[yyx + yyn] == yyx)
 		      {
-			strcat(msg, count == 0 ? ", expecting `" : " or `");
-			strcat(msg, yytname[x]);
-			strcat(msg, "'");
-			count++;
+			const char *yyq = ! yycount ? ", expecting " : " or ";
+			yyp = yystpcpy (yyp, yyq);
+			yyp = yystpcpy (yyp, yytname[yyx]);
+			yycount++;
 		      }
 		}
-	      yyerror(msg);
-	      free(msg);
+	      yyerror (yymsg);
+	      YYSTACK_FREE (yymsg);
 	    }
 	  else
-	    yyerror ("parse error; also virtual memory exceeded");
+	    yyerror ("parse error; also virtual memory exhausted");
 	}
       else
-#endif /* YYERROR_VERBOSE */
-	yyerror("parse error");
+#endif /* defined (YYERROR_VERBOSE) */
+	yyerror ("parse error");
     }
-
   goto yyerrlab1;
-yyerrlab1:   /* here on error raised explicitly by an action */
 
+
+/*--------------------------------------------------.
+| yyerrlab1 -- error raised explicitly by an action |
+`--------------------------------------------------*/
+yyerrlab1:
   if (yyerrstatus == 3)
     {
-      /* if just tried and failed to reuse lookahead token after an error, discard it.  */
+      /* If just tried and failed to reuse lookahead token after an
+	 error, discard it.  */
 
       /* return failure if at end of input */
       if (yychar == YYEOF)
 	YYABORT;
-
-#if YYDEBUG != 0
-      if (yydebug)
-	fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);
-#endif
-
+      YYDPRINTF ((stderr, "Discarding token %d (%s).\n",
+		  yychar, yytname[yychar1]));
       yychar = YYEMPTY;
     }
 
-  /* Else will try to reuse lookahead token
-     after shifting the error token.  */
+  /* Else will try to reuse lookahead token after shifting the error
+     token.  */
 
   yyerrstatus = 3;		/* Each real token shifted decrements this */
 
   goto yyerrhandle;
 
-yyerrdefault:  /* current state does not do anything special for the error token. */
 
+/*-------------------------------------------------------------------.
+| yyerrdefault -- current state does not do anything special for the |
+| error token.                                                       |
+`-------------------------------------------------------------------*/
+yyerrdefault:
 #if 0
   /* This is wrong; only states that explicitly want error tokens
      should shift them.  */
-  yyn = yydefact[yystate];  /* If its default is to accept any token, ok.  Otherwise pop it.*/
-  if (yyn) goto yydefault;
+
+  /* If its default is to accept any token, ok.  Otherwise pop it.  */
+  yyn = yydefact[yystate];
+  if (yyn)
+    goto yydefault;
 #endif
 
-yyerrpop:   /* pop the current state because it cannot handle the error token */
 
-  if (yyssp == yyss) YYABORT;
+/*---------------------------------------------------------------.
+| yyerrpop -- pop the current state because it cannot handle the |
+| error token                                                    |
+`---------------------------------------------------------------*/
+yyerrpop:
+  if (yyssp == yyss)
+    YYABORT;
   yyvsp--;
   yystate = *--yyssp;
-#ifdef YYLSP_NEEDED
+#if YYLSP_NEEDED
   yylsp--;
 #endif
 
-#if YYDEBUG != 0
+#if YYDEBUG
   if (yydebug)
     {
-      short *ssp1 = yyss - 1;
-      fprintf (stderr, "Error: state stack now");
-      while (ssp1 != yyssp)
-	fprintf (stderr, " %d", *++ssp1);
-      fprintf (stderr, "\n");
+      short *yyssp1 = yyss - 1;
+      YYFPRINTF (stderr, "Error: state stack now");
+      while (yyssp1 != yyssp)
+	YYFPRINTF (stderr, " %d", *++yyssp1);
+      YYFPRINTF (stderr, "\n");
     }
 #endif
 
+/*--------------.
+| yyerrhandle.  |
+`--------------*/
 yyerrhandle:
-
   yyn = yypact[yystate];
   if (yyn == YYFLAG)
     goto yyerrdefault;
@@ -6421,44 +6631,47 @@ yyerrhandle:
   if (yyn == YYFINAL)
     YYACCEPT;
 
-#if YYDEBUG != 0
-  if (yydebug)
-    fprintf(stderr, "Shifting error token, ");
-#endif
+  YYDPRINTF ((stderr, "Shifting error token, "));
 
   *++yyvsp = yylval;
-#ifdef YYLSP_NEEDED
+#if YYLSP_NEEDED
   *++yylsp = yylloc;
 #endif
 
   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);
+/*-------------------------------------.
+| yyacceptlab -- YYACCEPT comes here.  |
+`-------------------------------------*/
+yyacceptlab:
+  yyresult = 0;
+  goto yyreturn;
+
+/*-----------------------------------.
+| yyabortlab -- YYABORT comes here.  |
+`-----------------------------------*/
+yyabortlab:
+  yyresult = 1;
+  goto yyreturn;
+
+/*---------------------------------------------.
+| yyoverflowab -- parser overflow comes here.  |
+`---------------------------------------------*/
+yyoverflowlab:
+  yyerror ("parser stack overflow");
+  yyresult = 2;
+  /* Fall through.  */
+
+yyreturn:
+#ifndef yyoverflow
+  if (yyss != yyssa)
+    YYSTACK_FREE (yyss);
 #endif
-    }
-  return 1;
+  return yyresult;
 }
-#line 2757 "Gmsh.y"
+#line 2762 "Gmsh.y"
 
 
 void InitSymbols(void){
diff --git a/Parser/Gmsh.y b/Parser/Gmsh.y
index 2d83b99d9d043460d2d05d319b56d9855ab3345f..7eb2be6f13fd2b66fa6b5244d6b45567c0927bc5 100644
--- a/Parser/Gmsh.y
+++ b/Parser/Gmsh.y
@@ -1,6 +1,22 @@
 %{ 
 
-// $Id: Gmsh.y,v 1.118 2002-04-06 00:59:48 geuzaine Exp $
+// $Id: Gmsh.y,v 1.119 2002-05-18 07:18:04 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 #include <stdarg.h>
 #ifndef _NOPLUGIN
@@ -793,10 +809,12 @@ NumericAffectation :
   | tAFFECTMINUS   { $$ = 2 ; }
   | tAFFECTTIMES   { $$ = 3 ; }
   | tAFFECTDIVIDE  { $$ = 4 ; }
+;
 
 NumericIncrement :
     tPLUSPLUS      { $$ = 1 ; }
   | tMINUSMINUS    { $$ = -1 ; }
+;
 
 Affectation :
 
@@ -1559,7 +1577,7 @@ Colorify :
 	ColorShape(TheShape.Type,TheShape.Num,$2);
       }
     }
-
+;
 
 /* -----------------
     C O M M A N D  
@@ -1666,6 +1684,7 @@ Command :
     } 
    | tDraw tEND
     {
+#ifndef _BLACKBOX
       if(!CTX.batch){ // we're in interactive mode
 	if(Tree_Nbr(THEM->Points) != Last_NumberOfPoints){
 	  Last_NumberOfPoints = Tree_Nbr(THEM->Points);
@@ -1677,6 +1696,7 @@ Command :
 	  DrawUI();
 	}
       }
+#endif
     }
 ;
 
@@ -2401,6 +2421,7 @@ VExpr :
     {
       for(i=0 ; i<5 ; i++) $$[i] = $1[i] + $3[i] ;
     }
+;
 
 VExpr_Single :
     '{' FExpr ',' FExpr ',' FExpr ',' FExpr ',' FExpr  '}'
diff --git a/Parser/Gmsh.yy.cpp b/Parser/Gmsh.yy.cpp
index f577290a9bbf45ab182af21947cf626a49edb96b..a44a255910f1955e81421cf76ffc78b8933f7a35 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.136 2002-04-06 00:59:49 geuzaine Exp $
+ * $Header: /cvsroot/gmsh/Parser/Gmsh.yy.cpp,v 1.137 2002-05-18 07:18:05 geuzaine Exp $
  */
 
 #define FLEX_SCANNER
@@ -1000,7 +1000,7 @@ char *yytext;
 #define INITIAL 0
 #line 2 "Gmsh.l"
 
-// $Id: Gmsh.yy.cpp,v 1.136 2002-04-06 00:59:49 geuzaine Exp $
+// $Id: Gmsh.yy.cpp,v 1.137 2002-05-18 07:18:05 geuzaine Exp $
 
 #include <stdio.h>
 #include <stdlib.h>
diff --git a/Parser/Makefile b/Parser/Makefile
index b95ddac75eba5206153bd75cb177ac4acdd9550e..b30bc0d9c020cffb48bbec05b03fa1a7e7f45f45 100644
--- a/Parser/Makefile
+++ b/Parser/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.37 2002-05-18 00:55:14 geuzaine Exp $
+# $Id: Makefile,v 1.38 2002-05-18 07:18:05 geuzaine Exp $
 #
 # Makefile for "libGmshParser.a"
 #
@@ -14,16 +14,12 @@ LEX      = flex
 
 LIB      = ../lib/libGmshParser.a
 INCLUDE  = -I../Common -I../DataStr -I../Geo -I../Graphics\
-           -I../Mesh -I../Fltk -I../Plugin -I../Parallel
+           -I../Mesh -I../Numeric -I../Fltk -I../Plugin -I../Parallel
 
 OPT_FLAGS     = -g -Wall
 OS_FLAGS      = -D_LITTLE_ENDIAN
 VERSION_FLAGS = 
 
-GL_INCLUDE    = -I$(HOME)/SOURCES/Mesa-3.1/include\
-                -I$(HOME)/SOURCES/Mesa-3.1/include/GL
-GUI_INCLUDE   = 
-
 RMFLAGS  = -f
 CFLAGS   = $(OPT_FLAGS) $(OS_FLAGS) $(VERSION_FLAGS) $(INCLUDE)\
            $(GL_INCLUDE) $(GUI_INCLUDE)
@@ -64,31 +60,28 @@ depend:
 
 # DO NOT DELETE THIS LINE
 Gmsh.yy.o: Gmsh.yy.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/Numeric.h ../Geo/Geo.h \
- ../Geo/CAD.h ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h \
- ../Mesh/Edge.h ../Geo/ExtrudeParams.h ../Mesh/Metric.h \
- ../Mesh/Matrix.h Gmsh.tab.cpp.h
-Gmsh.tab.o: Gmsh.tab.cpp ../Plugin/PluginManager.h \
- ../Parallel/ParUtil.h ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/Numeric.h \
- ../Common/Context.h ../Geo/Geo.h ../Geo/CAD.h ../Mesh/Mesh.h \
- ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
- ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Mesh/Matrix.h \
- ../Geo/DataBase.h ../Graphics/Draw.h ../Common/Views.h \
- ../Common/ColorTable.h ../Mesh/Create.h ../Geo/StepGeomDatabase.h \
- ../Common/Options.h ../Common/Colors.h Parser.h OpenFile.h \
- FunctionManager.h ../Common/Timer.h ../Graphics/CreateFile.h \
- ../Mesh/STL.h
+  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../DataStr/Tools.h ../Numeric/Numeric.h ../Geo/Geo.h \
+  ../Geo/CAD.h ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h \
+  ../Mesh/Edge.h ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Mesh/Matrix.h \
+  Gmsh.tab.cpp.h
+Gmsh.tab.o: Gmsh.tab.cpp ../Plugin/PluginManager.h ../Parallel/ParUtil.h \
+  ../Common/Gmsh.h ../Common/Message.h ../DataStr/Malloc.h \
+  ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h ../DataStr/Tools.h \
+  ../Numeric/Numeric.h ../Common/Context.h ../Geo/Geo.h ../Geo/CAD.h \
+  ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h ../Mesh/Edge.h \
+  ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Mesh/Matrix.h \
+  ../Geo/DataBase.h ../Graphics/Draw.h ../Common/Views.h \
+  ../Common/ColorTable.h ../Mesh/Create.h ../Geo/StepGeomDatabase.h \
+  ../Common/Options.h ../Common/Colors.h Parser.h OpenFile.h \
+  FunctionManager.h ../Common/Timer.h ../Graphics/CreateFile.h \
+  ../Mesh/STL.h
 OpenFile.o: OpenFile.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h ../Common/Numeric.h \
- ../Common/Context.h Parser.h OpenFile.h ../Common/GetOptions.h \
- ../Geo/Geo.h ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h \
- ../Mesh/Edge.h ../Geo/ExtrudeParams.h ../Mesh/Metric.h \
- ../Mesh/Matrix.h ../Common/Views.h ../Common/ColorTable.h \
- ../Geo/MinMax.h ../Graphics/Visibility.h ../Common/GmshUI.h \
- ../Graphics/Draw.h ../Fltk/GUI.h ../Fltk/Opengl_Window.h \
- ../Fltk/Colorbar_Window.h
+  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../DataStr/Tools.h ../Numeric/Numeric.h \
+  ../Common/Context.h Parser.h OpenFile.h ../Common/GetOptions.h \
+  ../Geo/Geo.h ../Mesh/Mesh.h ../Mesh/Vertex.h ../Mesh/Simplex.h \
+  ../Mesh/Edge.h ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Mesh/Matrix.h \
+  ../Common/Views.h ../Common/ColorTable.h ../Geo/MinMax.h \
+  ../Graphics/Visibility.h ../Common/GmshUI.h ../Graphics/Draw.h
 FunctionManager.o: FunctionManager.cpp FunctionManager.h
diff --git a/Parser/OpenFile.cpp b/Parser/OpenFile.cpp
index be8469b8c1c237433b3079d4b2c80d2949e2d305..7f68788bc53f626ab6c3e13ed1b5f18f88d862d4 100644
--- a/Parser/OpenFile.cpp
+++ b/Parser/OpenFile.cpp
@@ -1,4 +1,20 @@
-// $Id: OpenFile.cpp,v 1.27 2002-01-23 16:28:00 geuzaine Exp $
+// $Id: OpenFile.cpp,v 1.28 2002-05-18 07:18:05 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 #include "Gmsh.h"
 #include "Numeric.h"
diff --git a/Parser/OpenFile.h b/Parser/OpenFile.h
index 5581e7f6bd254857948356bcf239f9b4f4ff7454..6249c859cd8430ba0241247e3013185bcba5e8dc 100644
--- a/Parser/OpenFile.h
+++ b/Parser/OpenFile.h
@@ -1,6 +1,22 @@
 #ifndef _OPENFILE_H_
 #define _OPENFILE_H_
 
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
 #define MAX_OPEN_FILES  256
 
 int  ParseFile(char *filename, int silent);
diff --git a/Parser/Parser.h b/Parser/Parser.h
index 8e387f1561ff83f1cf3d965025c4e7ca7487137e..29beff94a79bb20e9b2d13e377b01ccc6aa2aa5f 100644
--- a/Parser/Parser.h
+++ b/Parser/Parser.h
@@ -1,6 +1,22 @@
 #ifndef _PARSER_H_
 #define _PARSER_H_
 
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
 typedef struct {
   char *Name;
   List_T *val;
diff --git a/Plugin/CutMap.cpp b/Plugin/CutMap.cpp
index 966331eb51a336947a5f558f4051320c2662b2ba..360498de742042fae5819dfb5f7bcbc2c2b92fcd 100644
--- a/Plugin/CutMap.cpp
+++ b/Plugin/CutMap.cpp
@@ -1,4 +1,20 @@
-// $Id: CutMap.cpp,v 1.23 2001-10-29 08:52:21 geuzaine Exp $
+// $Id: CutMap.cpp,v 1.24 2002-05-18 07:18:05 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 #include "CutMap.h"
 #include "List.h"
diff --git a/Plugin/CutMap.h b/Plugin/CutMap.h
index 75565549a11d22384eb8f8175b6ae553a0b44b66..158a835d3d3e6c819686b0c8f809d1db5d8e0cf4 100644
--- a/Plugin/CutMap.h
+++ b/Plugin/CutMap.h
@@ -1,6 +1,24 @@
 #ifndef _CUTMAP_H_
 #define _CUTMAP_H
+
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
 #include "LevelsetPlugin.h"
+
 extern "C"
 {
   GMSH_Plugin *GMSH_RegisterCutMapPlugin ();
diff --git a/Plugin/CutPlane.cpp b/Plugin/CutPlane.cpp
index a17b126b3d19a765fd55758d8b7622228919e21b..f58abfda93cadee947af8a54b1125f5f8a39fcd6 100644
--- a/Plugin/CutPlane.cpp
+++ b/Plugin/CutPlane.cpp
@@ -1,4 +1,20 @@
-// $Id: CutPlane.cpp,v 1.19 2001-10-29 08:52:21 geuzaine Exp $
+// $Id: CutPlane.cpp,v 1.20 2002-05-18 07:18:05 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 #include "CutPlane.h"
 #include "List.h"
diff --git a/Plugin/CutPlane.h b/Plugin/CutPlane.h
index 3d88bd048d62fd3bc5759fab24cd1c1dc82f2115..ef175e1fbdd3659733d5be16183c113b6f117b96 100644
--- a/Plugin/CutPlane.h
+++ b/Plugin/CutPlane.h
@@ -1,6 +1,22 @@
 #ifndef _CUTPLANE_H_
 #define _CUTPLANE_H
 
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
 #include "LevelsetPlugin.h"
 
 extern "C"
diff --git a/Plugin/CutSphere.cpp b/Plugin/CutSphere.cpp
index f9f630f54798acb1be88ced10ac3afc09a2926c9..11b31e548b8002d357493fc1b59571bc853b530b 100644
--- a/Plugin/CutSphere.cpp
+++ b/Plugin/CutSphere.cpp
@@ -1,4 +1,20 @@
-// $Id: CutSphere.cpp,v 1.18 2001-10-29 08:52:21 geuzaine Exp $
+// $Id: CutSphere.cpp,v 1.19 2002-05-18 07:18:05 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 #include <string.h>
 #include "CutSphere.h"
diff --git a/Plugin/CutSphere.h b/Plugin/CutSphere.h
index 26b2e3a167a35b49ccb208d2a3e04a46c7bfd6d0..332b7527918c5aab9efc48ba1425fe642e5601a0 100644
--- a/Plugin/CutSphere.h
+++ b/Plugin/CutSphere.h
@@ -1,6 +1,22 @@
 #ifndef _CUTSPHERE_H_
 #define _CUTSPHERE_H
 
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
 #include "LevelsetPlugin.h"
 
 extern "C"
diff --git a/Plugin/LevelsetPlugin.cpp b/Plugin/LevelsetPlugin.cpp
index 0b9db114090c18e746412bf5a7e1bb8ad4179482..83b63f7ae0395489e9055ecbb0d830305a4c7cd9 100644
--- a/Plugin/LevelsetPlugin.cpp
+++ b/Plugin/LevelsetPlugin.cpp
@@ -1,4 +1,20 @@
-// $Id: LevelsetPlugin.cpp,v 1.21 2001-11-16 10:57:33 geuzaine Exp $
+// $Id: LevelsetPlugin.cpp,v 1.22 2002-05-18 07:18:05 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 #include "LevelsetPlugin.h"
 #include "List.h"
diff --git a/Plugin/LevelsetPlugin.h b/Plugin/LevelsetPlugin.h
index b2f5f16322f9eae6ddc5d93f68ff344f37642535..e8ca6aa41cb60f399a5d8343699ecd499dced0e3 100644
--- a/Plugin/LevelsetPlugin.h
+++ b/Plugin/LevelsetPlugin.h
@@ -1,5 +1,22 @@
 #ifndef _LEVELSETPLUGIN_H_
 #define _LEVELSETPLUGIN_H_
+
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
 #include "Plugin.h"
 
 #define ORIENT_NONE   0
diff --git a/Plugin/Makefile b/Plugin/Makefile
index acf0991b7f618a8039a0b58b262c9e4a80a474fc..d29f72b99fc399a1a73caf23f6cf34435ba11aa3 100644
--- a/Plugin/Makefile
+++ b/Plugin/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.23 2002-05-18 00:55:14 geuzaine Exp $
+# $Id: Makefile,v 1.24 2002-05-18 07:18:05 geuzaine Exp $
 #
 # Makefile for "libGmshPlugin.a"
 #
@@ -11,14 +11,16 @@ RM        = rm
 RANLIB    = ranlib
 
 LIB       = ../lib/libGmshPlugin.a
-INCLUDE   = -I../Common -I../Graphics -I../DataStr -I../Geo -I../Mesh -I../Triangle
+INCLUDE   = -I../Common -I../Graphics -I../DataStr -I../Geo\
+            -I../Mesh -I../Numeric -I../Triangle
 
 OPT_FLAGS     = -g -Wall
 OS_FLAGS      = 
 VERSION_FLAGS = 
 
 RMFLAGS   = -f
-CFLAGS    = -DMPICH_SKIP_MPICXX $(OPT_FLAGS) $(OS_FLAGS) $(VERSION_FLAGS) $(INCLUDE) $(GUI_INCLUDE) 
+CFLAGS    = -DMPICH_SKIP_MPICXX $(OPT_FLAGS) $(OS_FLAGS)\
+             $(VERSION_FLAGS) $(INCLUDE) $(GUI_INCLUDE) 
 
 SRC = Plugin.cpp\
         LevelsetPlugin.cpp\
@@ -55,36 +57,35 @@ depend:
 
 # DO NOT DELETE THIS LINE
 Plugin.o: Plugin.cpp Plugin.h ../Common/Options.h ../Common/Message.h \
- PluginManager.h CutMap.h LevelsetPlugin.h CutPlane.h CutSphere.h \
- Skin.h Smooth.h Transform.h Triangulate.h
+  PluginManager.h CutMap.h LevelsetPlugin.h CutPlane.h CutSphere.h Skin.h \
+  Smooth.h Transform.h Triangulate.h
 LevelsetPlugin.o: LevelsetPlugin.cpp LevelsetPlugin.h Plugin.h \
- ../Common/Options.h ../Common/Message.h ../DataStr/List.h \
- ../Common/Views.h ../Common/ColorTable.h ../Common/Iso.h \
- ../Common/Numeric.h
+  ../Common/Options.h ../Common/Message.h ../DataStr/List.h \
+  ../Common/Views.h ../Common/ColorTable.h ../Graphics/Iso.h \
+  ../Numeric/Numeric.h
 CutPlane.o: CutPlane.cpp CutPlane.h LevelsetPlugin.h Plugin.h \
- ../Common/Options.h ../Common/Message.h ../DataStr/List.h \
- ../Common/Context.h
+  ../Common/Options.h ../Common/Message.h ../DataStr/List.h \
+  ../Common/Context.h
 CutSphere.o: CutSphere.cpp CutSphere.h LevelsetPlugin.h Plugin.h \
- ../Common/Options.h ../Common/Message.h ../DataStr/List.h \
- ../Common/Context.h
+  ../Common/Options.h ../Common/Message.h ../DataStr/List.h \
+  ../Common/Context.h
 CutMap.o: CutMap.cpp CutMap.h LevelsetPlugin.h Plugin.h \
- ../Common/Options.h ../Common/Message.h ../DataStr/List.h \
- ../Common/Context.h
+  ../Common/Options.h ../Common/Message.h ../DataStr/List.h \
+  ../Common/Context.h
 Smooth.o: Smooth.cpp Plugin.h ../Common/Options.h ../Common/Message.h \
- Smooth.h ../DataStr/List.h ../Common/Views.h ../Common/ColorTable.h \
- ../Common/Context.h
+  Smooth.h ../DataStr/List.h ../Common/Views.h ../Common/ColorTable.h \
+  ../Common/Context.h
 Transform.o: Transform.cpp Plugin.h ../Common/Options.h \
- ../Common/Message.h Transform.h ../DataStr/List.h ../Common/Views.h \
- ../Common/ColorTable.h ../Common/Context.h
+  ../Common/Message.h Transform.h ../DataStr/List.h ../Common/Views.h \
+  ../Common/ColorTable.h ../Common/Context.h
 Triangulate.o: Triangulate.cpp ../Common/Gmsh.h ../Common/Message.h \
- ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
- ../DataStr/avl.h ../DataStr/Tools.h Plugin.h ../Common/Options.h \
- Triangulate.h ../Common/Views.h ../Common/ColorTable.h \
- ../Common/Context.h ../Geo/Geo.h ../Mesh/Mesh.h ../Mesh/Vertex.h \
- ../Mesh/Simplex.h ../Mesh/Edge.h ../Geo/ExtrudeParams.h \
- ../Mesh/Metric.h ../Mesh/Matrix.h ../Mesh/Utils.h ../Mesh/Create.h \
- ../Triangle/triangle.h
-Skin.o: Skin.cpp Plugin.h ../Common/Options.h ../Common/Message.h \
- Skin.h ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h \
- ../Common/Views.h ../Common/ColorTable.h ../Common/Context.h \
- ../DataStr/Malloc.h
+  ../DataStr/Malloc.h ../DataStr/List.h ../DataStr/Tree.h \
+  ../DataStr/avl.h ../DataStr/Tools.h Plugin.h ../Common/Options.h \
+  Triangulate.h ../Common/Views.h ../Common/ColorTable.h \
+  ../Common/Context.h ../Geo/Geo.h ../Mesh/Mesh.h ../Mesh/Vertex.h \
+  ../Mesh/Simplex.h ../Mesh/Edge.h ../Geo/ExtrudeParams.h \
+  ../Mesh/Metric.h ../Mesh/Matrix.h ../Mesh/Utils.h ../Mesh/Create.h \
+  ../Triangle/triangle.h
+Skin.o: Skin.cpp Plugin.h ../Common/Options.h ../Common/Message.h Skin.h \
+  ../DataStr/List.h ../DataStr/Tree.h ../DataStr/avl.h ../Common/Views.h \
+  ../Common/ColorTable.h ../Common/Context.h ../DataStr/Malloc.h
diff --git a/Plugin/Plugin.cpp b/Plugin/Plugin.cpp
index 7fdb2e78a04eb8a35df43c5537753c5afa36b207..03434395306af7e1bb032ab040684ad555c27940 100644
--- a/Plugin/Plugin.cpp
+++ b/Plugin/Plugin.cpp
@@ -1,4 +1,20 @@
-// $Id: Plugin.cpp,v 1.25 2002-04-12 18:43:23 geuzaine Exp $
+// $Id: Plugin.cpp,v 1.26 2002-05-18 07:18:05 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 #include <map>
 #ifndef _NODLL
diff --git a/Plugin/Plugin.h b/Plugin/Plugin.h
index 497cfc694848d0de1e3256f35817a810c2f39674..5ce28634234f3966abbbeb9052dc8d634dbd7391 100644
--- a/Plugin/Plugin.h
+++ b/Plugin/Plugin.h
@@ -1,5 +1,22 @@
 #ifndef _PLUGIN_H_
 #define _PLUGIN_H_
+
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
 /*
   The one who intend to create a plugin for gmsh have to 
     -) Create a dynamin lib (.so) containing 1 symbols
diff --git a/Plugin/PluginManager.h b/Plugin/PluginManager.h
index 1565d683e3710f38a50a783b7b327b8c9ca7bf02..b8fab508ec6e0e98da54bcee5890c8306adc1346 100644
--- a/Plugin/PluginManager.h
+++ b/Plugin/PluginManager.h
@@ -1,5 +1,22 @@
 #ifndef _PLUGINMANAGER_H_
 #define _PLUGINMANAGER_H_
+
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
 /*
   The one who intend to create a plugin for gmsh have to 
     -) Create a dynamin lib (.so) containing 1 symbols
diff --git a/Plugin/Skin.cpp b/Plugin/Skin.cpp
index 404c6066dba997d0ae09ba194ee33303cde86ce9..7976ea5b8a0a2d077b095acedc8d4406b4d692d1 100644
--- a/Plugin/Skin.cpp
+++ b/Plugin/Skin.cpp
@@ -1,4 +1,20 @@
-// $Id: Skin.cpp,v 1.11 2001-10-29 08:52:21 geuzaine Exp $
+// $Id: Skin.cpp,v 1.12 2002-05-18 07:18:05 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 #include "Plugin.h"
 #include "Skin.h"
diff --git a/Plugin/Skin.h b/Plugin/Skin.h
index 4ad757da3f0a634f6dd56b28ef00fba4846a3d62..58cabd5376ae3746d9bf84f75fcf933ca4d41b7c 100644
--- a/Plugin/Skin.h
+++ b/Plugin/Skin.h
@@ -1,6 +1,22 @@
 #ifndef _SKIN_H_
 #define _SKIN_H_
 
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
 extern "C"
 {
   GMSH_Plugin *GMSH_RegisterSkinPlugin ();
diff --git a/Plugin/Smooth.cpp b/Plugin/Smooth.cpp
index 2671e1aeb9ab1dbc576ea8fb556663d0ce6a4864..9a3fe51950feb80c0775b64211af7772326d62a0 100644
--- a/Plugin/Smooth.cpp
+++ b/Plugin/Smooth.cpp
@@ -1,4 +1,20 @@
-// $Id: Smooth.cpp,v 1.7 2001-10-29 08:52:21 geuzaine Exp $
+// $Id: Smooth.cpp,v 1.8 2002-05-18 07:18:05 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 #include "Plugin.h"
 #include "Smooth.h"
diff --git a/Plugin/Smooth.h b/Plugin/Smooth.h
index 647656d2c9cc47c4235735cabca9c58c1bb7d702..55579b0b6ead75ba528356db86c78a73839e9d7f 100644
--- a/Plugin/Smooth.h
+++ b/Plugin/Smooth.h
@@ -1,6 +1,22 @@
 #ifndef _SMOOTH_H_
 #define _SMOOTH_H
 
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
 extern "C"
 {
   GMSH_Plugin *GMSH_RegisterSmoothPlugin ();
diff --git a/Plugin/Transform.cpp b/Plugin/Transform.cpp
index 7dcb72d884127992d724926f59b629ec9ed34961..f08d935e354d8f307e3ef75b598cc87df5dffac6 100644
--- a/Plugin/Transform.cpp
+++ b/Plugin/Transform.cpp
@@ -1,4 +1,20 @@
-// $Id: Transform.cpp,v 1.9 2001-10-30 08:42:46 geuzaine Exp $
+// $Id: Transform.cpp,v 1.10 2002-05-18 07:18:06 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 #include "Plugin.h"
 #include "Transform.h"
diff --git a/Plugin/Transform.h b/Plugin/Transform.h
index 7bfcb589c2178e24617005f72dc20975803d22f2..474dda32a5966ca939a5d69812e91ccdfaa62a4e 100644
--- a/Plugin/Transform.h
+++ b/Plugin/Transform.h
@@ -1,6 +1,22 @@
 #ifndef _TRANSFORM_H_
 #define _TRANSFORM_H
 
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
 extern "C"
 {
   GMSH_Plugin *GMSH_RegisterTransformPlugin ();
diff --git a/Plugin/Triangulate.cpp b/Plugin/Triangulate.cpp
index aa47d7e83cfd21842fdcbbb066f93e786c051126..a85313bcb327a975e43ad5d4e3aa611758797e45 100644
--- a/Plugin/Triangulate.cpp
+++ b/Plugin/Triangulate.cpp
@@ -1,4 +1,20 @@
-// $Id: Triangulate.cpp,v 1.4 2001-12-03 08:41:45 geuzaine Exp $
+// $Id: Triangulate.cpp,v 1.5 2002-05-18 07:18:06 geuzaine Exp $
+//
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 #include "Gmsh.h"
 #include "Plugin.h"
diff --git a/Plugin/Triangulate.h b/Plugin/Triangulate.h
index 384d1039e3b99f91cdf5241b099f24a0aec39344..143b0473e98277d5f5ebc695aa006c8c6205bc29 100644
--- a/Plugin/Triangulate.h
+++ b/Plugin/Triangulate.h
@@ -1,6 +1,22 @@
 #ifndef _TRIANGULATE_H_
 #define _TRIANGULATE_H_
 
+// Copyright (C) 1997 - 2002 C. Geuzaine, J.-F. Remacle
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
 extern "C"
 {
   GMSH_Plugin *GMSH_RegisterTriangulatePlugin ();
diff --git a/Triangle/Makefile b/Triangle/Makefile
index 1cf37ea5f1a3cf16aab2144f2b3952517b9e9fc7..90f682af99ee4b43980ade07b594cdb1986d4942 100644
--- a/Triangle/Makefile
+++ b/Triangle/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.5 2002-05-18 00:55:14 geuzaine Exp $
+# $Id: Makefile,v 1.6 2002-05-18 07:18:06 geuzaine Exp $
 #
 # Makefile for "libGmshTriangle.a"
 #
@@ -61,3 +61,4 @@ depend:
 	$(RM) $(RMFLAGS) Makefile.new
 
 # DO NOT DELETE THIS LINE
+triangle.o: triangle.c triangle.h
diff --git a/doc/gmsh.texi b/doc/gmsh.texi
deleted file mode 100644
index e4636e9730cc6fe27bbe1d63e2d214de468e7d6a..0000000000000000000000000000000000000000
--- a/doc/gmsh.texi
+++ /dev/null
@@ -1,327 +0,0 @@
-\input texinfo.tex    @c -*-texinfo-*-
-@c $Id: gmsh.texi,v 1.3 2000-12-11 22:09:43 geuzaine Exp $
-@c =========================================================================
-@c
-@c This is the Gmsh documentation texinfo source file
-@c
-@c Indexing : @cindex  == concepts
-@c            @tindex  == syntax
-@c
-@c Before release, run C-u C-c C-u C-a in GNU Emacs
-@c This updates all node pointers and menus
-@c 
-@c info  : makeinfo getdp.texi
-@c dvi   : texi2dvi getdp.texi
-@c ps    : dvips getdp.dvi -o
-@c pdf   : texi2pdf getdp.texi
-@c html  : texi2html -init_file getdp.t2h getdp.texi
-@c nroff : texi2roff getdp.texi
-@c
-@c =========================================================================
-@c %**start of header
-@setfilename   gmsh.info
-@set EDITION   1.
-@set VERSION   0.996
-@set DAY       12
-@set MONTH     December 2000
-@set COPYRIGHT @copyright{} 1997-2000 Christophe Geuzaine, Jean-Francois Remacle
-@set WEB-GMSH  @uref{http://www.geuz.org/gmsh/}
-@settitle Gmsh @value{VERSION}
-@footnotestyle separate
-@setchapternewpage odd
-@paragraphindent 0
-@finalout
-@c %**end of header
-
-@c =========================================================================
-@c Info directives
-@c =========================================================================
-
-@ifinfo
-@dircategory Math
-@direntry
-* Gmsh: (gmsh).       a 3D mesh generator with pre- and post-processing facilities
-@end direntry
-@noindent
-This is Edition @value{EDITION}, last updated @value{DAY} @value{MONTH}, of the
-@cite{Gmsh Manual}, for Gmsh, Version @value{VERSION}.
-@noindent
-Copyright @value{COPYRIGHT}
-@end ifinfo
-
-@c =========================================================================
-@c TeX directives
-@c =========================================================================
-
-@iftex
-@global@let@bullet=-
-@global@let@sl=@it
-@global@setfont@indit@itshape{9}{1000}
-@c @global@let@linkcolor=@Orange
-@c @parskip=5pt
-@end iftex
-
-@c =========================================================================
-@c Title page
-@c =========================================================================
-
-@shorttitlepage Gmsh
-
-@titlepage
-
-@title Gmsh Manual
-
-@subtitle The documentation for Gmsh, Version  @value{VERSION}
-@subtitle 
-@subtitle Edition @value{EDITION}, @value{MONTH}
-
-@author Christophe Geuzaine
-@author Jean-Francois Remacle
-
-
-@page
-@vskip 0pt plus 1filll
-Copyright @value{COPYRIGHT}
-@sp 1
-This manual was prepared with Texinfo (@uref{http://texinfo.org}). The source
-of the document as well as several formatted versions (info, postscript, pdf,
-html) are available at @value{WEB-GMSH}.
-
-@end titlepage
-
-@c =========================================================================
-@c Table of contents
-@c =========================================================================
-
-@summarycontents
-@contents
-
-@c =========================================================================
-@c Top node (for all output, except TeX)
-@c =========================================================================
-
-@ifnottex
-@node Top, Copying Conditions, (dir), (dir)
-@top Gmsh
-
-@chapheading The documentation for Gmsh, version  @value{VERSION}
-
-Christophe Geuzaine and Jean-Francois Remacle
-
-Gmsh is an automatic three-dimensional mesh generator, primarily Delaunay,
-with pre- and post-processing facilities. This is Edition @value{EDITION} of
-the @cite{Gmsh Manual}, last updated @value{DAY} @value{MONTH} for Gmsh
-Version @value{VERSION}.
-@end ifnottex
-
-@c =========================================================================
-@c Master menu
-@c =========================================================================
-
-@menu
-* Copying Conditions::          How is Gmsh distributable?
-* Introduction::                Basic presentation
-* Geometry::                    How to define a geometry in Gmsh
-* Mesh::                        An explanation of the mesh generator
-* Post-Processing::             An overview of the post-processing functions
-* Tutorial::                    Seven complete examples
-* Running Gmsh::                How to run Gmsh on your operating system
-* File formats::                Input and output file formats
-* Versions and credits::        Versions history and contributors
-* Tips and tricks::             Some tips to make your life easier with Gmsh
-* Concept index::               Main concepts
-* Syntax index::                Reserved keywords
-@end menu
-
-@c =========================================================================
-@c Copying Conditions
-@c =========================================================================
-
-@node Copying Conditions, Introduction, Top, Top
-@unnumbered Copying Conditions
-
-@cindex Copyright
-@cindex Web site
-@cindex Internet address
-@cindex Download
-@cindex Platforms
-
-Executable versions of Gmsh can be downloaded for most of the classical UNIX
-platforms (SUN, DEC, IBM, HP, SGI and Linux) from the web site
-@value{WEB-GMSH} (no source distribution is available for the moment). The
-executable versions of Gmsh are free; the only thing asked if you use Gmsh
-is to mention it in your work. Published references, as well as the latest
-news about Gmsh developments and download information, are always available
-on the web site.
-
-
-@c =========================================================================
-@c Introduction
-@c =========================================================================
-
-@node Introduction, General overview, Copying Conditions, Top
-@unnumbered Introduction
-
-@cindex Introduction
-
-Gmsh is an automatic three-dimensional mesh generator, primarily Delaunay,
-with pre- and post-processing facilities. Its primal goal is to provide a
-simple meshing tool for academic test cases with parametric input and up to
-date visualization capabilities.  One of the strengths of Gmsh is its
-ability to respect a characteristic length field for the generation of
-adapted meshes on lines, surfaces and volumes. Gmsh requires OpenGL
-libraries to be installed in on your system.
-
-
-@c -------------------------------------------------------------------------
-@c How to Read this Manual?
-@c -------------------------------------------------------------------------
-
-@node How to Read this Manual?,  , Industry, Introduction
-@heading How to Read this Manual?
-
-@cindex Reading, guidelines
-
-After reading @ref{General overview}, and @ref{Expressions}, which depict
-the general concepts and the way to construct simple expressions in GetDP,
-you can safely (in a first reading) skip @ref{Objects} and @ref{Types for
-objects} and directly go to @ref{Short examples}. This chapter gives simple
-examples of the problem definition syntax used to define the discrete
-problems. For each example, you should then go back to @ref{Objects}, and
-@ref{Types for objects}, and have a detailed view of the syntax of the
-objects appearing in it. Note that indexes for many concepts and for all the
-syntax elements are available at the end of this manual.
-
-Once the examples presented in @ref{Short examples}, are understood, you
-may start to use GetDP on your computer (@pxref{Running GetDP}), for
-example by solving the complete examples presented in @ref{Complete
-examples}. Ready-to-use input files for these examples can be downloaded
-from the web site.
-
-
-@c =========================================================================
-@c Versions and Credits
-@c =========================================================================
-
-@node Versions and credits, Tips and tricks, File formats, Top
-@chapter Versions and Credits
-
-@menu
-* Version history::             
-* Bugs::                        
-* Contributors::                
-@end menu
-
-@c -------------------------------------------------------------------------
-@c Versions
-@c -------------------------------------------------------------------------
-
-@node Version history, Bugs, Versions and credits, Versions and credits
-@section Version History
-
-@cindex Versions
-@cindex History, versions
-@cindex Changelog
-
-@c -------------------------------------------------------------------------
-@c Bugs
-@c -------------------------------------------------------------------------
-
-@node Bugs, Contributors, Version history, Versions and credits
-@section Bugs
-
-@cindex Known bugs
-@cindex Bugs, known
-@cindex Bugs, reporting
-@cindex Reporting bugs
-@cindex Authors, e-mail
-@cindex E-mail, authors
-
-If you think you have found a bug in Gmsh, you can report it by electronic
-mail to @email{Christophe.Geuzaine@@ulg.ac.be} or
-@email{Remacle@@scorec.rpi.edu}.  Please send as precise a description of
-the problem as you can, including sample input files that produce the
-bug. Don't forget to mention both the versions of Gmsh and of your operation
-system (@pxref{Running Gmsh} to see how to get this information).
-
-Here is a list of known bugs:
-
-
-@c -------------------------------------------------------------------------
-@c Contributors
-@c -------------------------------------------------------------------------
-
-@node Contributors,  , Bugs, Versions and credits
-@section Contributors
-
-@cindex Acknowledgments
-@cindex Contributors, list
-@cindex Credits 
-
-@itemize @bullet
-@item
-M. Ume: code for lists and trees (listman.c, treeman.c). 
-@item
-Unknown: avl tree code
-@item
-@dots{}
-@end itemize
-
-And many thanks to all the users whose feedback permitted many
-improvements and bug correction...
-
-
-@c =========================================================================
-@c Tips ans Tricks
-@c =========================================================================
-
-@node Tips and tricks, Gmsh examples, Versions and credits, Top
-@appendix Tips and Tricks
-
-@cindex Tips
-@cindex Tricks
-@cindex Efficiency, tips
-
-@itemize @bullet
-@item
-Install the 'info' version of this user's guide! On your (Unix) system, this
-can be done by 1) copying all getdp.info* files to the place where your info
-files live (usually /usr/info), and 2) issuing the command 'install-info
-/usr/info/getdp.info /usr/info/dir'. You will then be able to access the
-documentation with the command 'info getdp'. Note that particular sections
-("nodes") can be accessed directly. For example, 'info getdp functionspace'
-will take you directly to the definition of the FunctionSpace object.
-@item
-Use emacs to edit your files, and load the C++ mode! This permits automatic
-syntax highlighting and easy indentation. Automatic loading of the C++ mode
-for @file{.pro} files can be done by adding the following command in your
-@code{.emacs} file: @code{(setq auto-mode-alist (append '(("\\.pro$"
-. c++-mode)) auto-mode-alist))}.
-@end itemize
-
-@c =========================================================================
-@c Concept Index
-@c =========================================================================
-
-@node Concept index, Syntax index, Gmsh examples, Top
-@unnumbered Concept Index
-
-@cindex Index, concepts
-@cindex Concepts, index
-
-@printindex cp
-
-@c =========================================================================
-@c Syntax Index
-@c =========================================================================
-
-@node Syntax index, Variable index, Concept index, Top
-@unnumbered Syntax Index
-
-@cindex Index, syntax
-@cindex Syntax, index
-@cindex Keywords, index
-
-@printindex tp
-
-@bye