diff --git a/benchmarks/2d/fissure.geo b/benchmarks/2d/fissure.geo
new file mode 100644
index 0000000000000000000000000000000000000000..1b33e91c18129d5210ca91f18319cb14a0ac2ea1
--- /dev/null
+++ b/benchmarks/2d/fissure.geo
@@ -0,0 +1,18 @@
+eps = 1.e-3 ;
+
+Point(1) = {-1,-1,0,.1} ;
+Point(2) = {-1,1,0,.1} ;
+Point(3) = {1,-1,0,.1} ;
+Point(4) = {1,1,0,.1} ;
+Point(5) = {-1,0,0,.06} ;
+Point(6) = {0,0,0,.03} ;
+Point(7) = {-1,0+eps,0,.06} ;
+Line(1) = {5,1};
+Line(2) = {1,3};
+Line(3) = {3,4};
+Line(4) = {4,2};
+Line(5) = {2,7};
+Line(6) = {7,6};
+Line(7) = {6,5};
+Line Loop(8) = {5,6,7,1,2,3,4};
+Plane Surface(9) = {8};
diff --git a/benchmarks/2d/function.geo b/benchmarks/2d/function.geo
new file mode 100644
index 0000000000000000000000000000000000000000..54ce6fe371ebc182eabebc44a88473947e50c5e3
--- /dev/null
+++ b/benchmarks/2d/function.geo
@@ -0,0 +1,59 @@
+x = 0;
+y = 0;
+r = 1;
+theloop = 0;
+
+Function myCircle
+  p1 = newp;
+  Point (p1) = {x,y,0,0.2};
+  p2 = newp;
+  Point (p2) = {r+x,y,0,0.2};
+  p3 = newp;
+  Point (p3) = {x,r+y,0,0.2};
+  p4 = newp;
+  Point (p4) = {-r+x,y,0,0.2};
+  p5 = newp;
+  Point (p5) = {x,-r+y,0,0.2};
+  c1 = newreg;
+  Circle (c1) = {p2,p1,p3};
+  c2 = newreg;
+  Circle (c2) = {p3,p1,p4};
+  c3 = newreg;
+  Circle (c3) = {p4,p1,p5};
+  c4 = newreg;
+  Circle (c4) = {p5,p1,p2};
+  theloop = newreg;
+  Line Loop (theloop) = {c1,c2,c3,c4};
+Return
+
+x = 2;
+y = 2;
+Call myCircle;
+/*loop,x,y and r should be parameters*/
+loop1 = theloop;
+x = -2;
+y = 2;
+Call myCircle;
+loop2 = theloop;
+x = 2;
+y = -2;
+Call myCircle;
+loop3 = theloop;
+x = -2;
+y = -2;
+Call myCircle;
+loop4 = theloop;
+
+r = 5;
+x = 0;
+y = 0;
+Call myCircle;
+loop5 = theloop;
+
+Plane Surface(newreg) = {loop5,loop4,loop3,loop2,loop1};
+Line(10000) = {6,11};
+Attractor Line {10000} = {1,.03,1};
+
+Mesh.Algorithm = 2 ; // This is the new 2D anisotropic algorithm
+
+
diff --git a/benchmarks/2d/transfinite.geo b/benchmarks/2d/transfinite.geo
new file mode 100644
index 0000000000000000000000000000000000000000..a3a0e36fada48474f3755b1ac29a21557697d41b
--- /dev/null
+++ b/benchmarks/2d/transfinite.geo
@@ -0,0 +1,34 @@
+
+// buggy with old mesh algo!
+
+l = .3;
+l2 = .03;
+Point(1) = {-2,-1,0,l};
+Point(2) = {-2,1,0,l2};
+Point(3) = {0,-1,0,l};
+Point(4) = {0,1,0,l};
+Point(5) = {-3,-2,0,l};
+Point(6) = {-3,2,0,l2};
+Point(7) = {1,-2,0,l};
+Point(8) = {1,2,0,l};
+
+Line(1) = {6,8};
+Line(2) = {8,7};
+Line(3) = {7,5};
+Line(4) = {5,6};
+Line(5) = {2,1};
+Line(6) = {1,3};
+Line(7) = {3,4};
+Line(8) = {4,2};
+
+Line Loop(9) = {5,6,7,8};
+Plane Surface(10) = {9};
+
+Line Loop(11) = {2,3,4,1};
+Plane Surface(12) = {11,9};
+
+Transfinite Line {5:8} = 10 Using Progression 5;
+
+Transfinite Surface{10} = {1,3,4,2};
+Recombine Surface {10} = 30;
+
diff --git a/benchmarks/2d/wing.geo b/benchmarks/2d/wing.geo
new file mode 100644
index 0000000000000000000000000000000000000000..a255c6694556f2e7a807cafc69810dd82695b0f0
--- /dev/null
+++ b/benchmarks/2d/wing.geo
@@ -0,0 +1,1081 @@
+scale = 1 ;
+
+lc1 = 5.e-3 *scale ;
+lc2 = 1.e-2 *scale ;
+lc3 = 10 *scale ;
+
+/* l'aile */
+Point(3895) = {1.177410e-02*scale,-2.768003e-03*scale,0*scale,lc1};
+Point(3897) = {1.081196e-02*scale,-3.794565e-03*scale,0*scale,lc1};
+Point(3896) = {1.040081e-02*scale,-4.225326e-03*scale,0*scale,lc1};
+Point(3968) = {9.501183e-03*scale,-5.167856e-03*scale,0*scale,lc1};
+Point(3995) = {8.172335e-03*scale,-6.541147e-03*scale,0*scale,lc1};
+Point(4003) = {6.820756e-03*scale,-7.914438e-03*scale,0*scale,lc1};
+Point(3857) = {5.454371e-03*scale,-9.287729e-03*scale,0*scale,lc1};
+Point(3856) = {3.534352e-03*scale,-1.119762e-02*scale,0*scale,lc1};
+Point(3860) = {7.877699e-04*scale,-1.389559e-02*scale,0*scale,lc1};
+Point(3861) = {-1.958812e-03*scale,-1.658843e-02*scale,0*scale,lc1};
+Point(3863) = {-4.705394e-03*scale,-1.930092e-02*scale,0*scale,lc1};
+Point(3864) = {-7.451976e-03*scale,-2.206110e-02*scale,0*scale,lc1};
+Point(3865) = {-1.019856e-02*scale,-2.490134e-02*scale,0*scale,lc1};
+Point(3866) = {-1.294514e-02*scale,-2.785668e-02*scale,0*scale,lc1};
+Point(3867) = {-1.569172e-02*scale,-3.097311e-02*scale,0*scale,lc1};
+Point(3868) = {-1.819787e-02*scale,-3.400697e-02*scale,0*scale,lc1};
+Point(3869) = {-1.843830e-02*scale,-3.430929e-02*scale,0*scale,lc1};
+Point(3870) = {-2.032098e-02*scale,-3.675355e-02*scale,0*scale,lc1};
+Point(3871) = {-2.233602e-02*scale,-3.950013e-02*scale,0*scale,lc1};
+Point(3872) = {-2.428062e-02*scale,-4.224671e-02*scale,0*scale,lc1};
+Point(3977) = {-2.615522e-02*scale,-4.499330e-02*scale,0*scale,lc1};
+Point(3877) = {-2.795526e-02*scale,-4.773988e-02*scale,0*scale,lc1};
+Point(3876) = {-2.966457e-02*scale,-5.048646e-02*scale,0*scale,lc1};
+Point(3878) = {-3.128951e-02*scale,-5.323304e-02*scale,0*scale,lc1};
+Point(3934) = {-3.282722e-02*scale,-5.597962e-02*scale,0*scale,lc1};
+Point(3873) = {-3.427526e-02*scale,-5.872621e-02*scale,0*scale,lc1};
+Point(3874) = {-3.563187e-02*scale,-6.147279e-02*scale,0*scale,lc1};
+Point(3875) = {-3.689577e-02*scale,-6.421937e-02*scale,0*scale,lc1};
+Point(3935) = {-3.803475e-02*scale,-6.696595e-02*scale,0*scale,lc1};
+Point(3880) = {-3.906585e-02*scale,-6.971253e-02*scale,0*scale,lc1};
+Point(3879) = {-3.999980e-02*scale,-7.245912e-02*scale,0*scale,lc1};
+Point(3881) = {-4.084348e-02*scale,-7.520570e-02*scale,0*scale,lc1};
+Point(3936) = {-4.159737e-02*scale,-7.795228e-02*scale,0*scale,lc1};
+Point(3882) = {-4.219350e-02*scale,-8.069886e-02*scale,0*scale,lc1};
+Point(3883) = {-4.268262e-02*scale,-8.344544e-02*scale,0*scale,lc1};
+Point(3885) = {-4.302180e-02*scale,-8.619203e-02*scale,0*scale,lc1};
+Point(3884) = {-4.315754e-02*scale,-8.815942e-02*scale,0*scale,lc1};
+Point(1218) = {-4.315754e-02*scale,-8.893861e-02*scale,0*scale,lc1};
+Point(3933) = {-4.315754e-02*scale,-8.955185e-02*scale,0*scale,lc1};
+Point(3996) = {-4.314894e-02*scale,-9.031190e-02*scale,0*scale,lc1};
+Point(3989) = {-4.310538e-02*scale,-9.168519e-02*scale,0*scale,lc1};
+Point(3990) = {-4.298693e-02*scale,-9.305848e-02*scale,0*scale,lc1};
+Point(3978) = {-4.281442e-02*scale,-9.443177e-02*scale,0*scale,lc1};
+Point(3979) = {-4.254831e-02*scale,-9.580506e-02*scale,0*scale,lc1};
+Point(3974) = {-4.215142e-02*scale,-9.717835e-02*scale,0*scale,lc1};
+Point(3973) = {-4.166490e-02*scale,-9.855164e-02*scale,0*scale,lc1};
+Point(3963) = {-4.107412e-02*scale,-9.992494e-02*scale,0*scale,lc1};
+Point(3947) = {-4.041096e-02*scale,-1.011964e-01*scale,0*scale,lc1};
+Point(3948) = {-4.035707e-02*scale,-1.012982e-01*scale,0*scale,lc1};
+Point(3904) = {-3.903767e-02*scale,-1.033356e-01*scale,0*scale,lc1};
+Point(3903) = {-3.766438e-02*scale,-1.048133e-01*scale,0*scale,lc1};
+Point(3946) = {-3.629109e-02*scale,-1.058804e-01*scale,0*scale,lc1};
+Point(3902) = {-3.491780e-02*scale,-1.066897e-01*scale,0*scale,lc1};
+Point(3901) = {-3.354451e-02*scale,-1.073184e-01*scale,0*scale,lc1};
+Point(3900) = {-3.217121e-02*scale,-1.078168e-01*scale,0*scale,lc1};
+Point(3908) = {-3.079792e-02*scale,-1.081973e-01*scale,0*scale,lc1};
+Point(3907) = {-2.942463e-02*scale,-1.084688e-01*scale,0*scale,lc1};
+Point(3951) = {-2.805134e-02*scale,-1.086029e-01*scale,0*scale,lc1};
+Point(3950) = {-2.667805e-02*scale,-1.086423e-01*scale,0*scale,lc1};
+Point(3847) = {-2.580700e-02*scale,-1.086440e-01*scale,0*scale,lc1};
+Point(3949) = {-2.667805e-02*scale,-1.088853e-01*scale,0*scale,lc1};
+Point(3952) = {-2.805134e-02*scale,-1.092658e-01*scale,0*scale,lc1};
+Point(3905) = {-2.942463e-02*scale,-1.096463e-01*scale,0*scale,lc1};
+Point(3906) = {-3.079792e-02*scale,-1.100268e-01*scale,0*scale,lc1};
+Point(3909) = {-3.217121e-02*scale,-1.104020e-01*scale,0*scale,lc1};
+Point(3969) = {-3.354451e-02*scale,-1.107749e-01*scale,0*scale,lc1};
+Point(3970) = {-3.491780e-02*scale,-1.111477e-01*scale,0*scale,lc1};
+Point(3997) = {-3.629109e-02*scale,-1.115205e-01*scale,0*scale,lc1};
+Point(3998) = {-3.766438e-02*scale,-1.118690e-01*scale,0*scale,lc1};
+Point(4004) = {-3.903767e-02*scale,-1.122095e-01*scale,0*scale,lc1};
+Point(3959) = {-4.041096e-02*scale,-1.125499e-01*scale,0*scale,lc1};
+Point(3960) = {-4.315754e-02*scale,-1.131897e-01*scale,0*scale,lc1};
+Point(3972) = {-4.590412e-02*scale,-1.137699e-01*scale,0*scale,lc1};
+Point(3984) = {-4.865071e-02*scale,-1.143079e-01*scale,0*scale,lc1};
+Point(3988) = {-5.139729e-02*scale,-1.147970e-01*scale,0*scale,lc1};
+Point(3961) = {-5.414387e-02*scale,-1.152035e-01*scale,0*scale,lc1};
+Point(3962) = {-5.689045e-02*scale,-1.155501e-01*scale,0*scale,lc1};
+Point(3937) = {-5.963703e-02*scale,-1.157358e-01*scale,0*scale,lc1};
+Point(3938) = {-6.238362e-02*scale,-1.158519e-01*scale,0*scale,lc1};
+Point(3886) = {-6.513020e-02*scale,-1.158332e-01*scale,0*scale,lc1};
+Point(3887) = {-6.787678e-02*scale,-1.156607e-01*scale,0*scale,lc1};
+Point(3888) = {-7.062336e-02*scale,-1.152790e-01*scale,0*scale,lc1};
+Point(3993) = {-7.199665e-02*scale,-1.150098e-01*scale,0*scale,lc1};
+Point(3994) = {-7.336994e-02*scale,-1.146075e-01*scale,0*scale,lc1};
+Point(3971) = {-7.474324e-02*scale,-1.141776e-01*scale,0*scale,lc1};
+Point(3918) = {-7.611653e-02*scale,-1.135965e-01*scale,0*scale,lc1};
+Point(3919) = {-7.748982e-02*scale,-1.129165e-01*scale,0*scale,lc1};
+Point(3920) = {-7.886311e-02*scale,-1.121014e-01*scale,0*scale,lc1};
+Point(3956) = {-8.023640e-02*scale,-1.111186e-01*scale,0*scale,lc1};
+Point(3955) = {-8.047561e-02*scale,-1.109113e-01*scale,0*scale,lc1};
+Point(3965) = {-8.160969e-02*scale,-1.098434e-01*scale,0*scale,lc1};
+Point(3966) = {-8.189452e-02*scale,-1.095380e-01*scale,0*scale,lc1};
+Point(3910) = {-8.297356e-02*scale,-1.081647e-01*scale,0*scale,lc1};
+Point(3913) = {-8.376570e-02*scale,-1.067914e-01*scale,0*scale,lc1};
+Point(3912) = {-8.435627e-02*scale,-1.054263e-01*scale,0*scale,lc1};
+Point(3911) = {-8.435982e-02*scale,-1.054181e-01*scale,0*scale,lc1};
+Point(3914) = {-8.478803e-02*scale,-1.040448e-01*scale,0*scale,lc1};
+Point(3915) = {-8.503641e-02*scale,-1.026715e-01*scale,0*scale,lc1};
+Point(3916) = {-8.516945e-02*scale,-1.012982e-01*scale,0*scale,lc1};
+Point(3917) = {-8.522183e-02*scale,-9.992494e-02*scale,0*scale,lc1};
+Point(3953) = {-8.512327e-02*scale,-9.855164e-02*scale,0*scale,lc1};
+Point(3954) = {-8.495463e-02*scale,-9.717835e-02*scale,0*scale,lc1};
+Point(3964) = {-8.467545e-02*scale,-9.580506e-02*scale,0*scale,lc1};
+Point(3975) = {-8.433113e-02*scale,-9.443177e-02*scale,0*scale,lc1};
+Point(3992) = {-8.387660e-02*scale,-9.305848e-02*scale,0*scale,lc1};
+Point(3991) = {-8.341194e-02*scale,-9.168519e-02*scale,0*scale,lc1};
+Point(3999) = {-8.280629e-02*scale,-9.031190e-02*scale,0*scale,lc1};
+Point(3939) = {-8.220063e-02*scale,-8.893861e-02*scale,0*scale,lc1};
+Point(3967) = {-8.076693e-02*scale,-8.619203e-02*scale,0*scale,lc1};
+Point(3987) = {-7.916546e-02*scale,-8.344544e-02*scale,0*scale,lc1};
+Point(3985) = {-7.886311e-02*scale,-8.298081e-02*scale,0*scale,lc1};
+Point(3986) = {-7.737820e-02*scale,-8.069886e-02*scale,0*scale,lc1};
+Point(4002) = {-7.542111e-02*scale,-7.795228e-02*scale,0*scale,lc1};
+Point(3922) = {-7.335979e-02*scale,-7.520570e-02*scale,0*scale,lc1};
+Point(4005) = {-7.112105e-02*scale,-7.245912e-02*scale,0*scale,lc1};
+Point(3851) = {-6.873828e-02*scale,-6.971253e-02*scale,0*scale,lc1};
+Point(3850) = {-6.372231e-02*scale,-6.421937e-02*scale,0*scale,lc1};
+Point(3853) = {-5.963703e-02*scale,-6.001430e-02*scale,0*scale,lc1};
+Point(3852) = {-5.414387e-02*scale,-5.469298e-02*scale,0*scale,lc1};
+Point(3849) = {-4.865071e-02*scale,-4.961204e-02*scale,0*scale,lc1};
+Point(3848) = {-4.315754e-02*scale,-4.465740e-02*scale,0*scale,lc1};
+Point(3921) = {-3.766438e-02*scale,-3.985542e-02*scale,0*scale,lc1};
+Point(3983) = {-3.491780e-02*scale,-3.750843e-02*scale,0*scale,lc1};
+Point(3982) = {-3.217121e-02*scale,-3.519259e-02*scale,0*scale,lc1};
+Point(3976) = {-2.942463e-02*scale,-3.289435e-02*scale,0*scale,lc1};
+Point(3929) = {-2.744807e-02*scale,-3.126039e-02*scale,0*scale,lc1};
+Point(3958) = {-2.667805e-02*scale,-3.062383e-02*scale,0*scale,lc1};
+Point(3928) = {-2.411032e-02*scale,-2.851380e-02*scale,0*scale,lc1};
+Point(3957) = {-2.393147e-02*scale,-2.836765e-02*scale,0*scale,lc1};
+Point(3927) = {-2.118489e-02*scale,-2.612321e-02*scale,0*scale,lc1};
+Point(3926) = {-1.843830e-02*scale,-2.390843e-02*scale,0*scale,lc1};
+Point(3925) = {-1.569172e-02*scale,-2.170681e-02*scale,0*scale,lc1};
+Point(3924) = {-1.294514e-02*scale,-1.952576e-02*scale,0*scale,lc1};
+Point(3932) = {-1.040573e-02*scale,-1.752748e-02*scale,0*scale,lc1};
+Point(3931) = {-1.019856e-02*scale,-1.736495e-02*scale,0*scale,lc1};
+Point(3930) = {-7.451976e-03*scale,-1.521330e-02*scale,0*scale,lc1};
+Point(3923) = {-4.705394e-03*scale,-1.307794e-02*scale,0*scale,lc1};
+Point(3862) = {-1.958812e-03*scale,-1.095092e-02*scale,0*scale,lc1};
+Point(3859) = {1.960946e-04*scale,-9.287729e-03*scale,0*scale,lc1};
+Point(3858) = {7.877699e-04*scale,-8.831063e-03*scale,0*scale,lc1};
+Point(3855) = {3.534352e-03*scale,-6.728705e-03*scale,0*scale,lc1};
+Point(3854) = {6.280934e-03*scale,-4.633175e-03*scale,0*scale,lc1};
+Point(3945) = {7.386845e-03*scale,-3.794565e-03*scale,0*scale,lc1};
+Point(3944) = {7.654225e-03*scale,-3.591811e-03*scale,0*scale,lc1};
+Point(3899) = {9.027516e-03*scale,-2.550448e-03*scale,0*scale,lc1};
+Point(3898) = {1.040081e-02*scale,-1.509310e-03*scale,0*scale,lc1};
+Point(3894) = {1.177410e-02*scale,-4.686545e-04*scale,0*scale,lc1};
+Point(3890) = {1.282184e-02*scale,3.253082e-04*scale,0*scale,lc1};
+Point(3893) = {1.314739e-02*scale,5.720012e-04*scale,0*scale,lc1};
+Point(3941) = {1.463351e-02*scale,1.698599e-03*scale,0*scale,lc1};
+Point(4000) = {1.644012e-02*scale,3.071890e-03*scale,0*scale,lc1};
+Point(3980) = {1.824674e-02*scale,4.445181e-03*scale,0*scale,lc1};
+Point(3846) = {1.892400e-02*scale,4.960000e-03*scale,0*scale,lc1};
+Point(3981) = {1.843389e-02*scale,4.445181e-03*scale,0*scale,lc1};
+Point(4001) = {1.712649e-02*scale,3.071890e-03*scale,0*scale,lc1};
+Point(3942) = {1.584524e-02*scale,1.698599e-03*scale,0*scale,lc1};
+Point(3940) = {1.460138e-02*scale,3.253082e-04*scale,0*scale,lc1};
+Point(3889) = {1.452068e-02*scale,2.362167e-04*scale,0*scale,lc1};
+Point(3892) = {1.335131e-02*scale,-1.047983e-03*scale,0*scale,lc1};
+Point(3891) = {1.314739e-02*scale,-1.270371e-03*scale,0*scale,lc1};
+Point(3943) = {1.209204e-02*scale,-2.421274e-03*scale,0*scale,lc1};
+Point(4063) = {4.498368e-02*scale,-9.287729e-03*scale,0*scale,lc1};
+Point(4062) = {4.610574e-02*scale,-6.541147e-03*scale,0*scale,lc1};
+Point(4061) = {4.755089e-02*scale,-3.794565e-03*scale,0*scale,lc1};
+Point(4114) = {4.934166e-02*scale,-1.047983e-03*scale,0*scale,lc1};
+Point(4153) = {5.143154e-02*scale,1.698599e-03*scale,0*scale,lc1};
+Point(4178) = {5.390637e-02*scale,4.445181e-03*scale,0*scale,lc1};
+Point(4179) = {5.571941e-02*scale,6.252892e-03*scale,0*scale,lc1};
+Point(4191) = {5.846599e-02*scale,8.699713e-03*scale,0*scale,lc1};
+Point(4203) = {6.121257e-02*scale,1.103796e-02*scale,0*scale,lc1};
+Point(4109) = {6.350284e-02*scale,1.268493e-02*scale,0*scale,lc1};
+Point(4202) = {6.670574e-02*scale,1.498818e-02*scale,0*scale,lc1};
+Point(4199) = {7.170787e-02*scale,1.817809e-02*scale,0*scale,lc1};
+Point(4201) = {7.219890e-02*scale,1.846566e-02*scale,0*scale,lc1};
+Point(4200) = {7.769207e-02*scale,2.168274e-02*scale,0*scale,lc1};
+Point(4100) = {8.318523e-02*scale,2.447113e-02*scale,0*scale,lc1};
+Point(4099) = {9.417156e-02*scale,2.953992e-02*scale,0*scale,lc1};
+Point(4045) = {1.051579e-01*scale,3.374477e-02*scale,0*scale,lc1};
+Point(4044) = {1.161442e-01*scale,3.745387e-02*scale,0*scale,lc1};
+Point(4043) = {1.271305e-01*scale,4.084705e-02*scale,0*scale,lc1};
+Point(4147) = {1.381169e-01*scale,4.362166e-02*scale,0*scale,lc1};
+Point(4146) = {1.491032e-01*scale,4.590535e-02*scale,0*scale,lc1};
+Point(4180) = {1.600895e-01*scale,4.775547e-02*scale,0*scale,lc1};
+Point(4167) = {1.710759e-01*scale,4.909090e-02*scale,0*scale,lc1};
+Point(4166) = {1.820622e-01*scale,5.028654e-02*scale,0*scale,lc1};
+Point(4134) = {1.930485e-01*scale,5.118303e-02*scale,0*scale,lc1};
+Point(4133) = {2.040348e-01*scale,5.209637e-02*scale,0*scale,lc1};
+Point(4098) = {2.150212e-01*scale,5.304431e-02*scale,0*scale,lc1};
+Point(4097) = {2.260075e-01*scale,5.389186e-02*scale,0*scale,lc1};
+Point(4042) = {2.369938e-01*scale,5.466596e-02*scale,0*scale,lc1};
+Point(4041) = {2.479802e-01*scale,5.535583e-02*scale,0*scale,lc1};
+Point(4040) = {2.589665e-01*scale,5.602171e-02*scale,0*scale,lc1};
+Point(4095) = {2.699528e-01*scale,5.660820e-02*scale,0*scale,lc1};
+Point(4096) = {2.809391e-01*scale,5.717080e-02*scale,0*scale,lc1};
+Point(4132) = {2.919255e-01*scale,5.768210e-02*scale,0*scale,lc1};
+Point(4131) = {3.029118e-01*scale,5.816077e-02*scale,0*scale,lc1};
+Point(4165) = {3.138981e-01*scale,5.861410e-02*scale,0*scale,lc1};
+Point(4164) = {3.248844e-01*scale,5.902748e-02*scale,0*scale,lc1};
+Point(4163) = {3.358708e-01*scale,5.942876e-02*scale,0*scale,lc1};
+Point(4130) = {3.468571e-01*scale,5.978313e-02*scale,0*scale,lc1};
+Point(4129) = {3.578434e-01*scale,6.012088e-02*scale,0*scale,lc1};
+Point(4094) = {3.688298e-01*scale,6.041918e-02*scale,0*scale,lc1};
+Point(4093) = {3.798161e-01*scale,6.068571e-02*scale,0*scale,lc1};
+Point(4039) = {3.908024e-01*scale,6.092523e-02*scale,0*scale,lc1};
+Point(4038) = {4.017887e-01*scale,6.111444e-02*scale,0*scale,lc1};
+Point(4037) = {4.127751e-01*scale,6.128792e-02*scale,0*scale,lc1};
+Point(4092) = {4.237614e-01*scale,6.139510e-02*scale,0*scale,lc1};
+Point(4091) = {4.347477e-01*scale,6.148330e-02*scale,0*scale,lc1};
+Point(4128) = {4.457341e-01*scale,6.152051e-02*scale,0*scale,lc1};
+Point(4127) = {4.567204e-01*scale,6.152534e-02*scale,0*scale,lc1};
+Point(4162) = {4.677067e-01*scale,6.149964e-02*scale,0*scale,lc1};
+Point(4161) = {4.786930e-01*scale,6.143130e-02*scale,0*scale,lc1};
+Point(4183) = {4.896794e-01*scale,6.134928e-02*scale,0*scale,lc1};
+Point(4160) = {5.006657e-01*scale,6.120560e-02*scale,0*scale,lc1};
+Point(4159) = {5.116520e-01*scale,6.104561e-02*scale,0*scale,lc1};
+Point(4126) = {5.226384e-01*scale,6.083535e-02*scale,0*scale,lc1};
+Point(4125) = {5.336247e-01*scale,6.058889e-02*scale,0*scale,lc1};
+Point(4088) = {5.446110e-01*scale,6.030455e-02*scale,0*scale,lc1};
+Point(4087) = {5.555973e-01*scale,5.996460e-02*scale,0*scale,lc1};
+Point(4033) = {5.665837e-01*scale,5.960434e-02*scale,0*scale,lc1};
+Point(4032) = {5.775700e-01*scale,5.915575e-02*scale,0*scale,lc1};
+Point(4031) = {5.885563e-01*scale,5.867545e-02*scale,0*scale,lc1};
+Point(4086) = {5.995427e-01*scale,5.809113e-02*scale,0*scale,lc1};
+Point(4085) = {6.105290e-01*scale,5.746759e-02*scale,0*scale,lc1};
+Point(4124) = {6.215153e-01*scale,5.679937e-02*scale,0*scale,lc1};
+Point(4123) = {6.325016e-01*scale,5.616104e-02*scale,0*scale,lc1};
+Point(4158) = {6.434880e-01*scale,5.553466e-02*scale,0*scale,lc1};
+Point(4157) = {6.544743e-01*scale,5.490460e-02*scale,0*scale,lc1};
+Point(4156) = {6.654606e-01*scale,5.425221e-02*scale,0*scale,lc1};
+Point(4122) = {6.764469e-01*scale,5.351456e-02*scale,0*scale,lc1};
+Point(4121) = {6.874333e-01*scale,5.273401e-02*scale,0*scale,lc1};
+Point(4081) = {6.984196e-01*scale,5.190181e-02*scale,0*scale,lc1};
+Point(4080) = {7.094059e-01*scale,5.101347e-02*scale,0*scale,lc1};
+Point(4020) = {7.203923e-01*scale,5.010133e-02*scale,0*scale,lc1};
+Point(4019) = {7.313786e-01*scale,4.909498e-02*scale,0*scale,lc1};
+Point(4018) = {7.423649e-01*scale,4.806316e-02*scale,0*scale,lc1};
+Point(4143) = {7.533512e-01*scale,4.694984e-02*scale,0*scale,lc1};
+Point(4118) = {7.643376e-01*scale,4.579371e-02*scale,0*scale,lc1};
+Point(4022) = {7.753239e-01*scale,4.458624e-02*scale,0*scale,lc1};
+Point(4016) = {7.863102e-01*scale,4.330843e-02*scale,0*scale,lc1};
+Point(4015) = {7.972966e-01*scale,4.200167e-02*scale,0*scale,lc1};
+Point(4011) = {8.082829e-01*scale,4.058146e-02*scale,0*scale,lc1};
+Point(4010) = {8.192692e-01*scale,3.912968e-02*scale,0*scale,lc1};
+Point(4009) = {8.302555e-01*scale,3.758209e-02*scale,0*scale,lc1};
+Point(4219) = {8.357487e-01*scale,3.680830e-02*scale,0*scale,lc1};
+Point(4177) = {8.412419e-01*scale,3.598390e-02*scale,0*scale,lc1};
+Point(4176) = {8.467350e-01*scale,3.515767e-02*scale,0*scale,lc1};
+Point(4149) = {8.494816e-01*scale,3.474456e-02*scale,0*scale,lc1};
+Point(4059) = {8.522282e-01*scale,3.433145e-02*scale,0*scale,lc1};
+Point(4058) = {8.549748e-01*scale,3.391833e-02*scale,0*scale,lc1};
+Point(4055) = {8.577214e-01*scale,3.349214e-02*scale,0*scale,lc1};
+Point(4113) = {8.604679e-01*scale,3.306571e-02*scale,0*scale,lc1};
+Point(4110) = {8.632145e-01*scale,3.263928e-02*scale,0*scale,lc1};
+Point(4213) = {8.659611e-01*scale,3.221285e-02*scale,0*scale,lc1};
+Point(4210) = {8.687077e-01*scale,3.178643e-02*scale,0*scale,lc1};
+Point(4217) = {8.714543e-01*scale,3.136000e-02*scale,0*scale,lc1};
+Point(4006) = {8.740950e-01*scale,3.095000e-02*scale,0*scale,lc1};
+Point(4218) = {8.714543e-01*scale,3.095677e-02*scale,0*scale,lc1};
+Point(4211) = {8.687077e-01*scale,3.096380e-02*scale,0*scale,lc1};
+Point(4212) = {8.659611e-01*scale,3.097084e-02*scale,0*scale,lc1};
+Point(4111) = {8.632145e-01*scale,3.097787e-02*scale,0*scale,lc1};
+Point(4112) = {8.604679e-01*scale,3.098491e-02*scale,0*scale,lc1};
+Point(4056) = {8.577214e-01*scale,3.099195e-02*scale,0*scale,lc1};
+Point(4057) = {8.549748e-01*scale,3.099898e-02*scale,0*scale,lc1};
+Point(4060) = {8.522282e-01*scale,3.100602e-02*scale,0*scale,lc1};
+Point(4148) = {8.494816e-01*scale,3.101305e-02*scale,0*scale,lc1};
+Point(4150) = {8.467350e-01*scale,3.102009e-02*scale,0*scale,lc1};
+Point(4208) = {8.439885e-01*scale,3.102712e-02*scale,0*scale,lc1};
+Point(4209) = {8.412419e-01*scale,3.103416e-02*scale,0*scale,lc1};
+Point(4215) = {8.357487e-01*scale,3.104823e-02*scale,0*scale,lc1};
+Point(4216) = {8.302555e-01*scale,3.106230e-02*scale,0*scale,lc1};
+Point(4220) = {8.247624e-01*scale,3.107638e-02*scale,0*scale,lc1};
+Point(4012) = {8.192692e-01*scale,3.109045e-02*scale,0*scale,lc1};
+Point(4013) = {8.082829e-01*scale,3.111859e-02*scale,0*scale,lc1};
+Point(4014) = {7.972966e-01*scale,3.114674e-02*scale,0*scale,lc1};
+Point(4017) = {7.863102e-01*scale,3.117488e-02*scale,0*scale,lc1};
+Point(4021) = {7.753239e-01*scale,3.120302e-02*scale,0*scale,lc1};
+Point(4023) = {7.643376e-01*scale,3.123117e-02*scale,0*scale,lc1};
+Point(4117) = {7.533512e-01*scale,3.125931e-02*scale,0*scale,lc1};
+Point(4082) = {7.423649e-01*scale,3.128745e-02*scale,0*scale,lc1};
+Point(4083) = {7.313786e-01*scale,3.131560e-02*scale,0*scale,lc1};
+Point(4024) = {7.203923e-01*scale,3.134374e-02*scale,0*scale,lc1};
+Point(4025) = {7.094059e-01*scale,3.137188e-02*scale,0*scale,lc1};
+Point(4007) = {6.999910e-01*scale,3.139600e-02*scale,0*scale,lc1};
+Point(4026) = {6.999910e-01*scale,2.367126e-02*scale,0*scale,lc1};
+Point(4027) = {6.999910e-01*scale,1.268493e-02*scale,0*scale,lc1};
+Point(4028) = {6.999910e-01*scale,1.698599e-03*scale,0*scale,lc1};
+Point(4029) = {6.999910e-01*scale,-9.287729e-03*scale,0*scale,lc1};
+Point(4008) = {6.999910e-01*scale,-1.722400e-02*scale,0*scale,lc1};
+Point(4030) = {6.984196e-01*scale,-1.751626e-02*scale,0*scale,lc1};
+Point(4084) = {6.874333e-01*scale,-1.955960e-02*scale,0*scale,lc1};
+Point(4194) = {6.764469e-01*scale,-2.159776e-02*scale,0*scale,lc1};
+Point(4195) = {6.654606e-01*scale,-2.362865e-02*scale,0*scale,lc1};
+Point(4154) = {6.544743e-01*scale,-2.588904e-02*scale,0*scale,lc1};
+Point(4155) = {6.434880e-01*scale,-2.825320e-02*scale,0*scale,lc1};
+Point(4119) = {6.325016e-01*scale,-3.016078e-02*scale,0*scale,lc1};
+Point(4120) = {6.215153e-01*scale,-3.200586e-02*scale,0*scale,lc1};
+Point(4089) = {6.105290e-01*scale,-3.369569e-02*scale,0*scale,lc1};
+Point(4090) = {5.995427e-01*scale,-3.534073e-02*scale,0*scale,lc1};
+Point(4034) = {5.885563e-01*scale,-3.694183e-02*scale,0*scale,lc1};
+Point(4035) = {5.775700e-01*scale,-3.852074e-02*scale,0*scale,lc1};
+Point(4036) = {5.665837e-01*scale,-4.009157e-02*scale,0*scale,lc1};
+Point(4144) = {5.555973e-01*scale,-4.161619e-02*scale,0*scale,lc1};
+Point(4192) = {5.446110e-01*scale,-4.311363e-02*scale,0*scale,lc1};
+Point(4193) = {5.336247e-01*scale,-4.454372e-02*scale,0*scale,lc1};
+Point(4184) = {5.226384e-01*scale,-4.589904e-02*scale,0*scale,lc1};
+Point(4185) = {5.116520e-01*scale,-4.719211e-02*scale,0*scale,lc1};
+Point(4168) = {5.006657e-01*scale,-4.834107e-02*scale,0*scale,lc1};
+Point(4169) = {4.896794e-01*scale,-4.944199e-02*scale,0*scale,lc1};
+Point(4135) = {4.786930e-01*scale,-5.032590e-02*scale,0*scale,lc1};
+Point(4136) = {4.677067e-01*scale,-5.113121e-02*scale,0*scale,lc1};
+Point(4101) = {4.567204e-01*scale,-5.175527e-02*scale,0*scale,lc1};
+Point(4102) = {4.457341e-01*scale,-5.227269e-02*scale,0*scale,lc1};
+Point(4049) = {4.347477e-01*scale,-5.270239e-02*scale,0*scale,lc1};
+Point(4050) = {4.237614e-01*scale,-5.305741e-02*scale,0*scale,lc1};
+Point(4051) = {4.127751e-01*scale,-5.339040e-02*scale,0*scale,lc1};
+Point(4103) = {4.017887e-01*scale,-5.365720e-02*scale,0*scale,lc1};
+Point(4104) = {3.908024e-01*scale,-5.390137e-02*scale,0*scale,lc1};
+Point(4137) = {3.798161e-01*scale,-5.408775e-02*scale,0*scale,lc1};
+Point(4138) = {3.688298e-01*scale,-5.423035e-02*scale,0*scale,lc1};
+Point(4170) = {3.578434e-01*scale,-5.433335e-02*scale,0*scale,lc1};
+Point(4171) = {3.468571e-01*scale,-5.436941e-02*scale,0*scale,lc1};
+Point(4186) = {3.358708e-01*scale,-5.438425e-02*scale,0*scale,lc1};
+Point(4172) = {3.248844e-01*scale,-5.431051e-02*scale,0*scale,lc1};
+Point(4173) = {3.138981e-01*scale,-5.421116e-02*scale,0*scale,lc1};
+Point(4139) = {3.029118e-01*scale,-5.403703e-02*scale,0*scale,lc1};
+Point(4140) = {2.919255e-01*scale,-5.379680e-02*scale,0*scale,lc1};
+Point(4105) = {2.809391e-01*scale,-5.349015e-02*scale,0*scale,lc1};
+Point(4106) = {2.699528e-01*scale,-5.307623e-02*scale,0*scale,lc1};
+Point(4052) = {2.589665e-01*scale,-5.262516e-02*scale,0*scale,lc1};
+Point(4053) = {2.479802e-01*scale,-5.205332e-02*scale,0*scale,lc1};
+Point(4054) = {2.369938e-01*scale,-5.145659e-02*scale,0*scale,lc1};
+Point(4107) = {2.260075e-01*scale,-5.078306e-02*scale,0*scale,lc1};
+Point(4108) = {2.150212e-01*scale,-5.007146e-02*scale,0*scale,lc1};
+Point(4141) = {2.040348e-01*scale,-4.931867e-02*scale,0*scale,lc1};
+Point(4142) = {1.930485e-01*scale,-4.849150e-02*scale,0*scale,lc1};
+Point(4174) = {1.820622e-01*scale,-4.763665e-02*scale,0*scale,lc1};
+Point(4175) = {1.710759e-01*scale,-4.665625e-02*scale,0*scale,lc1};
+Point(4187) = {1.600895e-01*scale,-4.564614e-02*scale,0*scale,lc1};
+Point(4188) = {1.491032e-01*scale,-4.455428e-02*scale,0*scale,lc1};
+Point(4145) = {1.381169e-01*scale,-4.339482e-02*scale,0*scale,lc1};
+Point(4046) = {1.271305e-01*scale,-4.218155e-02*scale,0*scale,lc1};
+Point(4047) = {1.161442e-01*scale,-4.082776e-02*scale,0*scale,lc1};
+Point(4048) = {1.051579e-01*scale,-3.939290e-02*scale,0*scale,lc1};
+Point(4196) = {9.966472e-02*scale,-3.862964e-02*scale,0*scale,lc1};
+Point(4197) = {9.417156e-02*scale,-3.788513e-02*scale,0*scale,lc1};
+Point(4198) = {8.867839e-02*scale,-3.720163e-02*scale,0*scale,lc1};
+Point(4189) = {8.318523e-02*scale,-3.651554e-02*scale,0*scale,lc1};
+Point(4190) = {7.769207e-02*scale,-3.569174e-02*scale,0*scale,lc1};
+Point(4214) = {7.494548e-02*scale,-3.527985e-02*scale,0*scale,lc1};
+Point(4181) = {7.219890e-02*scale,-3.481687e-02*scale,0*scale,lc1};
+Point(4182) = {6.945232e-02*scale,-3.430639e-02*scale,0*scale,lc1};
+Point(4151) = {6.670574e-02*scale,-3.379591e-02*scale,0*scale,lc1};
+Point(4152) = {6.395916e-02*scale,-3.322033e-02*scale,0*scale,lc1};
+Point(4064) = {6.121257e-02*scale,-3.263264e-02*scale,0*scale,lc1};
+Point(4065) = {5.846599e-02*scale,-3.189105e-02*scale,0*scale,lc1};
+Point(4066) = {5.635416e-02*scale,-3.126039e-02*scale,0*scale,lc1};
+Point(4205) = {5.434612e-02*scale,-3.049426e-02*scale,0*scale,lc1};
+Point(4206) = {5.297283e-02*scale,-2.986940e-02*scale,0*scale,lc1};
+Point(4207) = {5.159954e-02*scale,-2.914883e-02*scale,0*scale,lc1};
+Point(4072) = {5.022625e-02*scale,-2.824438e-02*scale,0*scale,lc1};
+Point(4074) = {4.885296e-02*scale,-2.716087e-02*scale,0*scale,lc1};
+Point(4073) = {4.883074e-02*scale,-2.714051e-02*scale,0*scale,lc1};
+Point(4076) = {4.747966e-02*scale,-2.578824e-02*scale,0*scale,lc1};
+Point(4075) = {4.746129e-02*scale,-2.576722e-02*scale,0*scale,lc1};
+Point(4079) = {4.639274e-02*scale,-2.439393e-02*scale,0*scale,lc1};
+Point(4078) = {4.561283e-02*scale,-2.302064e-02*scale,0*scale,lc1};
+Point(4077) = {4.500573e-02*scale,-2.164735e-02*scale,0*scale,lc1};
+Point(4068) = {4.450243e-02*scale,-2.027406e-02*scale,0*scale,lc1};
+Point(4067) = {4.415104e-02*scale,-1.890077e-02*scale,0*scale,lc1};
+Point(4069) = {4.402927e-02*scale,-1.752748e-02*scale,0*scale,lc1};
+Point(4070) = {4.404617e-02*scale,-1.615418e-02*scale,0*scale,lc1};
+Point(4071) = {4.411753e-02*scale,-1.478089e-02*scale,0*scale,lc1};
+Point(4115) = {4.421802e-02*scale,-1.340760e-02*scale,0*scale,lc1};
+Point(4116) = {4.435615e-02*scale,-1.203431e-02*scale,0*scale,lc1};
+Point(4204) = {4.461695e-02*scale,-1.066102e-02*scale,0*scale,lc1};
+
+/* la boite */
+
+Point(11) = {4.552264e+01*scale,-2.254225e+01*scale,0*scale,lc3};
+Point(2233) = {4.552264e+01*scale,-1.129225e+01*scale,0*scale,lc3};
+Point(5) = {4.552264e+01*scale,-4.224671e-02*scale,0*scale,lc3};
+Point(2236) = {4.552264e+01*scale,1.120775e+01*scale,0*scale,lc3};
+Point(14) = {4.552264e+01*scale,2.245775e+01*scale,0*scale,lc3};
+Point(2) = {4.552264e+01*scale,4.495775e+01*scale,0*scale,lc3};
+Point(15) = {2.302264e+01*scale,4.495775e+01*scale,0*scale,lc3};
+Point(2301) = {1.177264e+01*scale,4.495775e+01*scale,0*scale,lc3};
+Point(6) = {5.226384e-01*scale,4.495775e+01*scale,0*scale,lc3};
+Point(2304) = {-1.072736e+01*scale,4.495775e+01*scale,0*scale,lc3};
+Point(18) = {-2.197736e+01*scale,4.495775e+01*scale,0*scale,lc3};
+Point(3) = {-4.447736e+01*scale,4.495775e+01*scale,0*scale,lc3};
+Point(19) = {-4.447736e+01*scale,2.245775e+01*scale,0*scale,lc3};
+Point(2240) = {-4.447736e+01*scale,1.120775e+01*scale,0*scale,lc3};
+Point(7) = {-4.447736e+01*scale,-4.224671e-02*scale,0*scale,lc3};
+Point(2243) = {-4.447736e+01*scale,-1.129225e+01*scale,0*scale,lc3};
+Point(22) = {-4.447736e+01*scale,-2.254225e+01*scale,0*scale,lc3};
+Point(4) = {-4.447736e+01*scale,-4.504225e+01*scale,0*scale,lc3};
+Point(23) = {-2.197736e+01*scale,-4.504225e+01*scale,0*scale,lc3};
+Point(2317) = {-1.072736e+01*scale,-4.504225e+01*scale,0*scale,lc3};
+Point(8) = {5.226384e-01*scale,-4.504225e+01*scale,0*scale,lc3};
+Point(2297) = {1.177264e+01*scale,-4.504225e+01*scale,0*scale,lc3};
+Point(10) = {2.302264e+01*scale,-4.504225e+01*scale,0*scale,lc3};
+Point(1) = {4.552264e+01*scale,-4.504225e+01*scale,0*scale,lc3};
+
+/* le flap */
+
+Point(4298) = {1.125732e+00*scale,-1.356305e-01*scale,0*scale,lc2};
+Point(4297) = {1.128473e+00*scale,-1.383771e-01*scale,0*scale,lc2};
+Point(4222) = {1.130511e+00*scale,-1.404190e-01*scale,0*scale,lc2};
+Point(4250) = {1.130200e+00*scale,-1.411237e-01*scale,0*scale,lc2};
+Point(4252) = {1.128987e+00*scale,-1.438702e-01*scale,0*scale,lc2};
+Point(4221) = {1.128033e+00*scale,-1.460320e-01*scale,0*scale,lc2};
+Point(4251) = {1.126886e+00*scale,-1.450775e-01*scale,0*scale,lc2};
+Point(4299) = {1.124140e+00*scale,-1.427912e-01*scale,0*scale,lc2};
+Point(4335) = {1.121393e+00*scale,-1.405048e-01*scale,0*scale,lc2};
+Point(4337) = {1.118647e+00*scale,-1.382318e-01*scale,0*scale,lc2};
+Point(4267) = {1.115900e+00*scale,-1.359746e-01*scale,0*scale,lc2};
+Point(4294) = {1.115481e+00*scale,-1.356305e-01*scale,0*scale,lc2};
+Point(4269) = {1.110407e+00*scale,-1.315213e-01*scale,0*scale,lc2};
+Point(4233) = {1.104914e+00*scale,-1.272651e-01*scale,0*scale,lc2};
+Point(4234) = {1.099421e+00*scale,-1.231333e-01*scale,0*scale,lc2};
+Point(4273) = {1.093927e+00*scale,-1.190696e-01*scale,0*scale,lc2};
+Point(4293) = {1.088434e+00*scale,-1.150965e-01*scale,0*scale,lc2};
+Point(4314) = {1.082941e+00*scale,-1.112096e-01*scale,0*scale,lc2};
+Point(4317) = {1.077448e+00*scale,-1.073829e-01*scale,0*scale,lc2};
+Point(4318) = {1.071955e+00*scale,-1.037168e-01*scale,0*scale,lc2};
+Point(4274) = {1.066462e+00*scale,-1.001266e-01*scale,0*scale,lc2};
+Point(4235) = {1.060968e+00*scale,-9.664561e-02*scale,0*scale,lc2};
+Point(4236) = {1.055475e+00*scale,-9.329373e-02*scale,0*scale,lc2};
+Point(4237) = {1.049982e+00*scale,-8.999964e-02*scale,0*scale,lc2};
+Point(4301) = {1.044489e+00*scale,-8.685139e-02*scale,0*scale,lc2};
+Point(4319) = {1.038996e+00*scale,-8.375978e-02*scale,0*scale,lc2};
+Point(4321) = {1.033503e+00*scale,-8.073620e-02*scale,0*scale,lc2};
+Point(4320) = {1.033435e+00*scale,-8.069886e-02*scale,0*scale,lc2};
+Point(4322) = {1.028009e+00*scale,-7.778268e-02*scale,0*scale,lc2};
+Point(4347) = {1.022516e+00*scale,-7.485902e-02*scale,0*scale,lc2};
+Point(4323) = {1.017023e+00*scale,-7.206071e-02*scale,0*scale,lc2};
+Point(4324) = {1.011530e+00*scale,-6.928798e-02*scale,0*scale,lc2};
+Point(4325) = {1.006037e+00*scale,-6.656447e-02*scale,0*scale,lc2};
+Point(4276) = {1.000544e+00*scale,-6.390345e-02*scale,0*scale,lc2};
+
+Point(4238) = {9.950505e-01*scale,-6.128188e-02*scale,0*scale,lc2};
+Point(4240) = {9.895573e-01*scale,-5.875476e-02*scale,0*scale,lc2};
+Point(4239) = {9.894949e-01*scale,-5.872621e-02*scale,0*scale,lc2};
+Point(4241) = {9.840641e-01*scale,-5.625125e-02*scale,0*scale,lc2};
+Point(4277) = {9.785710e-01*scale,-5.382099e-02*scale,0*scale,lc2};
+Point(4326) = {9.730778e-01*scale,-5.141086e-02*scale,0*scale,lc2};
+Point(4327) = {9.675846e-01*scale,-4.903782e-02*scale,0*scale,lc2};
+Point(4328) = {9.620915e-01*scale,-4.670806e-02*scale,0*scale,lc2};
+Point(4350) = {9.565983e-01*scale,-4.440955e-02*scale,0*scale,lc2};
+Point(4348) = {9.511052e-01*scale,-4.217563e-02*scale,0*scale,lc2};
+Point(4349) = {9.456120e-01*scale,-3.995849e-02*scale,0*scale,lc2};
+Point(4332) = {9.401188e-01*scale,-3.778658e-02*scale,0*scale,lc2};
+Point(4333) = {9.346257e-01*scale,-3.563417e-02*scale,0*scale,lc2};
+Point(4334) = {9.291325e-01*scale,-3.354304e-02*scale,0*scale,lc2};
+Point(4278) = {9.236393e-01*scale,-3.147155e-02*scale,0*scale,lc2};
+Point(4247) = {9.181462e-01*scale,-2.942051e-02*scale,0*scale,lc2};
+Point(4248) = {9.126530e-01*scale,-2.741688e-02*scale,0*scale,lc2};
+Point(4249) = {9.071598e-01*scale,-2.541811e-02*scale,0*scale,lc2};
+Point(4282) = {9.016667e-01*scale,-2.339436e-02*scale,0*scale,lc2};
+Point(4283) = {8.961735e-01*scale,-2.121581e-02*scale,0*scale,lc2};
+Point(4341) = {8.934269e-01*scale,-2.008894e-02*scale,0*scale,lc2};
+Point(4342) = {8.906803e-01*scale,-1.868991e-02*scale,0*scale,lc2};
+Point(4343) = {8.879338e-01*scale,-1.729088e-02*scale,0*scale,lc2};
+Point(4289) = {8.851872e-01*scale,-1.539587e-02*scale,0*scale,lc2};
+Point(4290) = {8.824406e-01*scale,-1.328983e-02*scale,0*scale,lc2};
+Point(4286) = {8.796940e-01*scale,-1.068337e-02*scale,0*scale,lc2};
+Point(4255) = {8.785175e-01*scale,-9.287729e-03*scale,0*scale,lc2};
+Point(4257) = {8.763537e-01*scale,-6.541147e-03*scale,0*scale,lc2};
+Point(4256) = {8.745583e-01*scale,-3.794565e-03*scale,0*scale,lc2};
+Point(4346) = {8.737982e-01*scale,-2.421274e-03*scale,0*scale,lc2};
+Point(4288) = {8.731375e-01*scale,-1.047983e-03*scale,0*scale,lc2};
+Point(4287) = {8.725645e-01*scale,3.253082e-04*scale,0*scale,lc2};
+Point(4260) = {8.721474e-01*scale,1.698599e-03*scale,0*scale,lc2};
+Point(4259) = {8.718264e-01*scale,3.071890e-03*scale,0*scale,lc2};
+Point(4258) = {8.716296e-01*scale,4.445181e-03*scale,0*scale,lc2};
+Point(4262) = {8.715751e-01*scale,5.818472e-03*scale,0*scale,lc2};
+Point(4261) = {8.716587e-01*scale,7.191763e-03*scale,0*scale,lc2};
+Point(4264) = {8.718582e-01*scale,8.565054e-03*scale,0*scale,lc2};
+Point(4263) = {8.721688e-01*scale,9.938345e-03*scale,0*scale,lc2};
+Point(4265) = {8.726207e-01*scale,1.131164e-02*scale,0*scale,lc2};
+Point(4266) = {8.732553e-01*scale,1.268493e-02*scale,0*scale,lc2};
+Point(4303) = {8.741084e-01*scale,1.405822e-02*scale,0*scale,lc2};
+Point(4302) = {8.742009e-01*scale,1.417564e-02*scale,0*scale,lc2};
+Point(4304) = {8.752094e-01*scale,1.543151e-02*scale,0*scale,lc2};
+Point(4305) = {8.755741e-01*scale,1.580615e-02*scale,0*scale,lc2};
+Point(4306) = {8.765464e-01*scale,1.680480e-02*scale,0*scale,lc2};
+Point(4307) = {8.769474e-01*scale,1.712646e-02*scale,0*scale,lc2};
+Point(4308) = {8.783004e-01*scale,1.817809e-02*scale,0*scale,lc2};
+Point(4309) = {8.783207e-01*scale,1.819390e-02*scale,0*scale,lc2};
+Point(4345) = {8.796940e-01*scale,1.898483e-02*scale,0*scale,lc2};
+Point(4344) = {8.810673e-01*scale,1.969096e-02*scale,0*scale,lc2};
+Point(4254) = {8.824406e-01*scale,2.018966e-02*scale,0*scale,lc2};
+Point(4253) = {8.851872e-01*scale,2.092940e-02*scale,0*scale,lc2};
+Point(4285) = {8.879338e-01*scale,2.136484e-02*scale,0*scale,lc2};
+Point(4284) = {8.906803e-01*scale,2.153023e-02*scale,0*scale,lc2};
+Point(4340) = {8.934269e-01*scale,2.149455e-02*scale,0*scale,lc2};
+Point(4339) = {8.961735e-01*scale,2.136105e-02*scale,0*scale,lc2};
+Point(4338) = {8.989201e-01*scale,2.104930e-02*scale,0*scale,lc2};
+Point(4246) = {9.016667e-01*scale,2.064514e-02*scale,0*scale,lc2};
+Point(4245) = {9.071598e-01*scale,1.954695e-02*scale,0*scale,lc2};
+Point(4281) = {9.126530e-01*scale,1.818666e-02*scale,0*scale,lc2};
+Point(4280) = {9.181462e-01*scale,1.648801e-02*scale,0*scale,lc2};
+Point(4279) = {9.236393e-01*scale,1.459116e-02*scale,0*scale,lc2};
+Point(4244) = {9.291325e-01*scale,1.255534e-02*scale,0*scale,lc2};
+Point(4243) = {9.346257e-01*scale,1.024686e-02*scale,0*scale,lc2};
+Point(4242) = {9.401188e-01*scale,7.859173e-03*scale,0*scale,lc2};
+Point(4296) = {9.456120e-01*scale,5.245962e-03*scale,0*scale,lc2};
+Point(4295) = {9.511052e-01*scale,2.515401e-03*scale,0*scale,lc2};
+Point(4300) = {9.565983e-01*scale,-3.522322e-04*scale,0*scale,lc2};
+Point(4330) = {9.620915e-01*scale,-3.368852e-03*scale,0*scale,lc2};
+Point(4331) = {9.628545e-01*scale,-3.794565e-03*scale,0*scale,lc2};
+Point(4329) = {9.675846e-01*scale,-6.447130e-03*scale,0*scale,lc2};
+Point(4232) = {9.730778e-01*scale,-9.700323e-03*scale,0*scale,lc2};
+Point(4231) = {9.840641e-01*scale,-1.646639e-02*scale,0*scale,lc2};
+Point(4230) = {9.950505e-01*scale,-2.366260e-02*scale,0*scale,lc2};
+
+Point(4229) = {1.006037e+00*scale,-3.132299e-02*scale,0*scale,lc2};
+Point(4228) = {1.017023e+00*scale,-3.943289e-02*scale,0*scale,lc2};
+Point(4227) = {1.028009e+00*scale,-4.793142e-02*scale,0*scale,lc2};
+Point(4225) = {1.038996e+00*scale,-5.669110e-02*scale,0*scale,lc2};
+Point(4226) = {1.048275e+00*scale,-6.421937e-02*scale,0*scale,lc2};
+Point(4312) = {1.054944e+00*scale,-6.971253e-02*scale,0*scale,lc2};
+Point(4223) = {1.060968e+00*scale,-7.473580e-02*scale,0*scale,lc2};
+Point(4224) = {1.061523e+00*scale,-7.520570e-02*scale,0*scale,lc2};
+Point(4311) = {1.066462e+00*scale,-7.943817e-02*scale,0*scale,lc2};
+Point(4310) = {1.067933e+00*scale,-8.069886e-02*scale,0*scale,lc2};
+Point(4275) = {1.071955e+00*scale,-8.420612e-02*scale,0*scale,lc2};
+Point(4316) = {1.077448e+00*scale,-8.903994e-02*scale,0*scale,lc2};
+Point(4315) = {1.082941e+00*scale,-9.395896e-02*scale,0*scale,lc2};
+Point(4313) = {1.088434e+00*scale,-9.897945e-02*scale,0*scale,lc2};
+Point(4292) = {1.093927e+00*scale,-1.041032e-01*scale,0*scale,lc2};
+Point(4272) = {1.099421e+00*scale,-1.093858e-01*scale,0*scale,lc2};
+Point(4271) = {1.104914e+00*scale,-1.148004e-01*scale,0*scale,lc2};
+Point(4270) = {1.110407e+00*scale,-1.202740e-01*scale,0*scale,lc2};
+Point(4268) = {1.114765e+00*scale,-1.246442e-01*scale,0*scale,lc2};
+Point(4291) = {1.120249e+00*scale,-1.301373e-01*scale,0*scale,lc2};
+Point(4336) = {1.122990e+00*scale,-1.328839e-01*scale,0*scale,lc2};
+
+Line(1) = {3895,3897};
+Line(2) = {3897,3896};
+Line(3) = {3896,3968};
+Line(4) = {3968,3995};
+Line(5) = {3995,4003};
+Line(6) = {4003,3857};
+Line(7) = {3857,3856};
+Line(8) = {3856,3860};
+Line(9) = {3860,3861};
+Line(10) = {3861,3863};
+Line(11) = {3863,3864};
+Line(12) = {3864,3865};
+Line(13) = {3865,3866};
+Line(14) = {3866,3867};
+Line(15) = {3867,3868};
+Line(16) = {3868,3869};
+Line(17) = {3869,3870};
+Line(18) = {3870,3871};
+Line(19) = {3871,3872};
+Line(20) = {3872,3977};
+Line(21) = {3977,3877};
+Line(22) = {3877,3876};
+Line(23) = {3876,3878};
+Line(24) = {3878,3934};
+Line(25) = {3934,3873};
+Line(26) = {3873,3874};
+Line(27) = {3874,3875};
+Line(28) = {3875,3935};
+Line(29) = {3935,3880};
+Line(30) = {3880,3879};
+Line(31) = {3879,3881};
+Line(32) = {3881,3936};
+Line(33) = {3936,3882};
+Line(34) = {3882,3883};
+Line(35) = {3883,3885};
+Line(36) = {3885,3884};
+Line(37) = {3884,1218};
+Line(38) = {1218,3933};
+Line(39) = {3933,3996};
+Line(40) = {3996,3989};
+Line(41) = {3989,3990};
+Line(42) = {3990,3978};
+Line(43) = {3978,3979};
+Line(44) = {3979,3974};
+Line(45) = {3974,3973};
+Line(46) = {3973,3963};
+Line(47) = {3963,3947};
+Line(48) = {3947,3948};
+Line(49) = {3948,3904};
+Line(50) = {3904,3903};
+Line(51) = {3903,3946};
+Line(52) = {3946,3902};
+Line(53) = {3902,3901};
+Line(54) = {3901,3900};
+Line(55) = {3900,3908};
+Line(56) = {3908,3907};
+Line(57) = {3907,3951};
+Line(58) = {3951,3950};
+Line(59) = {3950,3847};
+Line(60) = {3847,3949};
+Line(61) = {3949,3952};
+Line(62) = {3952,3905};
+Line(63) = {3905,3906};
+Line(64) = {3906,3909};
+Line(65) = {3909,3969};
+Line(66) = {3969,3970};
+Line(67) = {3970,3997};
+Line(68) = {3997,3998};
+Line(69) = {3998,4004};
+Line(70) = {4004,3959};
+Line(71) = {3959,3960};
+Line(72) = {3960,3972};
+Line(73) = {3972,3984};
+Line(74) = {3984,3988};
+Line(75) = {3988,3961};
+Line(76) = {3961,3962};
+Line(77) = {3962,3937};
+Line(78) = {3937,3938};
+Line(79) = {3938,3886};
+Line(80) = {3886,3887};
+Line(81) = {3887,3888};
+Line(82) = {3888,3993};
+Line(83) = {3993,3994};
+Line(84) = {3994,3971};
+Line(85) = {3971,3918};
+Line(86) = {3918,3919};
+Line(87) = {3919,3920};
+Line(88) = {3920,3956};
+Line(89) = {3956,3955};
+Line(90) = {3955,3965};
+Line(91) = {3965,3966};
+Line(92) = {3966,3910};
+Line(93) = {3910,3913};
+Line(94) = {3913,3912};
+Line(95) = {3912,3911};
+Line(96) = {3911,3914};
+Line(97) = {3914,3915};
+Line(98) = {3915,3916};
+Line(99) = {3916,3917};
+Line(100) = {3917,3953};
+Line(101) = {3953,3954};
+Line(102) = {3954,3964};
+Line(103) = {3964,3975};
+Line(104) = {3975,3992};
+Line(105) = {3992,3991};
+Line(106) = {3991,3999};
+Line(107) = {3999,3939};
+Line(108) = {3939,3967};
+Line(109) = {3967,3987};
+Line(110) = {3987,3985};
+Line(111) = {3985,3986};
+Line(112) = {3986,4002};
+Line(113) = {4002,3922};
+Line(114) = {3922,4005};
+Line(115) = {4005,3851};
+Line(116) = {3851,3850};
+Line(117) = {3850,3853};
+Line(118) = {3853,3852};
+Line(119) = {3852,3849};
+Line(120) = {3849,3848};
+Line(121) = {3848,3921};
+Line(122) = {3921,3983};
+Line(123) = {3983,3982};
+Line(124) = {3982,3976};
+Line(125) = {3976,3929};
+Line(126) = {3929,3958};
+Line(127) = {3958,3928};
+Line(128) = {3928,3957};
+Line(129) = {3957,3927};
+Line(130) = {3927,3926};
+Line(131) = {3926,3925};
+Line(132) = {3925,3924};
+Line(133) = {3924,3932};
+Line(134) = {3932,3931};
+Line(135) = {3931,3930};
+Line(136) = {3930,3923};
+Line(137) = {3923,3862};
+Line(138) = {3862,3859};
+Line(139) = {3859,3858};
+Line(140) = {3858,3855};
+Line(141) = {3855,3854};
+Line(142) = {3854,3945};
+Line(143) = {3945,3944};
+Line(144) = {3944,3899};
+Line(145) = {3899,3898};
+Line(146) = {3898,3894};
+Line(147) = {3894,3890};
+Line(148) = {3890,3893};
+Line(149) = {3893,3941};
+Line(150) = {3941,4000};
+Line(151) = {4000,3980};
+Line(152) = {3980,3846};
+Line(153) = {3846,3981};
+Line(154) = {3981,4001};
+Line(155) = {4001,3942};
+Line(156) = {3942,3940};
+Line(157) = {3940,3889};
+Line(158) = {3889,3892};
+Line(159) = {3892,3891};
+Line(160) = {3891,3943};
+Line(161) = {3943,3895};
+Line(162) = {4063,4062};
+Line(163) = {4062,4061};
+Line(164) = {4061,4114};
+Line(165) = {4114,4153};
+Line(166) = {4153,4178};
+Line(167) = {4178,4179};
+Line(168) = {4179,4191};
+Line(169) = {4191,4203};
+Line(170) = {4203,4109};
+Line(171) = {4109,4202};
+Line(172) = {4202,4199};
+Line(173) = {4199,4201};
+Line(174) = {4201,4200};
+Line(175) = {4200,4100};
+Line(176) = {4100,4099};
+Line(177) = {4099,4045};
+Line(178) = {4045,4044};
+Line(179) = {4044,4043};
+Line(180) = {4043,4147};
+Line(181) = {4147,4146};
+Line(182) = {4146,4180};
+Line(183) = {4180,4167};
+Line(184) = {4167,4166};
+Line(185) = {4166,4134};
+Line(186) = {4134,4133};
+Line(187) = {4133,4098};
+Line(188) = {4098,4097};
+Line(189) = {4097,4042};
+Line(190) = {4042,4041};
+Line(191) = {4041,4040};
+Line(192) = {4040,4095};
+Line(193) = {4095,4096};
+Line(194) = {4096,4132};
+Line(195) = {4132,4131};
+Line(196) = {4131,4165};
+Line(197) = {4165,4164};
+Line(198) = {4164,4163};
+Line(199) = {4163,4130};
+Line(200) = {4130,4129};
+Line(201) = {4129,4094};
+Line(202) = {4094,4093};
+Line(203) = {4093,4039};
+Line(204) = {4039,4038};
+Line(205) = {4038,4037};
+Line(206) = {4037,4092};
+Line(207) = {4092,4091};
+Line(208) = {4091,4128};
+Line(209) = {4128,4127};
+Line(210) = {4127,4162};
+Line(211) = {4162,4161};
+Line(212) = {4161,4183};
+Line(213) = {4183,4160};
+Line(214) = {4160,4159};
+Line(215) = {4159,4126};
+Line(216) = {4126,4125};
+Line(217) = {4125,4088};
+Line(218) = {4088,4087};
+Line(219) = {4087,4033};
+Line(220) = {4033,4032};
+Line(221) = {4032,4031};
+Line(222) = {4031,4086};
+Line(223) = {4086,4085};
+Line(224) = {4085,4124};
+Line(225) = {4124,4123};
+Line(226) = {4123,4158};
+Line(227) = {4158,4157};
+Line(228) = {4157,4156};
+Line(229) = {4156,4122};
+Line(230) = {4122,4121};
+Line(231) = {4121,4081};
+Line(232) = {4081,4080};
+Line(233) = {4080,4020};
+Line(234) = {4020,4019};
+Line(235) = {4019,4018};
+Line(236) = {4018,4143};
+Line(237) = {4143,4118};
+Line(238) = {4118,4022};
+Line(239) = {4022,4016};
+Line(240) = {4016,4015};
+Line(241) = {4015,4011};
+Line(242) = {4011,4010};
+Line(243) = {4010,4009};
+Line(244) = {4009,4219};
+Line(245) = {4219,4177};
+Line(246) = {4177,4176};
+Line(247) = {4176,4149};
+Line(248) = {4149,4059};
+Line(249) = {4059,4058};
+Line(250) = {4058,4055};
+Line(251) = {4055,4113};
+Line(252) = {4113,4110};
+Line(253) = {4110,4213};
+Line(254) = {4213,4210};
+Line(255) = {4210,4217};
+Line(256) = {4217,4006};
+Line(257) = {4006,4218};
+Line(258) = {4218,4211};
+Line(259) = {4211,4212};
+Line(260) = {4212,4111};
+Line(261) = {4111,4112};
+Line(262) = {4112,4056};
+Line(263) = {4056,4057};
+Line(264) = {4057,4060};
+Line(265) = {4060,4148};
+Line(266) = {4148,4150};
+Line(267) = {4150,4208};
+Line(268) = {4208,4209};
+Line(269) = {4209,4215};
+Line(270) = {4215,4216};
+Line(271) = {4216,4220};
+Line(272) = {4220,4012};
+Line(273) = {4012,4013};
+Line(274) = {4013,4014};
+Line(275) = {4014,4017};
+Line(276) = {4017,4021};
+Line(277) = {4021,4023};
+Line(278) = {4023,4117};
+Line(279) = {4117,4082};
+Line(280) = {4082,4083};
+Line(281) = {4083,4024};
+Line(282) = {4024,4025};
+Line(283) = {4025,4007};
+Line(284) = {4007,4026};
+Line(285) = {4026,4027};
+Line(286) = {4027,4028};
+Line(287) = {4028,4029};
+Line(288) = {4029,4008};
+Line(289) = {4008,4030};
+Line(290) = {4030,4084};
+Line(291) = {4084,4194};
+Line(292) = {4194,4195};
+Line(293) = {4195,4154};
+Line(294) = {4154,4155};
+Line(295) = {4155,4119};
+Line(296) = {4119,4120};
+Line(297) = {4120,4089};
+Line(298) = {4089,4090};
+Line(299) = {4090,4034};
+Line(300) = {4034,4035};
+Line(301) = {4035,4036};
+Line(302) = {4036,4144};
+Line(303) = {4144,4192};
+Line(304) = {4192,4193};
+Line(305) = {4193,4184};
+Line(306) = {4184,4185};
+Line(307) = {4185,4168};
+Line(308) = {4168,4169};
+Line(309) = {4169,4135};
+Line(310) = {4135,4136};
+Line(311) = {4136,4101};
+Line(312) = {4101,4102};
+Line(313) = {4102,4049};
+Line(314) = {4049,4050};
+Line(315) = {4050,4051};
+Line(316) = {4051,4103};
+Line(317) = {4103,4104};
+Line(318) = {4104,4137};
+Line(319) = {4137,4138};
+Line(320) = {4138,4170};
+Line(321) = {4170,4171};
+Line(322) = {4171,4186};
+Line(323) = {4186,4172};
+Line(324) = {4172,4173};
+Line(325) = {4173,4139};
+Line(326) = {4139,4140};
+Line(327) = {4140,4105};
+Line(328) = {4105,4106};
+Line(329) = {4106,4052};
+Line(330) = {4052,4053};
+Line(331) = {4053,4054};
+Line(332) = {4054,4107};
+Line(333) = {4107,4108};
+Line(334) = {4108,4141};
+Line(335) = {4141,4142};
+Line(336) = {4142,4174};
+Line(337) = {4174,4175};
+Line(338) = {4175,4187};
+Line(339) = {4187,4188};
+Line(340) = {4188,4145};
+Line(341) = {4145,4046};
+Line(342) = {4046,4047};
+Line(343) = {4047,4048};
+Line(344) = {4048,4196};
+Line(345) = {4196,4197};
+Line(346) = {4197,4198};
+Line(347) = {4198,4189};
+Line(348) = {4189,4190};
+Line(349) = {4190,4214};
+Line(350) = {4214,4181};
+Line(351) = {4181,4182};
+Line(352) = {4182,4151};
+Line(353) = {4151,4152};
+Line(354) = {4152,4064};
+Line(355) = {4064,4065};
+Line(356) = {4065,4066};
+Line(357) = {4066,4205};
+Line(358) = {4205,4206};
+Line(359) = {4206,4207};
+Line(360) = {4207,4072};
+Line(361) = {4072,4074};
+Line(362) = {4074,4073};
+Line(363) = {4073,4076};
+Line(364) = {4076,4075};
+Line(365) = {4075,4079};
+Line(366) = {4079,4078};
+Line(367) = {4078,4077};
+Line(368) = {4077,4068};
+Line(369) = {4068,4067};
+Line(370) = {4067,4069};
+Line(371) = {4069,4070};
+Line(372) = {4070,4071};
+Line(373) = {4071,4115};
+Line(374) = {4115,4116};
+Line(375) = {4116,4204};
+Line(376) = {4204,4063};
+Line(377) = {11,2233};
+Line(378) = {2233,5};
+Line(379) = {5,2236};
+Line(380) = {2236,14};
+Line(381) = {14,2};
+Line(382) = {2,15};
+Line(383) = {15,2301};
+Line(384) = {2301,6};
+Line(385) = {6,2304};
+Line(386) = {2304,18};
+Line(387) = {18,3};
+Line(388) = {3,19};
+Line(389) = {19,2240};
+Line(390) = {2240,7};
+Line(391) = {7,2243};
+Line(392) = {2243,22};
+Line(393) = {22,4};
+Line(394) = {4,23};
+Line(395) = {23,2317};
+Line(396) = {2317,8};
+Line(397) = {8,2297};
+Line(398) = {2297,10};
+Line(399) = {10,1};
+Line(400) = {1,11};
+Line(401) = {4298,4297};
+Line(402) = {4297,4222};
+Line(403) = {4222,4250};
+Line(404) = {4250,4252};
+Line(405) = {4252,4221};
+Line(406) = {4221,4251};
+Line(407) = {4251,4299};
+Line(408) = {4299,4335};
+Line(409) = {4335,4337};
+Line(410) = {4337,4267};
+Line(411) = {4267,4294};
+Line(412) = {4294,4269};
+Line(413) = {4269,4233};
+Line(414) = {4233,4234};
+Line(415) = {4234,4273};
+Line(416) = {4273,4293};
+Line(417) = {4293,4314};
+Line(418) = {4314,4317};
+Line(419) = {4317,4318};
+Line(420) = {4318,4274};
+Line(421) = {4274,4235};
+Line(422) = {4235,4236};
+Line(423) = {4236,4237};
+Line(424) = {4237,4301};
+Line(425) = {4301,4319};
+Line(426) = {4319,4321};
+Line(427) = {4321,4320};
+Line(428) = {4320,4322};
+Line(429) = {4322,4347};
+Line(430) = {4347,4323};
+Line(431) = {4323,4324};
+Line(432) = {4324,4325};
+Line(433) = {4325,4276};
+Line(434) = {4276,4238};
+Line(435) = {4238,4240};
+Line(436) = {4240,4239};
+Line(437) = {4239,4241};
+Line(438) = {4241,4277};
+Line(439) = {4277,4326};
+Line(440) = {4326,4327};
+Line(441) = {4327,4328};
+Line(442) = {4328,4350};
+Line(443) = {4350,4348};
+Line(444) = {4348,4349};
+Line(445) = {4349,4332};
+Line(446) = {4332,4333};
+Line(447) = {4333,4334};
+Line(448) = {4334,4278};
+Line(449) = {4278,4247};
+Line(450) = {4247,4248};
+Line(451) = {4248,4249};
+Line(452) = {4249,4282};
+Line(453) = {4282,4283};
+Line(454) = {4283,4341};
+Line(455) = {4341,4342};
+Line(456) = {4342,4343};
+Line(457) = {4343,4289};
+Line(458) = {4289,4290};
+Line(459) = {4290,4286};
+Line(460) = {4286,4255};
+Line(461) = {4255,4257};
+Line(462) = {4257,4256};
+Line(463) = {4256,4346};
+Line(464) = {4346,4288};
+Line(465) = {4288,4287};
+Line(466) = {4287,4260};
+Line(467) = {4260,4259};
+Line(468) = {4259,4258};
+Line(469) = {4258,4262};
+Line(470) = {4262,4261};
+Line(471) = {4261,4264};
+Line(472) = {4264,4263};
+Line(473) = {4263,4265};
+Line(474) = {4265,4266};
+Line(475) = {4266,4303};
+Line(476) = {4303,4302};
+Line(477) = {4302,4304};
+Line(478) = {4304,4305};
+Line(479) = {4305,4306};
+Line(480) = {4306,4307};
+Line(481) = {4307,4308};
+Line(482) = {4308,4309};
+Line(483) = {4309,4345};
+Line(484) = {4345,4344};
+Line(485) = {4344,4254};
+Line(486) = {4254,4253};
+Line(487) = {4253,4285};
+Line(488) = {4285,4284};
+Line(489) = {4284,4340};
+Line(490) = {4340,4339};
+Line(491) = {4339,4338};
+Line(492) = {4338,4246};
+Line(493) = {4246,4245};
+Line(494) = {4245,4281};
+Line(495) = {4281,4280};
+Line(496) = {4280,4279};
+Line(497) = {4279,4244};
+Line(498) = {4244,4243};
+Line(499) = {4243,4242};
+Line(500) = {4242,4296};
+Line(501) = {4296,4295};
+Line(502) = {4295,4300};
+Line(503) = {4300,4330};
+Line(504) = {4330,4331};
+Line(505) = {4331,4329};
+Line(506) = {4329,4232};
+Line(507) = {4232,4231};
+Line(508) = {4231,4230};
+Line(509) = {4230,4229};
+Line(510) = {4229,4228};
+Line(511) = {4228,4227};
+Line(512) = {4227,4225};
+Line(513) = {4225,4226};
+Line(514) = {4226,4312};
+Line(515) = {4312,4223};
+Line(516) = {4223,4224};
+Line(517) = {4224,4311};
+Line(518) = {4311,4310};
+Line(519) = {4310,4275};
+Line(520) = {4275,4316};
+Line(521) = {4316,4315};
+Line(522) = {4315,4313};
+Line(523) = {4313,4292};
+Line(524) = {4292,4272};
+Line(525) = {4272,4271};
+Line(526) = {4271,4270};
+Line(527) = {4270,4268};
+Line(528) = {4268,4291};
+Line(529) = {4291,4336};
+Line(530) = {4336,4298};
+Line Loop(531) = {384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,377,378,379,380,381,382,383};
+Line Loop(532) = {316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,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,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315};
+Line Loop(533) = {446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530,401,402,403,404,405,406,407,408,409,410,411,412,413,414,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};
+Line Loop(534) = {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,161,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40};
+Plane Surface(535) = {531,532,534,533};
diff --git a/benchmarks/3d/brain.geo b/benchmarks/3d/brain.geo
new file mode 100644
index 0000000000000000000000000000000000000000..e42ba7b2511f172392a135c9524abc292481dc83
--- /dev/null
+++ b/benchmarks/3d/brain.geo
@@ -0,0 +1,35 @@
+Point(newp) = {0,0,0,0.1};  /* Point 1 */
+Point(newp) = {1,0,0,0.1};  /* Point 2 */
+Point(newp) = {-1,0,0,0.1};  /* Point 3 */
+
+Point(newp) = {0,.8,0,0.1};  /* Point 4 */
+Point(newp) = {0,0,.8,0.1};  /* Point 5 */
+Point(newp) = {0,0,-.8,0.1};  /* Point 6 */
+
+Point(newp) = {.1,0,-.79,.1};  /* Point 7 */
+Point(newp) = {.3,0,-.73,.1};  /* Point 8 */
+Point(newp) = {.65,0,-.55,.1};  /* Point 9 */
+Point(newp) = {.9,0,-.38,.1};  /* Point 10 */
+
+Point(newp) = {.1,0,.79,.1};  /* Point 11 */
+Point(newp) = {.3,0,.73,.1};  /* Point 12 */
+Point(newp) = {.65,0,.55,.1};  /* Point 13 */
+Point(newp) = {.9,0,.38,.1};  /* Point 14 */
+
+Spline(1) = {6,7,8,9,10,2};
+Circle(2) = {6,1,4};
+Circle(3) = {2,1,1,4};
+Line Loop(4) = {3,-2,1};
+Ruled Surface(5) = {4};
+
+Spline(6) = {5,11,12,13,14,2};
+Circle(7) = {5,1,4};
+Line Loop(8) = {3,-7,6};
+Ruled Surface(9) = {8};
+Line(10) = {6,5};
+Line Loop(11) = {7,-2,10};
+Plane Surface(12) = {11};
+Line Loop(13) = {-1,10,6};
+Plane Surface(14) = {13};
+Surface Loop(15) = {12,9,-5,-14};
+Complex Volume(16) = {15};
diff --git a/benchmarks/3d/coin.geo b/benchmarks/3d/coin.geo
new file mode 100644
index 0000000000000000000000000000000000000000..75db8b37cb7b441864c0139095dd11a663c62fec
--- /dev/null
+++ b/benchmarks/3d/coin.geo
@@ -0,0 +1,58 @@
+lcar1 = .2;
+
+Point(newp) = {0.5,0.5,0.5,lcar1}; /* Point      1 */
+Point(newp) = {0.5,0.5,0,lcar1}; /* Point      2 */
+Point(newp) = {0,0.5,0.5,lcar1}; /* Point      3 */
+Point(newp) = {0,0,0.5,lcar1}; /* Point      4 */
+Point(newp) = {0.5,0,0.5,lcar1}; /* Point      5 */
+Point(newp) = {0.5,0,0,lcar1}; /* Point      6 */
+Point(newp) = {0,0.5,0,lcar1}; /* Point      7 */
+Point(newp) = {0,1,0,lcar1}; /* Point      8 */
+Point(newp) = {1,1,0,lcar1}; /* Point     9 */
+Point(newp) = {0,0,1,lcar1}; /* Point     10 */
+Point(newp) = {0,1,1,lcar1}; /* Point     11 */
+Point(newp) = {1,1,1,lcar1}; /* Point     12 */
+Point(newp) = {1,0,1,lcar1}; /* Point     13 */
+Point(newp) = {1,0,0,lcar1};
+
+Line(1) = {8,9};
+Line(2) = {9,12};
+Line(3) = {12,11};
+Line(4) = {11,8};
+Line(5) = {9,14};
+Line(6) = {14,13};
+Line(7) = {13,12};
+Line(8) = {11,10};
+Line(9) = {10,13};
+Line(10) = {10,4};
+Line(11) = {4,5};
+Line(12) = {5,6};
+Line(13) = {6,2};
+Line(14) = {2,1};
+Line(15) = {1,3};
+Line(16) = {3,7};
+Line(17) = {7,2};
+Line(18) = {3,4};
+Line(19) = {5,1};
+Line(20) = {7,8};
+Line(21) = {6,14};
+Line Loop(22) = {11,19,15,18};
+Plane Surface(23) = {22};
+Line Loop(24) = {16,17,14,15};
+Plane Surface(25) = {24};
+Line Loop(26) = {-17,20,1,5,-21,13};
+Plane Surface(27) = {26};
+Line Loop(28) = {4,1,2,3};
+Plane Surface(29) = {28};
+Line Loop(30) = {7,-2,5,6};
+Plane Surface(31) = {30};
+Line Loop(32) = {6,-9,10,11,12,21};
+Plane Surface(33) = {32};
+Line Loop(34) = {7,3,8,9};
+Plane Surface(35) = {34};
+Line Loop(36) = {10,-18,16,20,-4,8};
+Plane Surface(37) = {36};
+Line Loop(38) = {-14,-13,-12,19};
+Plane Surface(39) = {38};
+Surface Loop(40) = {35,31,29,37,33,23,39,25,27};
+Complex Volume(41) = {40};
diff --git a/benchmarks/3d/ellipsis.geo b/benchmarks/3d/ellipsis.geo
new file mode 100644
index 0000000000000000000000000000000000000000..eb0fb3910227eebf32d6b63973e04250ab07fd68
--- /dev/null
+++ b/benchmarks/3d/ellipsis.geo
@@ -0,0 +1,37 @@
+Point(newp) = { 0,  0,0,.1};  
+Point(newp) = {-1,  0,0,.1};  
+Point(newp) = { 1,  0,0,.1};  
+Point(newp) = { 0, .5,0,.1};  
+Point(newp) = { 0,-.5,0,.1};  
+Point(newp) = { 0,  0,.8,.1};  
+Point(newp) = { 0,  0,-1,.1};  
+
+Ellipsis(1) = {3,1,3,4};
+Ellipsis(2) = {4,1,2,2};
+Ellipsis(3) = {2,1,2,5};
+Ellipsis(4) = {5,1,3,3};
+Ellipsis(5) = {7,1,7,4};
+Ellipsis(6) = {4,1,6,6};
+Ellipsis(7) = {6,1,6,5};
+Ellipsis(8) = {5,1,7,7};
+Ellipsis(9) = {6,1,3,3};
+Ellipsis(10) = {2,1,2,6};
+Ellipsis(11) = {7,1,2,2};
+Ellipsis(12) = {3,1,3,7};
+
+Line Loop(13) = {1,6,9};
+Ruled Surface(14) = {13};
+Line Loop(15) = {4,-9,7};
+Ruled Surface(16) = {15};
+Line Loop(17) = {-7,-10,3};
+Ruled Surface(18) = {17};
+Line Loop(19) = {3,8,11};
+Ruled Surface(20) = {19};
+Line Loop(21) = {2,-11,5};
+Ruled Surface(22) = {21};
+Line Loop(23) = {-5,-12,1};
+Ruled Surface(24) = {23};
+Line Loop(25) = {-12,-4,8};
+Ruled Surface(26) = {25};
+Line Loop(27) = {-6,2,10};
+Ruled Surface(28) = {27};
diff --git a/benchmarks/3d/old_extrude.geo b/benchmarks/3d/old_extrude.geo
new file mode 100644
index 0000000000000000000000000000000000000000..a0bcc6b4fc6bff91139eee1ecfd79230e18ee552
--- /dev/null
+++ b/benchmarks/3d/old_extrude.geo
@@ -0,0 +1,454 @@
+// Mudanca de algumas coordenadas 22/05/2001 - Li�ge.
+
+/* Desenho do servo motor em 3D  -   20/07/2000 */
+
+/* Analise de um servomotor de imas permanentes - GRUCAD - julho de 2000 */
+
+rR1 = 10.5e-03;
+rR2 = 23.243e-03;
+rR3 = 23.862e-03;
+rR4 = 23.9e-03;
+rR5 = 25.6e-03;
+
+rS1 = 26.02e-03;
+rS2 = 26.62e-03;
+rS3 = 26.96e-03;
+rS4 = 38.16e-03;
+rS5 = 38.27e-03;
+rS6 = 40.02e-03;
+rS7 = 46.0e-03;
+
+Gap = rS1-rR5;
+
+rB1=rR5+Gap/3; rB1b=rB1;
+//rB1=rR5+Gap/3.7; rB1b=rR5+Gap/2.3; //To see both different surfaces
+rB2=rR5+Gap*2/3;
+
+
+NbrDiv = 16;
+
+A0 = 45.0;
+/* Rotor position(deg):use 0 for the mesh and other angles for drawing*/
+//A1 = 4.0001*45.0/NbrDiv;
+A1 = 90. ;
+
+deg2rad = Pi/180;
+
+/* Mesh parameters */
+
+s = 1.;
+
+pR1 =(rR2-rR1)/10.*s;
+pR2 =(rR2-rR1)/12.*s;
+
+pS1 =(rS7-rS1)/7.*s;
+pS2 =(rS7-rS1)/12.*s;
+pS3 =(rS6-rS3)/10.*s;
+
+
+// Uma das faces do servo motor
+
+/* Rotor */
+
+Point(1)={0,0,0,pR1};
+
+A = 0.+A1; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
+Point(2)={rR1*cosA,rR1*sinA,0,pR1};
+Point(3)={rR4*cosA,rR4*sinA,0,pR1};
+Point(4)={rR5*cosA,rR5*sinA,0,pR1};
+
+Point(5)={rB1*cosA,rB1*sinA,0,pR2};
+
+A = 4.455+A1; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
+Point(6)={rR2*cosA,rR2*sinA,0,pR1};
+
+A = 4.938+A1; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
+Point(7)={rR3*cosA,rR3*sinA,0,pR1};
+
+A = 6.165+A1; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
+Point(8)={rR5*cosA,rR5*sinA,0,pR1};
+
+A = 38.835+A1; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
+Point(9)={rR5*cosA,rR5*sinA,0,pR1};
+
+A = 40.062+A1; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
+Point(10)={rR3*cosA,rR3*sinA,0,pR1};
+
+A = 40.545+A1; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
+Point(11)={rR2*cosA,rR2*sinA,0,pR1};
+
+A = 45.0+A1; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
+Point(12)={rR1*cosA,rR1*sinA,0,pR1};
+Point(13)={rR4*cosA,rR4*sinA,0,pR1};
+Point(14)={rR5*cosA,rR5*sinA,0,pR1};
+
+Point(15)={rB1*cosA,rB1*sinA,0,pR2};
+
+/* Gap */
+
+Point(16)={rB1b,0,0,pS1};
+Point(17)={rB2,0,0,pS1};
+
+A = 45.0; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
+Point(18)={rB1b*cosA,rB1b*sinA,0,pS1};
+Point(19)={rB2*cosA,rB2*sinA,0,pS1};
+
+
+/* Stator */
+
+Point(20)={rS1,0,0,pS1};
+Point(21)={rS7,0,0,pS2};
+
+A = 5.71+0; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
+Point(61)={rS7*cosA,rS7*sinA,0,pS3};
+A = 5.71+15; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
+Point(62)={rS7*cosA,rS7*sinA,0,pS3};
+A = 5.71+30; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
+Point(63)={rS7*cosA,rS7*sinA,0,pS3};
+
+//A = 22.5; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
+//Point(22)={rS7*cosA,rS7*sinA,0,pS2};
+
+A = 45.0; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
+Point(23)={rS1*cosA,rS1*sinA,0,pS1};
+Point(24)={rS7*cosA,rS7*sinA,0,pS2};
+
+/* Pontos da ranhura 01 */
+
+A2 = 0.0;
+
+A = 2.77+A2; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
+Point(25)={rS5*cosA,rS5*sinA,0,pS3};
+
+A = 4.0+A2; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
+Point(26)={rS3*cosA,rS3*sinA,0,pS3};
+
+A = 5.52+A2; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
+Point(27)={rS1*cosA,rS1*sinA,0,pS3};
+
+A = 5.56+A2; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
+Point(28)={rS2*cosA,rS2*sinA,0,pS3};
+
+A = 5.56+A2; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
+Point(29)={rS4*cosA,rS4*sinA,0,pS3};
+
+A = 5.65+A2; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
+Point(30)={rS6*cosA,rS6*sinA,0,pS3};
+
+A = 9.35+A2; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
+Point(31)={rS6*cosA,rS6*sinA,0,pS3};
+
+A = 9.44+A2; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
+Point(32)={rS4*cosA,rS4*sinA,0,pS3};
+
+A = 9.44+A2; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
+Point(33)={rS2*cosA,rS2*sinA,0,pS3};
+
+A = 9.48+A2; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
+Point(34)={rS1*cosA,rS1*sinA,0,pS3};
+
+A = 11.0+A2; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
+Point(35)={rS3*cosA,rS3*sinA,0,pS3};
+
+A = 12.23+A2; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
+Point(36)={rS5*cosA,rS5*sinA,0,pS3};
+
+/* Pontos da ranhura 02 */
+
+A2 = 15.0;
+
+A = 2.77+A2; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
+Point(37)={rS5*cosA,rS5*sinA,0,pS3};
+
+A = 4.0+A2; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
+Point(38)={rS3*cosA,rS3*sinA,0,pS3};
+
+A = 5.52+A2; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
+Point(39)={rS1*cosA,rS1*sinA,0,pS3};
+
+A = 5.56+A2; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
+Point(40)={rS2*cosA,rS2*sinA,0,pS3};
+
+A = 5.56+A2; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
+Point(41)={rS4*cosA,rS4*sinA,0,pS3};
+
+A = 5.65+A2; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
+Point(42)={rS6*cosA,rS6*sinA,0,pS3};
+
+A = 9.35+A2; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
+Point(43)={rS6*cosA,rS6*sinA,0,pS3};
+
+A = 9.44+A2; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
+Point(44)={rS4*cosA,rS4*sinA,0,pS3};
+
+A = 9.44+A2; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
+Point(45)={rS2*cosA,rS2*sinA,0,pS3};
+
+A = 9.48+A2; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
+Point(46)={rS1*cosA,rS1*sinA,0,pS3};
+
+A = 11.0+A2; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
+Point(47)={rS3*cosA,rS3*sinA,0,pS3};
+
+A = 12.23+A2; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
+Point(48)={rS5*cosA,rS5*sinA,0,pS3};
+
+/* Pontos da ranhura 03 */
+
+A2 = 30.0;
+
+A = 2.77+A2; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
+Point(49)={rS5*cosA,rS5*sinA,0,pS3};
+
+A = 4.0+A2; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
+Point(50)={rS3*cosA,rS3*sinA,0,pS3};
+
+A = 5.52+A2; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
+Point(51)={rS1*cosA,rS1*sinA,0,pS3};
+
+A = 5.56+A2; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
+Point(52)={rS2*cosA,rS2*sinA,0,pS3};
+
+A = 5.56+A2; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
+Point(53)={rS4*cosA,rS4*sinA,0,pS3};
+
+A = 5.65+A2; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
+Point(54)={rS6*cosA,rS6*sinA,0,pS3};
+
+A = 9.35+A2; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
+Point(55)={rS6*cosA,rS6*sinA,0,pS3};
+
+A = 9.44+A2; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
+Point(56)={rS4*cosA,rS4*sinA,0,pS3};
+
+A = 9.44+A2; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
+Point(57)={rS2*cosA,rS2*sinA,0,pS3};
+
+A = 9.48+A2; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
+Point(58)={rS1*cosA,rS1*sinA,0,pS3};
+
+A = 11.0+A2; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
+Point(59)={rS3*cosA,rS3*sinA,0,pS3};
+
+A = 12.23+A2; sinA=Sin(A*deg2rad);cosA=Cos(A*deg2rad);
+Point(60)={rS5*cosA,rS5*sinA,0,pS3};
+
+
+// linhas e circulos do rotor
+
+Line(1)={1,2};
+Line(2)={2,3};
+Line(3)={3,4};
+Line(4)={4,5};
+Line(5)={3,7};
+Line(6)={6,7};
+Line(7)={7,8};
+Line(8)={6,11};
+Line(9)={11,10};
+Line(10)={10,9};
+Line(11)={1,12};
+Line(12)={12,13};
+Line(13)={13,14};
+Line(14)={14,15};
+Line(15)={13,10};
+Circle(16)={2,1,12};
+Circle(17)={4,1,8};
+Circle(18)={8,1,9};
+Circle(19)={9,1,14};
+Circle(20)={5,1,15};
+
+/* linhas e circulos do entreferro */
+
+Line(21)={16,17};
+Line(22)={17,20};
+Line(23)={18,19};
+Line(24)={19,23};
+Circle(25)={16,1,18};
+Circle(26)={17,1,19};
+
+/* linhas e circulos do estator */
+Line(27)={20,21};
+Line(28)={23,24};
+Circle(29)={20,1,27};
+Circle(30)={34,1,39};
+Circle(31)={46,1,51};
+Circle(32)={58,1,23};
+Circle(33)={21,1,61};
+Circle(34)={61,1,62};
+Circle(89)={62,1,63};
+Circle(90)={63,1,24};
+
+Line(91)={30,61};
+Line(92)={42,62};
+Line(93)={54,63};
+
+/* linhas e circulos da ranhura 01 */
+Line(35)={27,28};
+Line(36)={28,26};
+Line(37)={26,25};
+Circle(38)={25,29,30};
+Line(39)={30,31};
+Circle(40)={31,32,36};
+Line(41)={36,35};
+Line(42)={35,33};
+Line(43)={33,34};
+Line(44)={26,35};
+
+/* linhas e circulos da ranhura 02 */
+Line(45)={39,40};
+Line(46)={40,38};
+Line(47)={38,37};
+Circle(48)={37,41,42};
+Line(49)={42,43};
+Circle(50)={43,44,48};
+Line(51)={48,47};
+Line(52)={47,45};
+Line(53)={45,46};
+Line(54)={38,47};
+
+/* linhas e circulos da ranhura 03 */
+Line(55)={51,52};
+Line(56)={52,50};
+Line(57)={50,49};
+Circle(58)={49,53,54};
+Line(59)={54,55};
+Circle(60)={55,56,60};
+Line(61)={60,59};
+Line(62)={59,57};
+Line(63)={57,58};
+Line(64)={50,59};
+
+/* superficies do rotor */
+
+Line Loop(65) = {-11,1,16};
+Plane Surface(66) = {65};
+Line Loop(67) = {12,15,-9,-8,6,-5,-2,16};
+Plane Surface(68) = {67};
+Line Loop(69) = {7,-17,-3,5};
+Plane Surface(70) = {69};
+Line Loop(71) = {-18,-7,-6,8,9,10};
+Plane Surface(72) = {71};
+Line Loop(73) = {-19,-10,-15,13};
+Plane Surface(74) = {73};
+Line Loop(75) = {18,19,14,-20,-4,17};
+Plane Surface(76) = {75};
+
+/* superficies do entreferro (banda de movimento) */
+
+Transfinite Line{20,25,26}=NbrDiv+1 Using Power 1.;
+Transfinite Line{21,23}=2;
+Line Loop(77) = {-23,-25,21,26};
+Plane Surface(78) = {77};
+Transfinite Surface{78}={16,17,19,18};
+Recombine Surface{78};  // For Hexahedra in the Moving Band
+
+/* superficies do estator */
+
+Line Loop(79) = {24,-32,-63,-62,-64,-56,-55,-31,-53,-52,-54,-46,-45,-30,-43,-42,-44,-36,-35,-29,-22,26};
+Plane Surface(80) = {79};
+
+
+Line Loop(94) = {37,38,91,-33,-27,29,35,36};
+Plane Surface(95) = {94};
+Line Loop(96) = {42,43,30,45,46,47,48,92,-34,-91,39,40,41};
+Plane Surface(97) = {96};
+Line Loop(98) = {52,53,31,55,56,57,58,93,-89,-92,49,50,51};
+Plane Surface(99) = {98};
+Line Loop(100) = {62,63,32,28,-90,-93,59,60,61};
+Plane Surface(101) = {100};
+/*
+Line Loop(81) = {37,38,39,40,41,42,43,30,45,46,47,48,49,50,51,52,53,31,55,56,57,58,59,60,61,62,63,32,28,-90,-89,-34,-33,-27,29,35,36};
+Plane Surface(82) = {81};
+*/
+/* superficie da ranhura 01 */
+
+Line Loop(83) = {-41,-40,-39,-38,-37,44};
+Plane Surface(84) = {83};
+
+/* superficie da ranhura 02 */
+
+Line Loop(85) = {-51,-50,-49,-48,-47,54};
+Plane Surface(86) = {85};
+
+/* superficie da ranhura 03 */
+Line Loop(87) = {-61,-60,-59,-58,-57,64};
+Plane Surface(88) = {87};
+
+// Continue with 101 ...
+
+// ----------------------------------------------------
+// ----------------------------------------------------
+
+L_ = 100e6 ;
+S_ = 200e6 ;
+V_ = 300e6 ;
+P_ = 400e6 ;
+N_ = 1e6 ;
+
+
+Physical Volume(1301) = {V_+N_+68}; // Rotor
+
+//Physical Volume(1302) = {V_+N_+95, V_+N_+97, V_+N_+99, V_+N_+101}; // Stator
+
+Physical Volume(1320) = {V_+N_+95}; // StatorSup0
+Physical Volume(1321) = {V_+N_+97}; // StatorSup1
+Physical Volume(1322) = {V_+N_+99}; // StatorSup2
+Physical Volume(1323) = {V_+N_+101}; // StatorSup3
+
+Physical Volume(1300) = {V_+N_+66}; // AirInt
+Physical Volume(1303) = {V_+N_+76}; // AirRotor
+Physical Volume(1304) = {V_+N_+80}; // AirStator
+Physical Volume(1305) = {V_+N_+78}; // AirBM
+
+Physical Volume(1310) = {V_+N_+72}; // Magnet
+
+Physical Volume(1311) = {V_+N_+70}; // Cale1
+Physical Volume(1312) = {V_+N_+74}; // Cale2
+
+Physical Volume(1401) = {V_+N_+84}; // Ind1
+Physical Volume(1402) = {V_+N_+86}; // Ind2
+Physical Volume(1403) = {V_+N_+88}; // Ind3
+
+
+Physical Surface(2001) = {L_+N_+16}; // SurfInt
+Physical Surface(2002) = {L_+N_+33,L_+N_+34,L_+N_+89,L_+N_+90}; // SurfExt
+
+Physical Surface(1011) = {L_+N_+ 1, L_+N_+2, L_+N_+3, L_+N_+4, L_+N_+21,L_+N_+22, L_+N_+27}; // SurfA
+Physical Surface(1012) = {L_+N_+11,L_+N_+12,L_+N_+13,L_+N_+14, L_+N_+23,L_+N_+24, L_+N_+28}; // SurfB
+
+
+Physical Surface(1501) = {L_+N_+20}; // SurfR
+Physical Surface(1502) = {L_+N_+25}; // SurfBM
+
+Physical Line(2021) = {P_+N_+15}; // PointR
+Physical Line(2022) = {P_+N_+18}; // PointBM
+
+// SurfR (PointR) & SurfBM (PointBM) are lines (points) located at the same
+// position, but with distinct nodes
+
+
+// For h-formulation (cut ...)
+Physical Surface(2210) = {L_+N_+37,L_+N_+38,/*L_+N_+39,*/L_+N_+40,L_+N_+41,L_+N_+44}; // SkinInd1
+Physical Surface(2211) = {L_+N_+91}; // CutInd1
+Physical Surface(2212) = {L_+N_+39}; // SkinInd1_2
+
+Physical Surface(2220) = {L_+N_+47,L_+N_+48,/*L_+N_+49,*/L_+N_+50,L_+N_+51,L_+N_+54}; // SkinInd2
+Physical Surface(2221) = {L_+N_+92}; // CutInd2
+Physical Surface(2222) = {L_+N_+49}; // SkinInd2_2
+
+Physical Surface(2230) = {L_+N_+57,L_+N_+58,/*L_+N_+59,*/L_+N_+60,L_+N_+61,L_+N_+64}; // SkinInd3
+Physical Surface(2231) = {L_+N_+93}; // CutInd3
+Physical Surface(2232) = {L_+N_+59}; // SkinInd3_2
+
+
+Physical Point(2015) = {2}; // PointRef
+
+
+i = 0*S_+0*N_ ;
+Physical Surface(2300) =
+{ i+68, i+95,i+97,i+99,i+101, i+66,i+76,i+80,i+78, i+72, i+70,i+74, i+84,i+86,i+88 }; // SurfZ0
+
+i = S_+1*N_ ;
+Physical Surface(2301) =
+{ i+68, i+95,i+97,i+99,i+101, i+66,i+76,i+80,i+78, i+72, i+70,i+74, i+84,i+86,i+88 }; // SurfZ1
+
diff --git a/benchmarks/3d/old_extrude.par b/benchmarks/3d/old_extrude.par
new file mode 100644
index 0000000000000000000000000000000000000000..25e95e2dd07a08b34ad7230e8dcb6581198fff6d
--- /dev/null
+++ b/benchmarks/3d/old_extrude.par
@@ -0,0 +1,3 @@
+1
+1
+0.04
diff --git a/benchmarks/3d/prism.geo b/benchmarks/3d/prism.geo
new file mode 100644
index 0000000000000000000000000000000000000000..d537e222cbbe26b62ec93d4e4b070023470fe985
--- /dev/null
+++ b/benchmarks/3d/prism.geo
@@ -0,0 +1,46 @@
+Point(1) = {0.0,0.0,0.0,1.0};
+Point(2) = {1,0.0,0.0,1.0};
+Point(3) = {1,0.0,1,1.0};
+Point(4) = {1,2,1,1.0};
+Point(5) = {0,2,0,1.0};
+Point(6) = {1,2,0,1.0};
+
+Line(1) = {4,6};
+Line(2) = {6,5};
+Line(3) = {5,4};
+Line(4) = {2,1};
+Line(5) = {1,3};
+Line(6) = {3,2};
+Line(7) = {2,6};
+Line(8) = {5,1};
+Line(9) = {3,4};
+
+Line Loop(10) = {9,-3,8,5};
+Plane Surface(11) = {10};
+Line Loop(12) = {-7,-6,9,1};
+Plane Surface(13) = {12};
+Line Loop(14) = {-4,7,2,8};
+Plane Surface(15) = {14};
+Line Loop(16) = {6,4,5};
+Plane Surface(17) = {16};
+Line Loop(18) = {1,2,3};
+Plane Surface(19) = {18};
+
+Surface Loop(20) = {13,15,17,-11,-19};
+Complex Volume(21) = {20};
+
+Transfinite Line {1,2,3,4,5,6,7,8,9} = 3;
+
+Transfinite Surface {17} = {1,3,2};
+Transfinite Surface {15} = {1,2,6,5};
+Transfinite Surface {11} = {1,3,4,5};
+Transfinite Surface {13} = {3,2,6,4};
+Transfinite Surface {19} = {5,4,6};
+
+Transfinite Volume {21} = {1,3,2,5,4,6};
+
+/*
+Recombine Surface {17,19};
+*/
+Recombine Surface {11,13,15};
+
diff --git a/benchmarks/3d/sph.geo b/benchmarks/3d/sph.geo
new file mode 100644
index 0000000000000000000000000000000000000000..0f4a835045cc612d756b27aeeb19196074eb500f
--- /dev/null
+++ b/benchmarks/3d/sph.geo
@@ -0,0 +1,56 @@
+lc = 0.01;
+dext = .05;
+dint = .055;
+
+Point(1) = {0,0,0,lc};  
+Point(2) = {dint,0,0,lc};
+Point(3) = {0,dint,0,lc};
+Point(4) = {0,0,dint,lc};
+Point(5) = {dext,0,0,lc};
+Point(6) = {0,dext,0,lc};
+Point(7) = {0,0,dext,lc};
+
+Circle(1) = {7,1,5};
+Circle(2) = {4,1,2};
+Circle(3) = {5,1,6};
+Circle(4) = {2,1,3};
+Circle(5) = {7,1,6};
+Circle(6) = {4,1,3};
+Line(7) = {1,5};
+Line(8) = {5,2};
+Line(9) = {1,6};
+Line(10) = {6,3};
+Line(11) = {1,7};
+Line(12) = {7,4};
+
+Line Loop(17) = {2,-8,-1,12};
+Plane Surface(18) = {17};
+Line Loop(19) = {-4,-8,3,10};
+Plane Surface(20) = {19};
+Line Loop(21) = {-6,-12,5,10};
+Plane Surface(22) = {21};
+
+Line Loop(23) = {-6,2,4};
+Ruled Surface(24) = {23};
+Line Loop(25) = {-5,1,3};
+Ruled Surface(26) = {25};
+
+Surface Loop(27) = {24,-22,-18,20,-26};
+Complex Volume(28) = {27};
+
+Transfinite Line {1,2,3,4,5,6} = 10 ;
+Transfinite Line {-8,-10,-12} = 5 Using Power 1.6 ;
+
+Transfinite Surface {22} = {4,7,6,3};
+Transfinite Surface {20} = {3,2,5,6};
+Transfinite Surface {18} = {4,2,5,7};
+
+Transfinite Surface {24} = {3,4,2};
+Transfinite Surface {26} = {6,7,5};
+
+Recombine Surface {18,20,22};
+/*
+Recombine Surface {24,26};
+*/
+Transfinite Volume {28} = {3,4,2,6,7,5};
+
diff --git a/benchmarks/3d/transfinite.geo b/benchmarks/3d/transfinite.geo
new file mode 100644
index 0000000000000000000000000000000000000000..c0c7314aba4f2fa8c96c6f3d6a02901e3c63dde4
--- /dev/null
+++ b/benchmarks/3d/transfinite.geo
@@ -0,0 +1,66 @@
+Point(1) = {0.0,0.0,0.0,1.0};
+Point(2) = {1,0.0,0.0,1.0};
+Point(3) = {.5,.1,0.0,1.0};
+Point(4) = {.5,.2,0.0,1.0};
+Point(5) = {0,.5,0.0,1.0};
+Point(6) = {1,.55,0.0,1.0};
+Point(7) = {0,0,1,1.0};
+
+Line(1) = {2,6};
+Line(2) = {5,1};
+Spline(3) = {1,3,2};
+Spline(4) = {5,4,6};
+
+Line Loop(5) = {-1,-3,-2,4};
+Plane Surface(6) = {5};
+
+Point(8) = {0,.5,1,1.0};
+Point(9) = {1,.5,1,1.0};
+Point(10) = {1,0,1,1.0};
+
+Line(7) = {6,9};
+Line(8) = {9,10};
+Line(9) = {10,2};
+Line(10) = {10,7};
+Line(11) = {7,1};
+Line(12) = {5,8};
+Line(13) = {8,7};
+Line(14) = {8,9};
+
+Line Loop(15) = {14,-7,-4,12};
+Ruled Surface(16) = {15};
+Line Loop(17) = {7,8,9,1};
+Ruled Surface(18) = {17};
+Line Loop(19) = {-10,-8,-14,13};
+Ruled Surface(20) = {19};
+Line Loop(21) = {-11,-13,-12,2};
+Ruled Surface(22) = {21};
+Line Loop(23) = {-9,10,11,3};
+Ruled Surface(24) = {23};
+
+Surface Loop(25) = {16,20,24,18,6,22};
+Complex Volume(26) = {25};
+
+Transfinite Line {7,9,11,12} = 5;
+Transfinite Line {3,10,14} = 10;
+Transfinite Line {4} = 10 Using Bump 1.5;
+Transfinite Line {-1,2} = 20 Using Power 1.6;
+Transfinite Line {8,13} = 20 ;
+
+Transfinite Surface {6} = {1,2,6,5};
+Transfinite Surface {20} = {7,10,9,8};
+Transfinite Surface {18} = {10,2,6,9};
+Transfinite Surface {22} = {7,1,5,8};
+Transfinite Surface {16} = {8,9,6,5};
+Transfinite Surface {24} = {7,10,2,1};
+
+Transfinite Volume {26} = {7,10,2,1,8,9,6,5};
+
+Recombine Surface {6,20,18,22,16,24};
+
+
+
+
+
+
+
diff --git a/benchmarks/bugs/bug_demi_cercles.geo b/benchmarks/bugs/bug_demi_cercles.geo
new file mode 100644
index 0000000000000000000000000000000000000000..a42a3fe8cb5a67f71075833a15c6677c0644b37a
--- /dev/null
+++ b/benchmarks/bugs/bug_demi_cercles.geo
@@ -0,0 +1,13 @@
+Point(1) = {0.0,0.0,0.0,.08};
+Point(2) = {-.5,0.0,0.0,.08};
+Point(3) = {.5,0.0,0.0,.08};
+Point(4) = {.5,-.5,0.0,.08};
+Point(5) = {-.5,-.5,0.0,.08};
+Circle(1) = {3,1,2} Plane {0,0,1};
+Line(2) = {3,4};
+Line(3) = {4,5};
+Line(4) = {5,2};
+Line Loop(5) = {3,4,-1,2};
+Plane Surface(6) = {5};
+Extrude Surface {6, {0,0,.5}};
+Coherence;
diff --git a/benchmarks/bugs/bug_ruled.geo b/benchmarks/bugs/bug_ruled.geo
new file mode 100644
index 0000000000000000000000000000000000000000..0f5cb1cf6ec0247d696b749fffa02a51be32808e
--- /dev/null
+++ b/benchmarks/bugs/bug_ruled.geo
@@ -0,0 +1,19 @@
+
+// solved by setting the tolerance lower in sys3x3_with_tol (-> again,
+// this arised from a wrong mean plane computation)
+
+//lc = 0.00001;
+lc = 0.001;
+Point(61) = {0.058, -0.005, 0, lc};
+Point(62) = {0.058, -0.005, 0.000625, lc};
+Point(64) = {0.058625, -0.005, 0, lc};
+
+Point(85) = {0.058, -0.006, 0, lc};
+Point(86) = {0.058, -0.006, 0.000625, lc};
+Point(88) = {0.058625, -0.006, 0, lc};
+Line(1) = {86,62};
+Line(2) = {88,64};
+Circle(3) = {62,61,64};
+Circle(4) = {86,85,88};
+Line Loop(5) = {2,-3,-1,4};
+Ruled Surface(6) = {5};
diff --git a/benchmarks/bugs/bug_spline.geo b/benchmarks/bugs/bug_spline.geo
new file mode 100644
index 0000000000000000000000000000000000000000..08ad7be9296f97f78bcdd5117722aca0acbf3361
--- /dev/null
+++ b/benchmarks/bugs/bug_spline.geo
@@ -0,0 +1,11 @@
+Point(1) = {0.0,0.0,0.0,.1};
+Point(2) = {1,0.0,0.0,.1};
+Point(3) = {1,1,0.0,.1};
+Point(4) = {.5,.5,1,.1};
+Point(5) = {1.2,.3,-.2,.1};
+Point(6) = {.5,0,.2,.1};
+Spline(1) = {1,4,3};
+Spline(2) = {3,5,2};
+Spline(3) = {2,6,1};
+Line Loop(4) = {2,3,1};
+Ruled Surface(5) = {4};