diff --git a/Geo/GModelIO_Geo.cpp b/Geo/GModelIO_Geo.cpp index 69454a6cfc9c9ebbe5e34982113bdfa3d77ede52..77a3860e0c0340f8f46721b29247ce058e95f884 100644 --- a/Geo/GModelIO_Geo.cpp +++ b/Geo/GModelIO_Geo.cpp @@ -1,4 +1,4 @@ -// $Id: GModelIO_Geo.cpp,v 1.4 2006-12-16 01:25:58 geuzaine Exp $ +// $Id: GModelIO_Geo.cpp,v 1.5 2007-01-12 08:10:32 geuzaine Exp $ // // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle // @@ -245,19 +245,17 @@ class writeGFaceGEO { return; int NUMLOOP = s->Num + 1000000; - if(s->Typ != MSH_SURF_NURBS) { - if(List_Nbr(s->Generatrices)){ - fprintf(geo, "Line Loop (%d) = ", NUMLOOP); - for(int i = 0; i < List_Nbr(s->Generatrices); i++) { - Curve *c; - List_Read(s->Generatrices, i, &c); - if(i) - fprintf(geo, ", %d", c->Num); - else - fprintf(geo, "{%d", c->Num); - } - fprintf(geo, "};\n"); + if(List_Nbr(s->Generatrices)){ + fprintf(geo, "Line Loop (%d) = ", NUMLOOP); + for(int i = 0; i < List_Nbr(s->Generatrices); i++) { + Curve *c; + List_Read(s->Generatrices, i, &c); + if(i) + fprintf(geo, ", %d", c->Num); + else + fprintf(geo, "{%d", c->Num); } + fprintf(geo, "};\n"); } switch (s->Typ) { @@ -268,47 +266,6 @@ class writeGFaceGEO { case MSH_SURF_PLAN: fprintf(geo, "Plane Surface (%d) = {%d};\n", s->Num, NUMLOOP); break; - case MSH_SURF_TRIMMED: - fprintf(geo, "Trimmed Surface (%d) = %d {%d};\n", s->Num, - s->Support->Num, NUMLOOP); - break; - case MSH_SURF_NURBS: - fprintf(geo, "Nurbs Surface (%d) = {\n", s->Num); - for(int i = 0; i < s->Nv; i++) { - fprintf(geo, " {"); - for(int j = 0; j < s->Nu; j++) { - Vertex *v; - List_Read(s->Control_Points, j + s->Nu * i, &v); - if(!j) - fprintf(geo, "%d", v->Num); - else - fprintf(geo, ", %d", v->Num); - } - if(i != s->Nv - 1) - fprintf(geo, "},\n"); - else - fprintf(geo, "}}\n"); - } - fprintf(geo, " Knots\n {"); - for(int j = 0; j < s->Nu + s->OrderU + 1; j++) { - if(!j) - fprintf(geo, "%.16g", s->ku[j]); - else - fprintf(geo, ", %.16g", s->ku[j]); - if(j % 5 == 4 && j != s->Nu + s->OrderU) - fprintf(geo, "\n "); - } - fprintf(geo, "}\n {"); - for(int j = 0; j < s->Nv + s->OrderV + 1; j++) { - if(!j) - fprintf(geo, "%.16g", s->kv[j]); - else - fprintf(geo, ", %.16g", s->kv[j]); - if(j % 5 == 4 && j != s->Nv + s->OrderV) - fprintf(geo, "\n "); - } - fprintf(geo, "}\n Order %d %d;\n", s->OrderU, s->OrderV); - break; } } }; diff --git a/Geo/Geo.cpp b/Geo/Geo.cpp index 6202a71995ea8e2d23fa111269830946a85d21a2..a63e52ae1f1a780f8b18da9720d59f8c51ea9421 100644 --- a/Geo/Geo.cpp +++ b/Geo/Geo.cpp @@ -1,4 +1,4 @@ -// $Id: Geo.cpp,v 1.68 2006-12-24 13:37:20 remacle Exp $ +// $Id: Geo.cpp,v 1.69 2007-01-12 08:10:32 geuzaine Exp $ // // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle // @@ -61,108 +61,76 @@ void Mesh::free_all() int compareVertex(const void *a, const void *b) { - int i, j; - Vertex **q, **w; - - q = (Vertex **) a; - w = (Vertex **) b; - i = abs((*q)->Num); - j = abs((*w)->Num); + Vertex **q = (Vertex **) a; + Vertex **w = (Vertex **) b; + int i = abs((*q)->Num); + int j = abs((*w)->Num); return (i - j); } int comparePosition(const void *a, const void *b) { - int i, j; - Vertex **q, **w; - // TOLERANCE ! WARNING WARNING + // Warning: tolerance! (before 1.61, it was set to 1.e-10 * CTX.lc) double eps = 1.e-6 * CTX.lc; - // the above tol was changed in 1.61 (before 1.61, it was set to - // double eps = 1.e-10 * CTX.lc; - q = (Vertex **) a; - w = (Vertex **) b; - i = ((*q)->Num); - j = ((*w)->Num); + Vertex **q = (Vertex **) a; + Vertex **w = (Vertex **) b; if((*q)->Pos.X - (*w)->Pos.X > eps) - return (1); + return 1; if((*q)->Pos.X - (*w)->Pos.X < -eps) - return (-1); + return -1; if((*q)->Pos.Y - (*w)->Pos.Y > eps) - return (1); + return 1; if((*q)->Pos.Y - (*w)->Pos.Y < -eps) - return (-1); + return -1; if((*q)->Pos.Z - (*w)->Pos.Z > eps) - return (1); + return 1; if((*q)->Pos.Z - (*w)->Pos.Z < -eps) - return (-1); - - if(i != j) { - /* - *w = *q; - printf("Les points %d et %d sont a la meme position\n",i,j); - printf("%12.5E %12.5E %12.5E\n",(*w)->Pos.X,(*w)->Pos.Y,(*w)->Pos.Z); - printf("%12.5E %12.5E %12.5E\n",(*q)->Pos.X,(*q)->Pos.Y,(*q)->Pos.Z); - */ - } + return -1; return 0; - } int compareSurfaceLoop(const void *a, const void *b) { - SurfaceLoop **q, **w; - - q = (SurfaceLoop **) a; - w = (SurfaceLoop **) b; + SurfaceLoop **q = (SurfaceLoop **) a; + SurfaceLoop **w = (SurfaceLoop **) b; return ((*q)->Num - (*w)->Num); } int compareEdgeLoop(const void *a, const void *b) { - EdgeLoop **q, **w; - - q = (EdgeLoop **) a; - w = (EdgeLoop **) b; + EdgeLoop **q = (EdgeLoop **) a; + EdgeLoop **w = (EdgeLoop **) b; return ((*q)->Num - (*w)->Num); } int compareCurve(const void *a, const void *b) { - Curve **q, **w; - - q = (Curve **) a; - w = (Curve **) b; + Curve **q = (Curve **) a; + Curve **w = (Curve **) b; return ((*q)->Num - (*w)->Num); } int compareSurface(const void *a, const void *b) { - Surface **q, **w; - - q = (Surface **) a; - w = (Surface **) b; + Surface **q = (Surface **) a; + Surface **w = (Surface **) b; return ((*q)->Num - (*w)->Num); } int compareVolume(const void *a, const void *b) { - Volume **q, **w; - - q = (Volume **) a; - w = (Volume **) b; + Volume **q = (Volume **) a; + Volume **w = (Volume **) b; return ((*q)->Num - (*w)->Num); } int comparePhysicalGroup(const void *a, const void *b) { - PhysicalGroup *q, *w; - int cmp; - - q = *(PhysicalGroup **) a; - w = *(PhysicalGroup **) b; - cmp = q->Typ - w->Typ; + PhysicalGroup *q = *(PhysicalGroup **) a; + PhysicalGroup *w = *(PhysicalGroup **) b; + int cmp = q->Typ - w->Typ; if(cmp) return cmp; @@ -175,9 +143,7 @@ int comparePhysicalGroup(const void *a, const void *b) Vertex *Create_Vertex(int Num, double X, double Y, double Z, double lc, double u) { - Vertex *pV; - - pV = new Vertex(X, Y, Z, lc); + Vertex *pV = new Vertex(X, Y, Z, lc); pV->w = 1.0; pV->Num = Num; THEM->MaxPointNum = IMAX(THEM->MaxPointNum, Num); @@ -268,6 +234,13 @@ void Free_SurfaceLoop(void *a, void *b) } } +static void direction(Vertex * v1, Vertex * v2, double d[3]) +{ + d[0] = v2->Pos.X - v1->Pos.X; + d[1] = v2->Pos.Y - v1->Pos.Y; + d[2] = v2->Pos.Z - v1->Pos.Z; +} + void End_Curve(Curve * c) { double R2, mat[3][3], R, A3, A1, A4; @@ -377,11 +350,15 @@ void End_Curve(Curve * c) R = sqrt(v0.Pos.X * v0.Pos.X + v0.Pos.Y * v0.Pos.Y); R2 = sqrt(v2.Pos.X * v2.Pos.X + v2.Pos.Y * v2.Pos.Y); - if(!R || !R2) // check radius + if(!R || !R2){ + // check radius Msg(GERROR, "Zero radius in Circle/Ellipse %d", c->Num); - else if(!v[3] && fabs((R - R2) / (R + R2)) > 0.1) // check cocircular pts (allow 10% error) + } + else if(!v[3] && fabs((R - R2) / (R + R2)) > 0.1){ + // check cocircular pts (allow 10% error) Msg(GERROR, "Control points of Circle %d are not cocircular %g %g", c->Num, R, R2); + } // A1 = angle first pt // A3 = angle last pt @@ -434,9 +411,6 @@ void End_Curve(Curve * c) if(A1 >= A3) A3 += 2 * Pi; - //printf("f1=%g f2=%g a1=%g a3=%g a4=%g\n", - // f1, f2, A1*180./M_PI, A3*180./Pi, A4*180./Pi); - Curve->Circle.t1 = A1; Curve->Circle.t2 = A3; Curve->Circle.incl = A4; @@ -455,47 +429,14 @@ void End_Curve(Curve * c) } } - - if(c->cp){ - Free(c->cp); - c->cp = NULL; - } - - if(List_Nbr(c->Control_Points)){ - c->cp = (float *)Malloc(4 * List_Nbr(c->Control_Points) * sizeof(float)); - for(i = 0; i < List_Nbr(c->Control_Points); i++) { - List_Read(c->Control_Points, i, &v[0]); - c->cp[4 * i] = v[0]->Pos.X; - c->cp[4 * i + 1] = v[0]->Pos.Y; - c->cp[4 * i + 2] = v[0]->Pos.Z; - c->cp[4 * i + 3] = v[0]->w; - } - } } void End_Surface(Surface * s, int reset_orientations) { - int i; - Vertex *v; - if(reset_orientations) List_Reset(s->Orientations); - - if(!s->Control_Points || !List_Nbr(s->Control_Points)) - return; - - s->cp = (float *)Malloc(4 * List_Nbr(s->Control_Points) * sizeof(float)); - for(i = 0; i < List_Nbr(s->Control_Points); i++) { - List_Read(s->Control_Points, i, &v); - s->cp[4 * i] = v->Pos.X; - s->cp[4 * i + 1] = v->Pos.Y; - s->cp[4 * i + 2] = v->Pos.Z; - s->cp[4 * i + 3] = v->w; - } - } - Curve *Create_Curve(int Num, int Typ, int Order, List_T * Liste, List_T * Knots, int p1, int p2, double u1, double u2) { @@ -515,7 +456,6 @@ Curve *Create_Curve(int Num, int Typ, int Order, List_T * Liste, Curve *pC = (Curve *) Malloc(sizeof(Curve)); pC->Color.type = 0; pC->Visible = 1; - pC->cp = NULL; pC->Extrude = NULL; pC->Typ = Typ; pC->Num = Num; @@ -618,7 +558,6 @@ void Free_Curve(void *a, void *b) if(pC) { Free(pC->k); List_Delete(pC->Control_Points); - Free(pC->cp); Free(pC); pC = NULL; } @@ -641,7 +580,6 @@ Surface *Create_Surface(int Num, int Typ) pS->TrsfPoints = List_Create(4, 4, sizeof(Vertex *)); pS->Contours = List_Create(1, 1, sizeof(List_T *)); pS->Orientations = List_Create(20, 2, sizeof(Vertex)); - pS->Support = pS; pS->Control_Points = List_Create(1, 10, sizeof(Vertex *)); pS->Generatrices = NULL; pS->EmbeddedPoints = NULL; @@ -650,213 +588,6 @@ Surface *Create_Surface(int Num, int Typ) return (pS); } -void CreateNurbsSurfaceSupport(int Num, int Order1, int Order2, - List_T * List, List_T * ku, List_T * kv) -{ - // This routine has been heavily modified to fit the new interfaces, - // but has not been tested since then. It's probably full of bugs - // now. - List_T *ListOfDouble_L; - List_T *ListCP = List_Create(2, 2, sizeof(int)); - - for(int j = 0; j < List_Nbr(List); j++) { - List_Read(List, j, &ListOfDouble_L); - for(int i = 0; i < List_Nbr(ListOfDouble_L); i++) { - double d; - List_Read(ListOfDouble_L, i, &d); - int N = (int)d; - List_Add(ListCP, &N); - } - } - List_Read(List, 0, &ListOfDouble_L); - int Nu = List_Nbr(List); - int Nv = List_Nbr(ListOfDouble_L); - - Surface *s = Create_Surface(Num, MSH_SURF_NURBS); - s->Support = NULL; - s->Control_Points = List_Create(4, 1, sizeof(Vertex *)); - s->OrderU = Order1; - s->OrderV = Order2; - s->Nu = Nu; - s->Nv = Nv; - for(int i = 0; i < List_Nbr(ListCP); i++) { - int j; - List_Read(ListCP, i, &j); - Vertex *v = FindPoint(j); - if(v){ - List_Add(s->Control_Points, &v); - } - else{ - Msg(GERROR, "Unknown control point %d in nurbs surface", j); - } - } - - s->ku = (float *)malloc(List_Nbr(ku) * sizeof(float)); - s->kv = (float *)malloc(List_Nbr(kv) * sizeof(float)); - - double kumin = 0., kumax = 1.; - double kvmin = 0., kvmax = 1.; - - for(int i = 0; i < List_Nbr(ku); i++) { - double d; - List_Read(ku, i, &d); - float f = (float)((d - kumin) / (kumax - kumin)); - s->ku[i] = f; - } - for(int i = 0; i < List_Nbr(kv); i++) { - double d; - List_Read(kv, i, &d); - float f = (float)((d - kvmin) / (kvmax - kvmin)); - s->kv[i] = f; - } - - List_Delete(ListCP); - - End_Surface(s); - Tree_Add(THEM->Surfaces, &s); -} - -void CreateNurbsSurface(int Num, int Order1, int Order2, List_T * List, - List_T * ku, List_T * kv) -{ - // This routine has been heavily modified to fit the new interfaces, - // but has not been tested since then. It's probably full of bugs - // now. - - List_T *ListOfDouble_L, *Listint, *ListCP; - int Loop[4]; - - ListCP = List_Create(2, 2, sizeof(int)); - - double kumin, kumax; - List_Read(ku, 0, &kumin); - List_Read(ku, List_Nbr(ku) - 1, &kumax); - double kvmin, kvmax; - List_Read(kv, 0, &kvmin); - List_Read(kv, List_Nbr(kv) - 1, &kvmax); - for(int j = 0; j < List_Nbr(List); j++) { - List_Read(List, j, &ListOfDouble_L); - for(int i = 0; i < List_Nbr(ListOfDouble_L); i++) { - double d; - List_Read(ListOfDouble_L, i, &d); - int N = (int)d; - List_Add(ListCP, &N); - } - } - - // 1st and 3rd gen - List_Read(List, 0, &ListOfDouble_L); - Listint = ListOfDouble2ListOfInt(ListOfDouble_L); - if(recognize_seg(MSH_SEGM_NURBS, Listint, &Loop[0])) { - } - else { - Loop[0] = NEWREG(); - Curve *c = Create_Curve(Loop[0], MSH_SEGM_NURBS, Order1, Listint, NULL, - -1, -1, kumin, kumax); - Tree_Add(THEM->Curves, &c); - CreateReversedCurve(c); - c->k = (float *)malloc(4 * List_Nbr(ku) * sizeof(float)); - for(int i = 0; i < List_Nbr(ku); i++) { - double d; - List_Read(ku, i, &d); - c->k[i] = (float)d /*((d-kumin)/(kumax-kumin)) */ ; - } - } - List_Delete(Listint); - - List_Read(List, List_Nbr(List) - 1, &ListOfDouble_L); - Listint = ListOfDouble2ListOfInt(ListOfDouble_L); - if(recognize_seg(MSH_SEGM_NURBS, Listint, &Loop[2])) { - } - else { - Loop[2] = NEWREG(); - Curve *c = Create_Curve(Loop[2], MSH_SEGM_NURBS, Order1, Listint, NULL, - -1, -1, kumin, kumax); - Tree_Add(THEM->Curves, &c); - CreateReversedCurve(c); - c->k = (float *)malloc(4 * List_Nbr(ku) * sizeof(float)); - for(int i = 0; i < List_Nbr(ku); i++) { - double d; - List_Read(ku, i, &d); - c->k[i] = (float)d /*((d-kumin)/(kumax-kumin)) */ ; - } - } - List_Delete(Listint); - - // 2nd and 4th gen - List_T *List1 = List_Create(List_Nbr(List), 1, sizeof(double)); - List_T *List2 = List_Create(List_Nbr(List), 1, sizeof(double)); - for(int i = 0; i < List_Nbr(List); i++) { - List_Read(List, i, &ListOfDouble_L); - List_Add(List1, List_Pointer(ListOfDouble_L, 0)); - List_Add(List2, List_Pointer(ListOfDouble_L, List_Nbr(ListOfDouble_L) - 1)); - } - - Listint = ListOfDouble2ListOfInt(List1); - if(recognize_seg(MSH_SEGM_NURBS, Listint, &Loop[1])) { - } - else { - Loop[1] = NEWREG(); - Curve *c = Create_Curve(Loop[1], MSH_SEGM_NURBS, Order2, Listint, NULL, - -1, -1, kumin, kumax); - Tree_Add(THEM->Curves, &c); - CreateReversedCurve(c); - c->k = (float *)malloc(4 * List_Nbr(kv) * sizeof(float)); - for(int i = 0; i < List_Nbr(kv); i++) { - double d; - List_Read(kv, i, &d); - c->k[i] = (float)d /*((d-kvmin)/(kvmax-kvmin)) */ ; - } - } - List_Delete(Listint); - - Listint = ListOfDouble2ListOfInt(List2); - if(recognize_seg(MSH_SEGM_NURBS, Listint, &Loop[3])) { - } - else { - Loop[3] = NEWREG(); - Curve *c = Create_Curve(Loop[3], MSH_SEGM_NURBS, Order2, Listint, NULL, - -1, -1, kumin, kumax); - Tree_Add(THEM->Curves, &c); - CreateReversedCurve(c); - c->k = (float *)malloc(4 * List_Nbr(kv) * sizeof(float)); - for(int i = 0; i < List_Nbr(kv); i++) { - double d; - List_Read(kv, i, &d); - c->k[i] = (float)d /*((d-kvmin)/(kvmax-kvmin)) */ ; - } - } - List_Delete(Listint); - List_Delete(List1); - List_Delete(List2); - - Listint = List_Create(10, 10, sizeof(int)); - int l0 = -Loop[0]; - List_Add(Listint, &l0); - List_Add(Listint, &Loop[1]); - List_Add(Listint, &Loop[2]); - int l3 = -Loop[3]; - List_Add(Listint, &l3); - - int topnew = NEWREG(); - CreateNurbsSurfaceSupport(topnew, Order1, Order2, List, ku, kv); - - int il = NEWREG(); - SurfaceLoop *l = Create_SurfaceLoop(il, Listint); - Tree_Add(THEM->SurfaceLoops, &l); - List_Reset(Listint); - List_Add(Listint, &il); - - Surface *s = Create_Surface(NEWREG(), MSH_SURF_TRIMMED); - setSurfaceGeneratrices(s, Listint); - s->Support = s; - End_Surface(s); - Tree_Add(THEM->Surfaces, &s); - - List_Delete(Listint); - List_Delete(ListCP); -} - void Free_Surface(void *a, void *b) { Surface *pS = *(Surface **) a; @@ -892,11 +623,6 @@ Volume *Create_Volume(int Num, int Typ) } void Free_Volume(void *a, void *b) -{ - Free_Volume_But_Not_Elements(a, b); -} - -void Free_Volume_But_Not_Elements(void *a, void *b) { Volume *pV = *(Volume **) a; if(pV) { @@ -972,9 +698,6 @@ int NEWREG(void) + 1); } - - - int compare2Lists(List_T * List1, List_T * List2, int (*fcmp) (const void *a, const void *b)) { @@ -1175,8 +898,6 @@ void CopySurface(Surface * s, Surface * ss) //ss->RecombineAngle = s->RecombineAngle; for(i = 0; i < 4; i++) ss->ipar[i] = s->ipar[i]; - ss->Nu = s->Nu; - ss->Nv = s->Nv; ss->a = s->a; ss->b = s->b; ss->c = s->c; @@ -1255,7 +976,6 @@ void CopyShape(int Type, int Num, int *New) newc = DuplicateCurve(c); *New = newc->Num; break; - case MSH_SURF_NURBS: case MSH_SURF_TRIC: case MSH_SURF_REGL: case MSH_SURF_PLAN: @@ -1371,7 +1091,6 @@ void DeleteShape(int Type, int Num) DeleteCurve(Num); DeleteCurve(-Num); break; - case MSH_SURF_NURBS: case MSH_SURF_TRIC: case MSH_SURF_REGL: case MSH_SURF_PLAN: @@ -1431,7 +1150,6 @@ void ColorShape(int Type, int Num, unsigned int Color) case MSH_SEGM_DISCRETE: ColorCurve(Num, Color); break; - case MSH_SURF_NURBS: case MSH_SURF_TRIC: case MSH_SURF_REGL: case MSH_SURF_PLAN: @@ -1477,7 +1195,6 @@ void VisibilityShape(int Type, int Num, int Mode) else Msg(WARNING, "Unknown line %d (use '*' to hide/show all lines)", Num); break; - case MSH_SURF_NURBS: case MSH_SURF_TRIC: case MSH_SURF_REGL: case MSH_SURF_PLAN: @@ -1547,13 +1264,12 @@ Curve *CreateReversedCurve(Curve * c) } if(c->Typ == MSH_SEGM_NURBS && c->k) { - newc->k = - (float *)malloc((c->degre + List_Nbr(c->Control_Points) + 1) * - sizeof(float)); + newc->k = (float *)malloc((c->degre + List_Nbr(c->Control_Points) + 1) * + sizeof(float)); for(i = 0; i < c->degre + List_Nbr(c->Control_Points) + 1; i++) newc->k[c->degre + List_Nbr(c->Control_Points) - i] = c->k[i]; } - + if(c->Typ == MSH_SEGM_CIRC) newc->Typ = MSH_SEGM_CIRC_INV; if(c->Typ == MSH_SEGM_CIRC_INV) @@ -1563,7 +1279,6 @@ Curve *CreateReversedCurve(Curve * c) if(c->Typ == MSH_SEGM_ELLI_INV) newc->Typ = MSH_SEGM_ELLI; - newc->beg = c->end; newc->end = c->beg; newc->Method = c->Method; @@ -1572,9 +1287,7 @@ Curve *CreateReversedCurve(Curve * c) newc->uend = 1. - c->ubeg; End_Curve(newc); - Curve **pc; - if((pc = (Curve **) Tree_PQuery(THEM->Curves, &newc))) { Free_Curve(&newc, NULL); return *pc; @@ -1913,7 +1626,7 @@ void ApplyTransformationToSurface(double matrix[4][4], Surface * s) for(i = 0; i < List_Nbr(s->Generatrices); i++) { List_Read(s->Generatrices, i, &c); - // FIXME: this fixes benchmarks/bug/transfo_neg_curves.geo, but is + // FIXME: this fixes benchmarks/2d/transfo_neg_curves.geo, but is // it the correct fix? //ApplyTransformationToCurve(matrix, c); Curve *cc = FindCurve(abs(c->Num)); @@ -1962,7 +1675,6 @@ void ApplicationOnShapes(double matrix[4][4], List_T * ListShapes) else Msg(GERROR, "Unknown curve %d", O.Num); break; - case MSH_SURF_NURBS: case MSH_SURF_REGL: case MSH_SURF_TRIC: case MSH_SURF_PLAN: @@ -2648,7 +2360,6 @@ void ExtrudeShapes(int type, List_T *in, List_Add(out, &TheShape); } break; - case MSH_SURF_NURBS: case MSH_SURF_REGL: case MSH_SURF_TRIC: case MSH_SURF_PLAN: @@ -3003,7 +2714,7 @@ void ReplaceAllDuplicates() } -// Projection of point on curve or surface +// Projection of a point on a curve or a surface static Curve *CURVE; static Surface *SURFACE; @@ -3037,43 +2748,14 @@ static void projectPS(int N, double x[], double res[]) static double projectPC(double u) { - //x[1] = u x[2] = v if(u < CURVE->ubeg) u = CURVE->ubeg; if(u < CURVE->ubeg) u = CURVE->ubeg; - Vertex c; - c = InterpolateCurve(CURVE, u, 0); - return sqrt(DSQR(c.Pos.X - VERTEX->Pos.X) + - DSQR(c.Pos.Y - VERTEX->Pos.Y) + DSQR(c.Pos.Z - VERTEX->Pos.Z)); -} - -static int UFIXED = 0; -static double FIX; -static double projectPCS(double u) -{ - //x[1] = u x[2] = v - double tmin, tmax; - if(UFIXED) { - tmin = SURFACE->kv[0]; - tmax = SURFACE->kv[SURFACE->Nv + SURFACE->OrderV]; - } - else { - tmin = SURFACE->ku[0]; - tmax = SURFACE->ku[SURFACE->Nu + SURFACE->OrderU]; - } - - if(u < tmin) - u = tmin; - if(u > tmax) - u = tmax; - Vertex c; - if(UFIXED) - c = InterpolateSurface(SURFACE, FIX, u, 0, 0); - else - c = InterpolateSurface(SURFACE, u, FIX, 0, 0); + Vertex c = InterpolateCurve(CURVE, u, 0); return sqrt(DSQR(c.Pos.X - VERTEX->Pos.X) + - DSQR(c.Pos.Y - VERTEX->Pos.Y) + DSQR(c.Pos.Z - VERTEX->Pos.Z)); + DSQR(c.Pos.Y - VERTEX->Pos.Y) + + DSQR(c.Pos.Z - VERTEX->Pos.Z)); } bool ProjectPointOnCurve(Curve * c, Vertex * v, Vertex * RES, Vertex * DER) @@ -3097,81 +2779,6 @@ bool ProjectPointOnCurve(Curve * c, Vertex * v, Vertex * RES, Vertex * DER) return true; } -bool search_in_boundary(Surface * s, Vertex * p, double t, int Fixu, - double *uu, double *vv) -{ - double l, umin = 0., vmin = 0., lmin = 1.e200; - int i, N; - Vertex vr; - double tmin, tmax, u, v; - - if(Fixu) { - tmin = s->kv[0]; - tmax = s->kv[s->Nv + s->OrderV]; - N = 3 * s->Nu; - } - else { - tmin = s->ku[0]; - tmax = s->ku[s->Nu + s->OrderU]; - N = 3 * s->Nv; - } - for(i = 0; i < N; i++) { - if(Fixu) { - u = t; - v = tmin + (tmax - tmin) * (double)(i) / (double)(N - 1); - } - else { - v = t; - u = tmin + (tmax - tmin) * (double)(i) / (double)(N - 1); - } - vr = InterpolateSurface(SURFACE, u, v, 0, 0); - l = sqrt(DSQR(vr.Pos.X - p->Pos.X) + - DSQR(vr.Pos.Y - p->Pos.Y) + DSQR(vr.Pos.Z - p->Pos.Z)); - if(l < lmin) { - lmin = l; - umin = u; - vmin = v; - } - } - - FIX = t; - UFIXED = Fixu; - double xm; - if(Fixu) - xm = vmin; - else - xm = umin; - if(lmin > 1.e-3) - min1d(projectPCS, &xm); - if(Fixu) { - *uu = t; - *vv = xm; - } - else { - *vv = t; - *uu = xm; - } - vr = InterpolateSurface(SURFACE, *uu, *vv, 0, 0); - l = sqrt(DSQR(vr.Pos.X - p->Pos.X) + - DSQR(vr.Pos.Y - p->Pos.Y) + DSQR(vr.Pos.Z - p->Pos.Z)); - if(l < 1.e-3) - return true; - return false; -} - -bool try_a_value(Surface * s, Vertex * p, double u, double v, double *uu, - double *vv) -{ - Vertex vr = InterpolateSurface(s, u, v, 0, 0); - double l = sqrt(DSQR(vr.Pos.X - p->Pos.X) + - DSQR(vr.Pos.Y - p->Pos.Y) + DSQR(vr.Pos.Z - p->Pos.Z)); - *uu = u; - *vv = v; - if(l < 1.e-3) - return true; - return false; -} - bool ProjectPointOnSurface(Surface * s, Vertex & p) { double x[3] = { 0.5, 0.5, 0.5 }; @@ -3202,96 +2809,6 @@ bool ProjectPointOnSurface(Surface * s, Vertex & p) return true; } -bool ProjectPointOnSurface(Surface * s, Vertex * p, double *u, double *v) -{ - static double x[3]; - int check; - static int deb = 1; - double VMIN, VMAX, UMIN, UMAX, l, lmin; - Vertex vv; - - SURFACE = s; - VERTEX = p; - lmin = 1.e24; - UMAX = s->ku[s->Nu + s->OrderU]; - UMIN = s->ku[0]; - VMAX = s->kv[s->Nv + s->OrderV]; - VMIN = s->kv[0]; - if(deb) { - x[1] = UMIN + (UMAX - UMIN) * ((rand() % 10000) / 10000.); - x[2] = VMIN + (VMAX - VMIN) * ((rand() % 10000) / 10000.); - deb = 0; - } - - if(try_a_value(SURFACE, VERTEX, SURFACE->ku[0] + VERTEX->u, - SURFACE->kv[0], u, v)) - return true; - if(try_a_value(SURFACE, VERTEX, SURFACE->ku[0] + VERTEX->u, - SURFACE->kv[SURFACE->Nv + SURFACE->OrderV], u, v)) - return true; - if(try_a_value - (SURFACE, VERTEX, SURFACE->ku[SURFACE->Nu + SURFACE->OrderU] - VERTEX->u, - SURFACE->kv[0], u, v)) - return true; - if(try_a_value - (SURFACE, VERTEX, SURFACE->ku[SURFACE->Nu + SURFACE->OrderU] - VERTEX->u, - SURFACE->kv[SURFACE->Nv + SURFACE->OrderV], u, v)) - return true; - if(try_a_value - (SURFACE, VERTEX, SURFACE->ku[0], SURFACE->kv[0] + VERTEX->u, u, v)) - return true; - if(try_a_value(SURFACE, VERTEX, SURFACE->ku[0], - SURFACE->kv[SURFACE->Nv + SURFACE->OrderV] - VERTEX->u, u, - v)) - return true; - if(try_a_value(SURFACE, VERTEX, SURFACE->ku[SURFACE->Nu + SURFACE->OrderU], - SURFACE->kv[0] + VERTEX->u, u, v)) - return true; - if(try_a_value(SURFACE, VERTEX, SURFACE->ku[SURFACE->Nu + SURFACE->OrderU], - SURFACE->kv[SURFACE->Nv + SURFACE->OrderV] - VERTEX->u, u, - v)) - return true; - - - if(search_in_boundary(SURFACE, VERTEX, SURFACE->kv[0], 0, u, v)) - return true; - if(search_in_boundary - (SURFACE, VERTEX, SURFACE->kv[SURFACE->Nv + SURFACE->OrderV], 0, u, v)) - return true; - if(search_in_boundary(SURFACE, VERTEX, SURFACE->ku[0], 1, u, v)) - return true; - if(search_in_boundary - (SURFACE, VERTEX, SURFACE->ku[SURFACE->Nu + SURFACE->OrderU], 1, u, v)) - return true; - - while(1) { - newt(x, 2, &check, projectPS); - vv = InterpolateSurface(s, x[1], x[2], 0, 0); - l = sqrt(DSQR(vv.Pos.X - p->Pos.X) + - DSQR(vv.Pos.Y - p->Pos.Y) + DSQR(vv.Pos.Z - p->Pos.Z)); - if(l < 1.e-1) - break; - else { - x[1] = UMIN + (UMAX - UMIN) * ((rand() % 10000) / 10000.); - x[2] = VMIN + (VMAX - VMIN) * ((rand() % 10000) / 10000.); - } - } - *u = x[1]; - *v = x[2]; - - if(!check) { - return false; - } - return true; -} - -void direction(Vertex * v1, Vertex * v2, double d[3]) -{ - d[0] = v2->Pos.X - v1->Pos.X; - d[1] = v2->Pos.Y - v1->Pos.Y; - d[2] = v2->Pos.Z - v1->Pos.Z; -} - void Projette(Vertex * v, double mat[3][3]) { double X, Y, Z; @@ -3303,18 +2820,3 @@ void Projette(Vertex * v, double mat[3][3]) v->Pos.Y = Y; v->Pos.Z = Z; } - - -void Surface::print_info () -{ - Msg(INFO,"Surface %d of type %d",Num,Typ); - Msg(INFO,"Generatrices : "); - Curve *C; - for(int i = 0; i < List_Nbr(Generatrices); i++) { - List_Read(Generatrices, i, &C); - Msg(INFO,"%d of type %d begin %d end %d ",C->Num,C->Typ,C->beg->Num,C->end->Num); - Msg(INFO,"CircleParams : %g %g %g %g %g %g %g %g", - C->Circle.t1,C->Circle.t2,C->Circle.f1,C->Circle.f2,C->Circle.incl,C->Circle.n[0],C->Circle.n[1],C->Circle.n[2]); - } - -} diff --git a/Geo/Geo.h b/Geo/Geo.h index 60a49f75340c003fdb2046d1cfac7e5d2602cc25..eadead0e11598bdcdb718cdd3d1bc832357e36c6 100644 --- a/Geo/Geo.h +++ b/Geo/Geo.h @@ -37,7 +37,6 @@ #define MSH_SEGM_ELLI_INV 7 #define MSH_SEGM_LOOP 8 #define MSH_SEGM_BSPLN 15 -#define MSH_SEGM_URBS 16 #define MSH_SEGM_NURBS 17 #define MSH_SEGM_BEZIER 18 #define MSH_SEGM_PARAMETRIC 19 @@ -46,9 +45,7 @@ #define MSH_SURF_PLAN 9 #define MSH_SURF_REGL 10 #define MSH_SURF_TRIC 11 -#define MSH_SURF_NURBS 12 #define MSH_SURF_LOOP 13 -#define MSH_SURF_TRIMMED 21 #define MSH_SURF_DISCRETE 102 #define MSH_VOLUME 14 @@ -59,78 +56,12 @@ #define MSH_PHYSICAL_SURFACE 320 #define MSH_PHYSICAL_VOLUME 330 -class DrawingColor{ - public: - int type; - unsigned int geom, mesh; -}; - -struct _Surf{ - int Num; - int Typ; - char Visible; - int Method; - int Recombine; - int Recombine_Dir; // -1 is left, +1 is right, 0 is alternated - double RecombineAngle; - int ipar[5]; - int Nu, Nv; - List_T *Generatrices; - List_T *EmbeddedCurves; - List_T *EmbeddedPoints; - List_T *Control_Points; - List_T *TrsfPoints; - double plan[3][3]; - double invplan[3][3]; - double a, b, c, d; - List_T *Orientations; - List_T *Contours; - int OrderU, OrderV; - float *ku, *kv, *cp; - struct _Surf *Support; - ExtrudeParams *Extrude; - DrawingColor Color; - void print_info (); -}; - -typedef struct _Surf Surface; - -typedef struct{ - int Num; - List_T *Curves; -}EdgeLoop; - -typedef struct{ - int Num; - List_T *Surfaces; -}SurfaceLoop; - -typedef struct{ - int Num; - int Typ; - char Visible; - List_T *Entities; -}PhysicalGroup; - -typedef struct { - int Num; - int Typ; - char Visible; - int Method; - int ipar[8]; - ExtrudeParams *Extrude; - List_T *TrsfPoints; - List_T *Surfaces; - List_T *SurfacesOrientations; - DrawingColor Color; -}Volume; - struct Coord{ double X,Y,Z; }; class Vertex { - public : + public : int Num; char Visible; double lc, u, us[3], w; @@ -170,6 +101,12 @@ class Vertex { } }; +class DrawingColor{ + public: + int type; + unsigned int geom, mesh; +}; + typedef struct{ double t1, t2, f1, f2, incl; Vertex *v[4]; @@ -190,18 +127,71 @@ typedef struct{ double ubeg, uend; List_T *Control_Points; ExtrudeParams *Extrude; - float *k, *cp; + float *k; int degre; CircParam Circle; char functu[256], functv[256], functw[256]; DrawingColor Color; }Curve; +typedef struct{ + int Num; + List_T *Curves; +}EdgeLoop; + +typedef struct{ + int Num; + int Typ; + char Visible; + int Method; + int Recombine; + int Recombine_Dir; // -1 is left, +1 is right, 0 is alternated + double RecombineAngle; + int ipar[5]; + List_T *Generatrices; + List_T *EmbeddedCurves; + List_T *EmbeddedPoints; + List_T *Control_Points; + List_T *TrsfPoints; + double plan[3][3]; + double invplan[3][3]; + double a, b, c, d; + List_T *Orientations; + List_T *Contours; + ExtrudeParams *Extrude; + DrawingColor Color; +}Surface; + +typedef struct{ + int Num; + List_T *Surfaces; +}SurfaceLoop; + +typedef struct { + int Num; + int Typ; + char Visible; + int Method; + int ipar[8]; + ExtrudeParams *Extrude; + List_T *TrsfPoints; + List_T *Surfaces; + List_T *SurfacesOrientations; + DrawingColor Color; +}Volume; + +typedef struct{ + int Num; + int Typ; + char Visible; + List_T *Entities; +}PhysicalGroup; + class Mesh{ -private: + private: void alloc_all(); void free_all(); -public: + public: Tree_T *Points; Tree_T *Curves; Tree_T *Surfaces; @@ -219,49 +209,38 @@ public: typedef struct { int Type; int Num; - union { - int I; - double F; - double V[4]; - List_T *ListDouble; - } obj; } Shape; -int compareVertex (const void *a, const void *b); -int comparePosition (const void *a, const void *b); -int compareSurfaceLoop(const void *a, const void *b); -int compareEdgeLoop(const void *a, const void *b); -int compareQuality(const void *a, const void *b); +int comparePosition(const void *a, const void *b); +int compareVertex(const void *a, const void *b); int compareCurve(const void *a, const void *b); +int compareEdgeLoop(const void *a, const void *b); int compareSurface(const void *a, const void *b); +int compareSurfaceLoop(const void *a, const void *b); int compareVolume(const void *a, const void *b); -int compareSxF(const void *a, const void *b); int comparePhysicalGroup(const void *a, const void *b); -Vertex *Create_Vertex (int Num, double X, double Y, double Z, double lc, double u); +Vertex *Create_Vertex(int Num, double X, double Y, double Z, double lc, double u); +Curve *Create_Curve(int Num, int Typ, int Order, List_T * Liste, + List_T * Knots, int p1, int p2, double u1, double u2); +Surface *Create_Surface(int Num, int Typ); +Volume *Create_Volume(int Num, int Typ); +EdgeLoop *Create_EdgeLoop(int Num, List_T * intlist); +SurfaceLoop *Create_SurfaceLoop(int Num, List_T * intlist); PhysicalGroup *Create_PhysicalGroup(int Num, int typ, List_T * intlist); -Curve *Create_Curve(int Num, int Typ, int Order, List_T * Liste, - List_T * Knots, int p1, int p2, double u1, double u2); -Surface *Create_Surface(int Num, int Typ); -Volume *Create_Volume(int Num, int Typ); -EdgeLoop *Create_EdgeLoop(int Num, List_T * intlist); -SurfaceLoop *Create_SurfaceLoop(int Num, List_T * intlist); -void CreateNurbsSurface (int Num, int Order1, int Order2, List_T *, List_T *, List_T *); -void CreateNurbsSurfaceSupport (int Num, int Order2, int Order1, - List_T * List, List_T *, List_T *); +Curve *CreateReversedCurve(Curve *c); + +void End_Curve(Curve * c); +void End_Surface(Surface * s, int reset_orientations=1); void Free_Vertex (void *a, void *b); -void Free_PhysicalGroup(void *a, void *b); -void Free_Surface(void *a, void *b); -void Free_Volume(void *a, void *b); -void Free_Volume_But_Not_Elements(void *a, void *b); void Free_Curve(void *a, void *b); void Free_EdgeLoop(void *a, void *b); +void Free_Surface(void *a, void *b); void Free_SurfaceLoop(void *a, void *b); - -void End_Curve(Curve * c); -void End_Surface(Surface * s, int reset_orientations=1); +void Free_Volume(void *a, void *b); +void Free_PhysicalGroup(void *a, void *b); int NEWPOINT(void); int NEWLINE(void); @@ -274,13 +253,12 @@ int NEWREG(void); Vertex *FindPoint(int inum); Curve *FindCurve(int inum); -Surface *FindSurface(int inum); -Volume *FindVolume(int inum); EdgeLoop *FindEdgeLoop(int inum); +Surface *FindSurface(int inum); SurfaceLoop *FindSurfaceLoop(int inum); +Volume *FindVolume(int inum); PhysicalGroup *FindPhysicalGroup(int inum, int type); -Curve *CreateReversedCurve(Curve *c); void ModifyLcPoint(int ip, double lc); void TranslateShapes(double X,double Y,double Z, @@ -316,13 +294,11 @@ void ReplaceAllDuplicates(); bool ProjectPointOnCurve(Curve *c, Vertex *v, Vertex *RES, Vertex *DER); bool ProjectPointOnSurface(Surface *s, Vertex &p); -bool ProjectPointOnSurface(Surface *s, Vertex *p,double *u, double *v); int recognize_seg(int typ, List_T *liste, int *seg); int recognize_loop(List_T *liste, int *loop); int recognize_surfloop(List_T *liste, int *loop); -void direction(Vertex * v1, Vertex * v2, double d[3]); void Projette(Vertex * v, double mat[3][3]); #endif diff --git a/Geo/GeoInterpolation.cpp b/Geo/GeoInterpolation.cpp index b0adbc90df9b81692f74aeff31fd42bd8271d984..55229f7cf47c268c4cefe8a53b656eed4a931d3d 100644 --- a/Geo/GeoInterpolation.cpp +++ b/Geo/GeoInterpolation.cpp @@ -1,4 +1,4 @@ -// $Id: GeoInterpolation.cpp,v 1.13 2007-01-10 13:48:46 geuzaine Exp $ +// $Id: GeoInterpolation.cpp,v 1.14 2007-01-12 08:10:32 geuzaine Exp $ // // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle // @@ -28,6 +28,170 @@ // Curves +Vertex InterpolateCubicSpline(Vertex * v[4], double t, double mat[4][4], + int derivee, double t1, double t2) +{ + Vertex V; + int i, j; + double vec[4], T[4]; + + V.Pos.X = V.Pos.Y = V.Pos.Z = 0.0; + V.lc = (1 - t) * v[1]->lc + t * v[2]->lc; + V.w = (1 - t) * v[1]->w + t * v[2]->w; + + if(derivee) { + T[3] = 0.; + T[2] = 1.; + T[1] = 2. * t; + T[0] = 3. * t * t; + } + else { + T[3] = 1.; + T[2] = t; + T[1] = t * t; + T[0] = t * t * t; + } + + for(i = 0; i < 4; i++) { + vec[i] = 0.0; + } + + /* X */ + for(i = 0; i < 4; i++) { + for(j = 0; j < 4; j++) { + vec[i] += mat[i][j] * v[j]->Pos.X; + } + } + + for(j = 0; j < 4; j++) { + V.Pos.X += T[j] * vec[j]; + vec[j] = 0.0; + } + + /* Y */ + for(i = 0; i < 4; i++) { + for(j = 0; j < 4; j++) { + vec[i] += mat[i][j] * v[j]->Pos.Y; + } + } + + for(j = 0; j < 4; j++) { + V.Pos.Y += T[j] * vec[j]; + vec[j] = 0.0; + } + + /* Z */ + for(i = 0; i < 4; i++) { + for(j = 0; j < 4; j++) { + vec[i] += mat[i][j] * v[j]->Pos.Z; + } + } + for(j = 0; j < 4; j++) { + V.Pos.Z += T[j] * vec[j]; + vec[j] = 0.0; + } + + if(derivee) { + V.Pos.X /= ((t2 - t1)); + V.Pos.Y /= ((t2 - t1)); + V.Pos.Z /= ((t2 - t1)); + } + + return V; +} + +// Uniform BSplines +Vertex InterpolateUBS(Curve * Curve, double u, int derivee) +{ + int NbControlPoints, NbCurves, iCurve; + double t, t1, t2; + Vertex *v[4]; + + NbControlPoints = List_Nbr(Curve->Control_Points); + NbCurves = NbControlPoints - 3; + + iCurve = (int)(u * (double)NbCurves) + 1; + + if(iCurve > NbCurves) + iCurve = NbCurves; + else if (iCurve < 1) + iCurve = 1; + + t1 = (double)(iCurve - 1) / (double)(NbCurves); + t2 = (double)(iCurve) / (double)(NbCurves); + + t = (u - t1) / (t2 - t1); + + List_Read(Curve->Control_Points, iCurve - 1, &v[0]); + List_Read(Curve->Control_Points, iCurve, &v[1]); + List_Read(Curve->Control_Points, iCurve + 1, &v[2]); + List_Read(Curve->Control_Points, iCurve + 2, &v[3]); + + return InterpolateCubicSpline(v, t, Curve->mat, derivee, t1, t2); +} + +// Non Uniform BSplines +int findSpan(double u, int deg, int n, float *U) +{ + if(u >= U[n]) + return n - 1; + if(u <= U[0]) + return deg; + + int low = deg; + int high = n + 1; + int mid = (low + high) / 2; + + while(u < U[mid] || u >= U[mid + 1]) { + if(u < U[mid]) + high = mid; + else + low = mid; + mid = (low + high) / 2; + } + return mid; +} + +void basisFuns(double u, int i, int deg, float *U, double *N) +{ + double left[1000]; + double *right = &left[deg + 1]; + + double temp, saved; + + N[0] = 1.0; + for(int j = 1; j <= deg; j++) { + left[j] = u - U[i + 1 - j]; + right[j] = U[i + j] - u; + saved = 0.0; + for(int r = 0; r < j; r++) { + temp = N[r] / (right[r + 1] + left[j - r]); + N[r] = saved + right[r + 1] * temp; + saved = left[j - r] * temp; + } + N[j] = saved; + } +} + +Vertex InterpolateNurbs(Curve * Curve, double u, int derivee) +{ + static double Nb[1000]; + int span = findSpan(u, Curve->degre, List_Nbr(Curve->Control_Points), Curve->k); + Vertex p, *v; + + basisFuns(u, span, Curve->degre, Curve->k, Nb); + p.Pos.X = p.Pos.Y = p.Pos.Z = p.w = p.lc = 0.0; + for(int i = Curve->degre; i >= 0; --i) { + List_Read(Curve->Control_Points, span - Curve->degre + i, &v); + p.Pos.X += Nb[i] * v->Pos.X; + p.Pos.Y += Nb[i] * v->Pos.Y; + p.Pos.Z += Nb[i] * v->Pos.Z; + p.w += Nb[i] * v->w; + p.lc += Nb[i] * v->lc; + } + return p; +} + Vertex InterpolateCurve(Curve * c, double u, int derivee) { if(c->Num < 0) { @@ -381,8 +545,6 @@ Vertex InterpolateSurface(Surface * s, double u, double v, int derivee, int u_v) case MSH_SURF_REGL: case MSH_SURF_TRIC: return InterpolateRuledSurface(s, u, v); - case MSH_SURF_NURBS: - return InterpolateNurbsSurface(s, u, v); case MSH_SURF_PLAN: { Vertex T(u, v, .0); @@ -403,210 +565,3 @@ Vertex InterpolateSurface(Surface * s, double u, double v, int derivee, int u_v) } } -// Cubic spline - -Vertex InterpolateCubicSpline(Vertex * v[4], double t, double mat[4][4], - int derivee, double t1, double t2) -{ - Vertex V; - int i, j; - double vec[4], T[4]; - - V.Pos.X = V.Pos.Y = V.Pos.Z = 0.0; - V.lc = (1 - t) * v[1]->lc + t * v[2]->lc; - V.w = (1 - t) * v[1]->w + t * v[2]->w; - - if(derivee) { - T[3] = 0.; - T[2] = 1.; - T[1] = 2. * t; - T[0] = 3. * t * t; - } - else { - T[3] = 1.; - T[2] = t; - T[1] = t * t; - T[0] = t * t * t; - } - - for(i = 0; i < 4; i++) { - vec[i] = 0.0; - } - - /* X */ - for(i = 0; i < 4; i++) { - for(j = 0; j < 4; j++) { - vec[i] += mat[i][j] * v[j]->Pos.X; - } - } - - for(j = 0; j < 4; j++) { - V.Pos.X += T[j] * vec[j]; - vec[j] = 0.0; - } - - /* Y */ - for(i = 0; i < 4; i++) { - for(j = 0; j < 4; j++) { - vec[i] += mat[i][j] * v[j]->Pos.Y; - } - } - - for(j = 0; j < 4; j++) { - V.Pos.Y += T[j] * vec[j]; - vec[j] = 0.0; - } - - /* Z */ - for(i = 0; i < 4; i++) { - for(j = 0; j < 4; j++) { - vec[i] += mat[i][j] * v[j]->Pos.Z; - } - } - for(j = 0; j < 4; j++) { - V.Pos.Z += T[j] * vec[j]; - vec[j] = 0.0; - } - - if(derivee) { - V.Pos.X /= ((t2 - t1)); - V.Pos.Y /= ((t2 - t1)); - V.Pos.Z /= ((t2 - t1)); - } - - return V; -} - - -// Uniform BSplines - -Vertex InterpolateUBS(Curve * Curve, double u, int derivee) -{ - int NbControlPoints, NbCurves, iCurve; - double t, t1, t2; - Vertex *v[4]; - - NbControlPoints = List_Nbr(Curve->Control_Points); - NbCurves = NbControlPoints - 3; - - iCurve = (int)(u * (double)NbCurves) + 1; - - if(iCurve > NbCurves) - iCurve = NbCurves; - else if (iCurve < 1) - iCurve = 1; - - t1 = (double)(iCurve - 1) / (double)(NbCurves); - t2 = (double)(iCurve) / (double)(NbCurves); - - t = (u - t1) / (t2 - t1); - - List_Read(Curve->Control_Points, iCurve - 1, &v[0]); - List_Read(Curve->Control_Points, iCurve, &v[1]); - List_Read(Curve->Control_Points, iCurve + 1, &v[2]); - List_Read(Curve->Control_Points, iCurve + 2, &v[3]); - - return InterpolateCubicSpline(v, t, Curve->mat, derivee, t1, t2); -} - -// Non Uniform BSplines - -int findSpan(double u, int deg, int n, float *U) -{ - if(u >= U[n]) - return n - 1; - if(u <= U[0]) - return deg; - - int low = deg; - int high = n + 1; - int mid = (low + high) / 2; - - while(u < U[mid] || u >= U[mid + 1]) { - if(u < U[mid]) - high = mid; - else - low = mid; - mid = (low + high) / 2; - } - return mid; -} - -void basisFuns(double u, int i, int deg, float *U, double *N) -{ - double left[1000]; - double *right = &left[deg + 1]; - - double temp, saved; - - //N.resize(deg+1) ; - - N[0] = 1.0; - for(int j = 1; j <= deg; j++) { - left[j] = u - U[i + 1 - j]; - right[j] = U[i + j] - u; - saved = 0.0; - for(int r = 0; r < j; r++) { - temp = N[r] / (right[r + 1] + left[j - r]); - N[r] = saved + right[r + 1] * temp; - saved = left[j - r] * temp; - } - N[j] = saved; - } -} - -Vertex InterpolateNurbs(Curve * Curve, double u, int derivee) -{ - static double Nb[1000]; - int span = - findSpan(u, Curve->degre, List_Nbr(Curve->Control_Points), Curve->k); - Vertex p, *v; - - basisFuns(u, span, Curve->degre, Curve->k, Nb); - p.Pos.X = p.Pos.Y = p.Pos.Z = p.w = p.lc = 0.0; - for(int i = Curve->degre; i >= 0; --i) { - List_Read(Curve->Control_Points, span - Curve->degre + i, &v); - p.Pos.X += Nb[i] * v->Pos.X; - p.Pos.Y += Nb[i] * v->Pos.Y; - p.Pos.Z += Nb[i] * v->Pos.Z; - p.w += Nb[i] * v->w; - p.lc += Nb[i] * v->lc; - } - return p; -} - -Vertex InterpolateNurbsSurface(Surface * s, double u, double v) -{ - int uspan = findSpan(u, s->OrderU, s->Nu, s->ku); - int vspan = findSpan(v, s->OrderV, s->Nv, s->kv); - double Nu[1000], Nv[1000]; - Vertex sp, temp[1000], *pv; - - basisFuns(u, uspan, s->OrderU, s->ku, Nu); - basisFuns(v, vspan, s->OrderV, s->kv, Nv); - - int l, ll, kk; - for(l = 0; l <= s->OrderV; l++) { - temp[l].Pos.X = temp[l].Pos.Y = temp[l].Pos.Z = temp[l].w = temp[l].lc = - 0.0; - for(int k = 0; k <= s->OrderU; k++) { - kk = uspan - s->OrderU + k; - ll = vspan - s->OrderV + l; - List_Read(s->Control_Points, kk + s->Nu * ll, &pv); - temp[l].Pos.X += Nu[k] * pv->Pos.X; - temp[l].Pos.Y += Nu[k] * pv->Pos.Y; - temp[l].Pos.Z += Nu[k] * pv->Pos.Z; - temp[l].w += Nu[k] * pv->w; - temp[l].lc += Nu[k] * pv->lc; - } - } - sp.Pos.X = sp.Pos.Y = sp.Pos.Z = sp.w = sp.lc = 0.0; - for(l = 0; l <= s->OrderV; l++) { - sp.Pos.X += Nv[l] * temp[l].Pos.X; - sp.Pos.Y += Nv[l] * temp[l].Pos.Y; - sp.Pos.Z += Nv[l] * temp[l].Pos.Z; - sp.w += Nv[l] * temp[l].w; - sp.lc += Nv[l] * temp[l].lc; - } - return sp; -} diff --git a/Geo/GeoInterpolation.h b/Geo/GeoInterpolation.h index ebe4bfa7f20e74872f4401beb1f57f44c51fe2fd..32ad551c139a0bf96526127f3e9b5eff90b025bd 100644 --- a/Geo/GeoInterpolation.h +++ b/Geo/GeoInterpolation.h @@ -27,20 +27,4 @@ Vertex InterpolateCurve (Curve * Curve, double u, int derivee); Vertex InterpolateSurface (Surface * s, double u, double v, int derivee, int u_v); -Vertex TransfiniteQua (Vertex c1, Vertex c2, Vertex c3, Vertex c4, - Vertex s1, Vertex s2, Vertex s3, Vertex s4, - double u, double v); - -Vertex TransfiniteTri (Vertex c1, Vertex c2, Vertex c3, - Vertex s1, Vertex s2, Vertex s3, - double u, double v); - -void TransfiniteSph (Vertex S, Vertex center, Vertex * T); - -Vertex InterpolateCubicSpline (Vertex * v[4], double t, double mat[4][4], - int derivee, double t1, double t2); -Vertex InterpolateUBS (Curve * Curve, double u, int derivee); -Vertex InterpolateNurbs (Curve * Curve, double u, int derivee); -Vertex InterpolateNurbsSurface (Surface * s, double u, double v); - #endif diff --git a/Geo/GeoStringInterface.cpp b/Geo/GeoStringInterface.cpp index eed7fd8c8ee18fd3db201f18e7a92d3309cd8275..947125c1fcf9fde0327f83d4181b23fcf7bf1b07 100644 --- a/Geo/GeoStringInterface.cpp +++ b/Geo/GeoStringInterface.cpp @@ -1,4 +1,4 @@ -// $Id: GeoStringInterface.cpp,v 1.3 2006-12-16 01:25:58 geuzaine Exp $ +// $Id: GeoStringInterface.cpp,v 1.4 2007-01-12 08:10:32 geuzaine Exp $ // // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle // @@ -359,11 +359,8 @@ void add_surf(List_T *list, char *fich, int support, int typ) if(typ == 1) { snprintf(text, BUFFSIZE, "Ruled Surface(%d) = {", NEWSURFACE()); } - else if(typ == 2) { - snprintf(text, BUFFSIZE, "Plane Surface(%d) = {", NEWSURFACE()); - } else { - snprintf(text, BUFFSIZE, "Trimmed Surface(%d) = %d {", NEWSURFACE(), support); + snprintf(text, BUFFSIZE, "Plane Surface(%d) = {", NEWSURFACE()); } strncat_list(text, list); strncat(text, "};", BUFFSIZE-strlen(text)); diff --git a/Geo/gmshFace.cpp b/Geo/gmshFace.cpp index 3ef716bbeb0954500e9bee864476bf76bb51692a..179df3e5d7ec4aa5628544b05fbbc83a5f6cda89 100644 --- a/Geo/gmshFace.cpp +++ b/Geo/gmshFace.cpp @@ -1,4 +1,4 @@ -// $Id: gmshFace.cpp,v 1.32 2006-12-24 13:37:20 remacle Exp $ +// $Id: gmshFace.cpp,v 1.33 2007-01-12 08:10:32 geuzaine Exp $ // // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle // @@ -217,7 +217,6 @@ SPoint2 gmshFace::parFromPoint(const SPoint3 &qp) const GEntity::GeomType gmshFace::geomType() const { switch(s->Typ){ - case MSH_SURF_NURBS: return Nurb; case MSH_SURF_PLAN: return Plane; case MSH_SURF_REGL: case MSH_SURF_TRIC: return RuledSurface; diff --git a/Parser/Gmsh.l b/Parser/Gmsh.l index 4819a0df20f04ecc21d188b688d45c5f67585794..e0970e5b1de49fefe102b9b34e56c25d2596b4f2 100644 --- a/Parser/Gmsh.l +++ b/Parser/Gmsh.l @@ -1,5 +1,5 @@ %{ -// $Id: Gmsh.l,v 1.81 2006-11-27 22:22:17 geuzaine Exp $ +// $Id: Gmsh.l,v 1.82 2007-01-12 08:10:32 geuzaine Exp $ // // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle // @@ -171,7 +171,6 @@ Hypot return tHypot; In return tIn; If return tIf; -Intersect return tIntersect; Knots return tKnots; @@ -222,7 +221,6 @@ Transfinite return tTransfinite; Translate return tTranslate; Tanh return tTanh; Tan return tTan; -Trimmed return tTrimmed; Today return tToday; Using return tUsing; diff --git a/Parser/Gmsh.tab.cpp b/Parser/Gmsh.tab.cpp index 7c83953e230e11df004b88d7eb7305bf11abcfd2..2385de666b939883afa8eb02f251543f5fd387fd 100644 --- a/Parser/Gmsh.tab.cpp +++ b/Parser/Gmsh.tab.cpp @@ -72,61 +72,59 @@ #define tRecombine 322 #define tDelete 323 #define tCoherence 324 -#define tIntersect 325 -#define tAttractor 326 -#define tLayers 327 -#define tAlias 328 -#define tAliasWithOptions 329 -#define tText2D 330 -#define tText3D 331 -#define tInterpolationScheme 332 -#define tTime 333 -#define tGrain 334 -#define tCombine 335 -#define tBSpline 336 -#define tBezier 337 -#define tNurbs 338 -#define tOrder 339 -#define tWith 340 -#define tBounds 341 -#define tKnots 342 -#define tColor 343 -#define tColorTable 344 -#define tFor 345 -#define tIn 346 -#define tEndFor 347 -#define tIf 348 -#define tEndIf 349 -#define tExit 350 -#define tReturn 351 -#define tCall 352 -#define tFunction 353 -#define tTrimmed 354 -#define tShow 355 -#define tHide 356 -#define tGetValue 357 -#define tGMSH_MAJOR_VERSION 358 -#define tGMSH_MINOR_VERSION 359 -#define tGMSH_PATCH_VERSION 360 -#define tAFFECTPLUS 361 -#define tAFFECTMINUS 362 -#define tAFFECTTIMES 363 -#define tAFFECTDIVIDE 364 -#define tOR 365 -#define tAND 366 -#define tEQUAL 367 -#define tNOTEQUAL 368 -#define tAPPROXEQUAL 369 -#define tLESSOREQUAL 370 -#define tGREATEROREQUAL 371 -#define tCROSSPRODUCT 372 -#define tPLUSPLUS 373 -#define tMINUSMINUS 374 -#define UNARYPREC 375 +#define tAttractor 325 +#define tLayers 326 +#define tAlias 327 +#define tAliasWithOptions 328 +#define tText2D 329 +#define tText3D 330 +#define tInterpolationScheme 331 +#define tTime 332 +#define tGrain 333 +#define tCombine 334 +#define tBSpline 335 +#define tBezier 336 +#define tNurbs 337 +#define tOrder 338 +#define tWith 339 +#define tBounds 340 +#define tKnots 341 +#define tColor 342 +#define tColorTable 343 +#define tFor 344 +#define tIn 345 +#define tEndFor 346 +#define tIf 347 +#define tEndIf 348 +#define tExit 349 +#define tReturn 350 +#define tCall 351 +#define tFunction 352 +#define tShow 353 +#define tHide 354 +#define tGetValue 355 +#define tGMSH_MAJOR_VERSION 356 +#define tGMSH_MINOR_VERSION 357 +#define tGMSH_PATCH_VERSION 358 +#define tAFFECTPLUS 359 +#define tAFFECTMINUS 360 +#define tAFFECTTIMES 361 +#define tAFFECTDIVIDE 362 +#define tOR 363 +#define tAND 364 +#define tEQUAL 365 +#define tNOTEQUAL 366 +#define tAPPROXEQUAL 367 +#define tLESSOREQUAL 368 +#define tGREATEROREQUAL 369 +#define tCROSSPRODUCT 370 +#define tPLUSPLUS 371 +#define tMINUSMINUS 372 +#define UNARYPREC 373 #line 1 "Gmsh.y" -// $Id: Gmsh.tab.cpp,v 1.295 2007-01-10 13:48:46 geuzaine Exp $ +// $Id: Gmsh.tab.cpp,v 1.296 2007-01-12 08:10:32 geuzaine Exp $ // // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle // @@ -219,26 +217,26 @@ typedef union { -#define YYFINAL 1227 +#define YYFINAL 1168 #define YYFLAG -32768 -#define YYNTBASE 142 +#define YYNTBASE 140 -#define YYTRANSLATE(x) ((unsigned)(x) <= 375 ? yytranslate[x] : 209) +#define YYTRANSLATE(x) ((unsigned)(x) <= 373 ? yytranslate[x] : 206) 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, 127, 2, 137, 2, 125, 2, 2, 132, - 133, 123, 121, 138, 122, 136, 124, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 117, - 2, 119, 111, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 125, 2, 135, 2, 123, 2, 2, 130, + 131, 121, 119, 136, 120, 134, 122, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 115, + 2, 117, 109, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 134, 2, 135, 131, 2, 2, 2, 2, 2, 2, + 132, 2, 133, 129, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 139, 2, 140, 141, 2, 2, 2, 2, + 2, 2, 137, 2, 138, 139, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -262,8 +260,8 @@ static const short yytranslate[] = { 0, 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, 112, 113, 114, 115, 116, 118, - 120, 126, 128, 129, 130 + 107, 108, 110, 111, 112, 113, 114, 116, 118, 124, + 126, 127, 128 }; #if YYDEBUG != 0 @@ -278,235 +276,228 @@ static const short yyprhs[] = { 0, 290, 300, 306, 315, 324, 336, 343, 353, 363, 373, 375, 377, 385, 394, 407, 414, 422, 430, 438, 448, 456, 466, 484, 492, 500, 512, 521, 534, 543, 552, - 561, 574, 597, 618, 627, 636, 645, 653, 662, 668, - 680, 686, 696, 698, 700, 702, 703, 706, 713, 720, - 727, 734, 739, 746, 753, 760, 765, 772, 776, 781, - 787, 791, 795, 800, 805, 809, 817, 825, 829, 837, - 841, 844, 847, 863, 866, 873, 882, 891, 902, 904, - 907, 909, 913, 918, 920, 926, 938, 952, 953, 961, - 962, 976, 977, 993, 1002, 1011, 1020, 1033, 1046, 1059, - 1074, 1089, 1104, 1105, 1118, 1119, 1132, 1133, 1146, 1147, - 1164, 1165, 1182, 1183, 1200, 1201, 1220, 1221, 1240, 1241, - 1260, 1262, 1265, 1271, 1279, 1289, 1292, 1299, 1309, 1319, - 1328, 1338, 1347, 1356, 1363, 1368, 1375, 1382, 1389, 1396, - 1399, 1402, 1404, 1408, 1411, 1414, 1417, 1421, 1425, 1429, - 1433, 1437, 1441, 1445, 1449, 1453, 1457, 1461, 1465, 1469, - 1473, 1479, 1484, 1489, 1494, 1499, 1504, 1509, 1514, 1519, - 1524, 1529, 1536, 1541, 1546, 1551, 1556, 1561, 1566, 1573, - 1580, 1587, 1592, 1597, 1602, 1607, 1612, 1617, 1622, 1627, - 1632, 1637, 1642, 1649, 1654, 1659, 1664, 1669, 1674, 1679, - 1686, 1693, 1700, 1705, 1707, 1709, 1711, 1713, 1715, 1717, - 1719, 1721, 1727, 1732, 1737, 1740, 1746, 1750, 1757, 1762, - 1770, 1777, 1779, 1782, 1785, 1789, 1793, 1805, 1815, 1823, - 1831, 1832, 1836, 1840, 1842, 1846, 1848, 1850, 1853, 1857, - 1862, 1866, 1872, 1877, 1879, 1881, 1883, 1887, 1892, 1899, - 1907, 1909, 1911, 1915, 1919, 1929, 1937, 1939, 1945, 1949, - 1956, 1958, 1962, 1964, 1966, 1973, 1978, 1983, 1988, 1995, - 2002 + 561, 570, 579, 588, 596, 605, 611, 623, 629, 639, + 641, 643, 645, 646, 649, 656, 663, 670, 677, 682, + 689, 696, 703, 708, 715, 719, 724, 730, 734, 738, + 743, 748, 752, 760, 768, 772, 780, 784, 787, 790, + 806, 809, 816, 825, 834, 845, 847, 850, 852, 856, + 861, 863, 869, 881, 895, 896, 904, 905, 919, 920, + 936, 945, 954, 963, 976, 989, 1002, 1017, 1032, 1047, + 1048, 1061, 1062, 1075, 1076, 1089, 1090, 1107, 1108, 1125, + 1126, 1143, 1144, 1163, 1164, 1183, 1184, 1203, 1205, 1208, + 1214, 1222, 1232, 1235, 1242, 1252, 1262, 1271, 1281, 1290, + 1299, 1306, 1311, 1318, 1325, 1332, 1339, 1342, 1344, 1348, + 1351, 1354, 1357, 1361, 1365, 1369, 1373, 1377, 1381, 1385, + 1389, 1393, 1397, 1401, 1405, 1409, 1413, 1419, 1424, 1429, + 1434, 1439, 1444, 1449, 1454, 1459, 1464, 1469, 1476, 1481, + 1486, 1491, 1496, 1501, 1506, 1513, 1520, 1527, 1532, 1537, + 1542, 1547, 1552, 1557, 1562, 1567, 1572, 1577, 1582, 1589, + 1594, 1599, 1604, 1609, 1614, 1619, 1626, 1633, 1640, 1645, + 1647, 1649, 1651, 1653, 1655, 1657, 1659, 1661, 1667, 1672, + 1677, 1680, 1686, 1690, 1697, 1702, 1710, 1717, 1719, 1722, + 1725, 1729, 1733, 1745, 1755, 1763, 1771, 1772, 1776, 1780, + 1782, 1786, 1788, 1790, 1793, 1797, 1802, 1806, 1812, 1817, + 1819, 1821, 1823, 1827, 1832, 1839, 1847, 1849, 1851, 1855, + 1859, 1869, 1877, 1879, 1885, 1889, 1896, 1898, 1902, 1904, + 1906, 1913, 1918, 1923, 1928, 1935, 1942 }; -static const short yyrhs[] = { 143, - 0, 1, 6, 0, 0, 143, 144, 0, 147, 0, - 146, 0, 166, 0, 168, 0, 169, 0, 172, 0, - 173, 0, 174, 0, 175, 0, 178, 0, 193, 0, - 194, 0, 195, 0, 177, 0, 176, 0, 119, 0, - 119, 119, 0, 33, 132, 5, 133, 6, 0, 33, - 132, 5, 133, 145, 208, 6, 0, 33, 132, 5, - 138, 204, 133, 6, 0, 33, 132, 5, 138, 204, - 133, 145, 208, 6, 0, 4, 5, 139, 148, 140, - 6, 0, 4, 5, 4, 198, 139, 148, 140, 6, - 0, 0, 148, 151, 0, 148, 155, 0, 148, 158, - 0, 148, 160, 0, 148, 161, 0, 148, 163, 0, - 196, 0, 149, 138, 196, 0, 196, 0, 150, 138, - 196, 0, 0, 0, 4, 152, 132, 149, 133, 153, - 139, 150, 140, 6, 0, 208, 0, 154, 138, 208, - 0, 0, 76, 132, 196, 138, 196, 138, 196, 133, - 156, 139, 154, 140, 6, 0, 208, 0, 157, 138, - 208, 0, 0, 77, 132, 196, 138, 196, 138, 196, - 138, 196, 133, 159, 139, 157, 140, 6, 0, 78, - 139, 201, 140, 139, 201, 140, 6, 0, 0, 79, - 162, 139, 150, 140, 6, 0, 80, 132, 196, 133, - 202, 6, 0, 7, 0, 107, 0, 108, 0, 109, - 0, 110, 0, 128, 0, 129, 0, 4, 164, 196, - 6, 0, 4, 134, 196, 135, 164, 196, 6, 0, - 4, 134, 139, 204, 140, 135, 164, 202, 6, 0, - 4, 134, 135, 7, 202, 6, 0, 4, 134, 135, - 107, 202, 6, 0, 4, 165, 6, 0, 4, 134, - 196, 135, 165, 6, 0, 4, 136, 4, 7, 208, - 6, 0, 4, 134, 196, 135, 136, 4, 7, 208, - 6, 0, 4, 136, 4, 164, 196, 6, 0, 4, - 134, 196, 135, 136, 4, 164, 196, 6, 0, 4, - 136, 4, 165, 6, 0, 4, 134, 196, 135, 136, - 4, 165, 6, 0, 4, 136, 89, 136, 4, 7, - 205, 6, 0, 4, 134, 196, 135, 136, 89, 136, - 4, 7, 205, 6, 0, 4, 136, 90, 7, 206, - 6, 0, 4, 134, 196, 135, 136, 90, 7, 206, - 6, 0, 60, 132, 4, 133, 136, 4, 7, 196, - 6, 0, 60, 132, 4, 133, 136, 4, 7, 208, - 6, 0, 196, 0, 208, 0, 41, 132, 196, 133, - 7, 198, 6, 0, 56, 41, 132, 167, 133, 7, - 202, 6, 0, 72, 41, 202, 7, 139, 196, 138, - 196, 138, 196, 140, 6, 0, 48, 49, 202, 7, - 196, 6, 0, 44, 132, 196, 133, 7, 202, 6, - 0, 46, 132, 196, 133, 7, 202, 6, 0, 42, - 132, 196, 133, 7, 202, 6, 0, 42, 132, 196, - 133, 7, 202, 52, 198, 6, 0, 43, 132, 196, - 133, 7, 202, 6, 0, 43, 132, 196, 133, 7, - 202, 52, 198, 6, 0, 50, 132, 196, 133, 7, - 139, 196, 138, 196, 138, 5, 138, 5, 138, 5, - 140, 6, 0, 82, 132, 196, 133, 7, 202, 6, - 0, 83, 132, 196, 133, 7, 202, 6, 0, 84, - 132, 196, 133, 7, 202, 88, 202, 85, 196, 6, - 0, 44, 67, 132, 196, 133, 7, 202, 6, 0, - 72, 44, 202, 7, 139, 196, 138, 196, 138, 196, - 140, 6, 0, 56, 44, 132, 167, 133, 7, 202, - 6, 0, 52, 45, 132, 196, 133, 7, 202, 6, - 0, 53, 45, 132, 196, 133, 7, 202, 6, 0, - 100, 45, 132, 196, 133, 7, 139, 196, 138, 202, - 140, 6, 0, 84, 45, 86, 87, 132, 196, 133, - 7, 200, 88, 139, 202, 138, 202, 140, 85, 139, - 196, 138, 196, 140, 6, 0, 84, 45, 132, 196, - 133, 7, 200, 88, 139, 202, 138, 202, 140, 85, - 139, 196, 138, 196, 140, 6, 0, 45, 67, 132, - 196, 133, 7, 202, 6, 0, 56, 45, 132, 167, - 133, 7, 202, 6, 0, 55, 47, 132, 196, 133, - 7, 202, 6, 0, 47, 132, 196, 133, 7, 202, - 6, 0, 56, 47, 132, 167, 133, 7, 202, 6, - 0, 62, 198, 139, 170, 140, 0, 61, 139, 198, - 138, 198, 138, 196, 140, 139, 170, 140, 0, 63, - 198, 139, 170, 140, 0, 64, 139, 198, 138, 196, - 140, 139, 170, 140, 0, 172, 0, 171, 0, 169, - 0, 0, 171, 168, 0, 171, 41, 139, 204, 140, - 6, 0, 171, 44, 139, 204, 140, 6, 0, 171, - 45, 139, 204, 140, 6, 0, 171, 47, 139, 204, - 140, 6, 0, 66, 139, 171, 140, 0, 66, 4, - 134, 196, 135, 6, 0, 74, 4, 134, 196, 135, - 6, 0, 75, 4, 134, 196, 135, 6, 0, 69, - 139, 171, 140, 0, 69, 4, 134, 196, 135, 6, - 0, 69, 4, 6, 0, 69, 4, 4, 6, 0, - 89, 205, 139, 171, 140, 0, 101, 208, 6, 0, - 102, 208, 6, 0, 101, 139, 171, 140, 0, 102, - 139, 171, 140, 0, 4, 208, 6, 0, 4, 4, - 134, 196, 135, 208, 6, 0, 4, 4, 4, 134, - 196, 135, 6, 0, 4, 196, 6, 0, 60, 132, - 4, 133, 136, 4, 6, 0, 81, 4, 6, 0, - 96, 6, 0, 38, 6, 0, 38, 139, 196, 138, - 196, 138, 196, 138, 196, 138, 196, 138, 196, 140, - 6, 0, 39, 6, 0, 91, 132, 196, 8, 196, - 133, 0, 91, 132, 196, 8, 196, 8, 196, 133, - 0, 91, 4, 92, 139, 196, 8, 196, 140, 0, - 91, 4, 92, 139, 196, 8, 196, 8, 196, 140, - 0, 93, 0, 99, 4, 0, 97, 0, 98, 4, - 6, 0, 94, 132, 196, 133, 0, 95, 0, 65, - 198, 139, 171, 140, 0, 65, 139, 198, 138, 198, - 138, 196, 140, 139, 171, 140, 0, 65, 139, 198, - 138, 198, 138, 198, 138, 196, 140, 139, 171, 140, - 0, 0, 65, 198, 139, 171, 179, 191, 140, 0, - 0, 65, 139, 198, 138, 198, 138, 196, 140, 139, - 171, 180, 191, 140, 0, 0, 65, 139, 198, 138, - 198, 138, 198, 138, 196, 140, 139, 171, 181, 191, - 140, 0, 65, 41, 139, 196, 138, 198, 140, 6, - 0, 65, 44, 139, 196, 138, 198, 140, 6, 0, - 65, 45, 139, 196, 138, 198, 140, 6, 0, 65, - 41, 139, 196, 138, 198, 138, 198, 138, 196, 140, - 6, 0, 65, 44, 139, 196, 138, 198, 138, 198, - 138, 196, 140, 6, 0, 65, 45, 139, 196, 138, - 198, 138, 198, 138, 196, 140, 6, 0, 65, 41, - 139, 196, 138, 198, 138, 198, 138, 198, 138, 196, - 140, 6, 0, 65, 44, 139, 196, 138, 198, 138, - 198, 138, 198, 138, 196, 140, 6, 0, 65, 45, - 139, 196, 138, 198, 138, 198, 138, 198, 138, 196, - 140, 6, 0, 0, 65, 41, 139, 196, 138, 198, - 140, 182, 139, 191, 140, 6, 0, 0, 65, 44, - 139, 196, 138, 198, 140, 183, 139, 191, 140, 6, - 0, 0, 65, 45, 139, 196, 138, 198, 140, 184, - 139, 191, 140, 6, 0, 0, 65, 41, 139, 196, - 138, 198, 138, 198, 138, 196, 140, 185, 139, 191, - 140, 6, 0, 0, 65, 44, 139, 196, 138, 198, - 138, 198, 138, 196, 140, 186, 139, 191, 140, 6, - 0, 0, 65, 45, 139, 196, 138, 198, 138, 198, - 138, 196, 140, 187, 139, 191, 140, 6, 0, 0, - 65, 41, 139, 196, 138, 198, 138, 198, 138, 198, - 138, 196, 140, 188, 139, 191, 140, 6, 0, 0, - 65, 44, 139, 196, 138, 198, 138, 198, 138, 198, - 138, 196, 140, 189, 139, 191, 140, 6, 0, 0, - 65, 45, 139, 196, 138, 198, 138, 198, 138, 198, - 138, 196, 140, 190, 139, 191, 140, 6, 0, 192, - 0, 191, 192, 0, 73, 139, 196, 140, 6, 0, - 73, 139, 202, 138, 202, 140, 6, 0, 73, 139, - 202, 138, 202, 138, 202, 140, 6, 0, 68, 6, - 0, 54, 44, 202, 7, 196, 6, 0, 54, 44, - 202, 7, 196, 57, 59, 196, 6, 0, 54, 44, - 202, 7, 196, 57, 58, 196, 6, 0, 54, 45, - 139, 196, 140, 7, 202, 6, 0, 54, 45, 139, - 196, 140, 7, 202, 4, 6, 0, 51, 45, 139, - 196, 140, 7, 202, 6, 0, 54, 47, 139, 196, - 140, 7, 202, 6, 0, 68, 45, 202, 7, 196, - 6, 0, 68, 45, 202, 6, 0, 41, 202, 92, - 45, 196, 6, 0, 44, 202, 92, 45, 196, 6, - 0, 44, 202, 92, 47, 196, 6, 0, 45, 202, - 92, 47, 196, 6, 0, 70, 6, 0, 71, 6, - 0, 197, 0, 132, 196, 133, 0, 122, 196, 0, - 121, 196, 0, 127, 196, 0, 196, 122, 196, 0, - 196, 121, 196, 0, 196, 123, 196, 0, 196, 124, - 196, 0, 196, 125, 196, 0, 196, 131, 196, 0, - 196, 117, 196, 0, 196, 119, 196, 0, 196, 118, - 196, 0, 196, 120, 196, 0, 196, 114, 196, 0, - 196, 115, 196, 0, 196, 113, 196, 0, 196, 112, - 196, 0, 196, 111, 196, 8, 196, 0, 12, 132, - 196, 133, 0, 13, 132, 196, 133, 0, 14, 132, - 196, 133, 0, 15, 132, 196, 133, 0, 16, 132, - 196, 133, 0, 17, 132, 196, 133, 0, 18, 132, - 196, 133, 0, 19, 132, 196, 133, 0, 20, 132, - 196, 133, 0, 22, 132, 196, 133, 0, 23, 132, - 196, 138, 196, 133, 0, 24, 132, 196, 133, 0, - 25, 132, 196, 133, 0, 26, 132, 196, 133, 0, - 27, 132, 196, 133, 0, 28, 132, 196, 133, 0, - 29, 132, 196, 133, 0, 30, 132, 196, 138, 196, - 133, 0, 31, 132, 196, 138, 196, 133, 0, 32, - 132, 196, 138, 196, 133, 0, 21, 132, 196, 133, - 0, 12, 134, 196, 135, 0, 13, 134, 196, 135, - 0, 14, 134, 196, 135, 0, 15, 134, 196, 135, - 0, 16, 134, 196, 135, 0, 17, 134, 196, 135, - 0, 18, 134, 196, 135, 0, 19, 134, 196, 135, - 0, 20, 134, 196, 135, 0, 22, 134, 196, 135, - 0, 23, 134, 196, 138, 196, 135, 0, 24, 134, - 196, 135, 0, 25, 134, 196, 135, 0, 26, 134, - 196, 135, 0, 27, 134, 196, 135, 0, 28, 134, - 196, 135, 0, 29, 134, 196, 135, 0, 30, 134, - 196, 138, 196, 135, 0, 31, 134, 196, 138, 196, - 135, 0, 32, 134, 196, 138, 196, 135, 0, 21, - 134, 196, 135, 0, 3, 0, 9, 0, 10, 0, - 11, 0, 104, 0, 105, 0, 106, 0, 4, 0, - 4, 141, 139, 196, 140, 0, 4, 134, 196, 135, - 0, 137, 4, 134, 135, 0, 4, 165, 0, 4, - 134, 196, 135, 165, 0, 4, 136, 4, 0, 4, - 134, 196, 135, 136, 4, 0, 4, 136, 4, 165, - 0, 4, 134, 196, 135, 136, 4, 165, 0, 103, - 132, 5, 138, 196, 133, 0, 199, 0, 122, 198, - 0, 121, 198, 0, 198, 122, 198, 0, 198, 121, - 198, 0, 139, 196, 138, 196, 138, 196, 138, 196, - 138, 196, 140, 0, 139, 196, 138, 196, 138, 196, - 138, 196, 140, 0, 139, 196, 138, 196, 138, 196, - 140, 0, 132, 196, 138, 196, 138, 196, 133, 0, - 0, 139, 201, 140, 0, 132, 201, 133, 0, 202, - 0, 201, 138, 202, 0, 196, 0, 203, 0, 139, - 140, 0, 139, 204, 140, 0, 122, 139, 204, 140, - 0, 196, 8, 196, 0, 196, 8, 196, 8, 196, - 0, 41, 139, 196, 140, 0, 169, 0, 172, 0, - 178, 0, 4, 134, 135, 0, 122, 4, 134, 135, - 0, 4, 134, 139, 204, 140, 135, 0, 122, 4, - 134, 139, 204, 140, 135, 0, 196, 0, 203, 0, - 204, 138, 196, 0, 204, 138, 203, 0, 139, 196, - 138, 196, 138, 196, 138, 196, 140, 0, 139, 196, - 138, 196, 138, 196, 140, 0, 4, 0, 4, 136, - 89, 136, 4, 0, 139, 207, 140, 0, 4, 134, - 196, 135, 136, 90, 0, 205, 0, 207, 138, 205, - 0, 5, 0, 40, 0, 35, 132, 208, 138, 208, - 133, 0, 36, 132, 208, 133, 0, 37, 132, 208, - 133, 0, 34, 132, 208, 133, 0, 34, 132, 208, - 138, 204, 133, 0, 34, 132, 4, 136, 4, 133, - 0, 34, 132, 4, 134, 196, 135, 136, 4, 133, +static const short yyrhs[] = { 141, + 0, 1, 6, 0, 0, 141, 142, 0, 145, 0, + 144, 0, 164, 0, 166, 0, 167, 0, 170, 0, + 171, 0, 172, 0, 173, 0, 176, 0, 191, 0, + 192, 0, 193, 0, 175, 0, 174, 0, 117, 0, + 117, 117, 0, 33, 130, 5, 131, 6, 0, 33, + 130, 5, 131, 143, 205, 6, 0, 33, 130, 5, + 136, 201, 131, 6, 0, 33, 130, 5, 136, 201, + 131, 143, 205, 6, 0, 4, 5, 137, 146, 138, + 6, 0, 4, 5, 4, 196, 137, 146, 138, 6, + 0, 0, 146, 149, 0, 146, 153, 0, 146, 156, + 0, 146, 158, 0, 146, 159, 0, 146, 161, 0, + 194, 0, 147, 136, 194, 0, 194, 0, 148, 136, + 194, 0, 0, 0, 4, 150, 130, 147, 131, 151, + 137, 148, 138, 6, 0, 205, 0, 152, 136, 205, + 0, 0, 75, 130, 194, 136, 194, 136, 194, 131, + 154, 137, 152, 138, 6, 0, 205, 0, 155, 136, + 205, 0, 0, 76, 130, 194, 136, 194, 136, 194, + 136, 194, 131, 157, 137, 155, 138, 6, 0, 77, + 137, 198, 138, 137, 198, 138, 6, 0, 0, 78, + 160, 137, 148, 138, 6, 0, 79, 130, 194, 131, + 199, 6, 0, 7, 0, 105, 0, 106, 0, 107, + 0, 108, 0, 126, 0, 127, 0, 4, 162, 194, + 6, 0, 4, 132, 194, 133, 162, 194, 6, 0, + 4, 132, 137, 201, 138, 133, 162, 199, 6, 0, + 4, 132, 133, 7, 199, 6, 0, 4, 132, 133, + 105, 199, 6, 0, 4, 163, 6, 0, 4, 132, + 194, 133, 163, 6, 0, 4, 134, 4, 7, 205, + 6, 0, 4, 132, 194, 133, 134, 4, 7, 205, + 6, 0, 4, 134, 4, 162, 194, 6, 0, 4, + 132, 194, 133, 134, 4, 162, 194, 6, 0, 4, + 134, 4, 163, 6, 0, 4, 132, 194, 133, 134, + 4, 163, 6, 0, 4, 134, 88, 134, 4, 7, + 202, 6, 0, 4, 132, 194, 133, 134, 88, 134, + 4, 7, 202, 6, 0, 4, 134, 89, 7, 203, + 6, 0, 4, 132, 194, 133, 134, 89, 7, 203, + 6, 0, 60, 130, 4, 131, 134, 4, 7, 194, + 6, 0, 60, 130, 4, 131, 134, 4, 7, 205, + 6, 0, 194, 0, 205, 0, 41, 130, 194, 131, + 7, 196, 6, 0, 56, 41, 130, 165, 131, 7, + 199, 6, 0, 71, 41, 199, 7, 137, 194, 136, + 194, 136, 194, 138, 6, 0, 48, 49, 199, 7, + 194, 6, 0, 44, 130, 194, 131, 7, 199, 6, + 0, 46, 130, 194, 131, 7, 199, 6, 0, 42, + 130, 194, 131, 7, 199, 6, 0, 42, 130, 194, + 131, 7, 199, 52, 196, 6, 0, 43, 130, 194, + 131, 7, 199, 6, 0, 43, 130, 194, 131, 7, + 199, 52, 196, 6, 0, 50, 130, 194, 131, 7, + 137, 194, 136, 194, 136, 5, 136, 5, 136, 5, + 138, 6, 0, 81, 130, 194, 131, 7, 199, 6, + 0, 82, 130, 194, 131, 7, 199, 6, 0, 83, + 130, 194, 131, 7, 199, 87, 199, 84, 194, 6, + 0, 44, 67, 130, 194, 131, 7, 199, 6, 0, + 71, 44, 199, 7, 137, 194, 136, 194, 136, 194, + 138, 6, 0, 56, 44, 130, 165, 131, 7, 199, + 6, 0, 52, 45, 130, 194, 131, 7, 199, 6, + 0, 53, 45, 130, 194, 131, 7, 199, 6, 0, + 45, 67, 130, 194, 131, 7, 199, 6, 0, 56, + 45, 130, 165, 131, 7, 199, 6, 0, 55, 47, + 130, 194, 131, 7, 199, 6, 0, 47, 130, 194, + 131, 7, 199, 6, 0, 56, 47, 130, 165, 131, + 7, 199, 6, 0, 62, 196, 137, 168, 138, 0, + 61, 137, 196, 136, 196, 136, 194, 138, 137, 168, + 138, 0, 63, 196, 137, 168, 138, 0, 64, 137, + 196, 136, 194, 138, 137, 168, 138, 0, 170, 0, + 169, 0, 167, 0, 0, 169, 166, 0, 169, 41, + 137, 201, 138, 6, 0, 169, 44, 137, 201, 138, + 6, 0, 169, 45, 137, 201, 138, 6, 0, 169, + 47, 137, 201, 138, 6, 0, 66, 137, 169, 138, + 0, 66, 4, 132, 194, 133, 6, 0, 73, 4, + 132, 194, 133, 6, 0, 74, 4, 132, 194, 133, + 6, 0, 69, 137, 169, 138, 0, 69, 4, 132, + 194, 133, 6, 0, 69, 4, 6, 0, 69, 4, + 4, 6, 0, 88, 202, 137, 169, 138, 0, 99, + 205, 6, 0, 100, 205, 6, 0, 99, 137, 169, + 138, 0, 100, 137, 169, 138, 0, 4, 205, 6, + 0, 4, 4, 132, 194, 133, 205, 6, 0, 4, + 4, 4, 132, 194, 133, 6, 0, 4, 194, 6, + 0, 60, 130, 4, 131, 134, 4, 6, 0, 80, + 4, 6, 0, 95, 6, 0, 38, 6, 0, 38, + 137, 194, 136, 194, 136, 194, 136, 194, 136, 194, + 136, 194, 138, 6, 0, 39, 6, 0, 90, 130, + 194, 8, 194, 131, 0, 90, 130, 194, 8, 194, + 8, 194, 131, 0, 90, 4, 91, 137, 194, 8, + 194, 138, 0, 90, 4, 91, 137, 194, 8, 194, + 8, 194, 138, 0, 92, 0, 98, 4, 0, 96, + 0, 97, 4, 6, 0, 93, 130, 194, 131, 0, + 94, 0, 65, 196, 137, 169, 138, 0, 65, 137, + 196, 136, 196, 136, 194, 138, 137, 169, 138, 0, + 65, 137, 196, 136, 196, 136, 196, 136, 194, 138, + 137, 169, 138, 0, 0, 65, 196, 137, 169, 177, + 189, 138, 0, 0, 65, 137, 196, 136, 196, 136, + 194, 138, 137, 169, 178, 189, 138, 0, 0, 65, + 137, 196, 136, 196, 136, 196, 136, 194, 138, 137, + 169, 179, 189, 138, 0, 65, 41, 137, 194, 136, + 196, 138, 6, 0, 65, 44, 137, 194, 136, 196, + 138, 6, 0, 65, 45, 137, 194, 136, 196, 138, + 6, 0, 65, 41, 137, 194, 136, 196, 136, 196, + 136, 194, 138, 6, 0, 65, 44, 137, 194, 136, + 196, 136, 196, 136, 194, 138, 6, 0, 65, 45, + 137, 194, 136, 196, 136, 196, 136, 194, 138, 6, + 0, 65, 41, 137, 194, 136, 196, 136, 196, 136, + 196, 136, 194, 138, 6, 0, 65, 44, 137, 194, + 136, 196, 136, 196, 136, 196, 136, 194, 138, 6, + 0, 65, 45, 137, 194, 136, 196, 136, 196, 136, + 196, 136, 194, 138, 6, 0, 0, 65, 41, 137, + 194, 136, 196, 138, 180, 137, 189, 138, 6, 0, + 0, 65, 44, 137, 194, 136, 196, 138, 181, 137, + 189, 138, 6, 0, 0, 65, 45, 137, 194, 136, + 196, 138, 182, 137, 189, 138, 6, 0, 0, 65, + 41, 137, 194, 136, 196, 136, 196, 136, 194, 138, + 183, 137, 189, 138, 6, 0, 0, 65, 44, 137, + 194, 136, 196, 136, 196, 136, 194, 138, 184, 137, + 189, 138, 6, 0, 0, 65, 45, 137, 194, 136, + 196, 136, 196, 136, 194, 138, 185, 137, 189, 138, + 6, 0, 0, 65, 41, 137, 194, 136, 196, 136, + 196, 136, 196, 136, 194, 138, 186, 137, 189, 138, + 6, 0, 0, 65, 44, 137, 194, 136, 196, 136, + 196, 136, 196, 136, 194, 138, 187, 137, 189, 138, + 6, 0, 0, 65, 45, 137, 194, 136, 196, 136, + 196, 136, 196, 136, 194, 138, 188, 137, 189, 138, + 6, 0, 190, 0, 189, 190, 0, 72, 137, 194, + 138, 6, 0, 72, 137, 199, 136, 199, 138, 6, + 0, 72, 137, 199, 136, 199, 136, 199, 138, 6, + 0, 68, 6, 0, 54, 44, 199, 7, 194, 6, + 0, 54, 44, 199, 7, 194, 57, 59, 194, 6, + 0, 54, 44, 199, 7, 194, 57, 58, 194, 6, + 0, 54, 45, 137, 194, 138, 7, 199, 6, 0, + 54, 45, 137, 194, 138, 7, 199, 4, 6, 0, + 51, 45, 137, 194, 138, 7, 199, 6, 0, 54, + 47, 137, 194, 138, 7, 199, 6, 0, 68, 45, + 199, 7, 194, 6, 0, 68, 45, 199, 6, 0, + 41, 199, 91, 45, 194, 6, 0, 44, 199, 91, + 45, 194, 6, 0, 44, 199, 91, 47, 194, 6, + 0, 45, 199, 91, 47, 194, 6, 0, 70, 6, + 0, 195, 0, 130, 194, 131, 0, 120, 194, 0, + 119, 194, 0, 125, 194, 0, 194, 120, 194, 0, + 194, 119, 194, 0, 194, 121, 194, 0, 194, 122, + 194, 0, 194, 123, 194, 0, 194, 129, 194, 0, + 194, 115, 194, 0, 194, 117, 194, 0, 194, 116, + 194, 0, 194, 118, 194, 0, 194, 112, 194, 0, + 194, 113, 194, 0, 194, 111, 194, 0, 194, 110, + 194, 0, 194, 109, 194, 8, 194, 0, 12, 130, + 194, 131, 0, 13, 130, 194, 131, 0, 14, 130, + 194, 131, 0, 15, 130, 194, 131, 0, 16, 130, + 194, 131, 0, 17, 130, 194, 131, 0, 18, 130, + 194, 131, 0, 19, 130, 194, 131, 0, 20, 130, + 194, 131, 0, 22, 130, 194, 131, 0, 23, 130, + 194, 136, 194, 131, 0, 24, 130, 194, 131, 0, + 25, 130, 194, 131, 0, 26, 130, 194, 131, 0, + 27, 130, 194, 131, 0, 28, 130, 194, 131, 0, + 29, 130, 194, 131, 0, 30, 130, 194, 136, 194, + 131, 0, 31, 130, 194, 136, 194, 131, 0, 32, + 130, 194, 136, 194, 131, 0, 21, 130, 194, 131, + 0, 12, 132, 194, 133, 0, 13, 132, 194, 133, + 0, 14, 132, 194, 133, 0, 15, 132, 194, 133, + 0, 16, 132, 194, 133, 0, 17, 132, 194, 133, + 0, 18, 132, 194, 133, 0, 19, 132, 194, 133, + 0, 20, 132, 194, 133, 0, 22, 132, 194, 133, + 0, 23, 132, 194, 136, 194, 133, 0, 24, 132, + 194, 133, 0, 25, 132, 194, 133, 0, 26, 132, + 194, 133, 0, 27, 132, 194, 133, 0, 28, 132, + 194, 133, 0, 29, 132, 194, 133, 0, 30, 132, + 194, 136, 194, 133, 0, 31, 132, 194, 136, 194, + 133, 0, 32, 132, 194, 136, 194, 133, 0, 21, + 132, 194, 133, 0, 3, 0, 9, 0, 10, 0, + 11, 0, 102, 0, 103, 0, 104, 0, 4, 0, + 4, 139, 137, 194, 138, 0, 4, 132, 194, 133, + 0, 135, 4, 132, 133, 0, 4, 163, 0, 4, + 132, 194, 133, 163, 0, 4, 134, 4, 0, 4, + 132, 194, 133, 134, 4, 0, 4, 134, 4, 163, + 0, 4, 132, 194, 133, 134, 4, 163, 0, 101, + 130, 5, 136, 194, 131, 0, 197, 0, 120, 196, + 0, 119, 196, 0, 196, 120, 196, 0, 196, 119, + 196, 0, 137, 194, 136, 194, 136, 194, 136, 194, + 136, 194, 138, 0, 137, 194, 136, 194, 136, 194, + 136, 194, 138, 0, 137, 194, 136, 194, 136, 194, + 138, 0, 130, 194, 136, 194, 136, 194, 131, 0, + 0, 137, 198, 138, 0, 130, 198, 131, 0, 199, + 0, 198, 136, 199, 0, 194, 0, 200, 0, 137, + 138, 0, 137, 201, 138, 0, 120, 137, 201, 138, + 0, 194, 8, 194, 0, 194, 8, 194, 8, 194, + 0, 41, 137, 194, 138, 0, 167, 0, 170, 0, + 176, 0, 4, 132, 133, 0, 120, 4, 132, 133, + 0, 4, 132, 137, 201, 138, 133, 0, 120, 4, + 132, 137, 201, 138, 133, 0, 194, 0, 200, 0, + 201, 136, 194, 0, 201, 136, 200, 0, 137, 194, + 136, 194, 136, 194, 136, 194, 138, 0, 137, 194, + 136, 194, 136, 194, 138, 0, 4, 0, 4, 134, + 88, 134, 4, 0, 137, 204, 138, 0, 4, 132, + 194, 133, 134, 89, 0, 202, 0, 204, 136, 202, + 0, 5, 0, 40, 0, 35, 130, 205, 136, 205, + 131, 0, 36, 130, 205, 131, 0, 37, 130, 205, + 131, 0, 34, 130, 205, 131, 0, 34, 130, 205, + 136, 201, 131, 0, 34, 130, 4, 134, 4, 131, + 0, 34, 130, 4, 132, 194, 133, 134, 4, 131, 0 }; @@ -523,32 +514,31 @@ static const short yyrline[] = { 0, 603, 638, 677, 731, 748, 766, 777, 796, 810, 827, 853, 880, 894, 911, 925, 942, 962, 985, 995, 1009, 1014, 1021, 1043, 1059, 1066, 1088, 1106, 1124, 1142, 1168, - 1186, 1212, 1232, 1256, 1280, 1306, 1323, 1330, 1349, 1368, - 1407, 1432, 1451, 1470, 1486, 1506, 1523, 1540, 1560, 1566, - 1571, 1576, 1583, 1585, 1586, 1589, 1594, 1598, 1614, 1630, - 1646, 1666, 1681, 1687, 1693, 1704, 1714, 1724, 1739, 1757, - 1771, 1778, 1784, 1793, 1806, 1852, 1867, 1878, 1898, 1908, - 1930, 1934, 1939, 1944, 1954, 1971, 1987, 2013, 2040, 2072, - 2079, 2084, 2090, 2094, 2102, 2111, 2119, 2127, 2132, 2140, - 2145, 2153, 2158, 2168, 2175, 2182, 2189, 2196, 2203, 2210, - 2217, 2224, 2231, 2236, 2243, 2248, 2255, 2260, 2267, 2272, - 2279, 2284, 2291, 2296, 2303, 2308, 2315, 2320, 2327, 2332, - 2342, 2346, 2351, 2361, 2383, 2407, 2415, 2434, 2452, 2470, - 2499, 2534, 2539, 2566, 2580, 2598, 2605, 2611, 2614, 2620, - 2625, 2634, 2636, 2637, 2638, 2639, 2640, 2641, 2642, 2643, - 2650, 2651, 2652, 2653, 2654, 2655, 2656, 2657, 2658, 2659, - 2660, 2661, 2662, 2663, 2664, 2665, 2666, 2667, 2668, 2669, - 2670, 2671, 2672, 2673, 2674, 2675, 2676, 2677, 2678, 2679, - 2680, 2681, 2683, 2684, 2685, 2686, 2687, 2688, 2689, 2690, - 2691, 2692, 2693, 2694, 2695, 2696, 2697, 2698, 2699, 2700, - 2701, 2702, 2703, 2708, 2713, 2714, 2715, 2716, 2717, 2718, - 2722, 2738, 2753, 2773, 2787, 2800, 2823, 2841, 2859, 2877, - 2895, 2902, 2907, 2911, 2915, 2919, 2925, 2930, 2934, 2938, - 2944, 2948, 2952, 2958, 2964, 2971, 2977, 2981, 2986, 2990, - 3001, 3008, 3019, 3039, 3049, 3059, 3069, 3086, 3105, 3129, - 3157, 3163, 3167, 3171, 3183, 3188, 3200, 3207, 3228, 3233, - 3247, 3253, 3259, 3264, 3272, 3280, 3294, 3308, 3312, 3331, - 3353 + 1186, 1212, 1232, 1256, 1280, 1306, 1323, 1330, 1349, 1367, + 1405, 1421, 1441, 1458, 1475, 1495, 1501, 1506, 1511, 1518, + 1520, 1521, 1524, 1529, 1533, 1549, 1565, 1581, 1601, 1616, + 1622, 1628, 1639, 1649, 1659, 1674, 1692, 1706, 1713, 1719, + 1728, 1741, 1787, 1802, 1813, 1833, 1843, 1865, 1869, 1874, + 1879, 1889, 1906, 1922, 1948, 1975, 2007, 2014, 2019, 2025, + 2029, 2037, 2046, 2054, 2062, 2067, 2075, 2080, 2088, 2093, + 2103, 2110, 2117, 2124, 2131, 2138, 2145, 2152, 2159, 2166, + 2171, 2178, 2183, 2190, 2195, 2202, 2207, 2214, 2219, 2226, + 2231, 2238, 2243, 2250, 2255, 2262, 2267, 2277, 2281, 2286, + 2296, 2318, 2342, 2350, 2369, 2387, 2405, 2434, 2469, 2474, + 2501, 2515, 2533, 2540, 2546, 2549, 2557, 2567, 2569, 2570, + 2571, 2572, 2573, 2574, 2575, 2576, 2583, 2584, 2585, 2586, + 2587, 2588, 2589, 2590, 2591, 2592, 2593, 2594, 2595, 2596, + 2597, 2598, 2599, 2600, 2601, 2602, 2603, 2604, 2605, 2606, + 2607, 2608, 2609, 2610, 2611, 2612, 2613, 2614, 2616, 2617, + 2618, 2619, 2620, 2621, 2622, 2623, 2624, 2625, 2626, 2627, + 2628, 2629, 2630, 2631, 2632, 2633, 2634, 2635, 2636, 2641, + 2646, 2647, 2648, 2649, 2650, 2651, 2655, 2671, 2686, 2706, + 2720, 2733, 2756, 2774, 2792, 2810, 2828, 2835, 2840, 2844, + 2848, 2852, 2858, 2863, 2867, 2871, 2877, 2881, 2885, 2891, + 2897, 2904, 2910, 2914, 2919, 2923, 2934, 2941, 2952, 2972, + 2982, 2992, 3002, 3019, 3038, 3062, 3090, 3096, 3100, 3104, + 3116, 3121, 3133, 3140, 3161, 3166, 3180, 3186, 3192, 3197, + 3205, 3213, 3227, 3241, 3245, 3264, 3286 }; #endif @@ -564,64 +554,63 @@ static const char * const yytname[] = { "$","error","$undefined.","tDOUBLE", "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","tAlias", -"tAliasWithOptions","tText2D","tText3D","tInterpolationScheme","tTime","tGrain", -"tCombine","tBSpline","tBezier","tNurbs","tOrder","tWith","tBounds","tKnots", -"tColor","tColorTable","tFor","tIn","tEndFor","tIf","tEndIf","tExit","tReturn", -"tCall","tFunction","tTrimmed","tShow","tHide","tGetValue","tGMSH_MAJOR_VERSION", -"tGMSH_MINOR_VERSION","tGMSH_PATCH_VERSION","tAFFECTPLUS","tAFFECTMINUS","tAFFECTTIMES", -"tAFFECTDIVIDE","'?'","tOR","tAND","tEQUAL","tNOTEQUAL","tAPPROXEQUAL","'<'", -"tLESSOREQUAL","'>'","tGREATEROREQUAL","'+'","'-'","'*'","'/'","'%'","tCROSSPRODUCT", -"'!'","tPLUSPLUS","tMINUSMINUS","UNARYPREC","'^'","'('","')'","'['","']'","'.'", -"'#'","','","'{'","'}'","'~'","All","GeoFormatItems","GeoFormatItem","SendToFile", -"Printf","View","Views","ElementCoords","ElementValues","Element","@1","@2", -"Text2DValues","Text2D","@3","Text3DValues","Text3D","@4","InterpolationMatrix", -"Time","@5","Grain","NumericAffectation","NumericIncrement","Affectation","PhysicalId", -"Shape","Transform","MultipleShape","ListOfShapes","Duplicata","Delete","Colorify", -"Visibility","Command","Loop","Extrude","@6","@7","@8","@9","@10","@11","@12", -"@13","@14","@15","@16","@17","ExtrudeParameters","ExtrudeParameter","Transfinite", -"Embedding","Coherence","FExpr","FExpr_Single","VExpr","VExpr_Single","ListOfListOfDouble", -"RecursiveListOfListOfDouble","ListOfDouble","FExpr_Multi","RecursiveListOfDouble", -"ColorExpr","ListOfColor","RecursiveListOfColor","StringExpr", NULL +"tRecombine","tDelete","tCoherence","tAttractor","tLayers","tAlias","tAliasWithOptions", +"tText2D","tText3D","tInterpolationScheme","tTime","tGrain","tCombine","tBSpline", +"tBezier","tNurbs","tOrder","tWith","tBounds","tKnots","tColor","tColorTable", +"tFor","tIn","tEndFor","tIf","tEndIf","tExit","tReturn","tCall","tFunction", +"tShow","tHide","tGetValue","tGMSH_MAJOR_VERSION","tGMSH_MINOR_VERSION","tGMSH_PATCH_VERSION", +"tAFFECTPLUS","tAFFECTMINUS","tAFFECTTIMES","tAFFECTDIVIDE","'?'","tOR","tAND", +"tEQUAL","tNOTEQUAL","tAPPROXEQUAL","'<'","tLESSOREQUAL","'>'","tGREATEROREQUAL", +"'+'","'-'","'*'","'/'","'%'","tCROSSPRODUCT","'!'","tPLUSPLUS","tMINUSMINUS", +"UNARYPREC","'^'","'('","')'","'['","']'","'.'","'#'","','","'{'","'}'","'~'", +"All","GeoFormatItems","GeoFormatItem","SendToFile","Printf","View","Views", +"ElementCoords","ElementValues","Element","@1","@2","Text2DValues","Text2D", +"@3","Text3DValues","Text3D","@4","InterpolationMatrix","Time","@5","Grain", +"NumericAffectation","NumericIncrement","Affectation","PhysicalId","Shape","Transform", +"MultipleShape","ListOfShapes","Duplicata","Delete","Colorify","Visibility", +"Command","Loop","Extrude","@6","@7","@8","@9","@10","@11","@12","@13","@14", +"@15","@16","@17","ExtrudeParameters","ExtrudeParameter","Transfinite","Embedding", +"Coherence","FExpr","FExpr_Single","VExpr","VExpr_Single","RecursiveListOfListOfDouble", +"ListOfDouble","FExpr_Multi","RecursiveListOfDouble","ColorExpr","ListOfColor", +"RecursiveListOfColor","StringExpr", NULL }; #endif static const short yyr1[] = { 0, - 142, 142, 143, 143, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 145, - 145, 146, 146, 146, 146, 147, 147, 148, 148, 148, - 148, 148, 148, 148, 149, 149, 150, 150, 152, 153, - 151, 154, 154, 156, 155, 157, 157, 159, 158, 160, - 162, 161, 163, 164, 164, 164, 164, 164, 165, 165, + 140, 140, 141, 141, 142, 142, 142, 142, 142, 142, + 142, 142, 142, 142, 142, 142, 142, 142, 142, 143, + 143, 144, 144, 144, 144, 145, 145, 146, 146, 146, + 146, 146, 146, 146, 147, 147, 148, 148, 150, 151, + 149, 152, 152, 154, 153, 155, 155, 157, 156, 158, + 160, 159, 161, 162, 162, 162, 162, 162, 163, 163, + 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, + 164, 164, 164, 164, 164, 164, 164, 164, 164, 165, + 165, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, - 166, 166, 166, 166, 166, 166, 166, 166, 166, 167, - 167, 168, 168, 168, 168, 168, 168, 168, 168, 168, - 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, - 168, 168, 168, 168, 168, 168, 168, 168, 169, 169, - 169, 169, 170, 170, 170, 171, 171, 171, 171, 171, - 171, 172, 172, 172, 172, 173, 173, 173, 173, 174, - 175, 175, 175, 175, 176, 176, 176, 176, 176, 176, - 176, 176, 176, 176, 177, 177, 177, 177, 177, 177, - 177, 177, 177, 177, 178, 178, 178, 179, 178, 180, - 178, 181, 178, 178, 178, 178, 178, 178, 178, 178, - 178, 178, 182, 178, 183, 178, 184, 178, 185, 178, - 186, 178, 187, 178, 188, 178, 189, 178, 190, 178, - 191, 191, 192, 192, 192, 192, 193, 193, 193, 193, - 193, 193, 193, 193, 193, 194, 194, 194, 194, 195, - 195, 196, 196, 196, 196, 196, 196, 196, 196, 196, - 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, - 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, - 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, - 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, - 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, - 196, 196, 196, 197, 197, 197, 197, 197, 197, 197, - 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, - 197, 198, 198, 198, 198, 198, 199, 199, 199, 199, - 200, 200, 200, 201, 201, 202, 202, 202, 202, 202, - 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, - 204, 204, 204, 204, 205, 205, 205, 205, 206, 206, - 207, 207, 208, 208, 208, 208, 208, 208, 208, 208, - 208 + 166, 166, 166, 166, 166, 167, 167, 167, 167, 168, + 168, 168, 169, 169, 169, 169, 169, 169, 170, 170, + 170, 170, 171, 171, 171, 171, 172, 173, 173, 173, + 173, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 176, 176, 176, 177, 176, 178, 176, 179, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 180, + 176, 181, 176, 182, 176, 183, 176, 184, 176, 185, + 176, 186, 176, 187, 176, 188, 176, 189, 189, 190, + 190, 190, 190, 191, 191, 191, 191, 191, 191, 191, + 191, 191, 192, 192, 192, 192, 193, 194, 194, 194, + 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, + 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, + 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, + 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, + 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, + 194, 194, 194, 194, 194, 194, 194, 194, 194, 195, + 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, + 195, 195, 195, 195, 195, 195, 195, 196, 196, 196, + 196, 196, 197, 197, 197, 197, -1, -1, -1, 198, + 198, 199, 199, 199, 199, 199, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 201, 201, 201, 201, + 202, 202, 202, 202, 203, 203, 204, 204, 205, 205, + 205, 205, 205, 205, 205, 205, 205 }; static const short yyr2[] = { 0, @@ -635,31 +624,30 @@ static const short yyr2[] = { 0, 9, 5, 8, 8, 11, 6, 9, 9, 9, 1, 1, 7, 8, 12, 6, 7, 7, 7, 9, 7, 9, 17, 7, 7, 11, 8, 12, 8, 8, 8, - 12, 22, 20, 8, 8, 8, 7, 8, 5, 11, - 5, 9, 1, 1, 1, 0, 2, 6, 6, 6, - 6, 4, 6, 6, 6, 4, 6, 3, 4, 5, - 3, 3, 4, 4, 3, 7, 7, 3, 7, 3, - 2, 2, 15, 2, 6, 8, 8, 10, 1, 2, - 1, 3, 4, 1, 5, 11, 13, 0, 7, 0, - 13, 0, 15, 8, 8, 8, 12, 12, 12, 14, - 14, 14, 0, 12, 0, 12, 0, 12, 0, 16, - 0, 16, 0, 16, 0, 18, 0, 18, 0, 18, - 1, 2, 5, 7, 9, 2, 6, 9, 9, 8, - 9, 8, 8, 6, 4, 6, 6, 6, 6, 2, - 2, 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, 1, 1, - 1, 5, 4, 4, 2, 5, 3, 6, 4, 7, - 6, 1, 2, 2, 3, 3, 11, 9, 7, 7, - 0, 3, 3, 1, 3, 1, 1, 2, 3, 4, - 3, 5, 4, 1, 1, 1, 3, 4, 6, 7, - 1, 1, 3, 3, 9, 7, 1, 5, 3, 6, - 1, 3, 1, 1, 6, 4, 4, 4, 6, 6, - 9 + 8, 8, 8, 7, 8, 5, 11, 5, 9, 1, + 1, 1, 0, 2, 6, 6, 6, 6, 4, 6, + 6, 6, 4, 6, 3, 4, 5, 3, 3, 4, + 4, 3, 7, 7, 3, 7, 3, 2, 2, 15, + 2, 6, 8, 8, 10, 1, 2, 1, 3, 4, + 1, 5, 11, 13, 0, 7, 0, 13, 0, 15, + 8, 8, 8, 12, 12, 12, 14, 14, 14, 0, + 12, 0, 12, 0, 12, 0, 16, 0, 16, 0, + 16, 0, 18, 0, 18, 0, 18, 1, 2, 5, + 7, 9, 2, 6, 9, 9, 8, 9, 8, 8, + 6, 4, 6, 6, 6, 6, 2, 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, 1, 1, 1, 5, 4, 4, + 2, 5, 3, 6, 4, 7, 6, 1, 2, 2, + 3, 3, 11, 9, 7, 7, 0, 3, 3, 1, + 3, 1, 1, 2, 3, 4, 3, 5, 4, 1, + 1, 1, 3, 4, 6, 7, 1, 1, 3, 3, + 9, 7, 1, 5, 3, 6, 1, 3, 1, 1, + 6, 4, 4, 4, 6, 6, 9 }; static const short yydefact[] = { 0, @@ -667,1581 +655,1507 @@ static const short yydefact[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 149, 0, 154, 0, 151, 0, 0, 0, - 0, 0, 4, 6, 5, 7, 8, 9, 10, 11, - 12, 13, 19, 18, 14, 15, 16, 17, 274, 281, - 333, 54, 275, 276, 277, 0, 0, 0, 0, 0, + 0, 146, 0, 151, 0, 148, 0, 0, 0, 0, + 4, 6, 5, 7, 8, 9, 10, 11, 12, 13, + 19, 18, 14, 15, 16, 17, 270, 277, 329, 54, + 271, 272, 273, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 330, 0, + 274, 275, 276, 55, 56, 57, 58, 0, 0, 0, + 59, 60, 0, 0, 0, 0, 0, 0, 0, 208, + 0, 0, 139, 0, 141, 277, 0, 0, 0, 0, + 310, 311, 312, 302, 0, 303, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 334, 0, 278, 279, 280, 55, 56, 57, 58, 0, - 0, 0, 59, 60, 0, 0, 0, 0, 0, 0, - 0, 212, 0, 0, 142, 0, 144, 281, 0, 0, - 0, 0, 314, 315, 316, 306, 0, 307, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 288, 0, 0, 0, 0, + 0, 0, 0, 0, 113, 0, 0, 113, 207, 0, + 0, 0, 0, 0, 0, 0, 0, 323, 0, 0, + 0, 0, 0, 138, 0, 147, 329, 113, 0, 113, + 0, 0, 0, 0, 0, 281, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 292, 0, 0, - 0, 0, 0, 0, 0, 0, 116, 0, 0, 116, - 210, 211, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 327, 0, 0, 0, 0, 0, 141, 0, 150, - 0, 333, 116, 0, 116, 0, 0, 0, 0, 0, - 285, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 277, 211, 210, 212, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 281, 215, 214, 216, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 66, 138, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 132, 0, 0, 0, 0, + 277, 0, 0, 0, 304, 317, 318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 135, 0, 0, 0, 0, 281, 0, 0, 0, 308, - 321, 322, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 294, - 293, 0, 0, 0, 0, 116, 116, 0, 0, 0, - 0, 0, 0, 0, 0, 116, 0, 0, 0, 0, - 128, 0, 0, 0, 0, 0, 0, 140, 0, 0, - 0, 0, 0, 0, 0, 116, 0, 0, 0, 152, - 0, 0, 131, 0, 132, 0, 0, 287, 0, 0, + 0, 0, 0, 0, 290, 289, 0, 0, 0, 0, + 113, 113, 0, 0, 0, 0, 0, 0, 0, 0, + 113, 0, 0, 0, 0, 125, 0, 0, 0, 0, + 0, 0, 137, 0, 0, 0, 0, 0, 113, 0, + 0, 0, 149, 0, 128, 0, 129, 0, 0, 283, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 213, 0, 0, 0, 0, 54, 0, 0, 0, 0, - 0, 61, 0, 230, 229, 227, 228, 223, 225, 224, - 226, 218, 217, 219, 220, 221, 222, 0, 0, 0, - 317, 0, 0, 0, 0, 0, 213, 0, 309, 311, - 0, 0, 0, 0, 213, 0, 0, 0, 0, 0, + 0, 0, 209, 0, 0, 0, 0, 54, 0, 0, + 0, 0, 0, 61, 0, 226, 225, 223, 224, 219, + 221, 220, 222, 214, 213, 215, 216, 217, 218, 0, + 0, 0, 313, 0, 0, 0, 0, 0, 209, 0, + 305, 307, 0, 0, 0, 0, 209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 80, 81, 0, 0, 0, 0, 0, 0, 0, - 296, 295, 115, 0, 114, 113, 0, 0, 0, 0, - 0, 0, 0, 158, 0, 0, 0, 0, 0, 122, - 117, 205, 0, 129, 0, 126, 0, 0, 0, 0, + 0, 0, 0, 80, 81, 0, 0, 0, 0, 0, + 0, 0, 292, 291, 112, 0, 111, 110, 0, 0, + 0, 0, 0, 0, 0, 155, 0, 0, 0, 0, + 0, 119, 114, 202, 0, 126, 0, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 153, 0, 133, 134, 0, 283, 289, 0, 28, 39, - 0, 0, 0, 51, 0, 0, 29, 30, 31, 32, - 33, 34, 232, 253, 233, 254, 234, 255, 235, 256, - 236, 257, 237, 258, 238, 259, 239, 260, 240, 261, - 252, 273, 241, 262, 0, 0, 243, 264, 244, 265, - 245, 266, 246, 267, 247, 268, 248, 269, 0, 0, - 0, 0, 0, 0, 0, 0, 338, 0, 0, 336, - 337, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 72, 0, 0, 0, 0, 284, 0, 22, 20, 0, - 0, 0, 0, 283, 313, 318, 0, 310, 0, 323, - 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 150, 130, 131, 0, 279, 285, 0, 28, 39, 0, + 0, 0, 51, 0, 0, 29, 30, 31, 32, 33, + 34, 228, 249, 229, 250, 230, 251, 231, 252, 232, + 253, 233, 254, 234, 255, 235, 256, 236, 257, 248, + 269, 237, 258, 0, 0, 239, 260, 240, 261, 241, + 262, 242, 263, 243, 264, 244, 265, 0, 0, 0, + 0, 0, 0, 0, 0, 334, 0, 0, 332, 333, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, + 0, 0, 0, 0, 280, 0, 22, 20, 0, 0, + 0, 0, 279, 309, 314, 0, 306, 0, 319, 320, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 109, 111, 0, 0, 0, 0, 0, 155, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, + 108, 0, 0, 0, 0, 0, 152, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 130, - 0, 0, 0, 0, 0, 286, 0, 282, 0, 0, - 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, - 65, 0, 0, 0, 0, 0, 67, 68, 70, 0, - 0, 331, 0, 76, 231, 21, 0, 0, 0, 0, - 0, 0, 312, 206, 0, 0, 0, 0, 207, 208, - 0, 209, 0, 0, 85, 0, 0, 0, 0, 197, + 0, 0, 0, 0, 0, 0, 127, 0, 0, 0, + 0, 282, 0, 278, 0, 0, 0, 0, 0, 0, + 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 64, 65, 0, 0, 0, + 0, 0, 67, 68, 70, 0, 0, 327, 0, 76, + 227, 21, 0, 0, 0, 0, 0, 0, 308, 203, + 0, 0, 0, 0, 204, 205, 0, 206, 0, 0, + 85, 0, 0, 0, 0, 194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 188, 120, 0, 0, + 0, 0, 0, 0, 201, 124, 0, 0, 121, 122, + 0, 0, 0, 324, 0, 0, 0, 142, 134, 284, + 133, 0, 0, 0, 0, 0, 300, 0, 0, 238, + 259, 245, 266, 246, 267, 247, 268, 0, 336, 335, + 331, 287, 0, 54, 0, 0, 0, 0, 62, 0, + 0, 0, 325, 23, 24, 0, 0, 315, 0, 82, + 88, 0, 90, 0, 0, 86, 0, 87, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 191, 123, 0, 0, 0, 0, 0, 0, 204, 127, - 0, 0, 124, 125, 0, 0, 0, 301, 0, 328, - 0, 0, 0, 145, 0, 137, 288, 136, 0, 0, - 0, 0, 0, 304, 0, 0, 242, 263, 249, 270, - 250, 271, 251, 272, 0, 340, 339, 335, 291, 0, - 54, 0, 0, 0, 0, 62, 0, 0, 0, 329, - 23, 24, 0, 0, 319, 0, 82, 88, 0, 90, - 0, 0, 86, 0, 87, 107, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, - 0, 0, 0, 0, 116, 0, 173, 0, 175, 0, - 177, 0, 0, 196, 0, 159, 192, 0, 0, 0, - 0, 0, 0, 0, 0, 93, 94, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 290, 27, 0, 35, - 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, - 0, 73, 0, 0, 74, 0, 332, 0, 0, 320, - 0, 0, 96, 104, 0, 202, 99, 100, 0, 0, - 0, 200, 203, 106, 83, 98, 105, 108, 0, 0, - 0, 300, 0, 299, 0, 0, 164, 0, 0, 165, - 0, 0, 166, 0, 0, 0, 306, 0, 118, 119, - 120, 121, 0, 0, 301, 0, 0, 0, 0, 0, - 326, 0, 147, 146, 0, 40, 0, 0, 0, 305, - 0, 0, 0, 0, 0, 63, 69, 71, 0, 77, - 0, 25, 0, 89, 91, 0, 199, 198, 201, 78, - 79, 116, 0, 112, 0, 0, 0, 0, 0, 0, - 116, 0, 0, 0, 0, 0, 0, 303, 302, 0, - 0, 0, 0, 0, 0, 36, 0, 0, 0, 38, - 52, 53, 341, 0, 330, 0, 0, 0, 0, 298, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 160, - 0, 193, 0, 0, 0, 0, 0, 0, 325, 148, - 0, 0, 0, 0, 0, 75, 0, 0, 110, 0, - 179, 0, 0, 181, 0, 0, 183, 0, 0, 156, - 0, 116, 0, 0, 0, 0, 0, 0, 95, 0, - 0, 44, 0, 50, 0, 0, 297, 167, 0, 0, - 174, 168, 0, 0, 176, 169, 0, 0, 178, 0, - 162, 0, 194, 84, 97, 0, 0, 101, 0, 0, - 0, 0, 0, 0, 185, 0, 187, 0, 189, 161, - 157, 0, 0, 0, 0, 41, 0, 48, 0, 0, - 0, 170, 0, 0, 171, 0, 0, 172, 0, 0, - 195, 0, 0, 0, 42, 0, 143, 0, 0, 0, - 0, 0, 0, 0, 163, 0, 0, 0, 0, 0, - 0, 180, 0, 182, 0, 184, 0, 0, 0, 43, - 45, 0, 46, 92, 0, 0, 0, 0, 0, 0, - 0, 186, 188, 190, 0, 0, 47, 49, 0, 0, - 0, 103, 0, 102, 0, 0, 0 + 0, 0, 136, 0, 0, 0, 0, 113, 0, 170, + 0, 172, 0, 174, 0, 0, 193, 0, 156, 189, + 0, 0, 0, 0, 0, 0, 0, 0, 93, 94, + 0, 0, 0, 0, 286, 27, 0, 35, 0, 0, + 0, 0, 0, 37, 0, 0, 0, 0, 0, 73, + 0, 0, 74, 0, 328, 0, 0, 316, 0, 0, + 96, 101, 0, 199, 99, 100, 0, 0, 0, 197, + 200, 103, 83, 98, 102, 105, 0, 0, 0, 296, + 0, 295, 0, 0, 161, 0, 0, 162, 0, 0, + 163, 0, 0, 0, 302, 0, 115, 116, 117, 118, + 0, 0, 0, 0, 322, 0, 144, 143, 40, 0, + 0, 0, 301, 0, 0, 0, 0, 0, 63, 69, + 71, 0, 77, 0, 25, 0, 89, 91, 0, 196, + 195, 198, 78, 79, 113, 0, 109, 0, 0, 0, + 0, 0, 0, 113, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 36, 0, 0, 0, 38, 52, 53, + 337, 0, 326, 0, 0, 0, 0, 294, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 157, 0, 190, + 0, 0, 0, 0, 321, 145, 0, 0, 0, 0, + 75, 0, 0, 107, 0, 176, 0, 0, 178, 0, + 0, 180, 0, 0, 153, 0, 113, 0, 0, 0, + 0, 95, 0, 44, 0, 50, 0, 0, 293, 164, + 0, 0, 171, 165, 0, 0, 173, 166, 0, 0, + 175, 0, 159, 0, 191, 84, 97, 0, 0, 0, + 0, 0, 0, 182, 0, 184, 0, 186, 158, 154, + 0, 0, 41, 0, 48, 0, 0, 0, 167, 0, + 0, 168, 0, 0, 169, 0, 0, 192, 0, 42, + 0, 140, 0, 0, 0, 0, 0, 0, 0, 160, + 0, 0, 0, 0, 177, 0, 179, 0, 181, 0, + 43, 45, 0, 46, 92, 0, 0, 0, 0, 0, + 183, 185, 187, 47, 49, 0, 0, 0 }; -static const short yydefgoto[] = { 1225, - 2, 53, 630, 54, 55, 381, 919, 925, 557, 710, - 1045, 1174, 558, 1140, 1202, 559, 1176, 560, 561, 714, - 562, 119, 211, 56, 491, 521, 133, 504, 505, 134, - 60, 61, 62, 63, 64, 135, 679, 1101, 1152, 968, - 971, 974, 1119, 1123, 1127, 1163, 1166, 1169, 790, 791, - 66, 67, 68, 136, 122, 330, 168, 911, 823, 824, - 138, 303, 194, 625, 743, 493 +static const short yydefgoto[] = { 1166, + 2, 51, 619, 52, 53, 373, 897, 903, 546, 696, + 1013, 1129, 547, 1099, 1153, 548, 1131, 549, 550, 700, + 551, 117, 206, 54, 483, 513, 131, 496, 497, 132, + 58, 59, 60, 61, 62, 133, 668, 1066, 1111, 946, + 949, 952, 1081, 1085, 1089, 1120, 1123, 1126, 776, 777, + 64, 65, 66, 134, 120, 325, 166, 806, 807, 136, + 298, 190, 614, 729, 485 }; -static const short yypact[] = { 2774, - 21, 3171,-32768, 2316, -114, 18, 29, 1719, -84, -63, - 1457, 1588, -60, -50, 70, -9, 84, 121, 128, 558, - 132, 595, 74, 113, -43, -43, 119, 285, 10, 226, - 11, 293, 310, 147, 330, 343, 352, 227, 239, -33, - 13, 19,-32768, 242,-32768, 318,-32768, 411, 417, 393, - 17, 24,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 12, - 15,-32768,-32768,-32768,-32768, 231, 250, 317, 398, 432, - 459, 495, 503, 520, 521, 539, 540, 602, 607, 629, - 648, 652, 679, 686, 700, 701, 263, 307, 321, 325, --32768, 336,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 2531, - 2531, 2531,-32768,-32768, 2531, 1917, 28, 472, 2531, 480, - 635,-32768, 505, 474,-32768, 2531,-32768, 424, 362, 2155, - 2531, 1308,-32768,-32768,-32768, 2588, 410,-32768, 2531, 2531, - 413, 2531, 450, 438, 491, 2531, 2531, 1850, 2531, 467, - 511, 543, 1850, 544, 550, 552, 565, 577, 578, 588, - 608, -43, -43, -43, 2531, 2531, 167,-32768, 315, -43, - 551, 574, 591, 2185, 320, 609,-32768, 1850, 34,-32768, --32768,-32768, 1850, 1850, 617, 645, 732, 2531, 2531, -31, - 2531, 649, 2531, 671, 722, 2531, 2531,-32768, 809,-32768, - 687,-32768,-32768, 831,-32768, 835, 719, 2531, 852, 721, --32768, -43,-32768, 2531, 2531, 2531, 2531, 2531, 2531, 2531, - 2531, 2531, 2531, 2531, 2531, 2531, 2531, 2531, 2531, 2531, - 2531, 2531, 2531, 2531, 2531, 2531, 2531, 2531, 2531, 2531, - 2531, 2531, 2531, 2531, 2531, 2531, 2531, 2531, 2531, 2531, - 2531, 2531, 2531, 2531, 2531, 610, 457, 457, 457, 860, - 735, 730, 730, 730, 5242, 14, 2366, 1644, 380, 746, - 859, 754, 681,-32768,-32768, 2531, 2531, 2531, 2531, 2531, - 2531, 2531, 2531, 2531, 2531, 2531, 2531, 2531, 2531, 2531, --32768, -94, 3725, 1981, 2531, 775, 2366, 5265, 2561,-32768, - 2588,-32768, 702, 2531, 847, 5288, 5311, 2531, 5334, 697, - 2531, 861, 5357, 5380, 900, 5403, 2531, 2531, 2531, 906, - 2531, 2531, 2531, 2496, 2496, 2496, 2496, 795, -18,-32768, --32768, 3747, 3769, -43, -43, 556, 556, 190, 2531, 2531, - 2531, 2185, 2185, 2531, 267,-32768, 2531, 2836, 85, 908, --32768, 2531, 2857, 950, 958, 2531, 2531,-32768, 5426, 5449, - 828, 2531, 5472, 877, 3791,-32768, 843, 2603, 5495,-32768, - 2531, 2903,-32768, 2963,-32768, 2531, 1775, 139, 2531, 324, - -3, 5518, 4517, 5541, 4542, 5564, 4567, 5587, 4592, 5610, - 4617, 5633, 4642, 5656, 4667, 5679, 4692, 5702, 4717, 5725, - 4742, 5748, 4767, 3813, 3835, 5771, 4792, 5794, 4817, 5817, - 4842, 5840, 4867, 5863, 4892, 5886, 4917, 3857, 3879, 3901, - 3923, 3945, 3967, 736, -28, 845, 851, 857, 853, 2531, --32768, 1850, 1850, 740, 73, 457, 2531, 979, 985, 16, - 862,-32768, 2618, 545, 650, 705, 705, 666, 666, 666, - 666, 375, 375, 730, 730, 730, 730, 20, 2366, 2531, --32768, 2366, 4942, 2849, 2118, 743, 987, 2366,-32768, 2633, - 2531, 988, 989, 5909, 997, 2531, 2531, 5932, 2531, 1007, - 1008, 2531, 1009, 2976, 5955, 5978, 2531, 3193, 3217, 6001, - 884, 6369,-32768, 885, 887, 891, 890, -43, 2531, 2531, --32768,-32768,-32768, 889, 802,-32768, 893, 2531, 3989, 4011, - 4033, 3697, -43, 2984, 4967, -76, -30, -42, 32,-32768, --32768,-32768, 2531,-32768, 4992,-32768, 895, 896, 5017, 5042, - 1021, 1031, 907, 6024, 1033, 905, 2531, 3030, 2531, 2531, --32768, 6047,-32768,-32768, 5067, 31,-32768, 3241,-32768,-32768, - 910, 913, 909,-32768, 914, 986,-32768,-32768,-32768,-32768, +static const short yypact[] = { 2724, + 27, 3035,-32768, 2115, -112, 8, 63, 1556, -106, -41, + 1298, 1427, -15, -7, 82, 33, 103, 125, 132, 540, + 153, 397, 73, 89, 72, 72, 100, 326, 12, 165, + 13, 239, 26, 298, 305, 341, 218, 221, 228, 17, + 39,-32768, 245,-32768, 362,-32768, 409, 417, 22, 60, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,-32768,-32768,-32768,-32768,-32768,-32768, 0, 18,-32768, +-32768,-32768,-32768, -77, 204, 259, 275, 432, 436, 450, + 484, 494, 498, 511, 553, 554, 615, 616, 639, 642, + 653, 654, 662, 672, 256, 317, 318, 323,-32768, 324, +-32768,-32768,-32768,-32768,-32768,-32768,-32768, 2326, 2326, 2326, +-32768,-32768, 2326, 1751, 40, 457, 2326, 477, 836,-32768, + 478, 485,-32768, 2326,-32768, 449, 356, 678, 2326, 1162, +-32768,-32768,-32768, 2454, 407,-32768, 2326, 2326, 383, 2326, + 430, 399, 437, 2326, 2326, 1685, 2326, 411, 406, 426, + 1685, 420, 468, 456, 517, 518, 527, 537, 650, 72, + 72, 72, 2326, 2326, 79,-32768, 114, 72, 538, 539, + 543, 1986, 176, 532,-32768, 1685, 32,-32768,-32768, 1685, + 1685, 579, 580, 665, 2326, 2326, 2326, 585, 2326, 583, + 637, 2326, 2326,-32768, 732,-32768,-32768,-32768, 736,-32768, + 744, 607, 2326, 747, 621,-32768, 72,-32768, 2326, 2326, + 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, + 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, + 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, + 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, + 505, 415, 415, 415, 763, 524, 647, 647, 647, 5017, + 16, 2163, 1089, 112, 643, 789, 667, 858,-32768,-32768, + 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, 2326, + 2326, 2326, 2326, 2326, 2326,-32768, -65, 3591, 1814, 2326, + 534, 2163, 5040, 2356,-32768, 2454,-32768, 487, 2326, 761, + 5063, 5086, 2326, 5109, 625, 2326, 771, 5132, 5155, 814, + 5178, 2326, 2326, 2326, 821, 2326, 2326, 2326, 2291, 2291, + 2291, 2291, 706, 104,-32768,-32768, 3613, 3635, 72, 72, + 727, 727, 372, 2326, 2326, 2326, 1986, 1986, 2326, 396, +-32768, 2326, 2784, 207, 838,-32768, 2326, 2801, 855, 859, + 2326, 2326,-32768, 5201, 5224, 5247, 777, 3657,-32768, 740, + 2469, 5270,-32768, 2844,-32768, 2861,-32768, 2326, 1483, 214, + 2326, 192, 3, 5293, 1612, 5316, 4317, 5339, 4342, 5362, + 4367, 5385, 4392, 5408, 4417, 5431, 4442, 5454, 4467, 5477, + 4492, 5500, 4517, 5523, 4542, 3679, 3701, 5546, 4567, 5569, + 4592, 5592, 4617, 5615, 4642, 5638, 4667, 5661, 4692, 3723, + 3745, 3767, 3789, 3811, 3833, 673, -23, 737, 748, 749, + 742, 2326,-32768, 1685, 1685, 676, 291, 415, 2326, 875, + 878, 21, 751,-32768, 2544, 797, 1357, 773, 773, 404, + 404, 404, 404, 178, 178, 647, 647, 647, 647, 20, + 2163, 2326,-32768, 2163, 4717, 3087, 1949, 681, 879, 2163, +-32768, 2585, 2326, 892, 893, 5684, 894, 2326, 2326, 5707, + 2326, 896, 898, 2326, 899, 3111, 5730, 5753, 2326, 3135, + 3159, 5776, 780, 2570,-32768, 791, 792, 793, 794, 72, + 2326, 2326,-32768,-32768,-32768, 787, 2559,-32768, 795, 2326, + 3855, 3877, 3899, 2516, 72, 2904, 4742, -69, -47, -26, + -31,-32768,-32768,-32768, 2326,-32768, 4767,-32768, 790, 798, + 4792, 4817, 922, 925, 927, 802, 2326, 2921, 2326, 2326, +-32768,-32768,-32768, 4842, 67,-32768, 3183,-32768,-32768, 807, + 808, 803,-32768, 809, 935,-32768,-32768,-32768,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768, 2531, 2531,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 2531, 2531, - 2531, 2531, 2531, 2531, 2531, 1043,-32768, 2366, 457,-32768, --32768, 2531, 1044, 1045, 918, 86, 2531, 1048, 1055, 825, --32768, 1042, 940, 13, 1069,-32768, 2531,-32768, 960, 457, - 159, 4055, 749, 496,-32768,-32768, 2366,-32768, -43, 2588, --32768, 2531, 856, 1850, 1850, 1070, 1850, 888, 945, 1073, - 1016, 1850, 1850, 1078, 942, 1075, 1076, 1079, 604, 1080, - 1082, 1083, 1085, 1086, 1088, 1089, 1081, 322, 4077, 4099, --32768,-32768, 3265, -43, -43, -43, 344,-32768, 312, 1091, - 2531, 2366, 2531, 2366, 2366, 2366, 1148, 1092, 2531, 2531, - 1093, 1094, 1850, 1850, 2531, 1095, 1850, 1097, 4121,-32768, - 2648, 581, 1096, 1098, 1101,-32768, 1100,-32768, 7, 975, - 2531, 2531, 1850, 969, 2531,-32768, 6070, 5092, 6093, 5117, - 6116, 5142, 6139, 5167, 5192, 977, 248, 980, 6162,-32768, --32768, 23, 440, 976, 1107, 1179,-32768,-32768,-32768, 13, - 2531,-32768, 758,-32768, 6369,-32768, 1109, 39, 2531, 981, - 759, 3, 6369,-32768, 64, 82, 1850, 1113,-32768,-32768, - 1850,-32768, 1115, 1116,-32768, 2531, 1850, 1850, 1850,-32768, - 350, 1850, 1850, 1850, 1850, 1850, 1850, 1850, 642, 2531, - 2531, 2531, 984, 187, 228, 391, 2185, 1118, 993, -27, --32768,-32768, 6185, 781, 6208, 782, 785, 786,-32768,-32768, - 4143, 4165,-32768,-32768, 1136, 1137, 6231, 68, 1056,-32768, - 2531, 2531, 2531,-32768, 1006,-32768, 139,-32768, 1140, 2531, - 4187, 4209, 789,-32768, 2531, 6254,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768, 1012,-32768,-32768,-32768,-32768, 1850, - 457, 2531, 1143, 1146, 16,-32768, 1145, 5217, 13,-32768, --32768,-32768, 457, 4231,-32768, 1017,-32768,-32768, -43,-32768, - -43, 1147,-32768, 1150,-32768,-32768, 4253, 1151, 1152, 1153, - 2531, 2531, 869, 1154, 1155, 1156, 1157, 1158, 1159,-32768, - 2496, 3289, 6277, 2343, 556, -43, 1162, -43, 1163, -43, - 1165, 3313, 416,-32768, 1850,-32768,-32768, 987, 1166, 997, - 1167, 1168, 1169, 2531, 2531,-32768,-32768, 1170, 1850, 1850, - 1090, 1850, 2670, 279, 6300, 2531,-32768,-32768, 447, 6369, - 2531, 2531, 1850, 1037, 793, 6369, 1850, 1175, 1174, 1176, - 1233,-32768, 1180, 1188,-32768, 1071,-32768, 1200, 2531,-32768, - 56, 75,-32768,-32768, 2531,-32768,-32768,-32768, 1422, 1553, - 1204,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 1684, 1205, - 1074,-32768, 2531,-32768, 1041, 419,-32768, 1077, 434,-32768, - 1084, 441,-32768, 1087, 1099, 2531, 403, 1105,-32768,-32768, --32768,-32768, 4275, 4297, 68, 478, 794, 1114, 1127, 2531, --32768, 2531,-32768,-32768, 4319,-32768, 2531, 4341, 4363,-32768, - 1850, 2531, 1208, 1211, 1102,-32768,-32768,-32768, 13,-32768, - 1128,-32768, 4385,-32768,-32768, 4407,-32768,-32768,-32768,-32768, --32768, 556, 3163,-32768, 2185, 312, 2185, 312, 2185, 312, --32768, 3337, 1213, 1850, 2531, 2531, 1132,-32768,-32768, 1850, - 2531, 3361, 3385, 1850, 1125, 6369, 2531, 2531, 814, 6369, --32768,-32768,-32768, 1215,-32768, 2531, 1217, 1104, 2531,-32768, - 3409, 452, -26, 3433, 454, 25, 3457, 456, 122, 3090, - 1135,-32768, 815, 3481, 3505, 1138, 1117, 1946,-32768,-32768, - 1112, 2531, 6323, 4429, 1218,-32768, 4451, 1119,-32768, 3529, - 1219, 2531, 1221, 1222, 2531, 1223, 1225, 2531, 1226,-32768, - 312,-32768, 1850, 1227, 1230, 1231, 1850, 1850,-32768, 1248, - 820,-32768, 2531,-32768, 2531, 1270,-32768,-32768, 1139, 3553, --32768,-32768, 1141, 3577,-32768,-32768, 1142, 3601,-32768, 130, - 3111, 1144,-32768,-32768,-32768, 1171, 1149,-32768, 1276, 1177, - 6346, 3625, 1203, 312, 1280, 312, 1282, 312, 1289,-32768, --32768, 312, 1299, 1850, 1191,-32768, 457,-32768, 1300, 1302, - 191,-32768, 1220, 192,-32768, 1224, 193,-32768, 1228, 237, --32768, 1202, 1236, 823,-32768, 1237,-32768, 1238, 1309, 312, - 1337, 312, 1354, 312,-32768, 1229, 2531, 457, 1355, 457, - 1356,-32768, 278,-32768, 287,-32768, 289, 1240, 4473,-32768, --32768, 824,-32768,-32768, 1359, 1360, 1371, 2531, 2531, 457, - 1374,-32768,-32768,-32768, 4495, 3649,-32768,-32768, 2531, 1375, - 3673,-32768, 1378,-32768, 1386, 1387,-32768 +-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,-32768,-32768, 2326, 2326,-32768,-32768,-32768,-32768,-32768, +-32768,-32768,-32768,-32768,-32768,-32768,-32768, 2326, 2326, 2326, + 2326, 2326, 2326, 2326, 940,-32768, 2163, 415,-32768,-32768, + 2326, 944, 955, 829, 47, 2326, 957, 958, 976,-32768, + 965, 851, 17, 979,-32768, 2326,-32768, 869, 415, -14, + 3921, 688, 78,-32768,-32768, 2163,-32768, 72, 2454,-32768, + 2326, 1013, 1685, 1685, 981, 1685, 1132, 1225, 982, 1264, + 1685, 1685, 1397, 853, 984, 985, 986, 480, 988, 989, + 991, 992, 993, 994, 996, 1000, 427, 3943, 3965,-32768, +-32768, 3207, 72, 72, 72, 431,-32768, 117, 999, 2326, + 2163, 2326, 2163, 2163, 2163, 1526, 1002, 2326, 2326, 1004, + 1005, 1685, 1685, 1685, 1011, 3987,-32768, 2600, 644, 1014, + 1017,-32768, 1016,-32768, 9, 876, 2326, 2326, 1685, 880, + 2326,-32768, 5799, 4867, 5822, 4892, 5845, 4917, 5868, 4942, + 4967, 895, 2, 897, 5891,-32768,-32768, 136, 296, 889, + 1018, 1784,-32768,-32768,-32768, 17, 2326,-32768, 689,-32768, + 2570,-32768, 1021, 23, 2326, 891, 693, 5, 2570,-32768, + 24, 25, 1685, 1023,-32768,-32768, 1685,-32768, 1024, 1027, +-32768, 2326, 1685, 1685, 1685,-32768, 368, 1685, 1685, 1685, + 1685, 1685, 1685, 1685, 429, 2326, 2326, 2326, 900, -45, + 369, 382, 1986, 1029, 901, -40,-32768,-32768, 5914, 697, + 5937, 698, 707, 711,-32768,-32768, 4009, 4031,-32768,-32768, + 1030, 1036, 959,-32768, 2326, 2326, 2326,-32768,-32768, 214, +-32768, 1038, 2326, 4053, 4075, 712,-32768, 2326, 5960,-32768, +-32768,-32768,-32768,-32768,-32768,-32768,-32768, 913,-32768,-32768, +-32768,-32768, 1685, 415, 2326, 1042, 1045, 21,-32768, 1044, + 4992, 17,-32768,-32768,-32768, 415, 4097,-32768, 921,-32768, +-32768, 72,-32768, 72, 1049,-32768, 1050,-32768,-32768, 4119, + 1051, 1054, 1055, 2326, 2326, 848, 1056, 1057, 1058, 1059, + 1060, 1062,-32768, 2291, 3231, 5983, 2622, 727, 72, 1063, + 72, 1065, 72, 1066, 3255, 433,-32768, 1685,-32768,-32768, + 879, 1067, 894, 1068, 1069, 1070, 2326, 2326,-32768,-32768, + 1685, 3027, 358, 6006,-32768,-32768, 48, 2570, 2326, 2326, + 1685, 941, 717, 2570, 1685, 1073, 1077, 1078, 1913,-32768, + 1072, 1095,-32768, 968,-32768, 1098, 2326,-32768, 42, 46, +-32768,-32768, 2326,-32768,-32768,-32768, 2383, 2398, 1101,-32768, +-32768,-32768,-32768,-32768,-32768,-32768, 2413, 1102, 972,-32768, + 2326,-32768, 973, 435,-32768, 975, 441,-32768, 977, 491, +-32768, 978, 980, 2326, 614, 983,-32768,-32768,-32768,-32768, + 4141, 4163, 1032, 2326,-32768, 2326,-32768,-32768,-32768, 2326, + 4185, 4207,-32768, 1685, 2326, 1107, 1115, 1009,-32768,-32768, +-32768, 17,-32768, 1061,-32768, 4229,-32768,-32768, 4251,-32768, +-32768,-32768,-32768,-32768, 727, 3057,-32768, 1986, 117, 1986, + 117, 1986, 117,-32768, 3279, 1121, 1685, 2326, 2326, 2326, + 3303, 3327, 1006, 2570, 2326, 2326, 721, 2570,-32768,-32768, +-32768, 1138,-32768, 2326, 1141, 1010, 2326,-32768, 3351, 493, + -18, 3375, 519, -8, 3399, 526, 37, 2964, 1012,-32768, + 725, 3423, 3447, 2428,-32768,-32768, 2326, 6029, 4273, 1148, +-32768, 4295, 1028,-32768, 3471, 1157, 2326, 1161, 1163, 2326, + 1164, 1189, 2326, 1190,-32768, 117,-32768, 1685, 1191, 1207, + 1208,-32768, 733,-32768, 2326,-32768, 2326, 1142,-32768,-32768, + 1031, 3495,-32768,-32768, 1079, 3519,-32768,-32768, 1080, 3543, +-32768, 159, 2981, 1081,-32768,-32768,-32768, 1209, 1083, 6052, + 3567, 1093, 117, 1224, 117, 1226, 117, 1227,-32768,-32768, + 117, 1228,-32768, 415,-32768, 1231, 1233, 236,-32768, 1103, + 238,-32768, 1109, 301,-32768, 1119, 320,-32768, 734,-32768, + 1120,-32768, 1122, 1252, 117, 1253, 117, 1256, 117,-32768, + 415, 1261, 415, 1262,-32768, 344,-32768, 347,-32768, 361, +-32768,-32768, 738,-32768,-32768, 1263, 1265, 1266, 415, 1267, +-32768,-32768,-32768,-32768,-32768, 1239, 1274,-32768 }; static const short yypgoto[] = {-32768, --32768,-32768, 560,-32768,-32768, 839,-32768, 308,-32768,-32768, +-32768,-32768, 541,-32768,-32768, 739,-32768, 231,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768, -263, 0,-32768, -24, 1389, 5, -334, -172, 8, --32768,-32768,-32768,-32768,-32768, 1390,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -732, -690, --32768,-32768,-32768, -4,-32768, 397,-32768, 404, -815, 473, - -98, -254, -596, 548,-32768, -2 +-32768, -259, 30,-32768, 299, 1277, -1, -330, -163, 7, +-32768,-32768,-32768,-32768,-32768, 1278,-32768,-32768,-32768,-32768, +-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -993, -684, +-32768,-32768,-32768, 43,-32768, 14,-32768, 309, 398, -67, + -243, -610, 458,-32768, -4 }; -#define YYLAST 6500 +#define YYLAST 6183 static const short yytable[] = { 121, - 550, 123, 507, 120, 348, 437, 58, 353, 857, 59, - 550, 190, 434, 176, 179, 207, 192, 124, 212, 623, - 432, 202, 195, 125, 144, 628, 3, 742, 202, 72, - 372, 269, 374, 302, 127, 202, 141, 350, 458, 351, - 788, 788, 466, 459, 852, 789, 789, 139, 204, 206, - 97, 98, 99, 100, 361, 681, 101, 97, 98, 99, - 100, 1014, 682, 101, 97, 98, 99, 100, 140, 858, - 101, 146, 551, 552, 553, 554, 555, 163, 164, 72, - 1015, 147, 551, 552, 553, 554, 555, 860, 165, 733, - 522, 523, 788, 986, 987, 166, 685, 789, 191, 897, - 362, 683, 334, 335, 607, 262, 263, 264, 684, 608, - 265, 268, 896, 1093, 273, 859, 270, 271, 148, 498, - 433, 293, 149, 334, 335, 263, 298, 301, 150, 106, - 107, 108, 109, 861, 306, 307, 556, 309, 629, 113, - 114, 313, 314, 847, 316, 208, 819, 209, 177, 180, - 196, 193, 210, 213, 624, 203, 126, 629, 113, 114, - 332, 333, 205, 147, 1096, 151, 705, 352, 302, 333, - 686, 617, 152, 514, 734, 735, 334, 335, 156, 106, - 107, 108, 109, 359, 360, 1049, 363, 183, 365, 788, - 184, 368, 369, 538, 789, 334, 335, 788, 302, 909, - 113, 114, 789, 377, 631, 161, 910, 633, 616, 382, + 56, 499, 728, 202, 429, 1031, 539, 1034, 57, 1037, + 840, 343, 539, 123, 348, 174, 177, 122, 426, 139, + 188, 207, 424, 137, 612, 617, 197, 774, 835, 841, + 843, 775, 3, 118, 364, 345, 366, 346, 165, 167, + 142, 173, 191, 264, 199, 201, 119, 987, 458, 774, + 719, 988, 209, 775, 210, 95, 96, 97, 98, 774, + 670, 99, 297, 775, 197, 450, 180, 671, 125, 181, + 451, 197, 1092, 329, 330, 842, 844, 540, 541, 542, + 543, 544, 672, 540, 541, 542, 543, 544, 138, 673, + 869, 880, 870, 95, 96, 97, 98, 879, 145, 99, + 95, 96, 97, 98, 774, 675, 99, 596, 775, 1118, + 674, 1121, 597, 1124, 144, 830, 734, 1127, 428, 1058, + 425, 460, 145, 329, 330, 111, 112, 265, 266, 1061, + 146, 203, 820, 204, 720, 721, 618, 460, 205, 618, + 545, 1146, 70, 1148, 124, 1150, 802, 148, 175, 178, + 257, 258, 259, 189, 208, 260, 263, 613, 198, 268, + 329, 330, 147, 347, 329, 330, 288, 606, 192, 149, + 258, 293, 296, 324, 1064, 326, 150, 506, 969, 301, + 302, 333, 304, 970, 774, 340, 308, 309, 775, 311, + 161, 162, 111, 112, 297, 528, 200, 329, 330, 154, + 691, 163, 159, 111, 112, 327, 328, 620, 164, 176, + 622, 691, 514, 515, 328, 331, 104, 105, 106, 107, + 372, 915, 329, 330, 297, 160, 774, 354, 355, 356, + 775, 358, 329, 330, 361, 362, 168, 111, 112, 490, + 104, 105, 106, 107, 179, 369, 417, 418, 419, 420, + 332, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, - 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, - 423, 162, 937, 425, 426, 427, 428, 170, 788, 788, - 788, 1099, 301, 789, 789, 789, 113, 114, 438, 1150, - 178, 443, 444, 445, 446, 447, 448, 449, 450, 451, - 452, 453, 454, 455, 456, 457, 992, 334, 335, 463, - 464, 748, 301, 1063, 263, 1066, 468, 1069, 181, 470, - 494, 495, 496, 474, 788, 336, 478, 334, 335, 789, - 334, 335, 484, 485, 486, 182, 488, 489, 490, 492, - 492, 492, 492, 198, 886, 171, 887, 508, 172, 173, - 1179, 1181, 1183, 185, 509, 510, 511, 262, 263, 512, - 503, 503, 515, 506, 506, 788, 186, 525, 334, 335, - 789, 529, 530, 727, 788, 187, 788, 534, 188, 789, - 302, 789, 214, 302, 215, 888, 542, 889, 1130, 641, - 189, 545, 897, 197, 548, 897, 1185, 547, 897, 788, - 837, 216, 751, 217, 789, 468, 436, 334, 335, 276, - 277, 278, 279, 280, 256, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 513, 163, 164, 871, 872, 290, - 304, 1161, 1054, 1164, 199, 1167, 165, 1205, 993, 1170, - 200, 167, 169, 174, 175, 463, 1206, 794, 1207, 796, - 797, 798, 620, 619, 618, 334, 335, 201, 257, 897, - 334, 335, 334, 335, 334, 335, 841, 1193, 218, 1195, - 219, 1197, 258, 337, 301, 632, 259, 301, 346, 780, - 463, 202, 549, 640, 334, 335, 643, 260, 840, 842, - 897, 648, 649, 897, 651, 272, 897, 654, 292, 897, - 137, 787, 659, 143, 145, 274, 106, 107, 108, 109, - 97, 98, 99, 100, 669, 670, 101, 287, 288, 289, - 295, 305, 897, 673, 897, 290, 897, 113, 114, 302, - 291, 334, 335, 276, 277, 278, 279, 280, 687, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 890, 220, - 891, 221, 699, 290, 701, 702, 334, 335, 302, 334, - 335, 310, 1033, 707, 308, 706, 106, 107, 108, 109, - 965, 113, 114, 976, 334, 335, 1025, 294, 329, 209, - 331, 334, 335, 222, 210, 223, 338, 113, 114, 311, - 345, 1027, 334, 335, 334, 335, 334, 335, 1029, 996, - 717, 718, 312, 302, 997, 302, 302, 302, 813, 1092, - 224, 1095, 225, 1098, 719, 720, 721, 722, 723, 724, - 725, 153, 154, 301, 155, 317, 728, 729, 380, 770, - 1038, 328, 736, 424, 202, 923, 24, 25, 26, 27, - 315, 29, 745, 113, 114, 320, 226, 747, 227, 35, - 36, 705, 301, 706, 228, 157, 229, 753, 158, 159, - 275, 160, 318, 97, 98, 99, 100, 880, 881, 101, - 349, 230, 232, 231, 233, 354, 355, 278, 279, 280, - 771, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 234, 236, 235, 237, 319, 290, 793, 301, 795, 301, - 301, 301, 321, 323, 801, 802, 442, 1058, 322, 339, - 807, 276, 277, 278, 279, 280, 324, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 821, 822, 325, 326, - 826, 290, 340, 814, 276, 277, 278, 279, 280, 327, - 281, 282, 283, 284, 285, 286, 287, 288, 289, 341, - 501, 502, 843, 238, 290, 239, 848, 358, 240, 331, - 241, 476, 347, 477, 854, 276, 277, 278, 279, 280, - 356, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 242, 867, 243, 279, 280, 290, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 882, 883, 884, 357, 244, - 290, 245, 892, 246, 364, 247, 285, 286, 287, 288, - 289, 276, 277, 278, 279, 280, 290, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 913, 914, 915, 366, - 248, 290, 249, 367, 370, 920, 917, 250, 371, 251, - 926, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 739, 252, 254, 253, 255, 290, 373, 931, 930, 468, - 375, 469, 516, 9, 10, 517, 518, 13, 519, 15, - 938, 16, 376, 18, 19, 378, 21, 22, 1070, 379, - 290, 754, 113, 114, 429, 440, 949, 950, 430, 605, - 209, 606, 951, 34, 952, 210, 959, 468, 960, 615, - 468, 439, 638, 38, 39, 40, 468, 441, 750, 503, - 977, 471, 506, 759, 668, 849, 468, 850, 856, 983, - 984, 50, 113, 114, 613, 614, 482, 479, 465, 677, - 209, 995, 487, 524, 533, 210, 998, 999, 468, 468, - 899, 901, 468, 468, 902, 903, 923, 497, 924, 1131, - 1002, 923, 1003, 1039, 1013, 276, 277, 278, 279, 280, - 1016, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 760, 923, 1103, 1085, 1104, 290, 527, 1002, 1023, 1139, - 1188, 1210, 1189, 1211, 528, 536, 276, 277, 278, 279, - 280, 1032, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 539, 609, 610, 621, 1042, 290, 1043, 622, 611, - 612, 716, 1046, 639, 644, 645, 626, 1050, 276, 277, - 278, 279, 280, 647, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 652, 653, 655, 663, 664, 290, 665, - 1061, 762, 1064, 666, 1067, 667, 503, 693, 671, 506, - 1074, 1075, 672, 689, 690, 752, 1078, 694, 695, 697, - 698, 711, 1083, 1084, 712, 715, 726, 713, 740, 730, - 731, 1087, 732, 737, 1090, 276, 277, 278, 279, 280, - 738, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 784, 785, 786, 741, 744, 290, 757, 926, 746, 761, - 766, 767, 768, 765, 779, 769, 772, 1120, 773, 774, - 1124, 775, 776, 1128, 777, 778, 792, 800, 803, 804, - 810, 808, 815, 816, 817, 818, 820, 825, 1141, 836, - 1142, 844, 838, 845, 851, 855, 755, 756, 863, 758, - 865, 866, 885, 894, 763, 764, 276, 277, 278, 279, - 280, 895, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 906, 907, 912, 916, 918, 290, 928, 932, 933, - 935, 940, 943, 799, 1175, 944, 946, 947, 948, 953, - 954, 955, 956, 957, 958, 805, 806, 967, 970, 809, - 973, 979, 980, 981, 982, 1001, 985, 988, 1005, 1006, - 1024, 1007, 1199, 893, 846, 1200, 1009, 1203, 276, 277, - 278, 279, 280, 1010, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 1215, 1216, 1012, 1011, 1217, 290, 1019, - 1021, 1041, 1022, 1051, 1221, 1026, 1052, 1055, 1072, 1076, - 1086, 1088, 1028, 1114, 1118, 1030, 1121, 1122, 1125, 862, - 1126, 1129, 1133, 864, 1053, 1134, 1135, 1031, 1008, 868, - 869, 870, 1034, 1089, 873, 874, 875, 876, 877, 878, - 879, 1110, 1040, 1138, 1108, 941, 1116, 942, 276, 277, - 278, 279, 280, 1082, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 1102, 1143, 1173, 1107, 1144, 290, 1146, - 1148, 1156, 966, 1153, 969, 1162, 972, 1165, 1155, 276, - 277, 278, 279, 280, 1168, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 1171, 1177, 1178, 853, 1154, 290, - 69, 128, 929, 1198, 1192, 1157, 73, 74, 75, 76, + 413, 414, 415, 430, 329, 330, 1109, 70, 282, 283, + 284, 182, 824, 774, 296, 774, 285, 775, 183, 775, + 329, 330, 341, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 444, 445, 446, 447, 448, 449, 538, 495, + 495, 455, 456, 211, 296, 212, 258, 498, 498, 111, + 112, 462, 493, 494, 184, 466, 880, 185, 470, 880, + 186, 326, 880, 713, 476, 477, 478, 187, 480, 481, + 482, 484, 484, 484, 484, 966, 169, 194, 774, 170, + 171, 1022, 775, 1134, 193, 1136, 501, 502, 503, 257, + 258, 504, 737, 297, 507, 251, 297, 774, 213, 517, + 214, 775, 630, 521, 522, 104, 105, 106, 107, 536, + 104, 105, 106, 107, 215, 135, 216, 880, 141, 143, + 534, 774, 195, 537, 774, 775, 111, 112, 775, 197, + 196, 111, 112, 608, 605, 854, 855, 780, 774, 782, + 783, 784, 775, 880, 863, 864, 880, 155, 1138, 880, + 156, 157, 880, 158, 161, 162, 252, 253, 95, 96, + 97, 98, 254, 255, 99, 163, 607, 1140, 823, 825, + 267, 880, 172, 880, 455, 880, 271, 272, 273, 274, + 275, 609, 276, 277, 278, 279, 280, 281, 282, 283, + 284, 1156, 269, 286, 1157, 756, 285, 329, 330, 287, + 329, 330, 290, 296, 621, 967, 296, 300, 1158, 455, + 329, 330, 629, 657, 871, 632, 872, 500, 416, 197, + 637, 638, 303, 640, 329, 330, 643, 873, 666, 874, + 305, 648, 280, 281, 282, 283, 284, 307, 306, 297, + 693, 505, 285, 658, 659, 313, 757, 943, 95, 96, + 97, 98, 662, 310, 99, 329, 330, 312, 315, 329, + 330, 329, 330, 329, 330, 314, 316, 676, 297, 329, + 330, 217, 766, 218, 692, 219, 773, 220, 954, 686, + 998, 688, 689, 344, 111, 112, 1000, 349, 350, 221, + 289, 222, 204, 151, 152, 318, 153, 205, 271, 272, + 273, 274, 275, 714, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 297, 317, 297, 297, 297, 285, 329, + 330, 329, 330, 223, 733, 224, 703, 704, 486, 487, + 488, 299, 460, 225, 461, 226, 1002, 227, 1057, 228, + 705, 706, 707, 708, 709, 710, 711, 329, 330, 296, + 229, 738, 230, 715, 329, 330, 319, 320, 722, 111, + 112, 797, 692, 323, 1060, 422, 321, 204, 731, 111, + 112, 1063, 205, 342, 1026, 457, 322, 204, 296, 468, + 353, 469, 205, 739, 334, 335, 770, 771, 772, 336, + 67, 291, 231, 233, 232, 234, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 351, 352, 779, 296, 781, 296, 296, 296, 357, 359, + 787, 788, 271, 272, 273, 274, 275, 360, 276, 277, + 278, 279, 280, 281, 282, 283, 284, 363, 368, 804, + 805, 365, 285, 809, 235, 237, 236, 238, 826, 367, + 370, 1006, 271, 272, 273, 274, 275, 371, 276, 277, + 278, 279, 280, 281, 282, 283, 284, 421, 239, 831, + 240, 241, 285, 242, 798, 285, 431, 837, 100, 101, + 102, 103, 243, 245, 244, 246, 876, 24, 25, 26, + 27, 247, 29, 248, 850, 432, 108, 109, 433, 34, + 35, 249, 110, 250, 594, 463, 595, 113, 865, 866, + 867, 460, 116, 604, 292, 875, 460, 471, 627, 908, + 474, 602, 603, 460, 832, 736, 833, 479, 460, 895, + 839, 916, 460, 460, 882, 884, 489, 892, 893, 894, + 1038, 270, 460, 516, 885, 898, 460, 901, 886, 902, + 904, 929, 975, 930, 976, 919, 901, 920, 1050, 938, + 1068, 519, 1069, 434, 526, 520, 495, 909, 975, 1141, + 1098, 1142, 598, 1159, 498, 1160, 529, 601, 599, 600, + 610, 611, 944, 615, 947, 628, 950, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 927, 928, 633, 634, + 636, 285, 641, 1093, 642, 644, 937, 273, 274, 275, + 652, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 955, 653, 654, 655, 660, 285, 678, 656, 682, 961, + 962, 683, 661, 684, 679, 685, 697, 698, 701, 699, + 702, 971, 972, 712, 271, 272, 273, 274, 275, 716, + 276, 277, 278, 279, 280, 281, 282, 283, 284, 986, + 717, 718, 723, 724, 285, 989, 271, 272, 273, 274, + 275, 726, 276, 277, 278, 279, 280, 281, 282, 283, + 284, 725, 727, 996, 730, 732, 285, 743, 747, 752, + 753, 754, 755, 495, 758, 759, 1005, 760, 761, 762, + 763, 498, 764, 765, 778, 803, 1011, 786, 1012, 789, + 790, 1030, 1014, 1033, 794, 1036, 808, 1018, 740, 799, + 800, 801, 827, 838, 828, 819, 834, 821, 846, 848, + 741, 742, 849, 744, 877, 889, 868, 878, 749, 750, + 1029, 890, 1032, 896, 1035, 891, 906, 910, 911, 913, + 1042, 1043, 1044, 918, 921, 922, 924, 1048, 1049, 925, + 926, 931, 932, 933, 934, 935, 1052, 936, 945, 1055, + 948, 951, 957, 958, 959, 960, 978, 974, 982, 791, + 792, 793, 979, 980, 271, 272, 273, 274, 275, 904, + 276, 277, 278, 279, 280, 281, 282, 283, 284, 1082, + 983, 984, 1086, 985, 285, 1090, 992, 994, 995, 1130, + 997, 999, 1019, 1001, 1003, 1010, 1004, 1100, 1007, 1101, + 1020, 271, 272, 273, 274, 275, 1040, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 1151, 745, 1154, 1021, + 845, 285, 1047, 1051, 847, 1053, 1102, 1054, 1067, 1023, + 851, 852, 853, 1076, 1164, 856, 857, 858, 859, 860, + 861, 862, 1080, 1078, 67, 126, 1083, 1103, 1084, 1087, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 1088, 1091, 1095, 271, 272, 273, + 274, 275, 127, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 1096, 1097, 1113, 1105, 1107, 285, 1112, 1114, + 907, 427, 24, 25, 26, 27, 28, 29, 1117, 1119, + 746, 1122, 1125, 1128, 34, 35, 1132, 1133, 1167, 1135, + 271, 272, 273, 274, 275, 1137, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 1139, 1143, 1145, 1147, 1144, + 285, 1149, 100, 101, 102, 103, 1152, 1155, 1161, 748, + 1162, 1163, 1165, 1168, 836, 956, 695, 1073, 55, 63, + 108, 294, 1017, 0, 0, 912, 110, 0, 963, 0, + 0, 113, 0, 0, 0, 0, 116, 0, 973, 295, + 67, 126, 977, 0, 0, 0, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 0, 0, 0, 271, 272, 273, 274, 275, 127, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 0, 0, + 0, 0, 0, 285, 0, 0, 0, 0, 24, 25, + 26, 27, 28, 29, 139, 0, 0, 0, 0, 0, + 34, 35, 271, 272, 273, 274, 275, 0, 276, 277, + 278, 279, 280, 281, 282, 283, 284, 0, 0, 0, + 0, 0, 285, 0, 0, 0, 0, 0, 100, 101, + 102, 103, 751, 0, 1041, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 108, 128, 0, 0, + 0, 0, 110, 0, 0, 0, 0, 140, 0, 67, + 126, 0, 116, 0, 130, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 0, + 0, 0, 0, 0, 0, 1094, 0, 127, 274, 275, + 0, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 0, 0, 0, 0, 0, 285, 0, 24, 25, 26, + 27, 28, 29, 142, 0, 0, 0, 0, 0, 34, + 35, 0, 0, 0, 0, 271, 272, 273, 274, 275, + 0, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 0, 0, 0, 0, 0, 285, 0, 100, 101, 102, + 103, 785, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 108, 128, 0, 0, 0, + 0, 110, 0, 0, 0, 0, 113, 0, 67, 126, + 0, 116, 0, 130, 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, - 1160, 1186, 1194, 276, 277, 278, 279, 280, 129, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 1180, 1196, - 1201, 1204, 1182, 290, 1212, 1213, 1184, 978, 24, 25, - 26, 27, 28, 29, 1187, 1190, 1214, 1191, 1208, 1218, - 1222, 35, 36, 1224, 989, 1226, 1227, 709, 1037, 1111, - 57, 65, 934, 0, 0, 1000, 0, 0, 0, 1004, + 87, 88, 89, 90, 91, 92, 93, 94, 0, 0, + 0, 271, 272, 273, 274, 275, 127, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 0, 0, 0, 0, + 0, 285, 0, 0, 0, 535, 24, 25, 26, 27, + 28, 29, 0, 0, 0, 0, 0, 0, 34, 35, + 0, 0, 0, 0, 271, 272, 273, 274, 275, 0, + 276, 277, 278, 279, 280, 281, 282, 283, 284, 0, + 0, 0, 0, 0, 285, 0, 100, 101, 102, 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 102, 103, 104, 105, 0, 0, 0, 0, 0, 0, - 0, 1062, 0, 1065, 0, 1068, 0, 1017, 110, 299, - 0, 0, 0, 0, 112, 0, 0, 0, 0, 115, - 0, 0, 0, 0, 118, 0, 0, 300, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, - 128, 0, 0, 0, 0, 73, 74, 75, 76, 77, + 0, 0, 0, 0, 108, 128, 0, 0, 0, 0, + 110, 0, 0, 0, 0, 129, 0, 67, 126, 0, + 116, 0, 130, 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, 0, - 0, 0, 0, 0, 0, 0, 0, 129, 0, 0, - 0, 0, 0, 0, 0, 0, 1073, 0, 0, 0, - 0, 0, 1077, 0, 0, 0, 1081, 24, 25, 26, - 27, 28, 29, 141, 0, 0, 0, 0, 0, 0, - 35, 36, 276, 277, 278, 279, 280, 0, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 0, 0, 0, - 0, 0, 290, 0, 0, 0, 0, 0, 1018, 102, - 103, 104, 105, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1132, 0, 110, 130, 1136, - 1137, 0, 0, 112, 0, 0, 0, 0, 142, 0, - 69, 128, 0, 118, 0, 132, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 0, 0, 0, 0, 0, 0, 1172, 0, 129, 0, + 88, 89, 90, 91, 92, 93, 94, 0, 0, 0, + 271, 272, 273, 274, 275, 127, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 0, 0, 0, 0, 0, + 285, 0, 0, 0, 553, 24, 25, 26, 27, 28, + 29, 0, 0, 67, 256, 0, 0, 34, 35, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 0, 0, 100, 101, 102, 103, 829, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 24, 25, - 26, 27, 28, 29, 144, 0, 0, 0, 0, 0, - 0, 35, 36, 276, 277, 278, 279, 280, 0, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 0, 0, - 0, 0, 0, 290, 0, 0, 0, 0, 0, 1020, - 102, 103, 104, 105, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 110, 130, - 0, 0, 0, 0, 112, 0, 0, 0, 0, 115, - 0, 69, 128, 0, 118, 0, 132, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 0, 0, 0, 276, 277, 278, 279, 280, 129, - 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, - 0, 0, 0, 0, 290, 0, 0, 0, 435, 24, - 25, 26, 27, 28, 29, 0, 0, 0, 0, 0, - 0, 0, 35, 36, 276, 277, 278, 279, 280, 0, - 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, - 0, 0, 0, 0, 290, 0, 0, 0, 0, 0, - 0, 102, 103, 104, 105, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, - 130, 0, 0, 0, 0, 112, 0, 0, 0, 0, - 131, 0, 69, 128, 0, 118, 0, 132, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 0, 0, 0, 276, 277, 278, 279, 280, - 129, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 0, 0, 0, 0, 0, 290, 0, 0, 0, 546, - 24, 25, 26, 27, 28, 29, 0, 0, 0, 69, - 261, 0, 0, 35, 36, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 0, - 0, 1109, 102, 103, 104, 105, 0, 0, 0, 0, + 0, 0, 0, 108, 128, 0, 0, 0, 0, 110, + 0, 0, 0, 0, 113, 0, 67, 256, 0, 116, + 0, 130, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 0, 0, 0, 0, + 0, 100, 101, 102, 103, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, + 109, 0, 0, 0, 0, 110, 0, 0, 0, 0, + 113, 0, 0, 261, 0, 116, 0, 262, 0, 0, + 0, 0, 271, 272, 273, 274, 275, 0, 276, 277, + 278, 279, 280, 281, 282, 283, 284, 0, 0, 0, + 0, 0, 285, 0, 100, 101, 102, 103, 981, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 110, 130, 0, 0, 0, 0, 112, 0, 0, 0, - 0, 115, 0, 69, 261, 0, 118, 0, 132, 73, + 0, 0, 108, 109, 0, 0, 0, 0, 110, 0, + 0, 0, 0, 113, 0, 0, 453, 0, 116, 0, + 454, 67, 256, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 102, - 103, 104, 105, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 110, 111, 0, - 0, 0, 0, 112, 0, 0, 0, 0, 115, 0, - 0, 266, 0, 118, 0, 267, 276, 277, 278, 279, - 280, 0, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 0, 0, 0, 0, 0, 290, 0, 0, 0, - 0, 0, 0, 102, 103, 104, 105, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 110, 111, 0, 0, 0, 0, 112, 0, 0, - 0, 0, 115, 0, 0, 461, 0, 118, 0, 462, - 69, 261, 0, 0, 0, 0, 73, 74, 75, 76, + 94, 0, 0, 0, 0, 0, 0, 0, 67, 256, + 0, 0, 0, 0, 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, - 0, 0, 0, 0, 0, 0, 0, 69, 296, 0, - 0, 0, 0, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 69, 261, 0, - 0, 0, 0, 73, 74, 75, 76, 77, 78, 79, + 87, 88, 89, 90, 91, 92, 93, 94, 0, 0, + 0, 271, 272, 273, 274, 275, 0, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 0, 0, 0, 0, + 0, 285, 0, 0, 0, 0, 0, 0, 0, 100, + 101, 102, 103, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 108, 109, 0, + 0, 0, 0, 110, 0, 0, 0, 0, 113, 0, + 0, 625, 0, 116, 0, 626, 100, 101, 102, 103, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 337, 338, 0, 0, 0, 0, + 110, 0, 0, 0, 0, 339, 0, 67, 68, 69, + 116, 70, 164, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 0, 95, 96, + 97, 98, 0, 0, 99, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 67, 126, 0, 0, 0, + 0, 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, 0, 0, 0, - 102, 103, 104, 105, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 110, 111, - 0, 0, 0, 0, 112, 0, 0, 0, 0, 115, - 0, 0, 636, 0, 118, 0, 637, 102, 103, 104, - 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 110, 111, 0, 0, 0, - 0, 112, 0, 0, 0, 0, 115, 102, 103, 104, - 105, 118, 0, 297, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 342, 343, 0, 0, 0, - 0, 112, 0, 0, 0, 0, 344, 0, 69, 70, - 71, 118, 72, 166, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 0, 97, - 98, 99, 100, 0, 0, 101, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 69, 128, - 0, 0, 0, 0, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 0, 0, - 0, 0, 0, 0, 0, 0, 129, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 102, 103, - 104, 105, 106, 107, 108, 109, 24, 25, 26, 27, - 28, 29, 0, 0, 0, 0, 110, 111, 0, 35, - 36, 0, 112, 113, 114, 0, 0, 115, 0, 116, - 0, 117, 118, 276, 277, 278, 279, 280, 0, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 102, 103, - 104, 105, 0, 290, 0, 0, 0, 0, 0, 0, - 963, 0, 964, 0, 0, 0, 110, 299, 0, 0, - 0, 0, 112, 0, 0, 0, 0, 115, 69, 261, - 202, 0, 118, 0, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 0, 97, - 98, 99, 100, 69, 261, 101, 0, 0, 0, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 69, 296, 0, 0, 0, 0, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 0, 0, 304, 0, 0, 102, 103, - 104, 105, 0, 0, 0, 0, 0, 0, 0, 0, - 540, 0, 0, 0, 0, 0, 110, 111, 0, 0, - 0, 0, 112, 0, 0, 627, 0, 115, 0, 0, - 0, 0, 118, 102, 103, 104, 105, 0, 0, 0, - 642, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 110, 111, 0, 0, 812, 0, 112, 0, 0, - 0, 0, 115, 102, 103, 104, 105, 118, 0, 0, + 90, 91, 92, 93, 94, 0, 0, 0, 0, 0, + 0, 0, 0, 127, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 100, 101, 102, 103, 104, + 105, 106, 107, 24, 25, 26, 27, 28, 29, 0, + 0, 0, 0, 108, 109, 34, 35, 0, 0, 110, + 111, 112, 0, 0, 113, 0, 114, 0, 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 110, 111, 0, 0, 0, 0, 112, 0, 0, - 0, 0, 115, 0, 0, 0, 0, 118, 276, 277, - 278, 279, 280, 0, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 276, 277, 278, 279, 280, 290, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 276, 277, - 278, 279, 280, 290, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 276, 277, 278, 279, 280, 290, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 276, 277, - 278, 279, 280, 290, 281, 282, 283, 284, 285, 286, - 287, 288, 289, -3, 1, 0, 0, -3, 290, 0, - 276, 277, 278, 279, 280, 0, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 0, 0, 0, 0, 0, - 290, 0, 0, 0, 0, 0, -3, 990, 0, 991, + 0, 0, 0, 100, 101, 102, 103, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 108, 294, 0, 0, 0, 0, 110, 0, 0, + 0, 0, 113, 67, 256, 197, 0, 116, 0, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 0, 95, 96, 97, 98, 67, 256, + 99, 0, 0, 0, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 67, 291, + 0, 0, 0, 0, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 990, 0, + 0, 100, 101, 102, 103, 0, 0, 0, 0, 0, + 0, 0, 0, 991, 0, 0, 0, 0, 0, 108, + 109, 0, 0, 0, 0, 110, 0, 0, 993, 0, + 113, 0, 0, 0, 0, 116, 100, 101, 102, 103, + 0, 0, 0, 1072, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 108, 109, 0, 0, 0, 0, + 110, 0, 0, 0, 0, 113, 100, 101, 102, 103, + 116, 299, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 108, 109, 530, 0, 0, 0, + 110, 0, 0, 0, 0, 113, 0, 0, 0, 0, + 116, 271, 272, 273, 274, 275, 0, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 271, 272, 273, 274, + 275, 285, 276, 277, 278, 279, 280, 281, 282, 283, + 284, 271, 272, 273, 274, 275, 285, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 271, 272, 273, 274, + 275, 285, 276, 277, 278, 279, 280, 281, 282, 283, + 284, 616, 0, 0, 0, 0, 285, 0, 0, 0, + 0, 0, 271, 272, 273, 274, 275, 0, 276, 277, + 278, 279, 280, 281, 282, 283, 284, 271, 272, 273, + 274, 275, 285, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 631, 0, 0, 0, 0, 285, 0, 508, + 9, 10, 509, 510, 13, 511, 15, 796, 16, 0, + 18, 19, 0, 21, 22, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 271, 272, 273, 274, 275, 33, + 276, 277, 278, 279, 280, 281, 282, 283, 284, 37, + 38, 39, 0, 0, 285, 0, 423, 0, 0, 0, + 0, 491, 271, 272, 273, 274, 275, 0, 276, 277, + 278, 279, 280, 281, 282, 283, 284, 0, 0, 0, + 0, 0, 285, 0, 0, 0, 0, 0, 271, 272, + 273, 274, 275, 0, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 271, 272, 273, 274, 275, 285, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 271, 272, + 273, 274, 275, 285, 276, 277, 278, 279, 280, 281, + 282, 283, 284, -3, 1, 0, 0, -3, 285, 0, + 271, 272, 273, 274, 275, 0, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 0, 0, 0, 0, 0, + 285, 0, 0, 0, 0, 0, -3, 941, 0, 942, 0, -3, -3, 0, -3, -3, -3, -3, -3, -3, -3, -3, 0, -3, -3, -3, -3, -3, -3, -3, 0, 0, 0, -3, -3, -3, -3, -3, -3, -3, - 0, -3, -3, -3, -3, -3, 0, -3, -3, 0, - 0, 0, 0, 0, -3, -3, -3, -3, 0, 0, - 0, 0, -3, 0, -3, 0, -3, -3, -3, -3, - -3, -3, -3, -3, -3, -3, 516, 9, 10, 517, - 518, 13, 519, 15, 0, 16, 0, 18, 19, 0, - 21, 22, 0, 0, 0, 0, 0, 516, 9, 10, - 517, 518, 13, 519, 15, 0, 16, 34, 18, 19, - 0, 21, 22, 0, 0, 0, 0, 38, 39, 40, - 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, - 0, 0, 0, 0, 0, 50, 0, 0, 38, 39, - 40, 0, 0, 516, 9, 10, 517, 518, 13, 519, - 15, 0, 16, 0, 18, 19, 50, 21, 22, 276, - 277, 278, 279, 280, 0, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 34, 520, 0, 0, 0, 290, - 0, 0, 0, 0, 38, 39, 40, 0, 635, 0, - 0, 0, 0, 0, 0, 0, 526, 0, 0, 0, - 0, 0, 50, 516, 9, 10, 517, 518, 13, 519, - 15, 0, 16, 0, 18, 19, 0, 21, 22, 0, - 0, 0, 0, 0, 516, 9, 10, 517, 518, 13, - 519, 15, 0, 16, 34, 18, 19, 0, 21, 22, - 0, 0, 543, 0, 38, 39, 40, 0, 0, 0, - 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, - 0, 0, 50, 0, 0, 38, 39, 40, 0, 0, - 516, 9, 10, 517, 518, 13, 519, 15, 0, 16, - 0, 18, 19, 50, 21, 22, 276, 277, 278, 279, - 280, 0, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 34, 544, 0, 0, 0, 290, 0, 0, 0, - 0, 38, 39, 40, 0, 656, 0, 0, 0, 0, - 0, 0, 0, 678, 0, 0, 0, 0, 0, 50, - 516, 9, 10, 517, 518, 13, 519, 15, 0, 16, - 0, 18, 19, 0, 21, 22, 0, 0, 0, 0, - 0, 516, 9, 10, 517, 518, 13, 519, 15, 0, - 16, 34, 18, 19, 0, 21, 22, 0, 0, 700, - 0, 38, 39, 40, 4, 0, 0, 0, 0, 0, - 0, 0, 34, 0, 0, 0, 0, 0, 0, 50, - 0, 0, 38, 39, 40, 0, 0, 0, 0, 0, - 0, 0, 0, 5, 0, 0, 0, 0, 6, 7, - 50, 8, 9, 10, 11, 12, 13, 14, 15, 0, - 16, 17, 18, 19, 20, 21, 22, 0, 0, 1100, - 23, 24, 25, 26, 27, 28, 29, 0, 30, 31, - 32, 33, 34, 0, 35, 36, 0, 0, 0, 0, - 1151, 37, 38, 39, 40, 0, 0, 0, 0, 41, - 0, 42, 0, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 276, 277, 278, 279, 280, 0, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 0, 0, - 0, 0, 0, 290, 0, 0, 0, 0, 0, 0, - 1059, 0, 1060, 276, 277, 278, 279, 280, 0, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 0, 0, - 0, 0, 0, 290, 0, 0, 0, 276, 277, 278, - 279, 280, 660, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 0, 0, 0, 0, 0, 290, 0, 0, - 0, 276, 277, 278, 279, 280, 661, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 0, 0, 0, 0, - 0, 290, 0, 0, 0, 276, 277, 278, 279, 280, - 708, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 0, 0, 0, 0, 0, 290, 0, 0, 0, 276, - 277, 278, 279, 280, 783, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 0, 0, 0, 0, 0, 290, - 0, 0, 0, 276, 277, 278, 279, 280, 961, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 0, 0, - 0, 0, 0, 290, 0, 0, 0, 276, 277, 278, - 279, 280, 975, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 0, 0, 0, 0, 0, 290, 0, 0, - 0, 276, 277, 278, 279, 280, 1071, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 0, 0, 0, 0, - 0, 290, 0, 0, 0, 276, 277, 278, 279, 280, - 1079, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 0, 0, 0, 0, 0, 290, 0, 0, 0, 276, - 277, 278, 279, 280, 1080, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 0, 0, 0, 0, 0, 290, - 0, 0, 0, 276, 277, 278, 279, 280, 1091, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 0, 0, - 0, 0, 0, 290, 0, 0, 0, 276, 277, 278, - 279, 280, 1094, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 0, 0, 0, 0, 0, 290, 0, 0, - 0, 276, 277, 278, 279, 280, 1097, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 0, 0, 0, 0, - 0, 290, 0, 0, 0, 276, 277, 278, 279, 280, - 1105, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 0, 0, 0, 0, 0, 290, 0, 0, 0, 276, - 277, 278, 279, 280, 1106, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 0, 0, 0, 0, 0, 290, - 0, 0, 0, 276, 277, 278, 279, 280, 1117, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 0, 0, - 0, 0, 0, 290, 0, 0, 0, 276, 277, 278, - 279, 280, 1145, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 0, 0, 0, 0, 0, 290, 0, 0, - 0, 276, 277, 278, 279, 280, 1147, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 0, 0, 0, 0, - 0, 290, 0, 0, 0, 276, 277, 278, 279, 280, - 1149, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 0, 0, 0, 0, 0, 290, 0, 0, 0, 276, - 277, 278, 279, 280, 1159, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 0, 0, 0, 0, 0, 290, - 0, 0, 0, 276, 277, 278, 279, 280, 1220, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 0, 0, - 0, 0, 0, 290, 0, 0, 0, 276, 277, 278, - 279, 280, 1223, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 0, 0, 0, 0, 0, 290, 0, 431, - 0, 0, 0, 0, 499, 276, 277, 278, 279, 280, - 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 0, 0, 0, 0, 0, 290, 0, 276, 277, 278, - 279, 280, 460, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 0, 0, 0, 0, 0, 290, 0, 276, - 277, 278, 279, 280, 499, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 0, 0, 0, 0, 0, 290, - 0, 276, 277, 278, 279, 280, 500, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 0, 0, 0, 0, - 0, 290, 0, 276, 277, 278, 279, 280, 537, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 0, 0, - 0, 0, 0, 290, 0, 276, 277, 278, 279, 280, - 585, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 0, 0, 0, 0, 0, 290, 0, 276, 277, 278, - 279, 280, 586, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 0, 0, 0, 0, 0, 290, 0, 276, - 277, 278, 279, 280, 599, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 0, 0, 0, 0, 0, 290, - 0, 276, 277, 278, 279, 280, 600, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 0, 0, 0, 0, - 0, 290, 0, 276, 277, 278, 279, 280, 601, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 0, 0, - 0, 0, 0, 290, 0, 276, 277, 278, 279, 280, - 602, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 0, 0, 0, 0, 0, 290, 0, 276, 277, 278, - 279, 280, 603, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 0, 0, 0, 0, 0, 290, 0, 276, - 277, 278, 279, 280, 604, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 0, 0, 0, 0, 0, 290, - 0, 276, 277, 278, 279, 280, 674, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 0, 0, 0, 0, - 0, 290, 0, 276, 277, 278, 279, 280, 675, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 0, 0, - 0, 0, 0, 290, 0, 276, 277, 278, 279, 280, - 676, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 0, 0, 0, 0, 0, 290, 0, 276, 277, 278, - 279, 280, 749, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 0, 0, 0, 0, 0, 290, 0, 276, - 277, 278, 279, 280, 781, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 0, 0, 0, 0, 0, 290, - 0, 276, 277, 278, 279, 280, 782, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 0, 0, 0, 0, - 0, 290, 0, 276, 277, 278, 279, 280, 811, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 0, 0, - 0, 0, 0, 290, 0, 276, 277, 278, 279, 280, - 904, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 0, 0, 0, 0, 0, 290, 0, 276, 277, 278, - 279, 280, 905, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 0, 0, 0, 0, 0, 290, 0, 276, - 277, 278, 279, 280, 921, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 0, 0, 0, 0, 0, 290, - 0, 276, 277, 278, 279, 280, 922, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 0, 0, 0, 0, - 0, 290, 0, 276, 277, 278, 279, 280, 939, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 0, 0, - 0, 0, 0, 290, 0, 276, 277, 278, 279, 280, - 945, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 0, 0, 0, 0, 0, 290, 0, 276, 277, 278, - 279, 280, 1035, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 0, 0, 0, 0, 0, 290, 0, 276, - 277, 278, 279, 280, 1036, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 0, 0, 0, 0, 0, 290, - 0, 276, 277, 278, 279, 280, 1044, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 0, 0, 0, 0, - 0, 290, 0, 276, 277, 278, 279, 280, 1047, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 0, 0, - 0, 0, 0, 290, 0, 276, 277, 278, 279, 280, - 1048, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 0, 0, 0, 0, 0, 290, 0, 276, 277, 278, - 279, 280, 1056, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 0, 0, 0, 0, 0, 290, 0, 276, - 277, 278, 279, 280, 1057, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 0, 0, 0, 0, 0, 290, - 0, 276, 277, 278, 279, 280, 1113, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 0, 0, 0, 0, - 0, 290, 0, 276, 277, 278, 279, 280, 1115, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 0, 0, - 0, 0, 0, 290, 0, 276, 277, 278, 279, 280, - 1209, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 0, 0, 0, 0, 0, 290, 0, 276, 277, 278, - 279, 280, 1219, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 0, 0, 0, 0, 0, 290, 0, 0, - 0, 564, 276, 277, 278, 279, 280, 0, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 0, 0, 0, - 0, 0, 290, 0, 0, 0, 566, 276, 277, 278, - 279, 280, 0, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 0, 0, 0, 0, 0, 290, 0, 0, - 0, 568, 276, 277, 278, 279, 280, 0, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 0, 0, 0, - 0, 0, 290, 0, 0, 0, 570, 276, 277, 278, - 279, 280, 0, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 0, 0, 0, 0, 0, 290, 0, 0, - 0, 572, 276, 277, 278, 279, 280, 0, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 0, 0, 0, - 0, 0, 290, 0, 0, 0, 574, 276, 277, 278, - 279, 280, 0, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 0, 0, 0, 0, 0, 290, 0, 0, - 0, 576, 276, 277, 278, 279, 280, 0, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 0, 0, 0, - 0, 0, 290, 0, 0, 0, 578, 276, 277, 278, - 279, 280, 0, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 0, 0, 0, 0, 0, 290, 0, 0, - 0, 580, 276, 277, 278, 279, 280, 0, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 0, 0, 0, - 0, 0, 290, 0, 0, 0, 582, 276, 277, 278, - 279, 280, 0, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 0, 0, 0, 0, 0, 290, 0, 0, - 0, 584, 276, 277, 278, 279, 280, 0, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 0, 0, 0, - 0, 0, 290, 0, 0, 0, 588, 276, 277, 278, - 279, 280, 0, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 0, 0, 0, 0, 0, 290, 0, 0, - 0, 590, 276, 277, 278, 279, 280, 0, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 0, 0, 0, - 0, 0, 290, 0, 0, 0, 592, 276, 277, 278, - 279, 280, 0, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 0, 0, 0, 0, 0, 290, 0, 0, - 0, 594, 276, 277, 278, 279, 280, 0, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 0, 0, 0, - 0, 0, 290, 0, 0, 0, 596, 276, 277, 278, - 279, 280, 0, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 0, 0, 0, 0, 0, 290, 0, 0, - 0, 598, 276, 277, 278, 279, 280, 0, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 0, 0, 0, - 0, 0, 290, 0, 0, 0, 634, 276, 277, 278, - 279, 280, 0, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 0, 0, 0, 0, 0, 290, 0, 0, - 0, 680, 276, 277, 278, 279, 280, 0, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 0, 0, 0, - 0, 0, 290, 0, 0, 0, 688, 276, 277, 278, - 279, 280, 0, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 0, 0, 0, 0, 0, 290, 0, 0, - 0, 691, 276, 277, 278, 279, 280, 0, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 0, 0, 0, - 0, 0, 290, 0, 0, 0, 692, 276, 277, 278, - 279, 280, 0, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 0, 0, 0, 0, 0, 290, 0, 0, - 0, 704, 276, 277, 278, 279, 280, 0, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 0, 0, 0, - 0, 0, 290, 0, 0, 0, 828, 276, 277, 278, - 279, 280, 0, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 0, 0, 0, 0, 0, 290, 0, 0, - 0, 830, 276, 277, 278, 279, 280, 0, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 0, 0, 0, - 0, 0, 290, 0, 0, 0, 832, 276, 277, 278, - 279, 280, 0, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 0, 0, 0, 0, 0, 290, 0, 0, - 0, 834, 276, 277, 278, 279, 280, 0, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 0, 0, 0, - 0, 0, 290, 0, 0, 0, 835, 276, 277, 278, - 279, 280, 0, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 0, 0, 0, 0, 0, 290, 0, 0, - 0, 936, 276, 277, 278, 279, 280, 0, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 0, 0, 0, - 0, 0, 290, 0, 431, 276, 277, 278, 279, 280, - 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 0, 0, 0, 0, 0, 290, 0, 467, 276, 277, - 278, 279, 280, 0, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 0, 0, 0, 0, 0, 290, 0, - 472, 276, 277, 278, 279, 280, 0, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 0, 0, 0, 0, - 0, 290, 0, 473, 276, 277, 278, 279, 280, 0, - 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, - 0, 0, 0, 0, 290, 0, 475, 276, 277, 278, - 279, 280, 0, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 0, 0, 0, 0, 0, 290, 0, 480, - 276, 277, 278, 279, 280, 0, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 0, 0, 0, 0, 0, - 290, 0, 481, 276, 277, 278, 279, 280, 0, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 0, 0, - 0, 0, 0, 290, 0, 483, 276, 277, 278, 279, - 280, 0, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 0, 0, 0, 0, 0, 290, 0, 531, 276, - 277, 278, 279, 280, 0, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 0, 0, 0, 0, 0, 290, - 0, 532, 276, 277, 278, 279, 280, 0, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 0, 0, 0, - 0, 0, 290, 0, 535, 276, 277, 278, 279, 280, - 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 0, 0, 0, 0, 0, 290, 0, 541, 276, 277, - 278, 279, 280, 0, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 0, 0, 0, 0, 0, 290, 0, - 563, 276, 277, 278, 279, 280, 0, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 0, 0, 0, 0, - 0, 290, 0, 565, 276, 277, 278, 279, 280, 0, - 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, - 0, 0, 0, 0, 290, 0, 567, 276, 277, 278, - 279, 280, 0, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 0, 0, 0, 0, 0, 290, 0, 569, - 276, 277, 278, 279, 280, 0, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 0, 0, 0, 0, 0, - 290, 0, 571, 276, 277, 278, 279, 280, 0, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 0, 0, - 0, 0, 0, 290, 0, 573, 276, 277, 278, 279, - 280, 0, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 0, 0, 0, 0, 0, 290, 0, 575, 276, - 277, 278, 279, 280, 0, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 0, 0, 0, 0, 0, 290, - 0, 577, 276, 277, 278, 279, 280, 0, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 0, 0, 0, - 0, 0, 290, 0, 579, 276, 277, 278, 279, 280, - 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 0, 0, 0, 0, 0, 290, 0, 581, 276, 277, - 278, 279, 280, 0, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 0, 0, 0, 0, 0, 290, 0, - 583, 276, 277, 278, 279, 280, 0, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 0, 0, 0, 0, - 0, 290, 0, 587, 276, 277, 278, 279, 280, 0, - 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, - 0, 0, 0, 0, 290, 0, 589, 276, 277, 278, - 279, 280, 0, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 0, 0, 0, 0, 0, 290, 0, 591, - 276, 277, 278, 279, 280, 0, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 0, 0, 0, 0, 0, - 290, 0, 593, 276, 277, 278, 279, 280, 0, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 0, 0, - 0, 0, 0, 290, 0, 595, 276, 277, 278, 279, - 280, 0, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 0, 0, 0, 0, 0, 290, 0, 597, 276, - 277, 278, 279, 280, 0, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 0, 0, 0, 0, 0, 290, - 0, 646, 276, 277, 278, 279, 280, 0, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 0, 0, 0, - 0, 0, 290, 0, 650, 276, 277, 278, 279, 280, - 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 0, 0, 0, 0, 0, 290, 0, 657, 276, 277, - 278, 279, 280, 0, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 0, 0, 0, 0, 0, 290, 0, - 658, 276, 277, 278, 279, 280, 0, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 0, 0, 0, 0, - 0, 290, 0, 662, 276, 277, 278, 279, 280, 0, - 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, - 0, 0, 0, 0, 290, 0, 696, 276, 277, 278, - 279, 280, 0, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 0, 0, 0, 0, 0, 290, 0, 703, - 276, 277, 278, 279, 280, 0, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 0, 0, 0, 0, 0, - 290, 0, 827, 276, 277, 278, 279, 280, 0, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 0, 0, - 0, 0, 0, 290, 0, 829, 276, 277, 278, 279, - 280, 0, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 0, 0, 0, 0, 0, 290, 0, 831, 276, - 277, 278, 279, 280, 0, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 0, 0, 0, 0, 0, 290, - 0, 833, 276, 277, 278, 279, 280, 0, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 0, 0, 0, - 0, 0, 290, 0, 839, 276, 277, 278, 279, 280, - 0, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 0, 0, 0, 0, 0, 290, 0, 898, 276, 277, - 278, 279, 280, 0, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 0, 0, 0, 0, 0, 290, 0, - 900, 276, 277, 278, 279, 280, 0, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 0, 0, 0, 0, - 0, 290, 0, 908, 276, 277, 278, 279, 280, 0, - 281, 282, 283, 284, 285, 286, 287, 288, 289, 0, - 0, 0, 0, 0, 290, 0, 927, 276, 277, 278, - 279, 280, 0, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 0, 0, 0, 0, 0, 290, 0, 962, - 276, 277, 278, 279, 280, 0, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 0, 0, 0, 0, 0, - 290, 0, 994, 276, 277, 278, 279, 280, 0, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 0, 0, - 0, 0, 0, 290, 0, 1112, 276, 277, 278, 279, - 280, 0, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 0, 0, 0, 0, 0, 290, 0, 1158, 276, - 277, 278, 279, 280, 0, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 0, 0, 0, 0, 0, 290 + 0, -3, -3, -3, -3, 0, -3, -3, 0, 0, + 0, 0, 0, -3, -3, -3, -3, 0, 0, 0, + 0, -3, 0, -3, 0, -3, -3, -3, -3, -3, + -3, -3, -3, -3, 508, 9, 10, 509, 510, 13, + 511, 15, 0, 16, 0, 18, 19, 0, 21, 22, + 0, 508, 9, 10, 509, 510, 13, 511, 15, 0, + 16, 0, 18, 19, 33, 21, 22, 0, 0, 0, + 0, 0, 0, 0, 37, 38, 39, 0, 0, 0, + 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 37, 38, 39, 508, 9, 10, 509, 510, 13, + 511, 15, 0, 16, 0, 18, 19, 0, 21, 22, + 0, 508, 9, 10, 509, 510, 13, 511, 15, 0, + 16, 0, 18, 19, 33, 21, 22, 0, 0, 0, + 0, 512, 0, 0, 37, 38, 39, 0, 0, 0, + 0, 33, 0, 0, 0, 0, 0, 0, 518, 0, + 0, 37, 38, 39, 508, 9, 10, 509, 510, 13, + 511, 15, 0, 16, 0, 18, 19, 0, 21, 22, + 0, 508, 9, 10, 509, 510, 13, 511, 15, 0, + 16, 0, 18, 19, 33, 21, 22, 0, 0, 0, + 0, 532, 0, 0, 37, 38, 39, 0, 0, 0, + 0, 33, 0, 0, 0, 0, 0, 0, 533, 0, + 0, 37, 38, 39, 508, 9, 10, 509, 510, 13, + 511, 15, 0, 16, 0, 18, 19, 0, 21, 22, + 0, 508, 9, 10, 509, 510, 13, 511, 15, 0, + 16, 0, 18, 19, 33, 21, 22, 0, 4, 0, + 0, 667, 0, 0, 37, 38, 39, 0, 0, 0, + 0, 33, 0, 0, 0, 0, 0, 0, 687, 0, + 0, 37, 38, 39, 0, 0, 0, 5, 0, 0, + 0, 0, 6, 7, 0, 8, 9, 10, 11, 12, + 13, 14, 15, 0, 16, 17, 18, 19, 20, 21, + 22, 0, 0, 0, 23, 24, 25, 26, 27, 28, + 29, 1065, 30, 31, 32, 33, 0, 34, 35, 0, + 0, 0, 0, 0, 36, 37, 38, 39, 1110, 0, + 0, 0, 40, 0, 41, 0, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 271, 272, 273, 274, 275, + 0, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 0, 0, 0, 0, 0, 285, 0, 0, 0, 0, + 0, 0, 964, 0, 965, 271, 272, 273, 274, 275, + 0, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 0, 0, 0, 0, 0, 285, 0, 0, 0, 0, + 0, 0, 1027, 0, 1028, 271, 272, 273, 274, 275, + 0, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 0, 0, 0, 0, 0, 285, 0, 0, 0, 271, + 272, 273, 274, 275, 624, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 0, 0, 0, 0, 0, 285, + 0, 0, 0, 271, 272, 273, 274, 275, 645, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 0, 0, + 0, 0, 0, 285, 0, 0, 0, 271, 272, 273, + 274, 275, 649, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 0, 0, 0, 0, 0, 285, 0, 0, + 0, 271, 272, 273, 274, 275, 650, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 0, 0, 0, 0, + 0, 285, 0, 0, 0, 271, 272, 273, 274, 275, + 694, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 0, 0, 0, 0, 0, 285, 0, 0, 0, 271, + 272, 273, 274, 275, 769, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 0, 0, 0, 0, 0, 285, + 0, 0, 0, 271, 272, 273, 274, 275, 939, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 0, 0, + 0, 0, 0, 285, 0, 0, 0, 271, 272, 273, + 274, 275, 953, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 0, 0, 0, 0, 0, 285, 0, 0, + 0, 271, 272, 273, 274, 275, 1039, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 0, 0, 0, 0, + 0, 285, 0, 0, 0, 271, 272, 273, 274, 275, + 1045, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 0, 0, 0, 0, 0, 285, 0, 0, 0, 271, + 272, 273, 274, 275, 1046, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 0, 0, 0, 0, 0, 285, + 0, 0, 0, 271, 272, 273, 274, 275, 1056, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 0, 0, + 0, 0, 0, 285, 0, 0, 0, 271, 272, 273, + 274, 275, 1059, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 0, 0, 0, 0, 0, 285, 0, 0, + 0, 271, 272, 273, 274, 275, 1062, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 0, 0, 0, 0, + 0, 285, 0, 0, 0, 271, 272, 273, 274, 275, + 1070, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 0, 0, 0, 0, 0, 285, 0, 0, 0, 271, + 272, 273, 274, 275, 1071, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 0, 0, 0, 0, 0, 285, + 0, 0, 0, 271, 272, 273, 274, 275, 1079, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 0, 0, + 0, 0, 0, 285, 0, 0, 0, 271, 272, 273, + 274, 275, 1104, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 0, 0, 0, 0, 0, 285, 0, 0, + 0, 271, 272, 273, 274, 275, 1106, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 0, 0, 0, 0, + 0, 285, 0, 0, 0, 271, 272, 273, 274, 275, + 1108, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 0, 0, 0, 0, 0, 285, 0, 0, 0, 271, + 272, 273, 274, 275, 1116, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 0, 0, 0, 0, 0, 285, + 0, 271, 272, 273, 274, 275, 452, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 0, 0, 0, 0, + 0, 285, 0, 271, 272, 273, 274, 275, 491, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 0, 0, + 0, 0, 0, 285, 0, 271, 272, 273, 274, 275, + 492, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 0, 0, 0, 0, 0, 285, 0, 271, 272, 273, + 274, 275, 527, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 0, 0, 0, 0, 0, 285, 0, 271, + 272, 273, 274, 275, 574, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 0, 0, 0, 0, 0, 285, + 0, 271, 272, 273, 274, 275, 575, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 0, 0, 0, 0, + 0, 285, 0, 271, 272, 273, 274, 275, 588, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 0, 0, + 0, 0, 0, 285, 0, 271, 272, 273, 274, 275, + 589, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 0, 0, 0, 0, 0, 285, 0, 271, 272, 273, + 274, 275, 590, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 0, 0, 0, 0, 0, 285, 0, 271, + 272, 273, 274, 275, 591, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 0, 0, 0, 0, 0, 285, + 0, 271, 272, 273, 274, 275, 592, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 0, 0, 0, 0, + 0, 285, 0, 271, 272, 273, 274, 275, 593, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 0, 0, + 0, 0, 0, 285, 0, 271, 272, 273, 274, 275, + 663, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 0, 0, 0, 0, 0, 285, 0, 271, 272, 273, + 274, 275, 664, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 0, 0, 0, 0, 0, 285, 0, 271, + 272, 273, 274, 275, 665, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 0, 0, 0, 0, 0, 285, + 0, 271, 272, 273, 274, 275, 735, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 0, 0, 0, 0, + 0, 285, 0, 271, 272, 273, 274, 275, 767, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 0, 0, + 0, 0, 0, 285, 0, 271, 272, 273, 274, 275, + 768, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 0, 0, 0, 0, 0, 285, 0, 271, 272, 273, + 274, 275, 795, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 0, 0, 0, 0, 0, 285, 0, 271, + 272, 273, 274, 275, 887, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 0, 0, 0, 0, 0, 285, + 0, 271, 272, 273, 274, 275, 888, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 0, 0, 0, 0, + 0, 285, 0, 271, 272, 273, 274, 275, 899, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 0, 0, + 0, 0, 0, 285, 0, 271, 272, 273, 274, 275, + 900, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 0, 0, 0, 0, 0, 285, 0, 271, 272, 273, + 274, 275, 917, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 0, 0, 0, 0, 0, 285, 0, 271, + 272, 273, 274, 275, 923, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 0, 0, 0, 0, 0, 285, + 0, 271, 272, 273, 274, 275, 1008, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 0, 0, 0, 0, + 0, 285, 0, 271, 272, 273, 274, 275, 1009, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 0, 0, + 0, 0, 0, 285, 0, 271, 272, 273, 274, 275, + 1015, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 0, 0, 0, 0, 0, 285, 0, 271, 272, 273, + 274, 275, 1016, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 0, 0, 0, 0, 0, 285, 0, 271, + 272, 273, 274, 275, 1024, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 0, 0, 0, 0, 0, 285, + 0, 271, 272, 273, 274, 275, 1025, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 0, 0, 0, 0, + 0, 285, 0, 271, 272, 273, 274, 275, 1075, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 0, 0, + 0, 0, 0, 285, 0, 271, 272, 273, 274, 275, + 1077, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 0, 0, 0, 0, 0, 285, 0, 0, 0, 555, + 271, 272, 273, 274, 275, 0, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 0, 0, 0, 0, 0, + 285, 0, 0, 0, 557, 271, 272, 273, 274, 275, + 0, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 0, 0, 0, 0, 0, 285, 0, 0, 0, 559, + 271, 272, 273, 274, 275, 0, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 0, 0, 0, 0, 0, + 285, 0, 0, 0, 561, 271, 272, 273, 274, 275, + 0, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 0, 0, 0, 0, 0, 285, 0, 0, 0, 563, + 271, 272, 273, 274, 275, 0, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 0, 0, 0, 0, 0, + 285, 0, 0, 0, 565, 271, 272, 273, 274, 275, + 0, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 0, 0, 0, 0, 0, 285, 0, 0, 0, 567, + 271, 272, 273, 274, 275, 0, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 0, 0, 0, 0, 0, + 285, 0, 0, 0, 569, 271, 272, 273, 274, 275, + 0, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 0, 0, 0, 0, 0, 285, 0, 0, 0, 571, + 271, 272, 273, 274, 275, 0, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 0, 0, 0, 0, 0, + 285, 0, 0, 0, 573, 271, 272, 273, 274, 275, + 0, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 0, 0, 0, 0, 0, 285, 0, 0, 0, 577, + 271, 272, 273, 274, 275, 0, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 0, 0, 0, 0, 0, + 285, 0, 0, 0, 579, 271, 272, 273, 274, 275, + 0, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 0, 0, 0, 0, 0, 285, 0, 0, 0, 581, + 271, 272, 273, 274, 275, 0, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 0, 0, 0, 0, 0, + 285, 0, 0, 0, 583, 271, 272, 273, 274, 275, + 0, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 0, 0, 0, 0, 0, 285, 0, 0, 0, 585, + 271, 272, 273, 274, 275, 0, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 0, 0, 0, 0, 0, + 285, 0, 0, 0, 587, 271, 272, 273, 274, 275, + 0, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 0, 0, 0, 0, 0, 285, 0, 0, 0, 623, + 271, 272, 273, 274, 275, 0, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 0, 0, 0, 0, 0, + 285, 0, 0, 0, 669, 271, 272, 273, 274, 275, + 0, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 0, 0, 0, 0, 0, 285, 0, 0, 0, 677, + 271, 272, 273, 274, 275, 0, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 0, 0, 0, 0, 0, + 285, 0, 0, 0, 680, 271, 272, 273, 274, 275, + 0, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 0, 0, 0, 0, 0, 285, 0, 0, 0, 681, + 271, 272, 273, 274, 275, 0, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 0, 0, 0, 0, 0, + 285, 0, 0, 0, 690, 271, 272, 273, 274, 275, + 0, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 0, 0, 0, 0, 0, 285, 0, 0, 0, 811, + 271, 272, 273, 274, 275, 0, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 0, 0, 0, 0, 0, + 285, 0, 0, 0, 813, 271, 272, 273, 274, 275, + 0, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 0, 0, 0, 0, 0, 285, 0, 0, 0, 815, + 271, 272, 273, 274, 275, 0, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 0, 0, 0, 0, 0, + 285, 0, 0, 0, 817, 271, 272, 273, 274, 275, + 0, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 0, 0, 0, 0, 0, 285, 0, 0, 0, 818, + 271, 272, 273, 274, 275, 0, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 0, 0, 0, 0, 0, + 285, 0, 0, 0, 914, 271, 272, 273, 274, 275, + 0, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 0, 0, 0, 0, 0, 285, 0, 423, 271, 272, + 273, 274, 275, 0, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 0, 0, 0, 0, 0, 285, 0, + 459, 271, 272, 273, 274, 275, 0, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 0, 0, 0, 0, + 0, 285, 0, 464, 271, 272, 273, 274, 275, 0, + 276, 277, 278, 279, 280, 281, 282, 283, 284, 0, + 0, 0, 0, 0, 285, 0, 465, 271, 272, 273, + 274, 275, 0, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 0, 0, 0, 0, 0, 285, 0, 467, + 271, 272, 273, 274, 275, 0, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 0, 0, 0, 0, 0, + 285, 0, 472, 271, 272, 273, 274, 275, 0, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 0, 0, + 0, 0, 0, 285, 0, 473, 271, 272, 273, 274, + 275, 0, 276, 277, 278, 279, 280, 281, 282, 283, + 284, 0, 0, 0, 0, 0, 285, 0, 475, 271, + 272, 273, 274, 275, 0, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 0, 0, 0, 0, 0, 285, + 0, 523, 271, 272, 273, 274, 275, 0, 276, 277, + 278, 279, 280, 281, 282, 283, 284, 0, 0, 0, + 0, 0, 285, 0, 524, 271, 272, 273, 274, 275, + 0, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 0, 0, 0, 0, 0, 285, 0, 525, 271, 272, + 273, 274, 275, 0, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 0, 0, 0, 0, 0, 285, 0, + 531, 271, 272, 273, 274, 275, 0, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 0, 0, 0, 0, + 0, 285, 0, 552, 271, 272, 273, 274, 275, 0, + 276, 277, 278, 279, 280, 281, 282, 283, 284, 0, + 0, 0, 0, 0, 285, 0, 554, 271, 272, 273, + 274, 275, 0, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 0, 0, 0, 0, 0, 285, 0, 556, + 271, 272, 273, 274, 275, 0, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 0, 0, 0, 0, 0, + 285, 0, 558, 271, 272, 273, 274, 275, 0, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 0, 0, + 0, 0, 0, 285, 0, 560, 271, 272, 273, 274, + 275, 0, 276, 277, 278, 279, 280, 281, 282, 283, + 284, 0, 0, 0, 0, 0, 285, 0, 562, 271, + 272, 273, 274, 275, 0, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 0, 0, 0, 0, 0, 285, + 0, 564, 271, 272, 273, 274, 275, 0, 276, 277, + 278, 279, 280, 281, 282, 283, 284, 0, 0, 0, + 0, 0, 285, 0, 566, 271, 272, 273, 274, 275, + 0, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 0, 0, 0, 0, 0, 285, 0, 568, 271, 272, + 273, 274, 275, 0, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 0, 0, 0, 0, 0, 285, 0, + 570, 271, 272, 273, 274, 275, 0, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 0, 0, 0, 0, + 0, 285, 0, 572, 271, 272, 273, 274, 275, 0, + 276, 277, 278, 279, 280, 281, 282, 283, 284, 0, + 0, 0, 0, 0, 285, 0, 576, 271, 272, 273, + 274, 275, 0, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 0, 0, 0, 0, 0, 285, 0, 578, + 271, 272, 273, 274, 275, 0, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 0, 0, 0, 0, 0, + 285, 0, 580, 271, 272, 273, 274, 275, 0, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 0, 0, + 0, 0, 0, 285, 0, 582, 271, 272, 273, 274, + 275, 0, 276, 277, 278, 279, 280, 281, 282, 283, + 284, 0, 0, 0, 0, 0, 285, 0, 584, 271, + 272, 273, 274, 275, 0, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 0, 0, 0, 0, 0, 285, + 0, 586, 271, 272, 273, 274, 275, 0, 276, 277, + 278, 279, 280, 281, 282, 283, 284, 0, 0, 0, + 0, 0, 285, 0, 635, 271, 272, 273, 274, 275, + 0, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 0, 0, 0, 0, 0, 285, 0, 639, 271, 272, + 273, 274, 275, 0, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 0, 0, 0, 0, 0, 285, 0, + 646, 271, 272, 273, 274, 275, 0, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 0, 0, 0, 0, + 0, 285, 0, 647, 271, 272, 273, 274, 275, 0, + 276, 277, 278, 279, 280, 281, 282, 283, 284, 0, + 0, 0, 0, 0, 285, 0, 651, 271, 272, 273, + 274, 275, 0, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 0, 0, 0, 0, 0, 285, 0, 810, + 271, 272, 273, 274, 275, 0, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 0, 0, 0, 0, 0, + 285, 0, 812, 271, 272, 273, 274, 275, 0, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 0, 0, + 0, 0, 0, 285, 0, 814, 271, 272, 273, 274, + 275, 0, 276, 277, 278, 279, 280, 281, 282, 283, + 284, 0, 0, 0, 0, 0, 285, 0, 816, 271, + 272, 273, 274, 275, 0, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 0, 0, 0, 0, 0, 285, + 0, 822, 271, 272, 273, 274, 275, 0, 276, 277, + 278, 279, 280, 281, 282, 283, 284, 0, 0, 0, + 0, 0, 285, 0, 881, 271, 272, 273, 274, 275, + 0, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 0, 0, 0, 0, 0, 285, 0, 883, 271, 272, + 273, 274, 275, 0, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 0, 0, 0, 0, 0, 285, 0, + 905, 271, 272, 273, 274, 275, 0, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 0, 0, 0, 0, + 0, 285, 0, 940, 271, 272, 273, 274, 275, 0, + 276, 277, 278, 279, 280, 281, 282, 283, 284, 0, + 0, 0, 0, 0, 285, 0, 968, 271, 272, 273, + 274, 275, 0, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 0, 0, 0, 0, 0, 285, 0, 1074, + 271, 272, 273, 274, 275, 0, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 0, 0, 0, 0, 0, + 285, 0, 1115 }; static const short yycheck[] = { 4, - 4, 4, 337, 4, 177, 269, 2, 180, 6, 2, - 4, 45, 267, 4, 4, 4, 4, 132, 4, 4, - 7, 5, 4, 6, 67, 6, 6, 624, 5, 7, - 203, 4, 205, 132, 6, 5, 67, 4, 133, 6, - 68, 68, 297, 138, 6, 73, 73, 132, 51, 52, - 34, 35, 36, 37, 86, 132, 40, 34, 35, 36, - 37, 6, 139, 40, 34, 35, 36, 37, 132, 6, - 40, 132, 76, 77, 78, 79, 80, 121, 122, 7, - 6, 132, 76, 77, 78, 79, 80, 6, 132, 4, - 6, 7, 68, 909, 910, 139, 139, 73, 132, 790, - 132, 132, 121, 122, 133, 110, 111, 112, 139, 138, - 115, 116, 140, 140, 119, 52, 89, 90, 49, 138, - 107, 126, 132, 121, 122, 130, 131, 132, 45, 107, - 108, 109, 110, 52, 139, 140, 140, 142, 119, 128, - 129, 146, 147, 740, 149, 134, 140, 136, 139, 139, - 132, 139, 141, 139, 139, 139, 139, 119, 128, 129, - 165, 166, 139, 132, 140, 45, 136, 134, 267, 174, - 139, 435, 45, 346, 89, 90, 121, 122, 47, 107, - 108, 109, 110, 188, 189, 1001, 191, 41, 193, 68, - 44, 196, 197, 366, 73, 121, 122, 68, 297, 132, - 128, 129, 73, 208, 459, 132, 139, 462, 136, 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, 139, 849, 256, 257, 258, 259, 139, 68, 68, - 68, 140, 267, 73, 73, 73, 128, 129, 269, 140, - 45, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 8, 121, 122, 294, - 295, 133, 297, 1026, 299, 1028, 138, 1030, 6, 304, - 325, 326, 327, 308, 68, 139, 311, 121, 122, 73, - 121, 122, 317, 318, 319, 6, 321, 322, 323, 324, - 325, 326, 327, 6, 138, 41, 140, 138, 44, 45, - 140, 140, 140, 4, 339, 340, 341, 342, 343, 344, - 336, 337, 347, 336, 337, 68, 4, 352, 121, 122, - 73, 356, 357, 608, 68, 4, 68, 362, 132, 73, - 459, 73, 132, 462, 134, 138, 371, 140, 1101, 468, - 132, 376, 1063, 132, 379, 1066, 140, 378, 1069, 68, - 133, 132, 637, 134, 73, 138, 7, 121, 122, 111, - 112, 113, 114, 115, 132, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 138, 121, 122, 58, 59, 131, - 8, 1144, 1009, 1146, 4, 1148, 132, 140, 140, 1152, - 4, 25, 26, 139, 28, 430, 140, 682, 140, 684, - 685, 686, 437, 436, 435, 121, 122, 45, 132, 1130, - 121, 122, 121, 122, 121, 122, 7, 1180, 132, 1182, - 134, 1184, 132, 139, 459, 460, 132, 462, 139, 138, - 465, 5, 139, 468, 121, 122, 471, 132, 732, 733, - 1161, 476, 477, 1164, 479, 4, 1167, 482, 5, 1170, - 8, 138, 487, 11, 12, 6, 107, 108, 109, 110, - 34, 35, 36, 37, 499, 500, 40, 123, 124, 125, - 139, 92, 1193, 508, 1195, 131, 1197, 128, 129, 608, - 6, 121, 122, 111, 112, 113, 114, 115, 523, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 138, 132, - 140, 134, 537, 131, 539, 540, 121, 122, 637, 121, - 122, 92, 140, 546, 132, 546, 107, 108, 109, 110, - 885, 128, 129, 138, 121, 122, 138, 134, 162, 136, - 164, 121, 122, 132, 141, 134, 170, 128, 129, 132, - 174, 138, 121, 122, 121, 122, 121, 122, 138, 133, - 585, 586, 92, 682, 138, 684, 685, 686, 8, 138, - 132, 138, 134, 138, 599, 600, 601, 602, 603, 604, - 605, 44, 45, 608, 47, 139, 609, 612, 212, 6, - 133, 4, 617, 4, 5, 138, 61, 62, 63, 64, - 148, 66, 627, 128, 129, 153, 132, 630, 134, 74, - 75, 136, 637, 634, 132, 41, 134, 642, 44, 45, - 6, 47, 132, 34, 35, 36, 37, 6, 7, 40, - 178, 132, 132, 134, 134, 183, 184, 113, 114, 115, - 57, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 132, 132, 134, 134, 132, 131, 681, 682, 683, 684, - 685, 686, 139, 132, 689, 690, 6, 1022, 139, 139, - 695, 111, 112, 113, 114, 115, 132, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 711, 712, 132, 132, - 715, 131, 139, 133, 111, 112, 113, 114, 115, 132, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 139, - 334, 335, 733, 132, 131, 134, 741, 6, 132, 343, - 134, 45, 134, 47, 749, 111, 112, 113, 114, 115, - 134, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 132, 766, 134, 114, 115, 131, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 780, 781, 782, 134, 132, - 131, 134, 787, 132, 136, 134, 121, 122, 123, 124, - 125, 111, 112, 113, 114, 115, 131, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 811, 812, 813, 139, - 132, 131, 134, 92, 6, 820, 817, 132, 132, 134, - 825, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 6, 132, 132, 134, 134, 131, 6, 842, 841, 138, - 6, 140, 41, 42, 43, 44, 45, 46, 47, 48, - 853, 50, 134, 52, 53, 4, 55, 56, 1031, 139, - 131, 6, 128, 129, 5, 7, 871, 872, 134, 134, - 136, 136, 4, 72, 6, 141, 881, 138, 881, 140, - 138, 136, 140, 82, 83, 84, 138, 134, 140, 885, - 895, 45, 885, 6, 498, 138, 138, 140, 140, 904, - 905, 100, 128, 129, 432, 433, 7, 47, 134, 513, - 136, 916, 7, 6, 87, 141, 921, 922, 138, 138, - 140, 140, 138, 138, 140, 140, 138, 133, 140, 1102, - 138, 138, 140, 140, 939, 111, 112, 113, 114, 115, - 945, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 6, 138, 138, 140, 140, 131, 7, 138, 963, 140, - 138, 138, 140, 140, 7, 89, 111, 112, 113, 114, - 115, 976, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 139, 138, 133, 6, 990, 131, 992, 4, 133, - 138, 6, 997, 7, 7, 7, 135, 1002, 111, 112, - 113, 114, 115, 7, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 7, 7, 7, 133, 133, 131, 133, - 1025, 6, 1027, 133, 1029, 136, 1022, 7, 140, 1022, - 1035, 1036, 140, 139, 139, 639, 1041, 7, 132, 7, - 136, 132, 1047, 1048, 132, 132, 4, 139, 7, 6, - 6, 1056, 135, 6, 1059, 111, 112, 113, 114, 115, - 6, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 674, 675, 676, 134, 6, 131, 7, 1082, 119, 7, - 139, 7, 7, 6, 4, 7, 7, 1092, 7, 7, - 1095, 7, 7, 1098, 7, 7, 6, 6, 6, 6, - 4, 7, 7, 6, 4, 6, 132, 139, 1113, 133, - 1115, 136, 133, 7, 6, 135, 644, 645, 6, 647, - 6, 6, 139, 6, 652, 653, 111, 112, 113, 114, - 115, 139, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 6, 6, 88, 139, 6, 131, 136, 6, 4, - 6, 135, 6, 6, 1157, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 693, 694, 6, 6, 697, - 6, 6, 6, 6, 6, 139, 7, 88, 4, 6, - 140, 6, 1187, 787, 6, 1188, 7, 1190, 111, 112, - 113, 114, 115, 6, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 1208, 1209, 6, 136, 1210, 131, 6, - 6, 85, 139, 6, 1219, 139, 6, 90, 6, 88, - 6, 5, 139, 6, 6, 139, 6, 6, 6, 757, - 6, 6, 6, 761, 133, 6, 6, 139, 6, 767, - 768, 769, 138, 140, 772, 773, 774, 775, 776, 777, - 778, 140, 139, 6, 138, 859, 138, 861, 111, 112, - 113, 114, 115, 139, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 139, 5, 85, 139, 139, 131, 139, - 139, 6, 886, 140, 888, 6, 890, 6, 140, 111, - 112, 113, 114, 115, 6, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 6, 6, 5, 748, 138, 131, - 3, 4, 840, 85, 6, 139, 9, 10, 11, 12, + 2, 332, 613, 4, 264, 999, 4, 1001, 2, 1003, + 6, 175, 4, 6, 178, 4, 4, 130, 262, 67, + 4, 4, 7, 130, 4, 6, 5, 68, 6, 6, + 6, 72, 6, 4, 198, 4, 200, 6, 25, 26, + 67, 28, 4, 4, 49, 50, 4, 6, 292, 68, + 4, 6, 130, 72, 132, 34, 35, 36, 37, 68, + 130, 40, 130, 72, 5, 131, 41, 137, 6, 44, + 136, 5, 1066, 119, 120, 52, 52, 75, 76, 77, + 78, 79, 130, 75, 76, 77, 78, 79, 130, 137, + 136, 776, 138, 34, 35, 36, 37, 138, 130, 40, + 34, 35, 36, 37, 68, 137, 40, 131, 72, 1103, + 137, 1105, 136, 1107, 130, 726, 131, 1111, 7, 138, + 105, 136, 130, 119, 120, 126, 127, 88, 89, 138, + 49, 132, 131, 134, 88, 89, 117, 136, 139, 117, + 138, 1135, 7, 1137, 137, 1139, 138, 45, 137, 137, + 108, 109, 110, 137, 137, 113, 114, 137, 137, 117, + 119, 120, 130, 132, 119, 120, 124, 427, 130, 45, + 128, 129, 130, 160, 138, 162, 45, 341, 131, 137, + 138, 168, 140, 136, 68, 172, 144, 145, 72, 147, + 119, 120, 126, 127, 262, 359, 137, 119, 120, 47, + 134, 130, 130, 126, 127, 163, 164, 451, 137, 45, + 454, 134, 6, 7, 172, 137, 105, 106, 107, 108, + 207, 832, 119, 120, 292, 137, 68, 185, 186, 187, + 72, 189, 119, 120, 192, 193, 137, 126, 127, 136, + 105, 106, 107, 108, 6, 203, 251, 252, 253, 254, + 137, 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, 264, 119, 120, 138, 7, 121, 122, + 123, 4, 7, 68, 262, 68, 129, 72, 4, 72, + 119, 120, 137, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 280, 281, 282, 283, 284, 285, 137, 331, + 332, 289, 290, 130, 292, 132, 294, 331, 332, 126, + 127, 299, 329, 330, 4, 303, 1031, 130, 306, 1034, + 130, 338, 1037, 597, 312, 313, 314, 130, 316, 317, + 318, 319, 320, 321, 322, 8, 41, 6, 68, 44, + 45, 982, 72, 138, 130, 138, 334, 335, 336, 337, + 338, 339, 626, 451, 342, 130, 454, 68, 130, 347, + 132, 72, 460, 351, 352, 105, 106, 107, 108, 370, + 105, 106, 107, 108, 130, 8, 132, 1092, 11, 12, + 368, 68, 4, 371, 68, 72, 126, 127, 72, 5, + 4, 126, 127, 428, 134, 58, 59, 671, 68, 673, + 674, 675, 72, 1118, 6, 7, 1121, 41, 138, 1124, + 44, 45, 1127, 47, 119, 120, 130, 130, 34, 35, + 36, 37, 130, 130, 40, 130, 427, 138, 718, 719, + 4, 1146, 137, 1148, 422, 1150, 109, 110, 111, 112, + 113, 429, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 138, 6, 6, 138, 6, 129, 119, 120, 5, + 119, 120, 137, 451, 452, 138, 454, 91, 138, 457, + 119, 120, 460, 490, 136, 463, 138, 136, 4, 5, + 468, 469, 130, 471, 119, 120, 474, 136, 505, 138, + 91, 479, 119, 120, 121, 122, 123, 91, 130, 597, + 535, 136, 129, 491, 492, 130, 57, 868, 34, 35, + 36, 37, 500, 146, 40, 119, 120, 137, 151, 119, + 120, 119, 120, 119, 120, 130, 137, 515, 626, 119, + 120, 130, 136, 132, 535, 130, 136, 132, 136, 527, + 136, 529, 530, 176, 126, 127, 136, 180, 181, 130, + 132, 132, 134, 44, 45, 130, 47, 139, 109, 110, + 111, 112, 113, 598, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 671, 137, 673, 674, 675, 129, 119, + 120, 119, 120, 130, 619, 132, 574, 575, 320, 321, + 322, 8, 136, 130, 138, 132, 136, 130, 136, 132, + 588, 589, 590, 591, 592, 593, 594, 119, 120, 597, + 130, 628, 132, 601, 119, 120, 130, 130, 606, 126, + 127, 8, 623, 4, 136, 132, 130, 134, 616, 126, + 127, 136, 139, 132, 995, 132, 130, 134, 626, 45, + 6, 47, 139, 631, 137, 137, 663, 664, 665, 137, + 3, 4, 130, 130, 132, 132, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 138, 140, 6, 111, 112, 113, 114, 115, 41, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 139, 6, - 6, 6, 139, 131, 6, 6, 139, 895, 61, 62, - 63, 64, 65, 66, 139, 139, 6, 140, 139, 6, - 6, 74, 75, 6, 912, 0, 0, 549, 985, 1082, - 2, 2, 845, -1, -1, 923, -1, -1, -1, 927, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 103, 104, 105, 106, -1, -1, -1, -1, -1, -1, - -1, 1025, -1, 1027, -1, 1029, -1, 6, 121, 122, - -1, -1, -1, -1, 127, -1, -1, -1, -1, 132, - -1, -1, -1, -1, 137, -1, -1, 140, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, - 4, -1, -1, -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, -1, -1, -1, -1, -1, -1, 41, -1, -1, - -1, -1, -1, -1, -1, -1, 1034, -1, -1, -1, - -1, -1, 1040, -1, -1, -1, 1044, 61, 62, 63, - 64, 65, 66, 67, -1, -1, -1, -1, -1, -1, - 74, 75, 111, 112, 113, 114, 115, -1, 117, 118, - 119, 120, 121, 122, 123, 124, 125, -1, -1, -1, - -1, -1, 131, -1, -1, -1, -1, -1, 6, 103, - 104, 105, 106, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 1103, -1, 121, 122, 1107, - 1108, -1, -1, 127, -1, -1, -1, -1, 132, -1, - 3, 4, -1, 137, -1, 139, 9, 10, 11, 12, + 132, 132, 670, 671, 672, 673, 674, 675, 134, 137, + 678, 679, 109, 110, 111, 112, 113, 91, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 6, 132, 697, + 698, 6, 129, 701, 130, 130, 132, 132, 719, 6, + 4, 138, 109, 110, 111, 112, 113, 137, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 5, 130, 727, + 132, 130, 129, 132, 131, 129, 134, 735, 101, 102, + 103, 104, 130, 130, 132, 132, 773, 61, 62, 63, + 64, 130, 66, 132, 752, 7, 119, 120, 132, 73, + 74, 130, 125, 132, 132, 45, 134, 130, 766, 767, + 768, 136, 135, 138, 137, 773, 136, 47, 138, 824, + 7, 424, 425, 136, 136, 138, 138, 7, 136, 800, + 138, 836, 136, 136, 138, 138, 131, 795, 796, 797, + 1004, 6, 136, 6, 138, 803, 136, 136, 138, 138, + 808, 4, 136, 6, 138, 842, 136, 844, 138, 864, + 136, 7, 138, 6, 88, 7, 868, 825, 136, 136, + 138, 138, 136, 136, 868, 138, 137, 136, 131, 131, + 6, 4, 869, 133, 871, 7, 873, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 854, 855, 7, 7, + 7, 129, 7, 1067, 7, 7, 864, 111, 112, 113, + 131, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 878, 131, 131, 131, 138, 129, 137, 134, 7, 887, + 888, 7, 138, 7, 137, 134, 130, 130, 130, 137, + 6, 899, 900, 4, 109, 110, 111, 112, 113, 6, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 917, + 6, 133, 6, 6, 129, 923, 109, 110, 111, 112, + 113, 7, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 6, 132, 941, 6, 117, 129, 7, 7, 137, + 7, 7, 7, 995, 7, 7, 954, 7, 7, 7, + 7, 995, 7, 4, 6, 130, 964, 6, 966, 6, + 6, 998, 970, 1000, 4, 1002, 137, 975, 6, 6, + 4, 6, 134, 133, 7, 131, 6, 131, 6, 6, + 633, 634, 6, 636, 6, 6, 137, 137, 641, 642, + 998, 6, 1000, 6, 1002, 87, 134, 6, 4, 6, + 1008, 1009, 1010, 133, 6, 6, 6, 1015, 1016, 6, + 6, 6, 6, 6, 6, 6, 1024, 6, 6, 1027, + 6, 6, 6, 6, 6, 6, 4, 137, 7, 682, + 683, 684, 6, 6, 109, 110, 111, 112, 113, 1047, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 1057, + 6, 134, 1060, 6, 129, 1063, 6, 6, 137, 1114, + 138, 137, 6, 137, 137, 84, 137, 1075, 136, 1077, + 6, 109, 110, 111, 112, 113, 6, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 1141, 6, 1143, 131, + 743, 129, 137, 6, 747, 5, 5, 138, 137, 89, + 753, 754, 755, 6, 1159, 758, 759, 760, 761, 762, + 763, 764, 6, 136, 3, 4, 6, 137, 6, 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, 6, 6, 6, 109, 110, 111, + 112, 113, 41, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 6, 6, 6, 137, 137, 129, 138, 137, + 823, 133, 61, 62, 63, 64, 65, 66, 136, 6, + 6, 6, 6, 6, 73, 74, 6, 5, 0, 137, + 109, 110, 111, 112, 113, 137, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 137, 137, 6, 6, 138, + 129, 6, 101, 102, 103, 104, 6, 6, 6, 6, + 6, 6, 6, 0, 734, 878, 538, 1047, 2, 2, + 119, 120, 974, -1, -1, 828, 125, -1, 891, -1, + -1, 130, -1, -1, -1, -1, 135, -1, 901, 138, + 3, 4, 905, -1, -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, -1, -1, -1, -1, 1154, -1, 41, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 61, 62, + -1, -1, -1, 109, 110, 111, 112, 113, 41, 115, + 116, 117, 118, 119, 120, 121, 122, 123, -1, -1, + -1, -1, -1, 129, -1, -1, -1, -1, 61, 62, 63, 64, 65, 66, 67, -1, -1, -1, -1, -1, - -1, 74, 75, 111, 112, 113, 114, 115, -1, 117, - 118, 119, 120, 121, 122, 123, 124, 125, -1, -1, - -1, -1, -1, 131, -1, -1, -1, -1, -1, 6, - 103, 104, 105, 106, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 121, 122, - -1, -1, -1, -1, 127, -1, -1, -1, -1, 132, - -1, 3, 4, -1, 137, -1, 139, 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, -1, 111, 112, 113, 114, 115, 41, - 117, 118, 119, 120, 121, 122, 123, 124, 125, -1, - -1, -1, -1, -1, 131, -1, -1, -1, 135, 61, - 62, 63, 64, 65, 66, -1, -1, -1, -1, -1, - -1, -1, 74, 75, 111, 112, 113, 114, 115, -1, - 117, 118, 119, 120, 121, 122, 123, 124, 125, -1, - -1, -1, -1, -1, 131, -1, -1, -1, -1, -1, - -1, 103, 104, 105, 106, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 121, - 122, -1, -1, -1, -1, 127, -1, -1, -1, -1, - 132, -1, 3, 4, -1, 137, -1, 139, 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, -1, 111, 112, 113, 114, 115, - 41, 117, 118, 119, 120, 121, 122, 123, 124, 125, - -1, -1, -1, -1, -1, 131, -1, -1, -1, 135, - 61, 62, 63, 64, 65, 66, -1, -1, -1, 3, - 4, -1, -1, 74, 75, 9, 10, 11, 12, 13, + 73, 74, 109, 110, 111, 112, 113, -1, 115, 116, + 117, 118, 119, 120, 121, 122, 123, -1, -1, -1, + -1, -1, 129, -1, -1, -1, -1, -1, 101, 102, + 103, 104, 6, -1, 1007, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 119, 120, -1, -1, + -1, -1, 125, -1, -1, -1, -1, 130, -1, 3, + 4, -1, 135, -1, 137, 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, 6, 103, 104, 105, 106, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 1068, -1, 41, 112, 113, + -1, 115, 116, 117, 118, 119, 120, 121, 122, 123, + -1, -1, -1, -1, -1, 129, -1, 61, 62, 63, + 64, 65, 66, 67, -1, -1, -1, -1, -1, 73, + 74, -1, -1, -1, -1, 109, 110, 111, 112, 113, + -1, 115, 116, 117, 118, 119, 120, 121, 122, 123, + -1, -1, -1, -1, -1, 129, -1, 101, 102, 103, + 104, 6, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 119, 120, -1, -1, -1, + -1, 125, -1, -1, -1, -1, 130, -1, 3, 4, + -1, 135, -1, 137, 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, + -1, 109, 110, 111, 112, 113, 41, 115, 116, 117, + 118, 119, 120, 121, 122, 123, -1, -1, -1, -1, + -1, 129, -1, -1, -1, 133, 61, 62, 63, 64, + 65, 66, -1, -1, -1, -1, -1, -1, 73, 74, + -1, -1, -1, -1, 109, 110, 111, 112, 113, -1, + 115, 116, 117, 118, 119, 120, 121, 122, 123, -1, + -1, -1, -1, -1, 129, -1, 101, 102, 103, 104, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 121, 122, -1, -1, -1, -1, 127, -1, -1, -1, - -1, 132, -1, 3, 4, -1, 137, -1, 139, 9, + -1, -1, -1, -1, 119, 120, -1, -1, -1, -1, + 125, -1, -1, -1, -1, 130, -1, 3, 4, -1, + 135, -1, 137, 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, -1, + 109, 110, 111, 112, 113, 41, 115, 116, 117, 118, + 119, 120, 121, 122, 123, -1, -1, -1, -1, -1, + 129, -1, -1, -1, 133, 61, 62, 63, 64, 65, + 66, -1, -1, 3, 4, -1, -1, 73, 74, 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, -1, -1, -1, -1, 103, - 104, 105, 106, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 121, 122, -1, - -1, -1, -1, 127, -1, -1, -1, -1, 132, -1, - -1, 135, -1, 137, -1, 139, 111, 112, 113, 114, - 115, -1, 117, 118, 119, 120, 121, 122, 123, 124, - 125, -1, -1, -1, -1, -1, 131, -1, -1, -1, - -1, -1, -1, 103, 104, 105, 106, -1, -1, -1, + 30, 31, 32, -1, -1, 101, 102, 103, 104, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 121, 122, -1, -1, -1, -1, 127, -1, -1, - -1, -1, 132, -1, -1, 135, -1, 137, -1, 139, - 3, 4, -1, -1, -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, -1, -1, -1, -1, -1, 3, 4, -1, - -1, -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, 3, 4, -1, - -1, -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, -1, - 103, 104, 105, 106, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 121, 122, - -1, -1, -1, -1, 127, -1, -1, -1, -1, 132, - -1, -1, 135, -1, 137, -1, 139, 103, 104, 105, - 106, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 121, 122, -1, -1, -1, - -1, 127, -1, -1, -1, -1, 132, 103, 104, 105, - 106, 137, -1, 139, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 121, 122, -1, -1, -1, - -1, 127, -1, -1, -1, -1, 132, -1, 3, 4, - 5, 137, 7, 139, 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, 34, - 35, 36, 37, -1, -1, 40, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 3, 4, + -1, -1, -1, 119, 120, -1, -1, -1, -1, 125, + -1, -1, -1, -1, 130, -1, 3, 4, -1, 135, + -1, 137, 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, -1, -1, + -1, 101, 102, 103, 104, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 119, + 120, -1, -1, -1, -1, 125, -1, -1, -1, -1, + 130, -1, -1, 133, -1, 135, -1, 137, -1, -1, + -1, -1, 109, 110, 111, 112, 113, -1, 115, 116, + 117, 118, 119, 120, 121, 122, 123, -1, -1, -1, + -1, -1, 129, -1, 101, 102, 103, 104, 6, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 119, 120, -1, -1, -1, -1, 125, -1, + -1, -1, -1, 130, -1, -1, 133, -1, 135, -1, + 137, 3, 4, -1, -1, -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, -1, -1, -1, -1, -1, 3, 4, -1, -1, -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, - -1, -1, -1, -1, -1, -1, 41, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 103, 104, - 105, 106, 107, 108, 109, 110, 61, 62, 63, 64, - 65, 66, -1, -1, -1, -1, 121, 122, -1, 74, - 75, -1, 127, 128, 129, -1, -1, 132, -1, 134, - -1, 136, 137, 111, 112, 113, 114, 115, -1, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 103, 104, - 105, 106, -1, 131, -1, -1, -1, -1, -1, -1, - 138, -1, 140, -1, -1, -1, 121, 122, -1, -1, - -1, -1, 127, -1, -1, -1, -1, 132, 3, 4, - 5, -1, 137, -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, 34, - 35, 36, 37, 3, 4, 40, -1, -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, 3, 4, -1, -1, -1, -1, 9, + -1, 109, 110, 111, 112, 113, -1, 115, 116, 117, + 118, 119, 120, 121, 122, 123, -1, -1, -1, -1, + -1, 129, -1, -1, -1, -1, -1, -1, -1, 101, + 102, 103, 104, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 119, 120, -1, + -1, -1, -1, 125, -1, -1, -1, -1, 130, -1, + -1, 133, -1, 135, -1, 137, 101, 102, 103, 104, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 119, 120, -1, -1, -1, -1, + 125, -1, -1, -1, -1, 130, -1, 3, 4, 5, + 135, 7, 137, 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, 34, 35, + 36, 37, -1, -1, 40, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 3, 4, -1, -1, -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, -1, -1, -1, + -1, -1, -1, 41, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 101, 102, 103, 104, 105, + 106, 107, 108, 61, 62, 63, 64, 65, 66, -1, + -1, -1, -1, 119, 120, 73, 74, -1, -1, 125, + 126, 127, -1, -1, 130, -1, 132, -1, 134, 135, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 101, 102, 103, 104, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 119, 120, -1, -1, -1, -1, 125, -1, -1, + -1, -1, 130, 3, 4, 5, -1, 135, -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, 8, -1, -1, 103, 104, - 105, 106, -1, -1, -1, -1, -1, -1, -1, -1, - 8, -1, -1, -1, -1, -1, 121, 122, -1, -1, - -1, -1, 127, -1, -1, 8, -1, 132, -1, -1, - -1, -1, 137, 103, 104, 105, 106, -1, -1, -1, - 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 121, 122, -1, -1, 8, -1, 127, -1, -1, - -1, -1, 132, 103, 104, 105, 106, 137, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 121, 122, -1, -1, -1, -1, 127, -1, -1, - -1, -1, 132, -1, -1, -1, -1, 137, 111, 112, - 113, 114, 115, -1, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 111, 112, 113, 114, 115, 131, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 111, 112, - 113, 114, 115, 131, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 111, 112, 113, 114, 115, 131, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 111, 112, - 113, 114, 115, 131, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 0, 1, -1, -1, 4, 131, -1, - 111, 112, 113, 114, 115, -1, 117, 118, 119, 120, - 121, 122, 123, 124, 125, -1, -1, -1, -1, -1, - 131, -1, -1, -1, -1, -1, 33, 138, -1, 140, + 30, 31, 32, -1, 34, 35, 36, 37, 3, 4, + 40, -1, -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, 3, 4, + -1, -1, -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, 6, -1, + -1, 101, 102, 103, 104, -1, -1, -1, -1, -1, + -1, -1, -1, 6, -1, -1, -1, -1, -1, 119, + 120, -1, -1, -1, -1, 125, -1, -1, 6, -1, + 130, -1, -1, -1, -1, 135, 101, 102, 103, 104, + -1, -1, -1, 6, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 119, 120, -1, -1, -1, -1, + 125, -1, -1, -1, -1, 130, 101, 102, 103, 104, + 135, 8, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 119, 120, 8, -1, -1, -1, + 125, -1, -1, -1, -1, 130, -1, -1, -1, -1, + 135, 109, 110, 111, 112, 113, -1, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 109, 110, 111, 112, + 113, 129, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 109, 110, 111, 112, 113, 129, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 109, 110, 111, 112, + 113, 129, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 8, -1, -1, -1, -1, 129, -1, -1, -1, + -1, -1, 109, 110, 111, 112, 113, -1, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 109, 110, 111, + 112, 113, 129, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 8, -1, -1, -1, -1, 129, -1, 41, + 42, 43, 44, 45, 46, 47, 48, 8, 50, -1, + 52, 53, -1, 55, 56, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 109, 110, 111, 112, 113, 71, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 81, + 82, 83, -1, -1, 129, -1, 131, -1, -1, -1, + -1, 136, 109, 110, 111, 112, 113, -1, 115, 116, + 117, 118, 119, 120, 121, 122, 123, -1, -1, -1, + -1, -1, 129, -1, -1, -1, -1, -1, 109, 110, + 111, 112, 113, -1, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 109, 110, 111, 112, 113, 129, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 109, 110, + 111, 112, 113, 129, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 0, 1, -1, -1, 4, 129, -1, + 109, 110, 111, 112, 113, -1, 115, 116, 117, 118, + 119, 120, 121, 122, 123, -1, -1, -1, -1, -1, + 129, -1, -1, -1, -1, -1, 33, 136, -1, 138, -1, 38, 39, -1, 41, 42, 43, 44, 45, 46, 47, 48, -1, 50, 51, 52, 53, 54, 55, 56, -1, -1, -1, 60, 61, 62, 63, 64, 65, 66, - -1, 68, 69, 70, 71, 72, -1, 74, 75, -1, - -1, -1, -1, -1, 81, 82, 83, 84, -1, -1, - -1, -1, 89, -1, 91, -1, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 41, 42, 43, 44, - 45, 46, 47, 48, -1, 50, -1, 52, 53, -1, - 55, 56, -1, -1, -1, -1, -1, 41, 42, 43, - 44, 45, 46, 47, 48, -1, 50, 72, 52, 53, - -1, 55, 56, -1, -1, -1, -1, 82, 83, 84, - -1, -1, -1, -1, -1, -1, -1, -1, 72, -1, - -1, -1, -1, -1, -1, 100, -1, -1, 82, 83, - 84, -1, -1, 41, 42, 43, 44, 45, 46, 47, - 48, -1, 50, -1, 52, 53, 100, 55, 56, 111, - 112, 113, 114, 115, -1, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 72, 140, -1, -1, -1, 131, - -1, -1, -1, -1, 82, 83, 84, -1, 140, -1, - -1, -1, -1, -1, -1, -1, 140, -1, -1, -1, - -1, -1, 100, 41, 42, 43, 44, 45, 46, 47, - 48, -1, 50, -1, 52, 53, -1, 55, 56, -1, - -1, -1, -1, -1, 41, 42, 43, 44, 45, 46, - 47, 48, -1, 50, 72, 52, 53, -1, 55, 56, - -1, -1, 140, -1, 82, 83, 84, -1, -1, -1, - -1, -1, -1, -1, -1, 72, -1, -1, -1, -1, - -1, -1, 100, -1, -1, 82, 83, 84, -1, -1, - 41, 42, 43, 44, 45, 46, 47, 48, -1, 50, - -1, 52, 53, 100, 55, 56, 111, 112, 113, 114, - 115, -1, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 72, 140, -1, -1, -1, 131, -1, -1, -1, - -1, 82, 83, 84, -1, 140, -1, -1, -1, -1, - -1, -1, -1, 140, -1, -1, -1, -1, -1, 100, - 41, 42, 43, 44, 45, 46, 47, 48, -1, 50, - -1, 52, 53, -1, 55, 56, -1, -1, -1, -1, + -1, 68, 69, 70, 71, -1, 73, 74, -1, -1, + -1, -1, -1, 80, 81, 82, 83, -1, -1, -1, + -1, 88, -1, 90, -1, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 41, 42, 43, 44, 45, 46, + 47, 48, -1, 50, -1, 52, 53, -1, 55, 56, -1, 41, 42, 43, 44, 45, 46, 47, 48, -1, - 50, 72, 52, 53, -1, 55, 56, -1, -1, 140, - -1, 82, 83, 84, 4, -1, -1, -1, -1, -1, - -1, -1, 72, -1, -1, -1, -1, -1, -1, 100, - -1, -1, 82, 83, 84, -1, -1, -1, -1, -1, - -1, -1, -1, 33, -1, -1, -1, -1, 38, 39, - 100, 41, 42, 43, 44, 45, 46, 47, 48, -1, - 50, 51, 52, 53, 54, 55, 56, -1, -1, 140, - 60, 61, 62, 63, 64, 65, 66, -1, 68, 69, - 70, 71, 72, -1, 74, 75, -1, -1, -1, -1, - 140, 81, 82, 83, 84, -1, -1, -1, -1, 89, - -1, 91, -1, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 111, 112, 113, 114, 115, -1, 117, - 118, 119, 120, 121, 122, 123, 124, 125, -1, -1, - -1, -1, -1, 131, -1, -1, -1, -1, -1, -1, - 138, -1, 140, 111, 112, 113, 114, 115, -1, 117, - 118, 119, 120, 121, 122, 123, 124, 125, -1, -1, - -1, -1, -1, 131, -1, -1, -1, 111, 112, 113, - 114, 115, 140, 117, 118, 119, 120, 121, 122, 123, - 124, 125, -1, -1, -1, -1, -1, 131, -1, -1, - -1, 111, 112, 113, 114, 115, 140, 117, 118, 119, - 120, 121, 122, 123, 124, 125, -1, -1, -1, -1, - -1, 131, -1, -1, -1, 111, 112, 113, 114, 115, - 140, 117, 118, 119, 120, 121, 122, 123, 124, 125, - -1, -1, -1, -1, -1, 131, -1, -1, -1, 111, - 112, 113, 114, 115, 140, 117, 118, 119, 120, 121, - 122, 123, 124, 125, -1, -1, -1, -1, -1, 131, - -1, -1, -1, 111, 112, 113, 114, 115, 140, 117, - 118, 119, 120, 121, 122, 123, 124, 125, -1, -1, - -1, -1, -1, 131, -1, -1, -1, 111, 112, 113, - 114, 115, 140, 117, 118, 119, 120, 121, 122, 123, - 124, 125, -1, -1, -1, -1, -1, 131, -1, -1, - -1, 111, 112, 113, 114, 115, 140, 117, 118, 119, - 120, 121, 122, 123, 124, 125, -1, -1, -1, -1, - -1, 131, -1, -1, -1, 111, 112, 113, 114, 115, - 140, 117, 118, 119, 120, 121, 122, 123, 124, 125, - -1, -1, -1, -1, -1, 131, -1, -1, -1, 111, - 112, 113, 114, 115, 140, 117, 118, 119, 120, 121, - 122, 123, 124, 125, -1, -1, -1, -1, -1, 131, - -1, -1, -1, 111, 112, 113, 114, 115, 140, 117, - 118, 119, 120, 121, 122, 123, 124, 125, -1, -1, - -1, -1, -1, 131, -1, -1, -1, 111, 112, 113, - 114, 115, 140, 117, 118, 119, 120, 121, 122, 123, - 124, 125, -1, -1, -1, -1, -1, 131, -1, -1, - -1, 111, 112, 113, 114, 115, 140, 117, 118, 119, - 120, 121, 122, 123, 124, 125, -1, -1, -1, -1, - -1, 131, -1, -1, -1, 111, 112, 113, 114, 115, - 140, 117, 118, 119, 120, 121, 122, 123, 124, 125, - -1, -1, -1, -1, -1, 131, -1, -1, -1, 111, - 112, 113, 114, 115, 140, 117, 118, 119, 120, 121, - 122, 123, 124, 125, -1, -1, -1, -1, -1, 131, - -1, -1, -1, 111, 112, 113, 114, 115, 140, 117, - 118, 119, 120, 121, 122, 123, 124, 125, -1, -1, - -1, -1, -1, 131, -1, -1, -1, 111, 112, 113, - 114, 115, 140, 117, 118, 119, 120, 121, 122, 123, - 124, 125, -1, -1, -1, -1, -1, 131, -1, -1, - -1, 111, 112, 113, 114, 115, 140, 117, 118, 119, - 120, 121, 122, 123, 124, 125, -1, -1, -1, -1, - -1, 131, -1, -1, -1, 111, 112, 113, 114, 115, - 140, 117, 118, 119, 120, 121, 122, 123, 124, 125, - -1, -1, -1, -1, -1, 131, -1, -1, -1, 111, - 112, 113, 114, 115, 140, 117, 118, 119, 120, 121, - 122, 123, 124, 125, -1, -1, -1, -1, -1, 131, - -1, -1, -1, 111, 112, 113, 114, 115, 140, 117, - 118, 119, 120, 121, 122, 123, 124, 125, -1, -1, - -1, -1, -1, 131, -1, -1, -1, 111, 112, 113, - 114, 115, 140, 117, 118, 119, 120, 121, 122, 123, - 124, 125, -1, -1, -1, -1, -1, 131, -1, 133, - -1, -1, -1, -1, 138, 111, 112, 113, 114, 115, - -1, 117, 118, 119, 120, 121, 122, 123, 124, 125, - -1, -1, -1, -1, -1, 131, -1, 111, 112, 113, - 114, 115, 138, 117, 118, 119, 120, 121, 122, 123, - 124, 125, -1, -1, -1, -1, -1, 131, -1, 111, - 112, 113, 114, 115, 138, 117, 118, 119, 120, 121, - 122, 123, 124, 125, -1, -1, -1, -1, -1, 131, - -1, 111, 112, 113, 114, 115, 138, 117, 118, 119, - 120, 121, 122, 123, 124, 125, -1, -1, -1, -1, - -1, 131, -1, 111, 112, 113, 114, 115, 138, 117, - 118, 119, 120, 121, 122, 123, 124, 125, -1, -1, - -1, -1, -1, 131, -1, 111, 112, 113, 114, 115, - 138, 117, 118, 119, 120, 121, 122, 123, 124, 125, - -1, -1, -1, -1, -1, 131, -1, 111, 112, 113, - 114, 115, 138, 117, 118, 119, 120, 121, 122, 123, - 124, 125, -1, -1, -1, -1, -1, 131, -1, 111, - 112, 113, 114, 115, 138, 117, 118, 119, 120, 121, - 122, 123, 124, 125, -1, -1, -1, -1, -1, 131, - -1, 111, 112, 113, 114, 115, 138, 117, 118, 119, - 120, 121, 122, 123, 124, 125, -1, -1, -1, -1, - -1, 131, -1, 111, 112, 113, 114, 115, 138, 117, - 118, 119, 120, 121, 122, 123, 124, 125, -1, -1, - -1, -1, -1, 131, -1, 111, 112, 113, 114, 115, - 138, 117, 118, 119, 120, 121, 122, 123, 124, 125, - -1, -1, -1, -1, -1, 131, -1, 111, 112, 113, - 114, 115, 138, 117, 118, 119, 120, 121, 122, 123, - 124, 125, -1, -1, -1, -1, -1, 131, -1, 111, - 112, 113, 114, 115, 138, 117, 118, 119, 120, 121, - 122, 123, 124, 125, -1, -1, -1, -1, -1, 131, - -1, 111, 112, 113, 114, 115, 138, 117, 118, 119, - 120, 121, 122, 123, 124, 125, -1, -1, -1, -1, - -1, 131, -1, 111, 112, 113, 114, 115, 138, 117, - 118, 119, 120, 121, 122, 123, 124, 125, -1, -1, - -1, -1, -1, 131, -1, 111, 112, 113, 114, 115, - 138, 117, 118, 119, 120, 121, 122, 123, 124, 125, - -1, -1, -1, -1, -1, 131, -1, 111, 112, 113, - 114, 115, 138, 117, 118, 119, 120, 121, 122, 123, - 124, 125, -1, -1, -1, -1, -1, 131, -1, 111, - 112, 113, 114, 115, 138, 117, 118, 119, 120, 121, - 122, 123, 124, 125, -1, -1, -1, -1, -1, 131, - -1, 111, 112, 113, 114, 115, 138, 117, 118, 119, - 120, 121, 122, 123, 124, 125, -1, -1, -1, -1, - -1, 131, -1, 111, 112, 113, 114, 115, 138, 117, - 118, 119, 120, 121, 122, 123, 124, 125, -1, -1, - -1, -1, -1, 131, -1, 111, 112, 113, 114, 115, - 138, 117, 118, 119, 120, 121, 122, 123, 124, 125, - -1, -1, -1, -1, -1, 131, -1, 111, 112, 113, - 114, 115, 138, 117, 118, 119, 120, 121, 122, 123, - 124, 125, -1, -1, -1, -1, -1, 131, -1, 111, - 112, 113, 114, 115, 138, 117, 118, 119, 120, 121, - 122, 123, 124, 125, -1, -1, -1, -1, -1, 131, - -1, 111, 112, 113, 114, 115, 138, 117, 118, 119, - 120, 121, 122, 123, 124, 125, -1, -1, -1, -1, - -1, 131, -1, 111, 112, 113, 114, 115, 138, 117, - 118, 119, 120, 121, 122, 123, 124, 125, -1, -1, - -1, -1, -1, 131, -1, 111, 112, 113, 114, 115, - 138, 117, 118, 119, 120, 121, 122, 123, 124, 125, - -1, -1, -1, -1, -1, 131, -1, 111, 112, 113, - 114, 115, 138, 117, 118, 119, 120, 121, 122, 123, - 124, 125, -1, -1, -1, -1, -1, 131, -1, 111, - 112, 113, 114, 115, 138, 117, 118, 119, 120, 121, - 122, 123, 124, 125, -1, -1, -1, -1, -1, 131, - -1, 111, 112, 113, 114, 115, 138, 117, 118, 119, - 120, 121, 122, 123, 124, 125, -1, -1, -1, -1, - -1, 131, -1, 111, 112, 113, 114, 115, 138, 117, - 118, 119, 120, 121, 122, 123, 124, 125, -1, -1, - -1, -1, -1, 131, -1, 111, 112, 113, 114, 115, - 138, 117, 118, 119, 120, 121, 122, 123, 124, 125, - -1, -1, -1, -1, -1, 131, -1, 111, 112, 113, - 114, 115, 138, 117, 118, 119, 120, 121, 122, 123, - 124, 125, -1, -1, -1, -1, -1, 131, -1, 111, - 112, 113, 114, 115, 138, 117, 118, 119, 120, 121, - 122, 123, 124, 125, -1, -1, -1, -1, -1, 131, - -1, 111, 112, 113, 114, 115, 138, 117, 118, 119, - 120, 121, 122, 123, 124, 125, -1, -1, -1, -1, - -1, 131, -1, 111, 112, 113, 114, 115, 138, 117, - 118, 119, 120, 121, 122, 123, 124, 125, -1, -1, - -1, -1, -1, 131, -1, 111, 112, 113, 114, 115, - 138, 117, 118, 119, 120, 121, 122, 123, 124, 125, - -1, -1, -1, -1, -1, 131, -1, 111, 112, 113, - 114, 115, 138, 117, 118, 119, 120, 121, 122, 123, - 124, 125, -1, -1, -1, -1, -1, 131, -1, -1, - -1, 135, 111, 112, 113, 114, 115, -1, 117, 118, - 119, 120, 121, 122, 123, 124, 125, -1, -1, -1, - -1, -1, 131, -1, -1, -1, 135, 111, 112, 113, - 114, 115, -1, 117, 118, 119, 120, 121, 122, 123, - 124, 125, -1, -1, -1, -1, -1, 131, -1, -1, - -1, 135, 111, 112, 113, 114, 115, -1, 117, 118, - 119, 120, 121, 122, 123, 124, 125, -1, -1, -1, - -1, -1, 131, -1, -1, -1, 135, 111, 112, 113, - 114, 115, -1, 117, 118, 119, 120, 121, 122, 123, - 124, 125, -1, -1, -1, -1, -1, 131, -1, -1, - -1, 135, 111, 112, 113, 114, 115, -1, 117, 118, - 119, 120, 121, 122, 123, 124, 125, -1, -1, -1, - -1, -1, 131, -1, -1, -1, 135, 111, 112, 113, - 114, 115, -1, 117, 118, 119, 120, 121, 122, 123, - 124, 125, -1, -1, -1, -1, -1, 131, -1, -1, - -1, 135, 111, 112, 113, 114, 115, -1, 117, 118, - 119, 120, 121, 122, 123, 124, 125, -1, -1, -1, - -1, -1, 131, -1, -1, -1, 135, 111, 112, 113, - 114, 115, -1, 117, 118, 119, 120, 121, 122, 123, - 124, 125, -1, -1, -1, -1, -1, 131, -1, -1, - -1, 135, 111, 112, 113, 114, 115, -1, 117, 118, - 119, 120, 121, 122, 123, 124, 125, -1, -1, -1, - -1, -1, 131, -1, -1, -1, 135, 111, 112, 113, - 114, 115, -1, 117, 118, 119, 120, 121, 122, 123, - 124, 125, -1, -1, -1, -1, -1, 131, -1, -1, - -1, 135, 111, 112, 113, 114, 115, -1, 117, 118, - 119, 120, 121, 122, 123, 124, 125, -1, -1, -1, - -1, -1, 131, -1, -1, -1, 135, 111, 112, 113, - 114, 115, -1, 117, 118, 119, 120, 121, 122, 123, - 124, 125, -1, -1, -1, -1, -1, 131, -1, -1, - -1, 135, 111, 112, 113, 114, 115, -1, 117, 118, - 119, 120, 121, 122, 123, 124, 125, -1, -1, -1, - -1, -1, 131, -1, -1, -1, 135, 111, 112, 113, - 114, 115, -1, 117, 118, 119, 120, 121, 122, 123, - 124, 125, -1, -1, -1, -1, -1, 131, -1, -1, - -1, 135, 111, 112, 113, 114, 115, -1, 117, 118, - 119, 120, 121, 122, 123, 124, 125, -1, -1, -1, - -1, -1, 131, -1, -1, -1, 135, 111, 112, 113, - 114, 115, -1, 117, 118, 119, 120, 121, 122, 123, - 124, 125, -1, -1, -1, -1, -1, 131, -1, -1, - -1, 135, 111, 112, 113, 114, 115, -1, 117, 118, - 119, 120, 121, 122, 123, 124, 125, -1, -1, -1, - -1, -1, 131, -1, -1, -1, 135, 111, 112, 113, - 114, 115, -1, 117, 118, 119, 120, 121, 122, 123, - 124, 125, -1, -1, -1, -1, -1, 131, -1, -1, - -1, 135, 111, 112, 113, 114, 115, -1, 117, 118, - 119, 120, 121, 122, 123, 124, 125, -1, -1, -1, - -1, -1, 131, -1, -1, -1, 135, 111, 112, 113, - 114, 115, -1, 117, 118, 119, 120, 121, 122, 123, - 124, 125, -1, -1, -1, -1, -1, 131, -1, -1, - -1, 135, 111, 112, 113, 114, 115, -1, 117, 118, - 119, 120, 121, 122, 123, 124, 125, -1, -1, -1, - -1, -1, 131, -1, -1, -1, 135, 111, 112, 113, - 114, 115, -1, 117, 118, 119, 120, 121, 122, 123, - 124, 125, -1, -1, -1, -1, -1, 131, -1, -1, - -1, 135, 111, 112, 113, 114, 115, -1, 117, 118, - 119, 120, 121, 122, 123, 124, 125, -1, -1, -1, - -1, -1, 131, -1, -1, -1, 135, 111, 112, 113, - 114, 115, -1, 117, 118, 119, 120, 121, 122, 123, - 124, 125, -1, -1, -1, -1, -1, 131, -1, -1, - -1, 135, 111, 112, 113, 114, 115, -1, 117, 118, - 119, 120, 121, 122, 123, 124, 125, -1, -1, -1, - -1, -1, 131, -1, -1, -1, 135, 111, 112, 113, - 114, 115, -1, 117, 118, 119, 120, 121, 122, 123, - 124, 125, -1, -1, -1, -1, -1, 131, -1, -1, - -1, 135, 111, 112, 113, 114, 115, -1, 117, 118, - 119, 120, 121, 122, 123, 124, 125, -1, -1, -1, - -1, -1, 131, -1, -1, -1, 135, 111, 112, 113, - 114, 115, -1, 117, 118, 119, 120, 121, 122, 123, - 124, 125, -1, -1, -1, -1, -1, 131, -1, -1, - -1, 135, 111, 112, 113, 114, 115, -1, 117, 118, - 119, 120, 121, 122, 123, 124, 125, -1, -1, -1, - -1, -1, 131, -1, 133, 111, 112, 113, 114, 115, - -1, 117, 118, 119, 120, 121, 122, 123, 124, 125, - -1, -1, -1, -1, -1, 131, -1, 133, 111, 112, - 113, 114, 115, -1, 117, 118, 119, 120, 121, 122, - 123, 124, 125, -1, -1, -1, -1, -1, 131, -1, - 133, 111, 112, 113, 114, 115, -1, 117, 118, 119, - 120, 121, 122, 123, 124, 125, -1, -1, -1, -1, - -1, 131, -1, 133, 111, 112, 113, 114, 115, -1, - 117, 118, 119, 120, 121, 122, 123, 124, 125, -1, - -1, -1, -1, -1, 131, -1, 133, 111, 112, 113, - 114, 115, -1, 117, 118, 119, 120, 121, 122, 123, - 124, 125, -1, -1, -1, -1, -1, 131, -1, 133, - 111, 112, 113, 114, 115, -1, 117, 118, 119, 120, - 121, 122, 123, 124, 125, -1, -1, -1, -1, -1, - 131, -1, 133, 111, 112, 113, 114, 115, -1, 117, - 118, 119, 120, 121, 122, 123, 124, 125, -1, -1, - -1, -1, -1, 131, -1, 133, 111, 112, 113, 114, - 115, -1, 117, 118, 119, 120, 121, 122, 123, 124, - 125, -1, -1, -1, -1, -1, 131, -1, 133, 111, - 112, 113, 114, 115, -1, 117, 118, 119, 120, 121, - 122, 123, 124, 125, -1, -1, -1, -1, -1, 131, - -1, 133, 111, 112, 113, 114, 115, -1, 117, 118, - 119, 120, 121, 122, 123, 124, 125, -1, -1, -1, - -1, -1, 131, -1, 133, 111, 112, 113, 114, 115, - -1, 117, 118, 119, 120, 121, 122, 123, 124, 125, - -1, -1, -1, -1, -1, 131, -1, 133, 111, 112, - 113, 114, 115, -1, 117, 118, 119, 120, 121, 122, - 123, 124, 125, -1, -1, -1, -1, -1, 131, -1, - 133, 111, 112, 113, 114, 115, -1, 117, 118, 119, - 120, 121, 122, 123, 124, 125, -1, -1, -1, -1, - -1, 131, -1, 133, 111, 112, 113, 114, 115, -1, - 117, 118, 119, 120, 121, 122, 123, 124, 125, -1, - -1, -1, -1, -1, 131, -1, 133, 111, 112, 113, - 114, 115, -1, 117, 118, 119, 120, 121, 122, 123, - 124, 125, -1, -1, -1, -1, -1, 131, -1, 133, - 111, 112, 113, 114, 115, -1, 117, 118, 119, 120, - 121, 122, 123, 124, 125, -1, -1, -1, -1, -1, - 131, -1, 133, 111, 112, 113, 114, 115, -1, 117, - 118, 119, 120, 121, 122, 123, 124, 125, -1, -1, - -1, -1, -1, 131, -1, 133, 111, 112, 113, 114, - 115, -1, 117, 118, 119, 120, 121, 122, 123, 124, - 125, -1, -1, -1, -1, -1, 131, -1, 133, 111, - 112, 113, 114, 115, -1, 117, 118, 119, 120, 121, - 122, 123, 124, 125, -1, -1, -1, -1, -1, 131, - -1, 133, 111, 112, 113, 114, 115, -1, 117, 118, - 119, 120, 121, 122, 123, 124, 125, -1, -1, -1, - -1, -1, 131, -1, 133, 111, 112, 113, 114, 115, - -1, 117, 118, 119, 120, 121, 122, 123, 124, 125, - -1, -1, -1, -1, -1, 131, -1, 133, 111, 112, - 113, 114, 115, -1, 117, 118, 119, 120, 121, 122, - 123, 124, 125, -1, -1, -1, -1, -1, 131, -1, - 133, 111, 112, 113, 114, 115, -1, 117, 118, 119, - 120, 121, 122, 123, 124, 125, -1, -1, -1, -1, - -1, 131, -1, 133, 111, 112, 113, 114, 115, -1, - 117, 118, 119, 120, 121, 122, 123, 124, 125, -1, - -1, -1, -1, -1, 131, -1, 133, 111, 112, 113, - 114, 115, -1, 117, 118, 119, 120, 121, 122, 123, - 124, 125, -1, -1, -1, -1, -1, 131, -1, 133, - 111, 112, 113, 114, 115, -1, 117, 118, 119, 120, - 121, 122, 123, 124, 125, -1, -1, -1, -1, -1, - 131, -1, 133, 111, 112, 113, 114, 115, -1, 117, - 118, 119, 120, 121, 122, 123, 124, 125, -1, -1, - -1, -1, -1, 131, -1, 133, 111, 112, 113, 114, - 115, -1, 117, 118, 119, 120, 121, 122, 123, 124, - 125, -1, -1, -1, -1, -1, 131, -1, 133, 111, - 112, 113, 114, 115, -1, 117, 118, 119, 120, 121, - 122, 123, 124, 125, -1, -1, -1, -1, -1, 131, - -1, 133, 111, 112, 113, 114, 115, -1, 117, 118, - 119, 120, 121, 122, 123, 124, 125, -1, -1, -1, - -1, -1, 131, -1, 133, 111, 112, 113, 114, 115, - -1, 117, 118, 119, 120, 121, 122, 123, 124, 125, - -1, -1, -1, -1, -1, 131, -1, 133, 111, 112, - 113, 114, 115, -1, 117, 118, 119, 120, 121, 122, - 123, 124, 125, -1, -1, -1, -1, -1, 131, -1, - 133, 111, 112, 113, 114, 115, -1, 117, 118, 119, - 120, 121, 122, 123, 124, 125, -1, -1, -1, -1, - -1, 131, -1, 133, 111, 112, 113, 114, 115, -1, - 117, 118, 119, 120, 121, 122, 123, 124, 125, -1, - -1, -1, -1, -1, 131, -1, 133, 111, 112, 113, - 114, 115, -1, 117, 118, 119, 120, 121, 122, 123, - 124, 125, -1, -1, -1, -1, -1, 131, -1, 133, - 111, 112, 113, 114, 115, -1, 117, 118, 119, 120, - 121, 122, 123, 124, 125, -1, -1, -1, -1, -1, - 131, -1, 133, 111, 112, 113, 114, 115, -1, 117, - 118, 119, 120, 121, 122, 123, 124, 125, -1, -1, - -1, -1, -1, 131, -1, 133, 111, 112, 113, 114, - 115, -1, 117, 118, 119, 120, 121, 122, 123, 124, - 125, -1, -1, -1, -1, -1, 131, -1, 133, 111, - 112, 113, 114, 115, -1, 117, 118, 119, 120, 121, - 122, 123, 124, 125, -1, -1, -1, -1, -1, 131, - -1, 133, 111, 112, 113, 114, 115, -1, 117, 118, - 119, 120, 121, 122, 123, 124, 125, -1, -1, -1, - -1, -1, 131, -1, 133, 111, 112, 113, 114, 115, - -1, 117, 118, 119, 120, 121, 122, 123, 124, 125, - -1, -1, -1, -1, -1, 131, -1, 133, 111, 112, - 113, 114, 115, -1, 117, 118, 119, 120, 121, 122, - 123, 124, 125, -1, -1, -1, -1, -1, 131, -1, - 133, 111, 112, 113, 114, 115, -1, 117, 118, 119, - 120, 121, 122, 123, 124, 125, -1, -1, -1, -1, - -1, 131, -1, 133, 111, 112, 113, 114, 115, -1, - 117, 118, 119, 120, 121, 122, 123, 124, 125, -1, - -1, -1, -1, -1, 131, -1, 133, 111, 112, 113, - 114, 115, -1, 117, 118, 119, 120, 121, 122, 123, - 124, 125, -1, -1, -1, -1, -1, 131, -1, 133, - 111, 112, 113, 114, 115, -1, 117, 118, 119, 120, - 121, 122, 123, 124, 125, -1, -1, -1, -1, -1, - 131, -1, 133, 111, 112, 113, 114, 115, -1, 117, - 118, 119, 120, 121, 122, 123, 124, 125, -1, -1, - -1, -1, -1, 131, -1, 133, 111, 112, 113, 114, - 115, -1, 117, 118, 119, 120, 121, 122, 123, 124, - 125, -1, -1, -1, -1, -1, 131, -1, 133, 111, - 112, 113, 114, 115, -1, 117, 118, 119, 120, 121, - 122, 123, 124, 125, -1, -1, -1, -1, -1, 131 + 50, -1, 52, 53, 71, 55, 56, -1, -1, -1, + -1, -1, -1, -1, 81, 82, 83, -1, -1, -1, + -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 81, 82, 83, 41, 42, 43, 44, 45, 46, + 47, 48, -1, 50, -1, 52, 53, -1, 55, 56, + -1, 41, 42, 43, 44, 45, 46, 47, 48, -1, + 50, -1, 52, 53, 71, 55, 56, -1, -1, -1, + -1, 138, -1, -1, 81, 82, 83, -1, -1, -1, + -1, 71, -1, -1, -1, -1, -1, -1, 138, -1, + -1, 81, 82, 83, 41, 42, 43, 44, 45, 46, + 47, 48, -1, 50, -1, 52, 53, -1, 55, 56, + -1, 41, 42, 43, 44, 45, 46, 47, 48, -1, + 50, -1, 52, 53, 71, 55, 56, -1, -1, -1, + -1, 138, -1, -1, 81, 82, 83, -1, -1, -1, + -1, 71, -1, -1, -1, -1, -1, -1, 138, -1, + -1, 81, 82, 83, 41, 42, 43, 44, 45, 46, + 47, 48, -1, 50, -1, 52, 53, -1, 55, 56, + -1, 41, 42, 43, 44, 45, 46, 47, 48, -1, + 50, -1, 52, 53, 71, 55, 56, -1, 4, -1, + -1, 138, -1, -1, 81, 82, 83, -1, -1, -1, + -1, 71, -1, -1, -1, -1, -1, -1, 138, -1, + -1, 81, 82, 83, -1, -1, -1, 33, -1, -1, + -1, -1, 38, 39, -1, 41, 42, 43, 44, 45, + 46, 47, 48, -1, 50, 51, 52, 53, 54, 55, + 56, -1, -1, -1, 60, 61, 62, 63, 64, 65, + 66, 138, 68, 69, 70, 71, -1, 73, 74, -1, + -1, -1, -1, -1, 80, 81, 82, 83, 138, -1, + -1, -1, 88, -1, 90, -1, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 109, 110, 111, 112, 113, + -1, 115, 116, 117, 118, 119, 120, 121, 122, 123, + -1, -1, -1, -1, -1, 129, -1, -1, -1, -1, + -1, -1, 136, -1, 138, 109, 110, 111, 112, 113, + -1, 115, 116, 117, 118, 119, 120, 121, 122, 123, + -1, -1, -1, -1, -1, 129, -1, -1, -1, -1, + -1, -1, 136, -1, 138, 109, 110, 111, 112, 113, + -1, 115, 116, 117, 118, 119, 120, 121, 122, 123, + -1, -1, -1, -1, -1, 129, -1, -1, -1, 109, + 110, 111, 112, 113, 138, 115, 116, 117, 118, 119, + 120, 121, 122, 123, -1, -1, -1, -1, -1, 129, + -1, -1, -1, 109, 110, 111, 112, 113, 138, 115, + 116, 117, 118, 119, 120, 121, 122, 123, -1, -1, + -1, -1, -1, 129, -1, -1, -1, 109, 110, 111, + 112, 113, 138, 115, 116, 117, 118, 119, 120, 121, + 122, 123, -1, -1, -1, -1, -1, 129, -1, -1, + -1, 109, 110, 111, 112, 113, 138, 115, 116, 117, + 118, 119, 120, 121, 122, 123, -1, -1, -1, -1, + -1, 129, -1, -1, -1, 109, 110, 111, 112, 113, + 138, 115, 116, 117, 118, 119, 120, 121, 122, 123, + -1, -1, -1, -1, -1, 129, -1, -1, -1, 109, + 110, 111, 112, 113, 138, 115, 116, 117, 118, 119, + 120, 121, 122, 123, -1, -1, -1, -1, -1, 129, + -1, -1, -1, 109, 110, 111, 112, 113, 138, 115, + 116, 117, 118, 119, 120, 121, 122, 123, -1, -1, + -1, -1, -1, 129, -1, -1, -1, 109, 110, 111, + 112, 113, 138, 115, 116, 117, 118, 119, 120, 121, + 122, 123, -1, -1, -1, -1, -1, 129, -1, -1, + -1, 109, 110, 111, 112, 113, 138, 115, 116, 117, + 118, 119, 120, 121, 122, 123, -1, -1, -1, -1, + -1, 129, -1, -1, -1, 109, 110, 111, 112, 113, + 138, 115, 116, 117, 118, 119, 120, 121, 122, 123, + -1, -1, -1, -1, -1, 129, -1, -1, -1, 109, + 110, 111, 112, 113, 138, 115, 116, 117, 118, 119, + 120, 121, 122, 123, -1, -1, -1, -1, -1, 129, + -1, -1, -1, 109, 110, 111, 112, 113, 138, 115, + 116, 117, 118, 119, 120, 121, 122, 123, -1, -1, + -1, -1, -1, 129, -1, -1, -1, 109, 110, 111, + 112, 113, 138, 115, 116, 117, 118, 119, 120, 121, + 122, 123, -1, -1, -1, -1, -1, 129, -1, -1, + -1, 109, 110, 111, 112, 113, 138, 115, 116, 117, + 118, 119, 120, 121, 122, 123, -1, -1, -1, -1, + -1, 129, -1, -1, -1, 109, 110, 111, 112, 113, + 138, 115, 116, 117, 118, 119, 120, 121, 122, 123, + -1, -1, -1, -1, -1, 129, -1, -1, -1, 109, + 110, 111, 112, 113, 138, 115, 116, 117, 118, 119, + 120, 121, 122, 123, -1, -1, -1, -1, -1, 129, + -1, -1, -1, 109, 110, 111, 112, 113, 138, 115, + 116, 117, 118, 119, 120, 121, 122, 123, -1, -1, + -1, -1, -1, 129, -1, -1, -1, 109, 110, 111, + 112, 113, 138, 115, 116, 117, 118, 119, 120, 121, + 122, 123, -1, -1, -1, -1, -1, 129, -1, -1, + -1, 109, 110, 111, 112, 113, 138, 115, 116, 117, + 118, 119, 120, 121, 122, 123, -1, -1, -1, -1, + -1, 129, -1, -1, -1, 109, 110, 111, 112, 113, + 138, 115, 116, 117, 118, 119, 120, 121, 122, 123, + -1, -1, -1, -1, -1, 129, -1, -1, -1, 109, + 110, 111, 112, 113, 138, 115, 116, 117, 118, 119, + 120, 121, 122, 123, -1, -1, -1, -1, -1, 129, + -1, 109, 110, 111, 112, 113, 136, 115, 116, 117, + 118, 119, 120, 121, 122, 123, -1, -1, -1, -1, + -1, 129, -1, 109, 110, 111, 112, 113, 136, 115, + 116, 117, 118, 119, 120, 121, 122, 123, -1, -1, + -1, -1, -1, 129, -1, 109, 110, 111, 112, 113, + 136, 115, 116, 117, 118, 119, 120, 121, 122, 123, + -1, -1, -1, -1, -1, 129, -1, 109, 110, 111, + 112, 113, 136, 115, 116, 117, 118, 119, 120, 121, + 122, 123, -1, -1, -1, -1, -1, 129, -1, 109, + 110, 111, 112, 113, 136, 115, 116, 117, 118, 119, + 120, 121, 122, 123, -1, -1, -1, -1, -1, 129, + -1, 109, 110, 111, 112, 113, 136, 115, 116, 117, + 118, 119, 120, 121, 122, 123, -1, -1, -1, -1, + -1, 129, -1, 109, 110, 111, 112, 113, 136, 115, + 116, 117, 118, 119, 120, 121, 122, 123, -1, -1, + -1, -1, -1, 129, -1, 109, 110, 111, 112, 113, + 136, 115, 116, 117, 118, 119, 120, 121, 122, 123, + -1, -1, -1, -1, -1, 129, -1, 109, 110, 111, + 112, 113, 136, 115, 116, 117, 118, 119, 120, 121, + 122, 123, -1, -1, -1, -1, -1, 129, -1, 109, + 110, 111, 112, 113, 136, 115, 116, 117, 118, 119, + 120, 121, 122, 123, -1, -1, -1, -1, -1, 129, + -1, 109, 110, 111, 112, 113, 136, 115, 116, 117, + 118, 119, 120, 121, 122, 123, -1, -1, -1, -1, + -1, 129, -1, 109, 110, 111, 112, 113, 136, 115, + 116, 117, 118, 119, 120, 121, 122, 123, -1, -1, + -1, -1, -1, 129, -1, 109, 110, 111, 112, 113, + 136, 115, 116, 117, 118, 119, 120, 121, 122, 123, + -1, -1, -1, -1, -1, 129, -1, 109, 110, 111, + 112, 113, 136, 115, 116, 117, 118, 119, 120, 121, + 122, 123, -1, -1, -1, -1, -1, 129, -1, 109, + 110, 111, 112, 113, 136, 115, 116, 117, 118, 119, + 120, 121, 122, 123, -1, -1, -1, -1, -1, 129, + -1, 109, 110, 111, 112, 113, 136, 115, 116, 117, + 118, 119, 120, 121, 122, 123, -1, -1, -1, -1, + -1, 129, -1, 109, 110, 111, 112, 113, 136, 115, + 116, 117, 118, 119, 120, 121, 122, 123, -1, -1, + -1, -1, -1, 129, -1, 109, 110, 111, 112, 113, + 136, 115, 116, 117, 118, 119, 120, 121, 122, 123, + -1, -1, -1, -1, -1, 129, -1, 109, 110, 111, + 112, 113, 136, 115, 116, 117, 118, 119, 120, 121, + 122, 123, -1, -1, -1, -1, -1, 129, -1, 109, + 110, 111, 112, 113, 136, 115, 116, 117, 118, 119, + 120, 121, 122, 123, -1, -1, -1, -1, -1, 129, + -1, 109, 110, 111, 112, 113, 136, 115, 116, 117, + 118, 119, 120, 121, 122, 123, -1, -1, -1, -1, + -1, 129, -1, 109, 110, 111, 112, 113, 136, 115, + 116, 117, 118, 119, 120, 121, 122, 123, -1, -1, + -1, -1, -1, 129, -1, 109, 110, 111, 112, 113, + 136, 115, 116, 117, 118, 119, 120, 121, 122, 123, + -1, -1, -1, -1, -1, 129, -1, 109, 110, 111, + 112, 113, 136, 115, 116, 117, 118, 119, 120, 121, + 122, 123, -1, -1, -1, -1, -1, 129, -1, 109, + 110, 111, 112, 113, 136, 115, 116, 117, 118, 119, + 120, 121, 122, 123, -1, -1, -1, -1, -1, 129, + -1, 109, 110, 111, 112, 113, 136, 115, 116, 117, + 118, 119, 120, 121, 122, 123, -1, -1, -1, -1, + -1, 129, -1, 109, 110, 111, 112, 113, 136, 115, + 116, 117, 118, 119, 120, 121, 122, 123, -1, -1, + -1, -1, -1, 129, -1, 109, 110, 111, 112, 113, + 136, 115, 116, 117, 118, 119, 120, 121, 122, 123, + -1, -1, -1, -1, -1, 129, -1, 109, 110, 111, + 112, 113, 136, 115, 116, 117, 118, 119, 120, 121, + 122, 123, -1, -1, -1, -1, -1, 129, -1, 109, + 110, 111, 112, 113, 136, 115, 116, 117, 118, 119, + 120, 121, 122, 123, -1, -1, -1, -1, -1, 129, + -1, 109, 110, 111, 112, 113, 136, 115, 116, 117, + 118, 119, 120, 121, 122, 123, -1, -1, -1, -1, + -1, 129, -1, 109, 110, 111, 112, 113, 136, 115, + 116, 117, 118, 119, 120, 121, 122, 123, -1, -1, + -1, -1, -1, 129, -1, 109, 110, 111, 112, 113, + 136, 115, 116, 117, 118, 119, 120, 121, 122, 123, + -1, -1, -1, -1, -1, 129, -1, -1, -1, 133, + 109, 110, 111, 112, 113, -1, 115, 116, 117, 118, + 119, 120, 121, 122, 123, -1, -1, -1, -1, -1, + 129, -1, -1, -1, 133, 109, 110, 111, 112, 113, + -1, 115, 116, 117, 118, 119, 120, 121, 122, 123, + -1, -1, -1, -1, -1, 129, -1, -1, -1, 133, + 109, 110, 111, 112, 113, -1, 115, 116, 117, 118, + 119, 120, 121, 122, 123, -1, -1, -1, -1, -1, + 129, -1, -1, -1, 133, 109, 110, 111, 112, 113, + -1, 115, 116, 117, 118, 119, 120, 121, 122, 123, + -1, -1, -1, -1, -1, 129, -1, -1, -1, 133, + 109, 110, 111, 112, 113, -1, 115, 116, 117, 118, + 119, 120, 121, 122, 123, -1, -1, -1, -1, -1, + 129, -1, -1, -1, 133, 109, 110, 111, 112, 113, + -1, 115, 116, 117, 118, 119, 120, 121, 122, 123, + -1, -1, -1, -1, -1, 129, -1, -1, -1, 133, + 109, 110, 111, 112, 113, -1, 115, 116, 117, 118, + 119, 120, 121, 122, 123, -1, -1, -1, -1, -1, + 129, -1, -1, -1, 133, 109, 110, 111, 112, 113, + -1, 115, 116, 117, 118, 119, 120, 121, 122, 123, + -1, -1, -1, -1, -1, 129, -1, -1, -1, 133, + 109, 110, 111, 112, 113, -1, 115, 116, 117, 118, + 119, 120, 121, 122, 123, -1, -1, -1, -1, -1, + 129, -1, -1, -1, 133, 109, 110, 111, 112, 113, + -1, 115, 116, 117, 118, 119, 120, 121, 122, 123, + -1, -1, -1, -1, -1, 129, -1, -1, -1, 133, + 109, 110, 111, 112, 113, -1, 115, 116, 117, 118, + 119, 120, 121, 122, 123, -1, -1, -1, -1, -1, + 129, -1, -1, -1, 133, 109, 110, 111, 112, 113, + -1, 115, 116, 117, 118, 119, 120, 121, 122, 123, + -1, -1, -1, -1, -1, 129, -1, -1, -1, 133, + 109, 110, 111, 112, 113, -1, 115, 116, 117, 118, + 119, 120, 121, 122, 123, -1, -1, -1, -1, -1, + 129, -1, -1, -1, 133, 109, 110, 111, 112, 113, + -1, 115, 116, 117, 118, 119, 120, 121, 122, 123, + -1, -1, -1, -1, -1, 129, -1, -1, -1, 133, + 109, 110, 111, 112, 113, -1, 115, 116, 117, 118, + 119, 120, 121, 122, 123, -1, -1, -1, -1, -1, + 129, -1, -1, -1, 133, 109, 110, 111, 112, 113, + -1, 115, 116, 117, 118, 119, 120, 121, 122, 123, + -1, -1, -1, -1, -1, 129, -1, -1, -1, 133, + 109, 110, 111, 112, 113, -1, 115, 116, 117, 118, + 119, 120, 121, 122, 123, -1, -1, -1, -1, -1, + 129, -1, -1, -1, 133, 109, 110, 111, 112, 113, + -1, 115, 116, 117, 118, 119, 120, 121, 122, 123, + -1, -1, -1, -1, -1, 129, -1, -1, -1, 133, + 109, 110, 111, 112, 113, -1, 115, 116, 117, 118, + 119, 120, 121, 122, 123, -1, -1, -1, -1, -1, + 129, -1, -1, -1, 133, 109, 110, 111, 112, 113, + -1, 115, 116, 117, 118, 119, 120, 121, 122, 123, + -1, -1, -1, -1, -1, 129, -1, -1, -1, 133, + 109, 110, 111, 112, 113, -1, 115, 116, 117, 118, + 119, 120, 121, 122, 123, -1, -1, -1, -1, -1, + 129, -1, -1, -1, 133, 109, 110, 111, 112, 113, + -1, 115, 116, 117, 118, 119, 120, 121, 122, 123, + -1, -1, -1, -1, -1, 129, -1, -1, -1, 133, + 109, 110, 111, 112, 113, -1, 115, 116, 117, 118, + 119, 120, 121, 122, 123, -1, -1, -1, -1, -1, + 129, -1, -1, -1, 133, 109, 110, 111, 112, 113, + -1, 115, 116, 117, 118, 119, 120, 121, 122, 123, + -1, -1, -1, -1, -1, 129, -1, -1, -1, 133, + 109, 110, 111, 112, 113, -1, 115, 116, 117, 118, + 119, 120, 121, 122, 123, -1, -1, -1, -1, -1, + 129, -1, -1, -1, 133, 109, 110, 111, 112, 113, + -1, 115, 116, 117, 118, 119, 120, 121, 122, 123, + -1, -1, -1, -1, -1, 129, -1, -1, -1, 133, + 109, 110, 111, 112, 113, -1, 115, 116, 117, 118, + 119, 120, 121, 122, 123, -1, -1, -1, -1, -1, + 129, -1, -1, -1, 133, 109, 110, 111, 112, 113, + -1, 115, 116, 117, 118, 119, 120, 121, 122, 123, + -1, -1, -1, -1, -1, 129, -1, 131, 109, 110, + 111, 112, 113, -1, 115, 116, 117, 118, 119, 120, + 121, 122, 123, -1, -1, -1, -1, -1, 129, -1, + 131, 109, 110, 111, 112, 113, -1, 115, 116, 117, + 118, 119, 120, 121, 122, 123, -1, -1, -1, -1, + -1, 129, -1, 131, 109, 110, 111, 112, 113, -1, + 115, 116, 117, 118, 119, 120, 121, 122, 123, -1, + -1, -1, -1, -1, 129, -1, 131, 109, 110, 111, + 112, 113, -1, 115, 116, 117, 118, 119, 120, 121, + 122, 123, -1, -1, -1, -1, -1, 129, -1, 131, + 109, 110, 111, 112, 113, -1, 115, 116, 117, 118, + 119, 120, 121, 122, 123, -1, -1, -1, -1, -1, + 129, -1, 131, 109, 110, 111, 112, 113, -1, 115, + 116, 117, 118, 119, 120, 121, 122, 123, -1, -1, + -1, -1, -1, 129, -1, 131, 109, 110, 111, 112, + 113, -1, 115, 116, 117, 118, 119, 120, 121, 122, + 123, -1, -1, -1, -1, -1, 129, -1, 131, 109, + 110, 111, 112, 113, -1, 115, 116, 117, 118, 119, + 120, 121, 122, 123, -1, -1, -1, -1, -1, 129, + -1, 131, 109, 110, 111, 112, 113, -1, 115, 116, + 117, 118, 119, 120, 121, 122, 123, -1, -1, -1, + -1, -1, 129, -1, 131, 109, 110, 111, 112, 113, + -1, 115, 116, 117, 118, 119, 120, 121, 122, 123, + -1, -1, -1, -1, -1, 129, -1, 131, 109, 110, + 111, 112, 113, -1, 115, 116, 117, 118, 119, 120, + 121, 122, 123, -1, -1, -1, -1, -1, 129, -1, + 131, 109, 110, 111, 112, 113, -1, 115, 116, 117, + 118, 119, 120, 121, 122, 123, -1, -1, -1, -1, + -1, 129, -1, 131, 109, 110, 111, 112, 113, -1, + 115, 116, 117, 118, 119, 120, 121, 122, 123, -1, + -1, -1, -1, -1, 129, -1, 131, 109, 110, 111, + 112, 113, -1, 115, 116, 117, 118, 119, 120, 121, + 122, 123, -1, -1, -1, -1, -1, 129, -1, 131, + 109, 110, 111, 112, 113, -1, 115, 116, 117, 118, + 119, 120, 121, 122, 123, -1, -1, -1, -1, -1, + 129, -1, 131, 109, 110, 111, 112, 113, -1, 115, + 116, 117, 118, 119, 120, 121, 122, 123, -1, -1, + -1, -1, -1, 129, -1, 131, 109, 110, 111, 112, + 113, -1, 115, 116, 117, 118, 119, 120, 121, 122, + 123, -1, -1, -1, -1, -1, 129, -1, 131, 109, + 110, 111, 112, 113, -1, 115, 116, 117, 118, 119, + 120, 121, 122, 123, -1, -1, -1, -1, -1, 129, + -1, 131, 109, 110, 111, 112, 113, -1, 115, 116, + 117, 118, 119, 120, 121, 122, 123, -1, -1, -1, + -1, -1, 129, -1, 131, 109, 110, 111, 112, 113, + -1, 115, 116, 117, 118, 119, 120, 121, 122, 123, + -1, -1, -1, -1, -1, 129, -1, 131, 109, 110, + 111, 112, 113, -1, 115, 116, 117, 118, 119, 120, + 121, 122, 123, -1, -1, -1, -1, -1, 129, -1, + 131, 109, 110, 111, 112, 113, -1, 115, 116, 117, + 118, 119, 120, 121, 122, 123, -1, -1, -1, -1, + -1, 129, -1, 131, 109, 110, 111, 112, 113, -1, + 115, 116, 117, 118, 119, 120, 121, 122, 123, -1, + -1, -1, -1, -1, 129, -1, 131, 109, 110, 111, + 112, 113, -1, 115, 116, 117, 118, 119, 120, 121, + 122, 123, -1, -1, -1, -1, -1, 129, -1, 131, + 109, 110, 111, 112, 113, -1, 115, 116, 117, 118, + 119, 120, 121, 122, 123, -1, -1, -1, -1, -1, + 129, -1, 131, 109, 110, 111, 112, 113, -1, 115, + 116, 117, 118, 119, 120, 121, 122, 123, -1, -1, + -1, -1, -1, 129, -1, 131, 109, 110, 111, 112, + 113, -1, 115, 116, 117, 118, 119, 120, 121, 122, + 123, -1, -1, -1, -1, -1, 129, -1, 131, 109, + 110, 111, 112, 113, -1, 115, 116, 117, 118, 119, + 120, 121, 122, 123, -1, -1, -1, -1, -1, 129, + -1, 131, 109, 110, 111, 112, 113, -1, 115, 116, + 117, 118, 119, 120, 121, 122, 123, -1, -1, -1, + -1, -1, 129, -1, 131, 109, 110, 111, 112, 113, + -1, 115, 116, 117, 118, 119, 120, 121, 122, 123, + -1, -1, -1, -1, -1, 129, -1, 131, 109, 110, + 111, 112, 113, -1, 115, 116, 117, 118, 119, 120, + 121, 122, 123, -1, -1, -1, -1, -1, 129, -1, + 131, 109, 110, 111, 112, 113, -1, 115, 116, 117, + 118, 119, 120, 121, 122, 123, -1, -1, -1, -1, + -1, 129, -1, 131, 109, 110, 111, 112, 113, -1, + 115, 116, 117, 118, 119, 120, 121, 122, 123, -1, + -1, -1, -1, -1, 129, -1, 131, 109, 110, 111, + 112, 113, -1, 115, 116, 117, 118, 119, 120, 121, + 122, 123, -1, -1, -1, -1, -1, 129, -1, 131, + 109, 110, 111, 112, 113, -1, 115, 116, 117, 118, + 119, 120, 121, 122, 123, -1, -1, -1, -1, -1, + 129, -1, 131, 109, 110, 111, 112, 113, -1, 115, + 116, 117, 118, 119, 120, 121, 122, 123, -1, -1, + -1, -1, -1, 129, -1, 131, 109, 110, 111, 112, + 113, -1, 115, 116, 117, 118, 119, 120, 121, 122, + 123, -1, -1, -1, -1, -1, 129, -1, 131, 109, + 110, 111, 112, 113, -1, 115, 116, 117, 118, 119, + 120, 121, 122, 123, -1, -1, -1, -1, -1, 129, + -1, 131, 109, 110, 111, 112, 113, -1, 115, 116, + 117, 118, 119, 120, 121, 122, 123, -1, -1, -1, + -1, -1, 129, -1, 131, 109, 110, 111, 112, 113, + -1, 115, 116, 117, 118, 119, 120, 121, 122, 123, + -1, -1, -1, -1, -1, 129, -1, 131, 109, 110, + 111, 112, 113, -1, 115, 116, 117, 118, 119, 120, + 121, 122, 123, -1, -1, -1, -1, -1, 129, -1, + 131, 109, 110, 111, 112, 113, -1, 115, 116, 117, + 118, 119, 120, 121, 122, 123, -1, -1, -1, -1, + -1, 129, -1, 131, 109, 110, 111, 112, 113, -1, + 115, 116, 117, 118, 119, 120, 121, 122, 123, -1, + -1, -1, -1, -1, 129, -1, 131, 109, 110, 111, + 112, 113, -1, 115, 116, 117, 118, 119, 120, 121, + 122, 123, -1, -1, -1, -1, -1, 129, -1, 131, + 109, 110, 111, 112, 113, -1, 115, 116, 117, 118, + 119, 120, 121, 122, 123, -1, -1, -1, -1, -1, + 129, -1, 131 }; /* -*-C-*- Note some compilers choke on comments on `#line' lines. */ #line 3 "/usr/share/bison.simple" @@ -4098,7 +4012,6 @@ case 99: List_T *temp = ListOfDouble2ListOfInt(yyvsp[-1].l); setSurfaceGeneratrices(s, temp); List_Delete(temp); - s->Support = s; End_Surface(s); Tree_Add(THEM->Surfaces, &s); } @@ -4108,7 +4021,7 @@ case 99: ; break;} case 100: -#line 1369 "Gmsh.y" +#line 1368 "Gmsh.y" { int num = (int)yyvsp[-4].d, type = 0; if(FindSurface(num)){ @@ -4138,7 +4051,6 @@ case 100: List_T *temp = ListOfDouble2ListOfInt(yyvsp[-1].l); setSurfaceGeneratrices(s, temp); List_Delete(temp); - s->Support = s; End_Surface(s); Tree_Add(THEM->Surfaces, &s); } @@ -4149,72 +4061,7 @@ case 100: ; break;} case 101: -#line 1408 "Gmsh.y" -{ - int num = (int)yyvsp[-8].d; - Surface *support = FindSurface((int)yyvsp[-4].d); - if(!support){ - yymsg(GERROR, "Unknown support surface %d", (int)yyvsp[-4].d); - } - else{ - if(FindSurface(num)){ - yymsg(GERROR, "Surface %d already exists", num); - } - else{ - Surface *s = Create_Surface(num, MSH_SURF_TRIMMED); - List_T *temp = ListOfDouble2ListOfInt(yyvsp[-2].l); - setSurfaceGeneratrices(s, temp); - List_Delete(temp); - s->Support = support; - End_Surface(s); - Tree_Add(THEM->Surfaces, &s); - } - } - List_Delete(yyvsp[-2].l); - yyval.s.Type = MSH_SURF_TRIMMED; - yyval.s.Num = num; - ; - break;} -case 102: -#line 1435 "Gmsh.y" -{ - int num = (int)yyvsp[-16].d; - if(FindSurface(num)){ - yymsg(GERROR, "Surface %d already exists", num); - } - else{ - CreateNurbsSurface(num, (int)yyvsp[-4].d, (int)yyvsp[-2].d, yyvsp[-13].l, yyvsp[-10].l, yyvsp[-8].l); - } - for(int i = 0; i < List_Nbr(yyvsp[-13].l); i++) - List_Delete((List_T*)List_Pointer(yyvsp[-13].l, i)); - List_Delete(yyvsp[-13].l); - List_Delete(yyvsp[-10].l); - List_Delete(yyvsp[-8].l); - yyval.s.Type = MSH_SURF_NURBS; - yyval.s.Num = num; - ; - break;} -case 103: -#line 1454 "Gmsh.y" -{ - int num = (int)yyvsp[-16].d; - if(FindSurface(num)){ - yymsg(GERROR, "Surface %d already exists", num); - } - else{ - CreateNurbsSurfaceSupport(num, (int)yyvsp[-4].d, (int)yyvsp[-2].d, yyvsp[-13].l, yyvsp[-10].l, yyvsp[-8].l); - } - for(int i = 0; i < List_Nbr(yyvsp[-13].l); i++) - List_Delete((List_T*)List_Pointer(yyvsp[-13].l, i)); - List_Delete(yyvsp[-13].l); - List_Delete(yyvsp[-10].l); - List_Delete(yyvsp[-8].l); - yyval.s.Type = MSH_SURF_NURBS; - yyval.s.Num = num; - ; - break;} -case 104: -#line 1471 "Gmsh.y" +#line 1406 "Gmsh.y" { int num = (int)yyvsp[-4].d; if(FindSurfaceLoop(num)){ @@ -4231,8 +4078,8 @@ case 104: yyval.s.Num = num; ; break;} -case 105: -#line 1487 "Gmsh.y" +case 102: +#line 1422 "Gmsh.y" { int num = (int)yyvsp[-4].i; if(FindPhysicalGroup(num, MSH_PHYSICAL_SURFACE)){ @@ -4249,8 +4096,8 @@ case 105: yyval.s.Num = num; ; break;} -case 106: -#line 1507 "Gmsh.y" +case 103: +#line 1442 "Gmsh.y" { int num = (int)yyvsp[-4].d; if(FindVolume(num)){ @@ -4268,8 +4115,8 @@ case 106: yyval.s.Num = num; ; break;} -case 107: -#line 1524 "Gmsh.y" +case 104: +#line 1459 "Gmsh.y" { int num = (int)yyvsp[-4].d; if(FindVolume(num)){ @@ -4287,8 +4134,8 @@ case 107: yyval.s.Num = num; ; break;} -case 108: -#line 1541 "Gmsh.y" +case 105: +#line 1476 "Gmsh.y" { int num = (int)yyvsp[-4].i; if(FindPhysicalGroup(num, MSH_PHYSICAL_VOLUME)){ @@ -4305,60 +4152,60 @@ case 108: yyval.s.Num = num; ; break;} -case 109: -#line 1562 "Gmsh.y" +case 106: +#line 1497 "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 110: -#line 1567 "Gmsh.y" +case 107: +#line 1502 "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, 1); yyval.l = yyvsp[-1].l; ; break;} -case 111: -#line 1572 "Gmsh.y" +case 108: +#line 1507 "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 112: -#line 1577 "Gmsh.y" +case 109: +#line 1512 "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 113: -#line 1584 "Gmsh.y" +case 110: +#line 1519 "Gmsh.y" { yyval.l = yyvsp[0].l; ; break;} -case 114: -#line 1585 "Gmsh.y" +case 111: +#line 1520 "Gmsh.y" { yyval.l = yyvsp[0].l; ; break;} -case 115: -#line 1586 "Gmsh.y" +case 112: +#line 1521 "Gmsh.y" { yyval.l = yyvsp[0].l; ; break;} -case 116: -#line 1591 "Gmsh.y" +case 113: +#line 1526 "Gmsh.y" { yyval.l = List_Create(3, 3, sizeof(Shape)); ; break;} -case 117: -#line 1595 "Gmsh.y" +case 114: +#line 1530 "Gmsh.y" { List_Add(yyval.l, &yyvsp[0].s); ; break;} -case 118: -#line 1599 "Gmsh.y" +case 115: +#line 1534 "Gmsh.y" { for(int i = 0; i < List_Nbr(yyvsp[-2].l); i++){ double d; @@ -4375,8 +4222,8 @@ case 118: } ; break;} -case 119: -#line 1615 "Gmsh.y" +case 116: +#line 1550 "Gmsh.y" { for(int i = 0; i < List_Nbr(yyvsp[-2].l); i++){ double d; @@ -4393,8 +4240,8 @@ case 119: } ; break;} -case 120: -#line 1631 "Gmsh.y" +case 117: +#line 1566 "Gmsh.y" { for(int i = 0; i < List_Nbr(yyvsp[-2].l); i++){ double d; @@ -4411,8 +4258,8 @@ case 120: } ; break;} -case 121: -#line 1647 "Gmsh.y" +case 118: +#line 1582 "Gmsh.y" { for(int i = 0; i < List_Nbr(yyvsp[-2].l); i++){ double d; @@ -4429,8 +4276,8 @@ case 121: } ; break;} -case 122: -#line 1668 "Gmsh.y" +case 119: +#line 1603 "Gmsh.y" { yyval.l = List_Create(3, 3, sizeof(Shape)); for(int i = 0; i < List_Nbr(yyvsp[-1].l); i++){ @@ -4444,32 +4291,32 @@ case 122: List_Delete(yyvsp[-1].l); ; break;} -case 123: -#line 1682 "Gmsh.y" +case 120: +#line 1617 "Gmsh.y" { if(!strcmp(yyvsp[-4].c, "View")) AliasView((int)yyvsp[-2].d, 0); Free(yyvsp[-4].c); yyval.l = NULL; ; break;} -case 124: -#line 1688 "Gmsh.y" +case 121: +#line 1623 "Gmsh.y" { if(!strcmp(yyvsp[-4].c, "View")) AliasView((int)yyvsp[-2].d, 0); Free(yyvsp[-4].c); yyval.l = NULL; ; break;} -case 125: -#line 1694 "Gmsh.y" +case 122: +#line 1629 "Gmsh.y" { if(!strcmp(yyvsp[-4].c, "View")) AliasView((int)yyvsp[-2].d, 1); Free(yyvsp[-4].c); yyval.l = NULL; ; break;} -case 126: -#line 1706 "Gmsh.y" +case 123: +#line 1641 "Gmsh.y" { for(int i = 0; i < List_Nbr(yyvsp[-1].l); i++){ Shape TheShape; @@ -4479,8 +4326,8 @@ case 126: List_Delete(yyvsp[-1].l); ; break;} -case 127: -#line 1715 "Gmsh.y" +case 124: +#line 1650 "Gmsh.y" { if(!strcmp(yyvsp[-4].c, "View")){ RemoveViewByIndex((int)yyvsp[-2].d); @@ -4491,8 +4338,8 @@ case 127: Free(yyvsp[-4].c); ; break;} -case 128: -#line 1725 "Gmsh.y" +case 125: +#line 1660 "Gmsh.y" { if(!strcmp(yyvsp[-1].c, "Meshes") || !strcmp(yyvsp[-1].c, "All")){ GMODEL->destroy(); @@ -4508,8 +4355,8 @@ case 128: Free(yyvsp[-1].c); ; break;} -case 129: -#line 1740 "Gmsh.y" +case 126: +#line 1675 "Gmsh.y" { if(!strcmp(yyvsp[-2].c, "Empty") && !strcmp(yyvsp[-1].c, "Views")){ for(int i = List_Nbr(CTX.post.list) - 1; i >= 0; i--){ @@ -4524,8 +4371,8 @@ case 129: Free(yyvsp[-2].c); Free(yyvsp[-1].c); ; break;} -case 130: -#line 1759 "Gmsh.y" +case 127: +#line 1694 "Gmsh.y" { for(int i = 0; i < List_Nbr(yyvsp[-1].l); i++){ Shape TheShape; @@ -4535,24 +4382,24 @@ case 130: List_Delete(yyvsp[-1].l); ; break;} -case 131: -#line 1773 "Gmsh.y" +case 128: +#line 1708 "Gmsh.y" { for(int i = 0; i < 4; i++) VisibilityShape(yyvsp[-1].c, i, 1); Free(yyvsp[-1].c); ; break;} -case 132: -#line 1779 "Gmsh.y" +case 129: +#line 1714 "Gmsh.y" { for(int i = 0; i < 4; i++) VisibilityShape(yyvsp[-1].c, i, 0); Free(yyvsp[-1].c); ; break;} -case 133: -#line 1785 "Gmsh.y" +case 130: +#line 1720 "Gmsh.y" { for(int i = 0; i < List_Nbr(yyvsp[-1].l); i++){ Shape TheShape; @@ -4562,8 +4409,8 @@ case 133: List_Delete(yyvsp[-1].l); ; break;} -case 134: -#line 1794 "Gmsh.y" +case 131: +#line 1729 "Gmsh.y" { for(int i = 0; i < List_Nbr(yyvsp[-1].l); i++){ Shape TheShape; @@ -4573,8 +4420,8 @@ case 134: List_Delete(yyvsp[-1].l); ; break;} -case 135: -#line 1808 "Gmsh.y" +case 132: +#line 1743 "Gmsh.y" { if(!strcmp(yyvsp[-2].c, "Include")){ char tmpstring[1024]; @@ -4620,8 +4467,8 @@ case 135: Free(yyvsp[-2].c); Free(yyvsp[-1].c); ; break;} -case 136: -#line 1853 "Gmsh.y" +case 133: +#line 1788 "Gmsh.y" { if(!strcmp(yyvsp[-6].c, "Save") && !strcmp(yyvsp[-5].c, "View")){ Post_View **vv = (Post_View **)List_Pointer_Test(CTX.post.list, (int)yyvsp[-3].d); @@ -4637,8 +4484,8 @@ case 136: Free(yyvsp[-6].c); Free(yyvsp[-5].c); Free(yyvsp[-1].c); ; break;} -case 137: -#line 1868 "Gmsh.y" +case 134: +#line 1803 "Gmsh.y" { if(!strcmp(yyvsp[-6].c, "Background") && !strcmp(yyvsp[-5].c, "Mesh") && !strcmp(yyvsp[-4].c, "View")){ Post_View **vv = (Post_View **)List_Pointer_Test(CTX.post.list, (int)yyvsp[-2].d); @@ -4650,8 +4497,8 @@ case 137: Free(yyvsp[-6].c); Free(yyvsp[-5].c); Free(yyvsp[-4].c); ; break;} -case 138: -#line 1879 "Gmsh.y" +case 135: +#line 1814 "Gmsh.y" { if(!strcmp(yyvsp[-2].c, "Sleep")){ SleepInSeconds(yyvsp[-1].d); @@ -4672,8 +4519,8 @@ case 138: Free(yyvsp[-2].c); ; break;} -case 139: -#line 1899 "Gmsh.y" +case 136: +#line 1834 "Gmsh.y" { try { GMSH_PluginManager::instance()->action(yyvsp[-4].c, yyvsp[-1].c, 0); @@ -4684,8 +4531,8 @@ case 139: Free(yyvsp[-4].c); Free(yyvsp[-1].c); ; break;} -case 140: -#line 1909 "Gmsh.y" +case 137: +#line 1844 "Gmsh.y" { if(!strcmp(yyvsp[-1].c, "ElementsFromAllViews")) CombineViews(0, 1, CTX.post.combine_remove_orig); @@ -4708,36 +4555,36 @@ case 140: Free(yyvsp[-1].c); ; break;} -case 141: -#line 1931 "Gmsh.y" +case 138: +#line 1866 "Gmsh.y" { exit(0); ; break;} -case 142: -#line 1935 "Gmsh.y" +case 139: +#line 1870 "Gmsh.y" { CTX.forced_bbox = 0; SetBoundingBox(); ; break;} -case 143: -#line 1940 "Gmsh.y" +case 140: +#line 1875 "Gmsh.y" { CTX.forced_bbox = 1; SetBoundingBox(yyvsp[-12].d, yyvsp[-10].d, yyvsp[-8].d, yyvsp[-6].d, yyvsp[-4].d, yyvsp[-2].d); ; break;} -case 144: -#line 1945 "Gmsh.y" +case 141: +#line 1880 "Gmsh.y" { #if defined(HAVE_FLTK) Draw(); #endif ; break;} -case 145: -#line 1957 "Gmsh.y" +case 142: +#line 1892 "Gmsh.y" { LoopControlVariablesTab[ImbricatedLoop][0] = yyvsp[-3].d; LoopControlVariablesTab[ImbricatedLoop][1] = yyvsp[-1].d; @@ -4753,8 +4600,8 @@ case 145: if(yyvsp[-3].d > yyvsp[-1].d) skip_until("For", "EndFor"); ; break;} -case 146: -#line 1972 "Gmsh.y" +case 143: +#line 1907 "Gmsh.y" { LoopControlVariablesTab[ImbricatedLoop][0] = yyvsp[-5].d; LoopControlVariablesTab[ImbricatedLoop][1] = yyvsp[-3].d; @@ -4771,8 +4618,8 @@ case 146: skip_until("For", "EndFor"); ; break;} -case 147: -#line 1988 "Gmsh.y" +case 144: +#line 1923 "Gmsh.y" { LoopControlVariablesTab[ImbricatedLoop][0] = yyvsp[-3].d; LoopControlVariablesTab[ImbricatedLoop][1] = yyvsp[-1].d; @@ -4799,8 +4646,8 @@ case 147: if(yyvsp[-3].d > yyvsp[-1].d) skip_until("For", "EndFor"); ; break;} -case 148: -#line 2014 "Gmsh.y" +case 145: +#line 1949 "Gmsh.y" { LoopControlVariablesTab[ImbricatedLoop][0] = yyvsp[-5].d; LoopControlVariablesTab[ImbricatedLoop][1] = yyvsp[-3].d; @@ -4828,8 +4675,8 @@ case 148: skip_until("For", "EndFor"); ; break;} -case 149: -#line 2041 "Gmsh.y" +case 146: +#line 1976 "Gmsh.y" { if(ImbricatedLoop <= 0){ yymsg(GERROR, "Invalid For/EndFor loop"); @@ -4862,8 +4709,8 @@ case 149: } ; break;} -case 150: -#line 2073 "Gmsh.y" +case 147: +#line 2008 "Gmsh.y" { if(!FunctionManager::Instance()->createFunction(yyvsp[0].c, yyin, yyname, yylineno)) yymsg(GERROR, "Redefinition of function %s", yyvsp[0].c); @@ -4871,34 +4718,34 @@ case 150: //FIXME: wee leak $2 ; break;} -case 151: -#line 2080 "Gmsh.y" +case 148: +#line 2015 "Gmsh.y" { if(!FunctionManager::Instance()->leaveFunction(&yyin, yyname, yylineno)) yymsg(GERROR, "Error while exiting function"); ; break;} -case 152: -#line 2085 "Gmsh.y" +case 149: +#line 2020 "Gmsh.y" { if(!FunctionManager::Instance()->enterFunction(yyvsp[-1].c, &yyin, yyname, yylineno)) yymsg(GERROR, "Unknown function %s", yyvsp[-1].c); //FIXME: wee leak $2 ; break;} -case 153: -#line 2091 "Gmsh.y" +case 150: +#line 2026 "Gmsh.y" { if(!yyvsp[-1].d) skip_until("If", "EndIf"); ; break;} -case 154: -#line 2095 "Gmsh.y" +case 151: +#line 2030 "Gmsh.y" { ; break;} -case 155: -#line 2104 "Gmsh.y" +case 152: +#line 2039 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(Shape)); ExtrudeShapes(TRANSLATE, yyvsp[-1].l, @@ -4907,8 +4754,8 @@ case 155: List_Delete(yyvsp[-1].l); ; break;} -case 156: -#line 2112 "Gmsh.y" +case 153: +#line 2047 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(Shape)); ExtrudeShapes(ROTATE, yyvsp[-1].l, @@ -4917,8 +4764,8 @@ case 156: List_Delete(yyvsp[-1].l); ; break;} -case 157: -#line 2120 "Gmsh.y" +case 154: +#line 2055 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(Shape)); ExtrudeShapes(TRANSLATE_ROTATE, yyvsp[-1].l, @@ -4927,15 +4774,15 @@ case 157: List_Delete(yyvsp[-1].l); ; break;} -case 158: -#line 2128 "Gmsh.y" +case 155: +#line 2063 "Gmsh.y" { extr.mesh.ExtrudeMesh = false; extr.mesh.Recombine = false; ; break;} -case 159: -#line 2133 "Gmsh.y" +case 156: +#line 2068 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(Shape)); ExtrudeShapes(TRANSLATE, yyvsp[-3].l, @@ -4944,15 +4791,15 @@ case 159: List_Delete(yyvsp[-3].l); ; break;} -case 160: -#line 2141 "Gmsh.y" +case 157: +#line 2076 "Gmsh.y" { extr.mesh.ExtrudeMesh = false; extr.mesh.Recombine = false; ; break;} -case 161: -#line 2146 "Gmsh.y" +case 158: +#line 2081 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(Shape)); ExtrudeShapes(ROTATE, yyvsp[-3].l, @@ -4961,15 +4808,15 @@ case 161: List_Delete(yyvsp[-3].l); ; break;} -case 162: -#line 2154 "Gmsh.y" +case 159: +#line 2089 "Gmsh.y" { extr.mesh.ExtrudeMesh = false; extr.mesh.Recombine = false; ; break;} -case 163: -#line 2159 "Gmsh.y" +case 160: +#line 2094 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(Shape)); ExtrudeShapes(TRANSLATE_ROTATE, yyvsp[-3].l, @@ -4978,8 +4825,8 @@ case 163: List_Delete(yyvsp[-3].l); ; break;} -case 164: -#line 2169 "Gmsh.y" +case 161: +#line 2104 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE, MSH_POINT, (int)yyvsp[-4].d, @@ -4987,8 +4834,8 @@ case 164: NULL, yyval.l); ; break;} -case 165: -#line 2176 "Gmsh.y" +case 162: +#line 2111 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE, MSH_SEGM_LINE, (int)yyvsp[-4].d, @@ -4996,8 +4843,8 @@ case 165: NULL, yyval.l); ; break;} -case 166: -#line 2183 "Gmsh.y" +case 163: +#line 2118 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE, MSH_SURF_PLAN, (int)yyvsp[-4].d, @@ -5005,8 +4852,8 @@ case 166: NULL, yyval.l); ; break;} -case 167: -#line 2190 "Gmsh.y" +case 164: +#line 2125 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(ROTATE, MSH_POINT, (int)yyvsp[-8].d, @@ -5014,8 +4861,8 @@ case 167: NULL, yyval.l); ; break;} -case 168: -#line 2197 "Gmsh.y" +case 165: +#line 2132 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(ROTATE, MSH_SEGM_LINE, (int)yyvsp[-8].d, @@ -5023,8 +4870,8 @@ case 168: NULL, yyval.l); ; break;} -case 169: -#line 2204 "Gmsh.y" +case 166: +#line 2139 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(ROTATE, MSH_SURF_PLAN, (int)yyvsp[-8].d, @@ -5032,8 +4879,8 @@ case 169: NULL, yyval.l); ; break;} -case 170: -#line 2211 "Gmsh.y" +case 167: +#line 2146 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE_ROTATE, MSH_POINT, (int)yyvsp[-10].d, @@ -5041,8 +4888,8 @@ case 170: NULL, yyval.l); ; break;} -case 171: -#line 2218 "Gmsh.y" +case 168: +#line 2153 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE_ROTATE, MSH_SEGM_LINE, (int)yyvsp[-10].d, @@ -5050,8 +4897,8 @@ case 171: NULL, yyval.l); ; break;} -case 172: -#line 2225 "Gmsh.y" +case 169: +#line 2160 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE_ROTATE, MSH_SURF_PLAN, (int)yyvsp[-10].d, @@ -5059,15 +4906,15 @@ case 172: NULL, yyval.l); ; break;} -case 173: -#line 2232 "Gmsh.y" +case 170: +#line 2167 "Gmsh.y" { extr.mesh.ExtrudeMesh = false; extr.mesh.Recombine = false; ; break;} -case 174: -#line 2237 "Gmsh.y" +case 171: +#line 2172 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE, MSH_POINT, (int)yyvsp[-8].d, @@ -5075,15 +4922,15 @@ case 174: &extr, yyval.l); ; break;} -case 175: -#line 2244 "Gmsh.y" +case 172: +#line 2179 "Gmsh.y" { extr.mesh.ExtrudeMesh = false; extr.mesh.Recombine = false; ; break;} -case 176: -#line 2249 "Gmsh.y" +case 173: +#line 2184 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE, MSH_SEGM_LINE, (int)yyvsp[-8].d, @@ -5091,15 +4938,15 @@ case 176: &extr, yyval.l); ; break;} -case 177: -#line 2256 "Gmsh.y" +case 174: +#line 2191 "Gmsh.y" { extr.mesh.ExtrudeMesh = false; extr.mesh.Recombine = false; ; break;} -case 178: -#line 2261 "Gmsh.y" +case 175: +#line 2196 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE, MSH_SURF_PLAN, (int)yyvsp[-8].d, @@ -5107,15 +4954,15 @@ case 178: &extr, yyval.l); ; break;} -case 179: -#line 2268 "Gmsh.y" +case 176: +#line 2203 "Gmsh.y" { extr.mesh.ExtrudeMesh = false; extr.mesh.Recombine = false; ; break;} -case 180: -#line 2273 "Gmsh.y" +case 177: +#line 2208 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(ROTATE, MSH_POINT, (int)yyvsp[-12].d, @@ -5123,15 +4970,15 @@ case 180: &extr, yyval.l); ; break;} -case 181: -#line 2280 "Gmsh.y" +case 178: +#line 2215 "Gmsh.y" { extr.mesh.ExtrudeMesh = false; extr.mesh.Recombine = false; ; break;} -case 182: -#line 2285 "Gmsh.y" +case 179: +#line 2220 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(ROTATE, MSH_SEGM_LINE, (int)yyvsp[-12].d, @@ -5139,15 +4986,15 @@ case 182: &extr, yyval.l); ; break;} -case 183: -#line 2292 "Gmsh.y" +case 180: +#line 2227 "Gmsh.y" { extr.mesh.ExtrudeMesh = false; extr.mesh.Recombine = false; ; break;} -case 184: -#line 2297 "Gmsh.y" +case 181: +#line 2232 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(ROTATE, MSH_SURF_PLAN, (int)yyvsp[-12].d, @@ -5155,15 +5002,15 @@ case 184: &extr, yyval.l); ; break;} -case 185: -#line 2304 "Gmsh.y" +case 182: +#line 2239 "Gmsh.y" { extr.mesh.ExtrudeMesh = false; extr.mesh.Recombine = false; ; break;} -case 186: -#line 2309 "Gmsh.y" +case 183: +#line 2244 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE_ROTATE, MSH_POINT, (int)yyvsp[-14].d, @@ -5171,15 +5018,15 @@ case 186: &extr, yyval.l); ; break;} -case 187: -#line 2316 "Gmsh.y" +case 184: +#line 2251 "Gmsh.y" { extr.mesh.ExtrudeMesh = false; extr.mesh.Recombine = false; ; break;} -case 188: -#line 2321 "Gmsh.y" +case 185: +#line 2256 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE_ROTATE, MSH_SEGM_LINE, (int)yyvsp[-14].d, @@ -5187,15 +5034,15 @@ case 188: &extr, yyval.l); ; break;} -case 189: -#line 2328 "Gmsh.y" +case 186: +#line 2263 "Gmsh.y" { extr.mesh.ExtrudeMesh = false; extr.mesh.Recombine = false; ; break;} -case 190: -#line 2333 "Gmsh.y" +case 187: +#line 2268 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(Shape)); ExtrudeShape(TRANSLATE_ROTATE, MSH_SURF_PLAN, (int)yyvsp[-14].d, @@ -5203,18 +5050,18 @@ case 190: &extr, yyval.l); ; break;} -case 191: -#line 2344 "Gmsh.y" +case 188: +#line 2279 "Gmsh.y" { ; break;} -case 192: -#line 2347 "Gmsh.y" +case 189: +#line 2282 "Gmsh.y" { ; break;} -case 193: -#line 2353 "Gmsh.y" +case 190: +#line 2288 "Gmsh.y" { extr.mesh.ExtrudeMesh = true; extr.mesh.NbLayer = 1; @@ -5224,8 +5071,8 @@ case 193: extr.mesh.hLayer.push_back(1.); ; break;} -case 194: -#line 2362 "Gmsh.y" +case 191: +#line 2297 "Gmsh.y" { double d; extr.mesh.ExtrudeMesh = true; @@ -5248,8 +5095,8 @@ case 194: List_Delete(yyvsp[-2].l); ; break;} -case 195: -#line 2384 "Gmsh.y" +case 192: +#line 2319 "Gmsh.y" { yymsg(WARNING, "Explicit region numbers in layers are deprecated"); double d; @@ -5274,14 +5121,14 @@ case 195: List_Delete(yyvsp[-2].l); ; break;} -case 196: -#line 2408 "Gmsh.y" +case 193: +#line 2343 "Gmsh.y" { extr.mesh.Recombine = true; ; break;} -case 197: -#line 2417 "Gmsh.y" +case 194: +#line 2352 "Gmsh.y" { for(int i = 0; i < List_Nbr(yyvsp[-3].l); i++){ double d; @@ -5300,8 +5147,8 @@ case 197: List_Delete(yyvsp[-3].l); ; break;} -case 198: -#line 2435 "Gmsh.y" +case 195: +#line 2370 "Gmsh.y" { for(int i = 0; i < List_Nbr(yyvsp[-6].l); i++){ double d; @@ -5320,8 +5167,8 @@ case 198: List_Delete(yyvsp[-6].l); ; break;} -case 199: -#line 2453 "Gmsh.y" +case 196: +#line 2388 "Gmsh.y" { for(int i = 0; i < List_Nbr(yyvsp[-6].l); i++){ double d; @@ -5340,8 +5187,8 @@ case 199: List_Delete(yyvsp[-6].l); ; break;} -case 200: -#line 2471 "Gmsh.y" +case 197: +#line 2406 "Gmsh.y" { Surface *s = FindSurface((int)yyvsp[-4].d); if(!s) @@ -5371,8 +5218,8 @@ case 200: List_Delete(yyvsp[-1].l); ; break;} -case 201: -#line 2500 "Gmsh.y" +case 198: +#line 2435 "Gmsh.y" { Surface *s = FindSurface((int)yyvsp[-5].d); if(!s) @@ -5408,15 +5255,15 @@ case 201: Free(yyvsp[-1].c); ; break;} -case 202: -#line 2535 "Gmsh.y" +case 199: +#line 2470 "Gmsh.y" { yymsg(WARNING, "Elliptic Surface is deprecated: use Transfinite instead (with smoothing)"); List_Delete(yyvsp[-1].l); ; break;} -case 203: -#line 2540 "Gmsh.y" +case 200: +#line 2475 "Gmsh.y" { Volume *v = FindVolume((int)yyvsp[-4].d); if(!v) @@ -5444,8 +5291,8 @@ case 203: List_Delete(yyvsp[-1].l); ; break;} -case 204: -#line 2567 "Gmsh.y" +case 201: +#line 2502 "Gmsh.y" { for(int i = 0; i < List_Nbr(yyvsp[-3].l); i++){ double d; @@ -5460,8 +5307,8 @@ case 204: List_Delete(yyvsp[-3].l); ; break;} -case 205: -#line 2581 "Gmsh.y" +case 202: +#line 2516 "Gmsh.y" { for(int i = 0; i < List_Nbr(yyvsp[-1].l); i++){ double d; @@ -5475,78 +5322,72 @@ case 205: List_Delete(yyvsp[-1].l); ; break;} -case 206: -#line 2600 "Gmsh.y" +case 203: +#line 2535 "Gmsh.y" { Surface *s = FindSurface((int)yyvsp[-1].d); if(s) setSurfaceEmbeddedPoints(s, yyvsp[-4].l); ; break;} -case 207: -#line 2606 "Gmsh.y" +case 204: +#line 2541 "Gmsh.y" { Surface *s = FindSurface((int)yyvsp[-1].d); if(s) setSurfaceEmbeddedCurves(s, yyvsp[-4].l); ; break;} -case 208: -#line 2612 "Gmsh.y" +case 205: +#line 2547 "Gmsh.y" { ; break;} -case 209: -#line 2615 "Gmsh.y" +case 206: +#line 2550 "Gmsh.y" { ; break;} -case 210: -#line 2622 "Gmsh.y" +case 207: +#line 2559 "Gmsh.y" { ReplaceAllDuplicates(); ; break;} -case 211: -#line 2626 "Gmsh.y" -{ - yymsg(GERROR, "Intersect is deprecated"); - ; - break;} -case 212: -#line 2635 "Gmsh.y" +case 208: +#line 2568 "Gmsh.y" { yyval.d = yyvsp[0].d; ; break;} -case 213: -#line 2636 "Gmsh.y" +case 209: +#line 2569 "Gmsh.y" { yyval.d = yyvsp[-1].d; ; break;} -case 214: -#line 2637 "Gmsh.y" +case 210: +#line 2570 "Gmsh.y" { yyval.d = -yyvsp[0].d; ; break;} -case 215: -#line 2638 "Gmsh.y" +case 211: +#line 2571 "Gmsh.y" { yyval.d = yyvsp[0].d; ; break;} -case 216: -#line 2639 "Gmsh.y" +case 212: +#line 2572 "Gmsh.y" { yyval.d = !yyvsp[0].d; ; break;} -case 217: -#line 2640 "Gmsh.y" +case 213: +#line 2573 "Gmsh.y" { yyval.d = yyvsp[-2].d - yyvsp[0].d; ; break;} -case 218: -#line 2641 "Gmsh.y" +case 214: +#line 2574 "Gmsh.y" { yyval.d = yyvsp[-2].d + yyvsp[0].d; ; break;} -case 219: -#line 2642 "Gmsh.y" +case 215: +#line 2575 "Gmsh.y" { yyval.d = yyvsp[-2].d * yyvsp[0].d; ; break;} -case 220: -#line 2644 "Gmsh.y" +case 216: +#line 2577 "Gmsh.y" { if(!yyvsp[0].d) yymsg(GERROR, "Division by zero in '%g / %g'", yyvsp[-2].d, yyvsp[0].d); @@ -5554,248 +5395,248 @@ case 220: yyval.d = yyvsp[-2].d / yyvsp[0].d; ; break;} -case 221: -#line 2650 "Gmsh.y" +case 217: +#line 2583 "Gmsh.y" { yyval.d = (int)yyvsp[-2].d % (int)yyvsp[0].d; ; break;} -case 222: -#line 2651 "Gmsh.y" +case 218: +#line 2584 "Gmsh.y" { yyval.d = pow(yyvsp[-2].d, yyvsp[0].d); ; break;} -case 223: -#line 2652 "Gmsh.y" +case 219: +#line 2585 "Gmsh.y" { yyval.d = yyvsp[-2].d < yyvsp[0].d; ; break;} -case 224: -#line 2653 "Gmsh.y" +case 220: +#line 2586 "Gmsh.y" { yyval.d = yyvsp[-2].d > yyvsp[0].d; ; break;} -case 225: -#line 2654 "Gmsh.y" +case 221: +#line 2587 "Gmsh.y" { yyval.d = yyvsp[-2].d <= yyvsp[0].d; ; break;} -case 226: -#line 2655 "Gmsh.y" +case 222: +#line 2588 "Gmsh.y" { yyval.d = yyvsp[-2].d >= yyvsp[0].d; ; break;} -case 227: -#line 2656 "Gmsh.y" +case 223: +#line 2589 "Gmsh.y" { yyval.d = yyvsp[-2].d == yyvsp[0].d; ; break;} -case 228: -#line 2657 "Gmsh.y" +case 224: +#line 2590 "Gmsh.y" { yyval.d = yyvsp[-2].d != yyvsp[0].d; ; break;} -case 229: -#line 2658 "Gmsh.y" +case 225: +#line 2591 "Gmsh.y" { yyval.d = yyvsp[-2].d && yyvsp[0].d; ; break;} -case 230: -#line 2659 "Gmsh.y" +case 226: +#line 2592 "Gmsh.y" { yyval.d = yyvsp[-2].d || yyvsp[0].d; ; break;} -case 231: -#line 2660 "Gmsh.y" +case 227: +#line 2593 "Gmsh.y" { yyval.d = yyvsp[-4].d? yyvsp[-2].d : yyvsp[0].d; ; break;} -case 232: -#line 2661 "Gmsh.y" +case 228: +#line 2594 "Gmsh.y" { yyval.d = exp(yyvsp[-1].d); ; break;} -case 233: -#line 2662 "Gmsh.y" +case 229: +#line 2595 "Gmsh.y" { yyval.d = log(yyvsp[-1].d); ; break;} -case 234: -#line 2663 "Gmsh.y" +case 230: +#line 2596 "Gmsh.y" { yyval.d = log10(yyvsp[-1].d); ; break;} -case 235: -#line 2664 "Gmsh.y" +case 231: +#line 2597 "Gmsh.y" { yyval.d = sqrt(yyvsp[-1].d); ; break;} -case 236: -#line 2665 "Gmsh.y" +case 232: +#line 2598 "Gmsh.y" { yyval.d = sin(yyvsp[-1].d); ; break;} -case 237: -#line 2666 "Gmsh.y" +case 233: +#line 2599 "Gmsh.y" { yyval.d = asin(yyvsp[-1].d); ; break;} -case 238: -#line 2667 "Gmsh.y" +case 234: +#line 2600 "Gmsh.y" { yyval.d = cos(yyvsp[-1].d); ; break;} -case 239: -#line 2668 "Gmsh.y" +case 235: +#line 2601 "Gmsh.y" { yyval.d = acos(yyvsp[-1].d); ; break;} -case 240: -#line 2669 "Gmsh.y" +case 236: +#line 2602 "Gmsh.y" { yyval.d = tan(yyvsp[-1].d); ; break;} -case 241: -#line 2670 "Gmsh.y" +case 237: +#line 2603 "Gmsh.y" { yyval.d = atan(yyvsp[-1].d); ; break;} -case 242: -#line 2671 "Gmsh.y" +case 238: +#line 2604 "Gmsh.y" { yyval.d = atan2(yyvsp[-3].d, yyvsp[-1].d);; break;} -case 243: -#line 2672 "Gmsh.y" +case 239: +#line 2605 "Gmsh.y" { yyval.d = sinh(yyvsp[-1].d); ; break;} -case 244: -#line 2673 "Gmsh.y" +case 240: +#line 2606 "Gmsh.y" { yyval.d = cosh(yyvsp[-1].d); ; break;} -case 245: -#line 2674 "Gmsh.y" +case 241: +#line 2607 "Gmsh.y" { yyval.d = tanh(yyvsp[-1].d); ; break;} -case 246: -#line 2675 "Gmsh.y" +case 242: +#line 2608 "Gmsh.y" { yyval.d = fabs(yyvsp[-1].d); ; break;} -case 247: -#line 2676 "Gmsh.y" +case 243: +#line 2609 "Gmsh.y" { yyval.d = floor(yyvsp[-1].d); ; break;} -case 248: -#line 2677 "Gmsh.y" +case 244: +#line 2610 "Gmsh.y" { yyval.d = ceil(yyvsp[-1].d); ; break;} -case 249: -#line 2678 "Gmsh.y" +case 245: +#line 2611 "Gmsh.y" { yyval.d = fmod(yyvsp[-3].d, yyvsp[-1].d); ; break;} -case 250: -#line 2679 "Gmsh.y" +case 246: +#line 2612 "Gmsh.y" { yyval.d = fmod(yyvsp[-3].d, yyvsp[-1].d); ; break;} -case 251: -#line 2680 "Gmsh.y" +case 247: +#line 2613 "Gmsh.y" { yyval.d = sqrt(yyvsp[-3].d*yyvsp[-3].d+yyvsp[-1].d*yyvsp[-1].d); ; break;} -case 252: -#line 2681 "Gmsh.y" +case 248: +#line 2614 "Gmsh.y" { yyval.d = yyvsp[-1].d*(double)rand()/(double)RAND_MAX; ; break;} -case 253: -#line 2683 "Gmsh.y" +case 249: +#line 2616 "Gmsh.y" { yyval.d = exp(yyvsp[-1].d); ; break;} -case 254: -#line 2684 "Gmsh.y" +case 250: +#line 2617 "Gmsh.y" { yyval.d = log(yyvsp[-1].d); ; break;} -case 255: -#line 2685 "Gmsh.y" +case 251: +#line 2618 "Gmsh.y" { yyval.d = log10(yyvsp[-1].d); ; break;} -case 256: -#line 2686 "Gmsh.y" +case 252: +#line 2619 "Gmsh.y" { yyval.d = sqrt(yyvsp[-1].d); ; break;} -case 257: -#line 2687 "Gmsh.y" +case 253: +#line 2620 "Gmsh.y" { yyval.d = sin(yyvsp[-1].d); ; break;} -case 258: -#line 2688 "Gmsh.y" +case 254: +#line 2621 "Gmsh.y" { yyval.d = asin(yyvsp[-1].d); ; break;} -case 259: -#line 2689 "Gmsh.y" +case 255: +#line 2622 "Gmsh.y" { yyval.d = cos(yyvsp[-1].d); ; break;} -case 260: -#line 2690 "Gmsh.y" +case 256: +#line 2623 "Gmsh.y" { yyval.d = acos(yyvsp[-1].d); ; break;} -case 261: -#line 2691 "Gmsh.y" +case 257: +#line 2624 "Gmsh.y" { yyval.d = tan(yyvsp[-1].d); ; break;} -case 262: -#line 2692 "Gmsh.y" +case 258: +#line 2625 "Gmsh.y" { yyval.d = atan(yyvsp[-1].d); ; break;} -case 263: -#line 2693 "Gmsh.y" +case 259: +#line 2626 "Gmsh.y" { yyval.d = atan2(yyvsp[-3].d, yyvsp[-1].d);; break;} -case 264: -#line 2694 "Gmsh.y" +case 260: +#line 2627 "Gmsh.y" { yyval.d = sinh(yyvsp[-1].d); ; break;} -case 265: -#line 2695 "Gmsh.y" +case 261: +#line 2628 "Gmsh.y" { yyval.d = cosh(yyvsp[-1].d); ; break;} -case 266: -#line 2696 "Gmsh.y" +case 262: +#line 2629 "Gmsh.y" { yyval.d = tanh(yyvsp[-1].d); ; break;} -case 267: -#line 2697 "Gmsh.y" +case 263: +#line 2630 "Gmsh.y" { yyval.d = fabs(yyvsp[-1].d); ; break;} -case 268: -#line 2698 "Gmsh.y" +case 264: +#line 2631 "Gmsh.y" { yyval.d = floor(yyvsp[-1].d); ; break;} -case 269: -#line 2699 "Gmsh.y" +case 265: +#line 2632 "Gmsh.y" { yyval.d = ceil(yyvsp[-1].d); ; break;} -case 270: -#line 2700 "Gmsh.y" +case 266: +#line 2633 "Gmsh.y" { yyval.d = fmod(yyvsp[-3].d, yyvsp[-1].d); ; break;} -case 271: -#line 2701 "Gmsh.y" +case 267: +#line 2634 "Gmsh.y" { yyval.d = fmod(yyvsp[-3].d, yyvsp[-1].d); ; break;} -case 272: -#line 2702 "Gmsh.y" +case 268: +#line 2635 "Gmsh.y" { yyval.d = sqrt(yyvsp[-3].d*yyvsp[-3].d+yyvsp[-1].d*yyvsp[-1].d); ; break;} -case 273: -#line 2703 "Gmsh.y" +case 269: +#line 2636 "Gmsh.y" { yyval.d = yyvsp[-1].d*(double)rand()/(double)RAND_MAX; ; break;} -case 274: -#line 2712 "Gmsh.y" +case 270: +#line 2645 "Gmsh.y" { yyval.d = yyvsp[0].d; ; break;} -case 275: -#line 2713 "Gmsh.y" +case 271: +#line 2646 "Gmsh.y" { yyval.d = 3.141592653589793; ; break;} -case 276: -#line 2714 "Gmsh.y" +case 272: +#line 2647 "Gmsh.y" { yyval.d = ParUtil::Instance()->rank(); ; break;} -case 277: -#line 2715 "Gmsh.y" +case 273: +#line 2648 "Gmsh.y" { yyval.d = ParUtil::Instance()->size(); ; break;} -case 278: -#line 2716 "Gmsh.y" +case 274: +#line 2649 "Gmsh.y" { yyval.d = Get_GmshMajorVersion(); ; break;} -case 279: -#line 2717 "Gmsh.y" +case 275: +#line 2650 "Gmsh.y" { yyval.d = Get_GmshMinorVersion(); ; break;} -case 280: -#line 2718 "Gmsh.y" +case 276: +#line 2651 "Gmsh.y" { yyval.d = Get_GmshPatchVersion(); ; break;} -case 281: -#line 2723 "Gmsh.y" +case 277: +#line 2656 "Gmsh.y" { Symbol TheSymbol; TheSymbol.Name = yyvsp[0].c; @@ -5809,8 +5650,8 @@ case 281: Free(yyvsp[0].c); ; break;} -case 282: -#line 2739 "Gmsh.y" +case 278: +#line 2672 "Gmsh.y" { char tmpstring[1024]; sprintf(tmpstring, "%s_%d", yyvsp[-4].c, (int)yyvsp[-1].d) ; @@ -5826,8 +5667,8 @@ case 282: Free(yyvsp[-4].c); ; break;} -case 283: -#line 2754 "Gmsh.y" +case 279: +#line 2687 "Gmsh.y" { Symbol TheSymbol; TheSymbol.Name = yyvsp[-3].c; @@ -5848,8 +5689,8 @@ case 283: Free(yyvsp[-3].c); ; break;} -case 284: -#line 2774 "Gmsh.y" +case 280: +#line 2707 "Gmsh.y" { Symbol TheSymbol; TheSymbol.Name = yyvsp[-2].c; @@ -5864,8 +5705,8 @@ case 284: Free(yyvsp[-2].c); ; break;} -case 285: -#line 2788 "Gmsh.y" +case 281: +#line 2721 "Gmsh.y" { Symbol TheSymbol; TheSymbol.Name = yyvsp[-1].c; @@ -5879,8 +5720,8 @@ case 285: Free(yyvsp[-1].c); ; break;} -case 286: -#line 2801 "Gmsh.y" +case 282: +#line 2734 "Gmsh.y" { Symbol TheSymbol; TheSymbol.Name = yyvsp[-4].c; @@ -5901,8 +5742,8 @@ case 286: Free(yyvsp[-4].c); ; break;} -case 287: -#line 2824 "Gmsh.y" +case 283: +#line 2757 "Gmsh.y" { double (*pNumOpt)(int num, int action, double value); StringXNumber *pNumCat; @@ -5921,8 +5762,8 @@ case 287: Free(yyvsp[-2].c); Free(yyvsp[0].c); ; break;} -case 288: -#line 2842 "Gmsh.y" +case 284: +#line 2775 "Gmsh.y" { double (*pNumOpt)(int num, int action, double value); StringXNumber *pNumCat; @@ -5941,8 +5782,8 @@ case 288: Free(yyvsp[-5].c); Free(yyvsp[0].c); ; break;} -case 289: -#line 2860 "Gmsh.y" +case 285: +#line 2793 "Gmsh.y" { double (*pNumOpt)(int num, int action, double value); StringXNumber *pNumCat; @@ -5961,8 +5802,8 @@ case 289: Free(yyvsp[-3].c); Free(yyvsp[-1].c); ; break;} -case 290: -#line 2878 "Gmsh.y" +case 286: +#line 2811 "Gmsh.y" { double (*pNumOpt)(int num, int action, double value); StringXNumber *pNumCat; @@ -5981,125 +5822,125 @@ case 290: Free(yyvsp[-6].c); Free(yyvsp[-1].c); ; break;} -case 291: -#line 2896 "Gmsh.y" +case 287: +#line 2829 "Gmsh.y" { yyval.d = GetValue(yyvsp[-3].c, yyvsp[-1].d); Free(yyvsp[-3].c); ; break;} -case 292: -#line 2904 "Gmsh.y" +case 288: +#line 2837 "Gmsh.y" { memcpy(yyval.v, yyvsp[0].v, 5*sizeof(double)); ; break;} -case 293: -#line 2908 "Gmsh.y" +case 289: +#line 2841 "Gmsh.y" { for(int i = 0; i < 5; i++) yyval.v[i] = -yyvsp[0].v[i]; ; break;} -case 294: -#line 2912 "Gmsh.y" +case 290: +#line 2845 "Gmsh.y" { for(int i = 0; i < 5; i++) yyval.v[i] = yyvsp[0].v[i]; ; break;} -case 295: -#line 2916 "Gmsh.y" +case 291: +#line 2849 "Gmsh.y" { for(int i = 0; i < 5; i++) yyval.v[i] = yyvsp[-2].v[i] - yyvsp[0].v[i]; ; break;} -case 296: -#line 2920 "Gmsh.y" +case 292: +#line 2853 "Gmsh.y" { for(int i = 0; i < 5; i++) yyval.v[i] = yyvsp[-2].v[i] + yyvsp[0].v[i]; ; break;} -case 297: -#line 2927 "Gmsh.y" +case 293: +#line 2860 "Gmsh.y" { yyval.v[0] = yyvsp[-9].d; yyval.v[1] = yyvsp[-7].d; yyval.v[2] = yyvsp[-5].d; yyval.v[3] = yyvsp[-3].d; yyval.v[4] = yyvsp[-1].d; ; break;} -case 298: -#line 2931 "Gmsh.y" +case 294: +#line 2864 "Gmsh.y" { yyval.v[0] = yyvsp[-7].d; yyval.v[1] = yyvsp[-5].d; yyval.v[2] = yyvsp[-3].d; yyval.v[3] = yyvsp[-1].d; yyval.v[4] = 1.0; ; break;} -case 299: -#line 2935 "Gmsh.y" +case 295: +#line 2868 "Gmsh.y" { yyval.v[0] = yyvsp[-5].d; yyval.v[1] = yyvsp[-3].d; yyval.v[2] = yyvsp[-1].d; yyval.v[3] = 0.0; yyval.v[4] = 1.0; ; break;} -case 300: -#line 2939 "Gmsh.y" +case 296: +#line 2872 "Gmsh.y" { yyval.v[0] = yyvsp[-5].d; yyval.v[1] = yyvsp[-3].d; yyval.v[2] = yyvsp[-1].d; yyval.v[3] = 0.0; yyval.v[4] = 1.0; ; break;} -case 301: -#line 2946 "Gmsh.y" +case 297: +#line 2879 "Gmsh.y" { ; break;} -case 302: -#line 2949 "Gmsh.y" +case 298: +#line 2882 "Gmsh.y" { yyval.l = yyvsp[-1].l; ; break;} -case 303: -#line 2953 "Gmsh.y" +case 299: +#line 2886 "Gmsh.y" { yyval.l = yyvsp[-1].l; ; break;} -case 304: -#line 2960 "Gmsh.y" +case 300: +#line 2893 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(List_T*)); List_Add(yyval.l, &(yyvsp[0].l)); ; break;} -case 305: -#line 2965 "Gmsh.y" +case 301: +#line 2898 "Gmsh.y" { List_Add(yyval.l, &(yyvsp[0].l)); ; break;} -case 306: -#line 2973 "Gmsh.y" +case 302: +#line 2906 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(double)); List_Add(yyval.l, &(yyvsp[0].d)); ; break;} -case 307: -#line 2978 "Gmsh.y" +case 303: +#line 2911 "Gmsh.y" { yyval.l = yyvsp[0].l; ; break;} -case 308: -#line 2982 "Gmsh.y" +case 304: +#line 2915 "Gmsh.y" { // creates an empty list yyval.l = List_Create(2, 1, sizeof(double)); ; break;} -case 309: -#line 2987 "Gmsh.y" +case 305: +#line 2920 "Gmsh.y" { yyval.l = yyvsp[-1].l; ; break;} -case 310: -#line 2991 "Gmsh.y" +case 306: +#line 2924 "Gmsh.y" { yyval.l = yyvsp[-1].l; double *pd; @@ -6109,16 +5950,16 @@ case 310: } ; break;} -case 311: -#line 3003 "Gmsh.y" +case 307: +#line 2936 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(double)); for(double d = yyvsp[-2].d; (yyvsp[-2].d < yyvsp[0].d) ? (d <= yyvsp[0].d) : (d >= yyvsp[0].d); (yyvsp[-2].d < yyvsp[0].d) ? (d += 1.) : (d -= 1.)) List_Add(yyval.l, &d); ; break;} -case 312: -#line 3009 "Gmsh.y" +case 308: +#line 2942 "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)){ @@ -6130,8 +5971,8 @@ case 312: List_Add(yyval.l, &d); ; break;} -case 313: -#line 3020 "Gmsh.y" +case 309: +#line 2953 "Gmsh.y" { // Returns the coordinates of a point and fills a list with it. // This allows to ensure e.g. that relative point positions are @@ -6152,8 +5993,8 @@ case 313: } ; break;} -case 314: -#line 3040 "Gmsh.y" +case 310: +#line 2973 "Gmsh.y" { yyval.l = List_Create(List_Nbr(yyvsp[0].l), 1, sizeof(double)); for(int i = 0; i < List_Nbr(yyvsp[0].l); i++){ @@ -6164,8 +6005,8 @@ case 314: List_Delete(yyvsp[0].l); ; break;} -case 315: -#line 3050 "Gmsh.y" +case 311: +#line 2983 "Gmsh.y" { yyval.l = List_Create(List_Nbr(yyvsp[0].l), 1, sizeof(double)); for(int i = 0; i < List_Nbr(yyvsp[0].l); i++){ @@ -6176,8 +6017,8 @@ case 315: List_Delete(yyvsp[0].l); ; break;} -case 316: -#line 3060 "Gmsh.y" +case 312: +#line 2993 "Gmsh.y" { yyval.l = List_Create(List_Nbr(yyvsp[0].l), 1, sizeof(double)); for(int i = 0; i < List_Nbr(yyvsp[0].l); i++){ @@ -6188,8 +6029,8 @@ case 316: List_Delete(yyvsp[0].l); ; break;} -case 317: -#line 3070 "Gmsh.y" +case 313: +#line 3003 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(double)); Symbol TheSymbol; @@ -6207,8 +6048,8 @@ case 317: Free(yyvsp[-2].c); ; break;} -case 318: -#line 3087 "Gmsh.y" +case 314: +#line 3020 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(double)); Symbol TheSymbol; @@ -6228,8 +6069,8 @@ case 318: Free(yyvsp[-2].c); ; break;} -case 319: -#line 3106 "Gmsh.y" +case 315: +#line 3039 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(double)); Symbol TheSymbol; @@ -6254,8 +6095,8 @@ case 319: List_Delete(yyvsp[-2].l); ; break;} -case 320: -#line 3130 "Gmsh.y" +case 316: +#line 3063 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(double)); Symbol TheSymbol; @@ -6282,27 +6123,27 @@ case 320: List_Delete(yyvsp[-2].l); ; break;} -case 321: -#line 3159 "Gmsh.y" +case 317: +#line 3092 "Gmsh.y" { yyval.l = List_Create(2, 1, sizeof(double)); List_Add(yyval.l, &(yyvsp[0].d)); ; break;} -case 322: -#line 3164 "Gmsh.y" +case 318: +#line 3097 "Gmsh.y" { yyval.l = yyvsp[0].l; ; break;} -case 323: -#line 3168 "Gmsh.y" +case 319: +#line 3101 "Gmsh.y" { List_Add(yyval.l, &(yyvsp[0].d)); ; break;} -case 324: -#line 3172 "Gmsh.y" +case 320: +#line 3105 "Gmsh.y" { for(int i = 0; i < List_Nbr(yyvsp[0].l); i++){ double d; @@ -6312,20 +6153,20 @@ case 324: List_Delete(yyvsp[0].l); ; break;} -case 325: -#line 3185 "Gmsh.y" +case 321: +#line 3118 "Gmsh.y" { yyval.u = CTX.PACK_COLOR((int)yyvsp[-7].d, (int)yyvsp[-5].d, (int)yyvsp[-3].d, (int)yyvsp[-1].d); ; break;} -case 326: -#line 3189 "Gmsh.y" +case 322: +#line 3122 "Gmsh.y" { yyval.u = CTX.PACK_COLOR((int)yyvsp[-5].d, (int)yyvsp[-3].d, (int)yyvsp[-1].d, 255); ; break;} -case 327: -#line 3201 "Gmsh.y" +case 323: +#line 3134 "Gmsh.y" { int flag; yyval.u = Get_ColorForString(ColorString, -1, yyvsp[0].c, &flag); @@ -6333,8 +6174,8 @@ case 327: Free(yyvsp[0].c); ; break;} -case 328: -#line 3208 "Gmsh.y" +case 324: +#line 3141 "Gmsh.y" { unsigned int (*pColOpt)(int num, int action, unsigned int value); StringXColor *pColCat; @@ -6354,14 +6195,14 @@ case 328: Free(yyvsp[-4].c); Free(yyvsp[0].c); ; break;} -case 329: -#line 3230 "Gmsh.y" +case 325: +#line 3163 "Gmsh.y" { yyval.l = yyvsp[-1].l; ; break;} -case 330: -#line 3234 "Gmsh.y" +case 326: +#line 3167 "Gmsh.y" { yyval.l = List_Create(256, 10, sizeof(unsigned int)); GmshColorTable *ct = Get_ColorTable((int)yyvsp[-3].d); @@ -6374,27 +6215,27 @@ case 330: Free(yyvsp[-5].c); ; break;} -case 331: -#line 3249 "Gmsh.y" +case 327: +#line 3182 "Gmsh.y" { yyval.l = List_Create(256, 10, sizeof(unsigned int)); List_Add(yyval.l, &(yyvsp[0].u)); ; break;} -case 332: -#line 3254 "Gmsh.y" +case 328: +#line 3187 "Gmsh.y" { List_Add(yyval.l, &(yyvsp[0].u)); ; break;} -case 333: -#line 3261 "Gmsh.y" +case 329: +#line 3194 "Gmsh.y" { yyval.c = yyvsp[0].c; ; break;} -case 334: -#line 3265 "Gmsh.y" +case 330: +#line 3198 "Gmsh.y" { yyval.c = (char *)Malloc(32*sizeof(char)); time_t now; @@ -6403,8 +6244,8 @@ case 334: yyval.c[strlen(yyval.c) - 1] = '\0'; ; break;} -case 335: -#line 3273 "Gmsh.y" +case 331: +#line 3206 "Gmsh.y" { yyval.c = (char *)Malloc((strlen(yyvsp[-3].c)+strlen(yyvsp[-1].c)+1)*sizeof(char)); strcpy(yyval.c, yyvsp[-3].c); @@ -6413,8 +6254,8 @@ case 335: Free(yyvsp[-1].c); ; break;} -case 336: -#line 3281 "Gmsh.y" +case 332: +#line 3214 "Gmsh.y" { yyval.c = (char *)Malloc((strlen(yyvsp[-1].c)+1)*sizeof(char)); int i; @@ -6429,8 +6270,8 @@ case 336: Free(yyvsp[-1].c); ; break;} -case 337: -#line 3295 "Gmsh.y" +case 333: +#line 3228 "Gmsh.y" { yyval.c = (char *)Malloc((strlen(yyvsp[-1].c)+1)*sizeof(char)); int i; @@ -6445,14 +6286,14 @@ case 337: Free(yyvsp[-1].c); ; break;} -case 338: -#line 3309 "Gmsh.y" +case 334: +#line 3242 "Gmsh.y" { yyval.c = yyvsp[-1].c; ; break;} -case 339: -#line 3313 "Gmsh.y" +case 335: +#line 3246 "Gmsh.y" { char tmpstring[1024]; int i = PrintListOfDouble(yyvsp[-3].c, yyvsp[-1].l, tmpstring); @@ -6472,8 +6313,8 @@ case 339: List_Delete(yyvsp[-1].l); ; break;} -case 340: -#line 3332 "Gmsh.y" +case 336: +#line 3265 "Gmsh.y" { char* (*pStrOpt)(int num, int action, char *value); StringXString *pStrCat; @@ -6496,8 +6337,8 @@ case 340: } ; break;} -case 341: -#line 3354 "Gmsh.y" +case 337: +#line 3287 "Gmsh.y" { char* (*pStrOpt)(int num, int action, char *value); StringXString *pStrCat; @@ -6742,7 +6583,7 @@ yyerrhandle: } return 1; } -#line 3377 "Gmsh.y" +#line 3310 "Gmsh.y" void DeleteSymbol(void *a, void *b){ diff --git a/Parser/Gmsh.tab.hpp b/Parser/Gmsh.tab.hpp index af1ab7c30b444aa2aa8e031579148479936bc4df..b9aedac7fae358113326eb3cb25b0534ebbcedcb 100644 --- a/Parser/Gmsh.tab.hpp +++ b/Parser/Gmsh.tab.hpp @@ -75,57 +75,55 @@ typedef union { #define tRecombine 322 #define tDelete 323 #define tCoherence 324 -#define tIntersect 325 -#define tAttractor 326 -#define tLayers 327 -#define tAlias 328 -#define tAliasWithOptions 329 -#define tText2D 330 -#define tText3D 331 -#define tInterpolationScheme 332 -#define tTime 333 -#define tGrain 334 -#define tCombine 335 -#define tBSpline 336 -#define tBezier 337 -#define tNurbs 338 -#define tOrder 339 -#define tWith 340 -#define tBounds 341 -#define tKnots 342 -#define tColor 343 -#define tColorTable 344 -#define tFor 345 -#define tIn 346 -#define tEndFor 347 -#define tIf 348 -#define tEndIf 349 -#define tExit 350 -#define tReturn 351 -#define tCall 352 -#define tFunction 353 -#define tTrimmed 354 -#define tShow 355 -#define tHide 356 -#define tGetValue 357 -#define tGMSH_MAJOR_VERSION 358 -#define tGMSH_MINOR_VERSION 359 -#define tGMSH_PATCH_VERSION 360 -#define tAFFECTPLUS 361 -#define tAFFECTMINUS 362 -#define tAFFECTTIMES 363 -#define tAFFECTDIVIDE 364 -#define tOR 365 -#define tAND 366 -#define tEQUAL 367 -#define tNOTEQUAL 368 -#define tAPPROXEQUAL 369 -#define tLESSOREQUAL 370 -#define tGREATEROREQUAL 371 -#define tCROSSPRODUCT 372 -#define tPLUSPLUS 373 -#define tMINUSMINUS 374 -#define UNARYPREC 375 +#define tAttractor 325 +#define tLayers 326 +#define tAlias 327 +#define tAliasWithOptions 328 +#define tText2D 329 +#define tText3D 330 +#define tInterpolationScheme 331 +#define tTime 332 +#define tGrain 333 +#define tCombine 334 +#define tBSpline 335 +#define tBezier 336 +#define tNurbs 337 +#define tOrder 338 +#define tWith 339 +#define tBounds 340 +#define tKnots 341 +#define tColor 342 +#define tColorTable 343 +#define tFor 344 +#define tIn 345 +#define tEndFor 346 +#define tIf 347 +#define tEndIf 348 +#define tExit 349 +#define tReturn 350 +#define tCall 351 +#define tFunction 352 +#define tShow 353 +#define tHide 354 +#define tGetValue 355 +#define tGMSH_MAJOR_VERSION 356 +#define tGMSH_MINOR_VERSION 357 +#define tGMSH_PATCH_VERSION 358 +#define tAFFECTPLUS 359 +#define tAFFECTMINUS 360 +#define tAFFECTTIMES 361 +#define tAFFECTDIVIDE 362 +#define tOR 363 +#define tAND 364 +#define tEQUAL 365 +#define tNOTEQUAL 366 +#define tAPPROXEQUAL 367 +#define tLESSOREQUAL 368 +#define tGREATEROREQUAL 369 +#define tCROSSPRODUCT 370 +#define tPLUSPLUS 371 +#define tMINUSMINUS 372 +#define UNARYPREC 373 extern YYSTYPE yylval; diff --git a/Parser/Gmsh.y b/Parser/Gmsh.y index 369903014c04109e86300cd09f2df6f549896a14..6f96fb08778b4ed50db7b04edbb7d9d3dba569cc 100644 --- a/Parser/Gmsh.y +++ b/Parser/Gmsh.y @@ -1,5 +1,5 @@ %{ -// $Id: Gmsh.y,v 1.253 2007-01-10 13:48:49 geuzaine Exp $ +// $Id: Gmsh.y,v 1.254 2007-01-12 08:10:32 geuzaine Exp $ // // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle // @@ -97,12 +97,12 @@ int CheckViewErrorFlags(Post_View *v); %token tPlane tRuled tTransfinite tComplex tPhysical %token tUsing tBump tProgression tPlugin %token tRotate tTranslate tSymmetry tDilate tExtrude tDuplicata -%token tLoop tRecombine tDelete tCoherence tIntersect +%token tLoop tRecombine tDelete tCoherence %token tAttractor tLayers tAlias tAliasWithOptions %token tText2D tText3D tInterpolationScheme tTime tGrain tCombine %token tBSpline tBezier tNurbs tOrder tWith tBounds tKnots %token tColor tColorTable tFor tIn tEndFor tIf tEndIf tExit -%token tReturn tCall tFunction tTrimmed tShow tHide tGetValue +%token tReturn tCall tFunction tShow tHide tGetValue %token tGMSH_MAJOR_VERSION tGMSH_MINOR_VERSION tGMSH_PATCH_VERSION %type <d> FExpr FExpr_Single @@ -1357,7 +1357,6 @@ Shape : List_T *temp = ListOfDouble2ListOfInt($7); setSurfaceGeneratrices(s, temp); List_Delete(temp); - s->Support = s; End_Surface(s); Tree_Add(THEM->Surfaces, &s); } @@ -1395,7 +1394,6 @@ Shape : List_T *temp = ListOfDouble2ListOfInt($7); setSurfaceGeneratrices(s, temp); List_Delete(temp); - s->Support = s; End_Surface(s); Tree_Add(THEM->Surfaces, &s); } @@ -1404,69 +1402,6 @@ Shape : $$.Type = type; $$.Num = num; } - | tTrimmed tSurface '(' FExpr ')' tAFFECT '{' FExpr ',' ListOfDouble '}' tEND - { - int num = (int)$4; - Surface *support = FindSurface((int)$8); - if(!support){ - yymsg(GERROR, "Unknown support surface %d", (int)$8); - } - else{ - if(FindSurface(num)){ - yymsg(GERROR, "Surface %d already exists", num); - } - else{ - Surface *s = Create_Surface(num, MSH_SURF_TRIMMED); - List_T *temp = ListOfDouble2ListOfInt($10); - setSurfaceGeneratrices(s, temp); - List_Delete(temp); - s->Support = support; - End_Surface(s); - Tree_Add(THEM->Surfaces, &s); - } - } - List_Delete($10); - $$.Type = MSH_SURF_TRIMMED; - $$.Num = num; - } - | tNurbs tSurface tWith tBounds '(' FExpr ')' tAFFECT - ListOfListOfDouble tKnots '{' ListOfDouble ',' ListOfDouble '}' - tOrder '{' FExpr ',' FExpr '}' tEND - { - int num = (int)$6; - if(FindSurface(num)){ - yymsg(GERROR, "Surface %d already exists", num); - } - else{ - CreateNurbsSurface(num, (int)$18, (int)$20, $9, $12, $14); - } - for(int i = 0; i < List_Nbr($9); i++) - List_Delete((List_T*)List_Pointer($9, i)); - List_Delete($9); - List_Delete($12); - List_Delete($14); - $$.Type = MSH_SURF_NURBS; - $$.Num = num; - } - | tNurbs tSurface '(' FExpr ')' tAFFECT - ListOfListOfDouble tKnots '{' ListOfDouble ',' ListOfDouble '}' - tOrder '{' FExpr ',' FExpr '}' tEND - { - int num = (int)$4; - if(FindSurface(num)){ - yymsg(GERROR, "Surface %d already exists", num); - } - else{ - CreateNurbsSurfaceSupport(num, (int)$16, (int)$18, $7, $10, $12); - } - for(int i = 0; i < List_Nbr($7); i++) - List_Delete((List_T*)List_Pointer($7, i)); - List_Delete($7); - List_Delete($10); - List_Delete($12); - $$.Type = MSH_SURF_NURBS; - $$.Num = num; - } | tSurface tLoop '(' FExpr ')' tAFFECT ListOfDouble tEND { int num = (int)$4; @@ -2615,6 +2550,8 @@ Embedding : { } ; + + // C O H E R E N C E Coherence : @@ -2622,10 +2559,6 @@ Coherence : { ReplaceAllDuplicates(); } - | tIntersect tEND - { - yymsg(GERROR, "Intersect is deprecated"); - } ; diff --git a/Parser/Gmsh.yy.cpp b/Parser/Gmsh.yy.cpp index 9464c46d5ae310e6b2ed9b41bbebc90554df5a2b..b607559387c5282aa4fd8919cd8ffd5f29b0d65c 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.294 2007-01-10 13:48:49 geuzaine Exp $ + * $Header: /cvsroot/gmsh/Parser/Gmsh.yy.cpp,v 1.295 2007-01-12 08:10:32 geuzaine Exp $ */ #define FLEX_SCANNER @@ -283,74 +283,73 @@ static void yy_fatal_error YY_PROTO(( yyconst char msg[] )); *yy_cp = '\0'; \ yy_c_buf_p = yy_cp; -#define YY_NUM_RULES 143 -#define YY_END_OF_BUFFER 144 -static yyconst short int yy_accept[589] = +#define YY_NUM_RULES 141 +#define YY_END_OF_BUFFER 142 +static yyconst short int yy_accept[577] = { 0, - 0, 0, 144, 142, 1, 1, 142, 5, 142, 6, - 142, 142, 142, 142, 142, 137, 20, 2, 142, 15, - 142, 141, 141, 141, 141, 141, 141, 141, 141, 141, - 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, - 141, 141, 141, 141, 142, 142, 28, 24, 18, 25, - 16, 26, 17, 0, 139, 3, 4, 19, 22, 138, - 137, 0, 30, 27, 31, 141, 141, 141, 141, 141, - 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, - 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, - 141, 141, 141, 141, 141, 141, 141, 141, 84, 83, - - 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, - 141, 99, 141, 141, 141, 141, 141, 141, 141, 141, - 141, 141, 141, 141, 141, 141, 132, 133, 141, 141, - 141, 141, 141, 141, 141, 141, 23, 29, 21, 0, - 138, 0, 0, 140, 141, 141, 141, 141, 141, 141, - 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, - 141, 141, 51, 141, 141, 141, 141, 141, 141, 141, - 64, 141, 141, 141, 141, 75, 141, 141, 141, 141, - 141, 141, 141, 141, 141, 141, 141, 141, 90, 141, - 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, - - 141, 141, 141, 141, 141, 141, 141, 141, 113, 141, - 141, 141, 141, 141, 141, 141, 126, 141, 141, 141, - 141, 141, 141, 141, 0, 139, 0, 0, 138, 32, - 141, 141, 141, 141, 36, 38, 141, 141, 141, 141, - 44, 59, 141, 48, 141, 141, 141, 141, 141, 141, - 50, 141, 141, 63, 141, 141, 141, 141, 71, 141, - 72, 141, 74, 141, 141, 141, 141, 81, 141, 141, - 141, 141, 141, 141, 88, 141, 89, 141, 141, 141, - 141, 141, 141, 141, 141, 141, 141, 141, 141, 110, - 141, 141, 141, 141, 122, 114, 141, 141, 112, 141, - - 141, 141, 141, 141, 135, 125, 141, 141, 141, 141, - 141, 131, 10, 9, 8, 141, 12, 14, 0, 138, - 34, 141, 141, 141, 40, 141, 141, 141, 141, 141, - 141, 141, 141, 56, 141, 141, 141, 141, 141, 141, - 141, 70, 141, 73, 141, 141, 136, 141, 82, 141, - 141, 86, 141, 141, 91, 141, 141, 141, 96, 97, - 141, 141, 100, 141, 101, 102, 141, 141, 141, 141, - 141, 109, 141, 141, 141, 141, 141, 141, 141, 128, - 141, 141, 129, 141, 11, 141, 13, 141, 33, 37, - 39, 141, 141, 43, 141, 46, 141, 141, 53, 141, - - 141, 141, 141, 60, 61, 141, 141, 141, 69, 141, - 141, 141, 141, 141, 141, 141, 92, 87, 141, 141, - 93, 141, 141, 106, 105, 141, 141, 111, 108, 115, - 141, 119, 141, 141, 141, 141, 141, 141, 141, 130, - 7, 141, 41, 141, 45, 141, 141, 141, 141, 141, - 49, 55, 141, 66, 141, 141, 67, 141, 141, 141, - 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, - 118, 141, 141, 116, 141, 141, 141, 127, 141, 141, - 141, 141, 141, 141, 141, 141, 65, 68, 76, 141, - 141, 141, 77, 141, 141, 94, 95, 141, 98, 141, - - 141, 141, 141, 117, 141, 141, 141, 42, 141, 141, - 141, 54, 141, 62, 141, 141, 141, 141, 85, 141, - 141, 107, 120, 141, 141, 124, 141, 141, 58, 141, - 57, 141, 141, 141, 141, 104, 141, 141, 141, 141, - 47, 141, 141, 141, 141, 141, 103, 121, 123, 141, - 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, - 141, 141, 52, 141, 141, 141, 141, 141, 141, 141, - 141, 141, 35, 141, 141, 141, 141, 141, 141, 141, - 141, 78, 79, 80, 141, 141, 134, 0 + 0, 0, 142, 140, 1, 1, 140, 5, 140, 6, + 140, 140, 140, 140, 140, 135, 20, 2, 140, 15, + 140, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 140, 140, 28, 24, 18, 25, + 16, 26, 17, 0, 137, 3, 4, 19, 22, 136, + 135, 0, 30, 27, 31, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 84, 83, + + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 98, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 130, 131, 139, 139, + 139, 139, 139, 139, 139, 139, 23, 29, 21, 0, + 136, 0, 0, 138, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 51, 139, 139, 139, 139, 139, 139, 139, + 64, 139, 139, 139, 139, 75, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 89, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + + 139, 139, 139, 139, 139, 139, 139, 112, 139, 139, + 139, 139, 139, 139, 139, 125, 139, 139, 139, 139, + 139, 139, 0, 137, 0, 0, 136, 32, 139, 139, + 139, 139, 36, 38, 139, 139, 139, 139, 44, 59, + 139, 48, 139, 139, 139, 139, 139, 139, 50, 139, + 139, 63, 139, 139, 139, 139, 71, 139, 72, 139, + 74, 139, 139, 139, 139, 81, 139, 139, 139, 139, + 139, 87, 139, 88, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 109, 139, 139, 139, + 139, 121, 113, 139, 139, 111, 139, 139, 139, 139, + + 139, 133, 124, 139, 139, 139, 139, 129, 10, 9, + 8, 139, 12, 14, 0, 136, 34, 139, 139, 139, + 40, 139, 139, 139, 139, 139, 139, 139, 139, 56, + 139, 139, 139, 139, 139, 139, 139, 70, 139, 73, + 139, 139, 134, 139, 82, 139, 85, 139, 139, 90, + 139, 139, 139, 95, 96, 139, 139, 99, 139, 100, + 101, 139, 139, 139, 139, 139, 108, 139, 139, 139, + 139, 139, 139, 139, 126, 139, 127, 139, 11, 139, + 13, 139, 33, 37, 39, 139, 139, 43, 139, 46, + 139, 139, 53, 139, 139, 139, 139, 60, 61, 139, + + 139, 139, 69, 139, 139, 139, 139, 139, 139, 91, + 86, 139, 139, 92, 139, 139, 105, 104, 139, 139, + 110, 107, 114, 139, 118, 139, 139, 139, 139, 139, + 139, 128, 7, 139, 41, 139, 45, 139, 139, 139, + 139, 139, 49, 55, 139, 66, 139, 139, 67, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 117, 139, 139, 115, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 65, 68, 76, 139, + 139, 139, 77, 139, 93, 94, 139, 97, 139, 139, + 139, 139, 116, 139, 139, 139, 42, 139, 139, 139, + + 54, 139, 62, 139, 139, 139, 139, 139, 139, 106, + 119, 139, 139, 123, 139, 139, 58, 139, 57, 139, + 139, 139, 139, 103, 139, 139, 139, 139, 47, 139, + 139, 139, 139, 139, 102, 120, 122, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 52, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 35, 139, 139, 139, 139, 139, 139, 139, 139, 78, + 79, 80, 139, 139, 132, 0 } ; static yyconst int yy_ec[256] = @@ -397,143 +396,141 @@ static yyconst int yy_meta[75] = 2, 2, 1, 1 } ; -static yyconst short int yy_base[590] = +static yyconst short int yy_base[578] = { 0, - 0, 0, 710, 711, 711, 711, 688, 711, 702, 711, - 686, 66, 67, 65, 77, 79, 711, 711, 685, 684, - 683, 47, 58, 66, 68, 68, 81, 51, 44, 48, - 0, 643, 85, 69, 635, 637, 95, 97, 99, 152, - 635, 638, 642, 645, 623, 674, 711, 711, 711, 711, - 711, 711, 711, 683, 158, 711, 711, 711, 711, 163, - 178, 208, 711, 711, 711, 0, 632, 636, 641, 634, - 68, 627, 616, 620, 627, 51, 629, 636, 619, 143, - 624, 623, 632, 617, 620, 626, 141, 627, 614, 613, - 609, 612, 630, 647, 603, 617, 605, 624, 0, 599, - - 603, 592, 602, 601, 127, 629, 608, 594, 606, 592, - 584, 0, 35, 88, 91, 594, 146, 587, 594, 590, - 590, 105, 585, 584, 583, 587, 0, 0, 610, 584, - 592, 158, 586, 583, 574, 570, 711, 711, 711, 218, - 223, 232, 238, 243, 573, 589, 236, 576, 575, 570, - 575, 576, 571, 568, 571, 569, 569, 562, 575, 572, - 562, 137, 567, 569, 572, 550, 560, 561, 156, 550, - 0, 551, 549, 552, 561, 0, 561, 580, 578, 564, - 555, 545, 578, 552, 537, 550, 547, 548, 585, 536, - 550, 529, 546, 542, 545, 527, 531, 536, 529, 536, - - 527, 532, 534, 523, 516, 534, 529, 511, 524, 522, - 521, 510, 241, 522, 515, 546, 517, 523, 510, 510, - 508, 500, 511, 218, 256, 274, 283, 288, 293, 0, - 500, 503, 507, 514, 0, 546, 512, 503, 506, 506, - 0, 0, 489, 0, 507, 496, 489, 488, 495, 492, - 0, 483, 482, 0, 491, 484, 484, 491, 0, 476, - 0, 478, 0, 475, 493, 503, 490, 0, 471, 496, - 471, 469, 469, 466, 0, 518, 0, 179, 472, 464, - 464, 468, 470, 473, 468, 457, 458, 455, 456, 0, - 460, 454, 451, 465, 0, 0, 455, 454, 0, 465, - - 448, 459, 462, 457, 0, 0, 437, 442, 447, 451, - 445, 0, 0, 445, 0, 450, 443, 0, 298, 303, - 455, 434, 438, 437, 0, 446, 435, 430, 209, 435, - 442, 439, 438, 447, 428, 435, 434, 433, 434, 178, - 419, 0, 431, 0, 425, 191, 0, 422, 0, 441, - 413, 0, 412, 421, 0, 427, 418, 412, 0, 0, - 420, 421, 0, 410, 0, 0, 416, 416, 418, 406, - 413, 0, 412, 397, 396, 409, 402, 409, 392, 0, - 151, 405, 0, 404, 0, 401, 0, 398, 0, 0, - 438, 386, 399, 0, 390, 0, 391, 382, 0, 387, - - 398, 393, 374, 0, 0, 395, 211, 386, 0, 389, - 379, 298, 416, 371, 400, 384, 0, 0, 375, 362, - 0, 367, 384, 0, 0, 366, 374, 0, 0, 0, - 376, 0, 375, 379, 374, 361, 368, 375, 371, 0, - 0, 355, 0, 359, 0, 365, 378, 365, 366, 366, - 0, 0, 348, 0, 348, 362, 0, 351, 378, 373, - 366, 355, 372, 355, 347, 351, 338, 343, 335, 339, - 0, 342, 331, 0, 325, 335, 328, 0, 338, 328, - 367, 329, 325, 336, 329, 338, 0, 0, 0, 348, - 347, 358, 0, 359, 315, 0, 0, 324, 0, 323, - - 326, 307, 320, 0, 319, 322, 336, 0, 311, 312, - 314, 0, 317, 0, 328, 327, 336, 323, 0, 314, - 302, 0, 0, 294, 295, 0, 298, 289, 0, 293, - 0, 310, 309, 308, 323, 0, 293, 300, 299, 284, - 0, 283, 304, 303, 302, 308, 0, 0, 0, 288, - 287, 315, 314, 313, 303, 277, 287, 296, 295, 294, - 286, 272, 0, 290, 289, 287, 286, 261, 294, 293, - 292, 297, 0, 258, 257, 248, 254, 228, 226, 175, - 155, 0, 0, 0, 125, 109, 0, 711, 102 + 0, 0, 698, 699, 699, 699, 676, 699, 690, 699, + 674, 66, 67, 65, 77, 79, 699, 699, 673, 672, + 671, 47, 58, 66, 68, 68, 81, 51, 44, 48, + 0, 631, 85, 69, 623, 625, 95, 97, 99, 152, + 623, 626, 630, 633, 611, 662, 699, 699, 699, 699, + 699, 699, 699, 671, 158, 699, 699, 699, 699, 163, + 178, 208, 699, 699, 699, 0, 620, 624, 629, 622, + 68, 615, 604, 608, 615, 51, 617, 624, 607, 143, + 612, 611, 620, 605, 608, 614, 141, 615, 602, 601, + 597, 600, 618, 635, 591, 605, 593, 612, 0, 0, + + 592, 581, 591, 590, 127, 618, 597, 583, 595, 581, + 573, 0, 35, 88, 91, 583, 146, 576, 583, 579, + 579, 105, 574, 573, 572, 576, 0, 0, 599, 573, + 581, 583, 574, 571, 562, 558, 699, 699, 699, 218, + 223, 232, 238, 243, 561, 577, 236, 564, 563, 558, + 563, 564, 559, 556, 559, 557, 557, 550, 563, 560, + 550, 137, 555, 557, 560, 538, 548, 549, 156, 538, + 0, 539, 537, 540, 549, 0, 549, 568, 566, 552, + 543, 533, 566, 526, 539, 536, 537, 574, 525, 539, + 518, 535, 531, 534, 516, 520, 525, 518, 525, 516, + + 521, 523, 512, 505, 523, 518, 500, 513, 511, 510, + 499, 241, 511, 504, 535, 506, 512, 499, 498, 490, + 501, 218, 256, 274, 283, 288, 293, 0, 490, 493, + 497, 504, 0, 536, 502, 493, 496, 496, 0, 0, + 479, 0, 497, 486, 479, 478, 485, 482, 0, 473, + 472, 0, 481, 474, 474, 481, 0, 466, 0, 468, + 0, 465, 483, 493, 480, 0, 461, 486, 460, 460, + 457, 0, 509, 0, 179, 463, 455, 455, 459, 461, + 464, 459, 448, 449, 446, 447, 0, 451, 445, 442, + 456, 0, 0, 446, 445, 0, 456, 439, 450, 453, + + 448, 0, 0, 428, 433, 443, 437, 0, 0, 437, + 0, 442, 435, 0, 298, 303, 447, 426, 430, 429, + 0, 438, 427, 422, 209, 427, 434, 431, 430, 439, + 420, 427, 426, 425, 426, 178, 411, 0, 423, 0, + 417, 171, 0, 414, 0, 433, 0, 405, 414, 0, + 420, 411, 405, 0, 0, 413, 414, 0, 403, 0, + 0, 409, 409, 411, 399, 406, 0, 405, 390, 389, + 402, 395, 402, 385, 0, 209, 0, 398, 0, 395, + 0, 392, 0, 0, 432, 380, 393, 0, 384, 0, + 385, 376, 0, 381, 392, 387, 368, 0, 0, 389, + + 269, 380, 0, 383, 373, 299, 410, 365, 394, 0, + 0, 370, 357, 0, 362, 379, 0, 0, 361, 369, + 0, 0, 0, 371, 0, 370, 374, 369, 356, 363, + 370, 0, 0, 351, 0, 355, 0, 361, 374, 361, + 362, 362, 0, 0, 344, 0, 344, 358, 0, 347, + 374, 369, 362, 351, 368, 344, 348, 335, 340, 332, + 336, 0, 339, 328, 0, 322, 332, 325, 335, 325, + 364, 326, 322, 333, 326, 335, 0, 0, 0, 345, + 344, 355, 0, 356, 0, 0, 322, 0, 321, 324, + 305, 318, 0, 317, 320, 334, 0, 309, 310, 312, + + 0, 315, 0, 326, 325, 334, 321, 312, 300, 0, + 0, 292, 293, 0, 296, 287, 0, 291, 0, 308, + 307, 306, 321, 0, 291, 298, 297, 282, 0, 281, + 302, 301, 300, 306, 0, 0, 0, 286, 285, 313, + 312, 311, 301, 275, 285, 294, 293, 292, 284, 269, + 0, 287, 286, 285, 283, 258, 264, 263, 254, 259, + 0, 227, 226, 192, 196, 178, 175, 168, 155, 0, + 0, 0, 125, 109, 0, 699, 102 } ; -static yyconst short int yy_def[590] = +static yyconst short int yy_def[578] = { 0, - 588, 1, 588, 588, 588, 588, 588, 588, 588, 588, - 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, - 588, 589, 589, 589, 589, 589, 589, 589, 589, 589, - 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, - 589, 589, 589, 589, 588, 588, 588, 588, 588, 588, - 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, - 588, 588, 588, 588, 588, 589, 589, 589, 589, 589, - 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, - 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, - 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, - - 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, - 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, - 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, - 589, 589, 589, 589, 589, 589, 588, 588, 588, 588, - 588, 588, 588, 588, 589, 589, 589, 589, 589, 589, - 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, - 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, - 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, - 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, - 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, - - 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, - 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, - 589, 589, 589, 589, 588, 588, 588, 588, 588, 589, - 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, - 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, - 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, - 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, - 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, - 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, - 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, - - 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, - 589, 589, 589, 589, 589, 589, 589, 589, 588, 588, - 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, - 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, - 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, - 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, - 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, - 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, - 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, - 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, - - 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, - 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, - 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, - 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, - 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, - 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, - 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, - 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, - 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, - 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, - - 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, - 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, - 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, - 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, - 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, - 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, - 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, - 589, 589, 589, 589, 589, 589, 589, 589, 589, 589, - 589, 589, 589, 589, 589, 589, 589, 0, 588 + 576, 1, 576, 576, 576, 576, 576, 576, 576, 576, + 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, + 576, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 576, 576, 576, 576, 576, 576, + 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, + 576, 576, 576, 576, 576, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 576, 576, 576, 576, + 576, 576, 576, 576, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 576, 576, 576, 576, 576, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 576, 576, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 0, 576 } ; -static yyconst short int yy_nxt[786] = +static yyconst short int yy_nxt[774] = { 0, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 16, 16, 16, 16, 17, 18, 19, @@ -543,87 +540,86 @@ static yyconst short int yy_nxt[786] = 31, 31, 31, 31, 31, 31, 31, 31, 31, 44, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 45, 46, 50, 54, 52, 55, 55, 55, - 55, 55, 197, 98, 56, 93, 51, 53, 57, 60, + 55, 55, 196, 98, 56, 93, 51, 53, 57, 60, 94, 61, 61, 61, 61, 61, 67, 58, 72, 96, - 99, 198, 95, 66, 68, 62, 106, 100, 155, 73, + 99, 197, 95, 66, 68, 62, 106, 100, 155, 73, 69, 70, 71, 76, 97, 149, 156, 77, 74, 81, 78, 79, 59, 82, 75, 85, 80, 86, 88, 107, - 62, 83, 102, 150, 84, 587, 103, 87, 89, 90, - 104, 91, 110, 199, 116, 105, 201, 92, 117, 111, - 112, 202, 113, 120, 121, 114, 200, 118, 115, 586, - 122, 123, 210, 119, 124, 125, 127, 128, 211, 126, + 62, 83, 102, 150, 84, 575, 103, 87, 89, 90, + 104, 91, 110, 198, 116, 105, 200, 92, 117, 111, + 112, 201, 113, 120, 121, 114, 199, 118, 115, 574, + 122, 123, 209, 119, 124, 125, 127, 128, 210, 126, 55, 55, 55, 55, 55, 141, 141, 141, 141, 141, - 189, 585, 129, 257, 140, 249, 258, 190, 60, 142, - 61, 61, 61, 61, 61, 204, 170, 160, 250, 130, - - 161, 162, 171, 437, 62, 219, 172, 163, 438, 140, - 584, 205, 131, 220, 142, 132, 143, 143, 356, 357, - 144, 144, 144, 144, 144, 412, 225, 225, 413, 62, - 226, 226, 226, 226, 226, 141, 141, 141, 141, 141, - 228, 228, 407, 408, 229, 229, 229, 229, 229, 227, + 188, 573, 129, 255, 140, 247, 256, 189, 60, 142, + 61, 61, 61, 61, 61, 203, 170, 160, 248, 130, + + 161, 162, 171, 572, 62, 406, 172, 163, 407, 140, + 571, 204, 131, 570, 142, 132, 143, 143, 351, 352, + 144, 144, 144, 144, 144, 569, 223, 223, 568, 62, + 224, 224, 224, 224, 224, 141, 141, 141, 141, 141, + 226, 226, 401, 402, 227, 227, 227, 227, 227, 225, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 232, 583, 454, 582, 395, 300, 455, 313, 226, 226, - 226, 226, 226, 396, 227, 314, 233, 234, 301, 315, - 302, 316, 317, 581, 580, 318, 226, 226, 226, 226, - 226, 319, 319, 579, 578, 320, 320, 320, 320, 320, - - 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, - 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, - 459, 577, 576, 575, 574, 573, 572, 571, 460, 570, - 569, 568, 567, 566, 565, 564, 563, 562, 561, 560, - 559, 558, 557, 556, 555, 554, 553, 552, 551, 550, - 549, 548, 547, 546, 545, 544, 543, 542, 541, 540, - 539, 538, 537, 536, 535, 534, 533, 532, 531, 530, - 529, 528, 527, 526, 525, 524, 523, 522, 521, 520, - 519, 518, 517, 516, 515, 514, 513, 512, 511, 510, - 509, 508, 507, 506, 505, 504, 503, 502, 501, 500, - - 499, 498, 497, 496, 495, 494, 493, 492, 491, 490, - 489, 488, 487, 486, 485, 484, 483, 482, 481, 480, - 479, 478, 477, 476, 475, 474, 473, 472, 471, 470, - 469, 468, 467, 466, 465, 464, 463, 462, 461, 458, - 457, 456, 453, 452, 451, 450, 449, 448, 447, 446, - 445, 444, 443, 442, 441, 440, 439, 436, 435, 434, - 433, 432, 431, 430, 429, 428, 427, 426, 425, 424, - 423, 422, 421, 420, 419, 418, 417, 416, 415, 414, - 411, 410, 409, 406, 405, 404, 403, 402, 401, 400, - 399, 398, 397, 394, 393, 392, 391, 390, 389, 388, - - 387, 386, 385, 384, 383, 382, 381, 380, 379, 378, - 377, 376, 375, 374, 373, 372, 371, 370, 369, 368, - 367, 366, 365, 364, 363, 362, 361, 360, 359, 358, - 355, 354, 353, 352, 351, 350, 349, 348, 347, 346, - 345, 344, 343, 342, 341, 340, 339, 338, 337, 336, - 335, 334, 333, 332, 331, 330, 329, 328, 327, 326, - 325, 324, 323, 322, 321, 312, 311, 310, 309, 308, - 307, 306, 305, 304, 303, 299, 298, 297, 296, 295, - 294, 293, 292, 291, 290, 289, 288, 287, 286, 285, - 284, 283, 282, 281, 280, 279, 278, 277, 276, 275, - - 274, 273, 272, 271, 270, 269, 268, 267, 266, 265, - 264, 263, 262, 261, 260, 259, 256, 255, 254, 253, - 252, 251, 248, 247, 246, 245, 244, 243, 242, 241, - 240, 239, 238, 237, 236, 235, 231, 230, 224, 223, - 222, 221, 218, 217, 216, 215, 214, 213, 212, 209, - 208, 207, 206, 203, 196, 195, 194, 193, 192, 191, - 188, 187, 186, 185, 184, 183, 182, 181, 180, 179, - 178, 177, 176, 175, 174, 173, 169, 168, 167, 166, - 165, 164, 159, 158, 157, 154, 153, 152, 151, 148, - 147, 146, 145, 139, 138, 137, 136, 135, 134, 133, - - 109, 108, 101, 65, 64, 63, 49, 48, 47, 588, - 3, 588, 588, 588, 588, 588, 588, 588, 588, 588, - 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, - 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, - 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, - 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, - 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, - 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, - 588, 588, 588, 588, 588 + 230, 430, 567, 566, 389, 297, 431, 309, 224, 224, + 224, 224, 224, 390, 225, 310, 231, 232, 298, 311, + 299, 312, 313, 565, 564, 314, 224, 224, 224, 224, + 224, 315, 315, 563, 562, 316, 316, 316, 316, 316, + + 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 446, 451, 561, 560, 447, 559, 558, 557, 556, 452, + 555, 554, 553, 552, 551, 550, 549, 548, 547, 546, + 545, 544, 543, 542, 541, 540, 539, 538, 537, 536, + 535, 534, 533, 532, 531, 530, 529, 528, 527, 526, + 525, 524, 523, 522, 521, 520, 519, 518, 517, 516, + 515, 514, 513, 512, 511, 510, 509, 508, 507, 506, + 505, 504, 503, 502, 501, 500, 499, 498, 497, 496, + 495, 494, 493, 492, 491, 490, 489, 488, 487, 486, + + 485, 484, 483, 482, 481, 480, 479, 478, 477, 476, + 475, 474, 473, 472, 471, 470, 469, 468, 467, 466, + 465, 464, 463, 462, 461, 460, 459, 458, 457, 456, + 455, 454, 453, 450, 449, 448, 445, 444, 443, 442, + 441, 440, 439, 438, 437, 436, 435, 434, 433, 432, + 429, 428, 427, 426, 425, 424, 423, 422, 421, 420, + 419, 418, 417, 416, 415, 414, 413, 412, 411, 410, + 409, 408, 405, 404, 403, 400, 399, 398, 397, 396, + 395, 394, 393, 392, 391, 388, 387, 386, 385, 384, + 383, 382, 381, 380, 379, 378, 377, 376, 375, 374, + + 373, 372, 371, 370, 369, 368, 367, 366, 365, 364, + 363, 362, 361, 360, 359, 358, 357, 356, 355, 354, + 353, 350, 349, 348, 347, 346, 345, 344, 343, 342, + 341, 340, 339, 338, 337, 336, 335, 334, 333, 332, + 331, 330, 329, 328, 327, 326, 325, 324, 323, 322, + 321, 320, 319, 318, 317, 308, 307, 306, 305, 304, + 303, 302, 301, 300, 296, 295, 294, 293, 292, 291, + 290, 289, 288, 287, 286, 285, 284, 283, 282, 281, + 280, 279, 278, 277, 276, 275, 274, 273, 272, 271, + 270, 269, 268, 267, 266, 265, 264, 263, 262, 261, + + 260, 259, 258, 257, 254, 253, 252, 251, 250, 249, + 246, 245, 244, 243, 242, 241, 240, 239, 238, 237, + 236, 235, 234, 233, 229, 228, 222, 221, 220, 219, + 218, 217, 216, 215, 214, 213, 212, 211, 208, 207, + 206, 205, 202, 195, 194, 193, 192, 191, 190, 187, + 186, 185, 184, 183, 182, 181, 180, 179, 178, 177, + 176, 175, 174, 173, 169, 168, 167, 166, 165, 164, + 159, 158, 157, 154, 153, 152, 151, 148, 147, 146, + 145, 139, 138, 137, 136, 135, 134, 133, 109, 108, + 101, 65, 64, 63, 49, 48, 47, 576, 3, 576, + + 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, + 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, + 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, + 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, + 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, + 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, + 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, + 576, 576, 576 } ; -static yyconst short int yy_chk[786] = +static yyconst short int yy_chk[774] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -636,81 +632,80 @@ static yyconst short int yy_chk[786] = 14, 14, 113, 30, 15, 28, 12, 13, 15, 16, 28, 16, 16, 16, 16, 16, 22, 15, 23, 29, - 30, 113, 28, 589, 22, 16, 34, 30, 76, 23, + 30, 113, 28, 577, 22, 16, 34, 30, 76, 23, 22, 22, 22, 24, 29, 71, 76, 24, 23, 25, 24, 24, 15, 25, 23, 26, 24, 26, 27, 34, - 16, 25, 33, 71, 25, 586, 33, 26, 27, 27, + 16, 25, 33, 71, 25, 574, 33, 26, 27, 27, 33, 27, 37, 114, 38, 33, 115, 27, 38, 37, - 37, 115, 37, 39, 39, 37, 114, 38, 37, 585, + 37, 115, 37, 39, 39, 37, 114, 38, 37, 573, 39, 39, 122, 38, 39, 39, 40, 40, 122, 39, 55, 55, 55, 55, 55, 60, 60, 60, 60, 60, - 105, 581, 40, 169, 55, 162, 169, 105, 61, 60, + 105, 569, 40, 169, 55, 162, 169, 105, 61, 60, 61, 61, 61, 61, 61, 117, 87, 80, 162, 40, - 80, 80, 87, 381, 61, 132, 87, 80, 381, 55, - 580, 117, 40, 132, 60, 40, 62, 62, 278, 278, - 62, 62, 62, 62, 62, 346, 140, 140, 346, 61, + 80, 80, 87, 568, 61, 342, 87, 80, 342, 55, + 567, 117, 40, 566, 60, 40, 62, 62, 275, 275, + 62, 62, 62, 62, 62, 565, 140, 140, 564, 61, 140, 140, 140, 140, 140, 141, 141, 141, 141, 141, - 142, 142, 340, 340, 142, 142, 142, 142, 142, 141, + 142, 142, 336, 336, 142, 142, 142, 142, 142, 141, 143, 143, 143, 143, 143, 144, 144, 144, 144, 144, - 147, 579, 407, 578, 329, 213, 407, 224, 225, 225, - 225, 225, 225, 329, 141, 224, 147, 147, 213, 224, - 213, 224, 224, 577, 576, 224, 226, 226, 226, 226, - 226, 227, 227, 575, 574, 227, 227, 227, 227, 227, - - 228, 228, 228, 228, 228, 229, 229, 229, 229, 229, - 319, 319, 319, 319, 319, 320, 320, 320, 320, 320, - 412, 572, 571, 570, 569, 568, 567, 566, 412, 565, - 564, 562, 561, 560, 559, 558, 557, 556, 555, 554, - 553, 552, 551, 550, 546, 545, 544, 543, 542, 540, - 539, 538, 537, 535, 534, 533, 532, 530, 528, 527, - 525, 524, 521, 520, 518, 517, 516, 515, 513, 511, - 510, 509, 507, 506, 505, 503, 502, 501, 500, 498, - 495, 494, 492, 491, 490, 486, 485, 484, 483, 482, - 481, 480, 479, 477, 476, 475, 473, 472, 470, 469, - - 468, 467, 466, 465, 464, 463, 462, 461, 460, 459, - 458, 456, 455, 453, 450, 449, 448, 447, 446, 444, - 442, 439, 438, 437, 436, 435, 434, 433, 431, 427, - 426, 423, 422, 420, 419, 416, 415, 414, 413, 411, - 410, 408, 406, 403, 402, 401, 400, 398, 397, 395, - 393, 392, 391, 388, 386, 384, 382, 379, 378, 377, - 376, 375, 374, 373, 371, 370, 369, 368, 367, 364, - 362, 361, 358, 357, 356, 354, 353, 351, 350, 348, - 345, 343, 341, 339, 338, 337, 336, 335, 334, 333, - 332, 331, 330, 328, 327, 326, 324, 323, 322, 321, - - 317, 316, 314, 311, 310, 309, 308, 307, 304, 303, - 302, 301, 300, 298, 297, 294, 293, 292, 291, 289, - 288, 287, 286, 285, 284, 283, 282, 281, 280, 279, - 276, 274, 273, 272, 271, 270, 269, 267, 266, 265, - 264, 262, 260, 258, 257, 256, 255, 253, 252, 250, - 249, 248, 247, 246, 245, 243, 240, 239, 238, 237, - 236, 234, 233, 232, 231, 223, 222, 221, 220, 219, - 218, 217, 216, 215, 214, 212, 211, 210, 209, 208, - 207, 206, 205, 204, 203, 202, 201, 200, 199, 198, - 197, 196, 195, 194, 193, 192, 191, 190, 189, 188, - - 187, 186, 185, 184, 183, 182, 181, 180, 179, 178, - 177, 175, 174, 173, 172, 170, 168, 167, 166, 165, - 164, 163, 161, 160, 159, 158, 157, 156, 155, 154, - 153, 152, 151, 150, 149, 148, 146, 145, 136, 135, - 134, 133, 131, 130, 129, 126, 125, 124, 123, 121, - 120, 119, 118, 116, 111, 110, 109, 108, 107, 106, - 104, 103, 102, 101, 100, 98, 97, 96, 95, 94, - 93, 92, 91, 90, 89, 88, 86, 85, 84, 83, - 82, 81, 79, 78, 77, 75, 74, 73, 72, 70, - 69, 68, 67, 54, 46, 45, 44, 43, 42, 41, - - 36, 35, 32, 21, 20, 19, 11, 9, 7, 3, - 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, - 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, - 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, - 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, - 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, - 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, - 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, - 588, 588, 588, 588, 588 + 147, 376, 563, 562, 325, 212, 376, 222, 223, 223, + 223, 223, 223, 325, 141, 222, 147, 147, 212, 222, + 212, 222, 222, 560, 559, 222, 224, 224, 224, 224, + 224, 225, 225, 558, 557, 225, 225, 225, 225, 225, + + 226, 226, 226, 226, 226, 227, 227, 227, 227, 227, + 315, 315, 315, 315, 315, 316, 316, 316, 316, 316, + 401, 406, 556, 555, 401, 554, 553, 552, 550, 406, + 549, 548, 547, 546, 545, 544, 543, 542, 541, 540, + 539, 538, 534, 533, 532, 531, 530, 528, 527, 526, + 525, 523, 522, 521, 520, 518, 516, 515, 513, 512, + 509, 508, 507, 506, 505, 504, 502, 500, 499, 498, + 496, 495, 494, 492, 491, 490, 489, 487, 484, 482, + 481, 480, 476, 475, 474, 473, 472, 471, 470, 469, + 468, 467, 466, 464, 463, 461, 460, 459, 458, 457, + + 456, 455, 454, 453, 452, 451, 450, 448, 447, 445, + 442, 441, 440, 439, 438, 436, 434, 431, 430, 429, + 428, 427, 426, 424, 420, 419, 416, 415, 413, 412, + 409, 408, 407, 405, 404, 402, 400, 397, 396, 395, + 394, 392, 391, 389, 387, 386, 385, 382, 380, 378, + 374, 373, 372, 371, 370, 369, 368, 366, 365, 364, + 363, 362, 359, 357, 356, 353, 352, 351, 349, 348, + 346, 344, 341, 339, 337, 335, 334, 333, 332, 331, + 330, 329, 328, 327, 326, 324, 323, 322, 320, 319, + 318, 317, 313, 312, 310, 307, 306, 305, 304, 301, + + 300, 299, 298, 297, 295, 294, 291, 290, 289, 288, + 286, 285, 284, 283, 282, 281, 280, 279, 278, 277, + 276, 273, 271, 270, 269, 268, 267, 265, 264, 263, + 262, 260, 258, 256, 255, 254, 253, 251, 250, 248, + 247, 246, 245, 244, 243, 241, 238, 237, 236, 235, + 234, 232, 231, 230, 229, 221, 220, 219, 218, 217, + 216, 215, 214, 213, 211, 210, 209, 208, 207, 206, + 205, 204, 203, 202, 201, 200, 199, 198, 197, 196, + 195, 194, 193, 192, 191, 190, 189, 188, 187, 186, + 185, 184, 183, 182, 181, 180, 179, 178, 177, 175, + + 174, 173, 172, 170, 168, 167, 166, 165, 164, 163, + 161, 160, 159, 158, 157, 156, 155, 154, 153, 152, + 151, 150, 149, 148, 146, 145, 136, 135, 134, 133, + 132, 131, 130, 129, 126, 125, 124, 123, 121, 120, + 119, 118, 116, 111, 110, 109, 108, 107, 106, 104, + 103, 102, 101, 98, 97, 96, 95, 94, 93, 92, + 91, 90, 89, 88, 86, 85, 84, 83, 82, 81, + 79, 78, 77, 75, 74, 73, 72, 70, 69, 68, + 67, 54, 46, 45, 44, 43, 42, 41, 36, 35, + 32, 21, 20, 19, 11, 9, 7, 3, 576, 576, + + 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, + 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, + 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, + 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, + 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, + 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, + 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, + 576, 576, 576 } ; static yy_state_type yy_last_accepting_state; @@ -727,7 +722,7 @@ char *yytext; #line 1 "Gmsh.l" #define INITIAL 0 #line 2 "Gmsh.l" -// $Id: Gmsh.yy.cpp,v 1.294 2007-01-10 13:48:49 geuzaine Exp $ +// $Id: Gmsh.yy.cpp,v 1.295 2007-01-12 08:10:32 geuzaine Exp $ // // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle // @@ -788,7 +783,7 @@ void skipline(void); && ferror( yyin ) ) \ Msg(FATAL, "Input in flex scanner failed"); -#line 792 "Gmsh.yy.cpp" +#line 787 "Gmsh.yy.cpp" /* Macros after this point can all be overridden by user definitions in * section 1. @@ -942,7 +937,7 @@ YY_DECL #line 79 "Gmsh.l" -#line 946 "Gmsh.yy.cpp" +#line 941 "Gmsh.yy.cpp" if ( yy_init ) { @@ -993,13 +988,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 589 ) + if ( yy_current_state >= 577 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 711 ); + while ( yy_base[yy_current_state] != 699 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -1447,88 +1442,88 @@ return tIf; YY_BREAK case 85: YY_RULE_SETUP -#line 174 "Gmsh.l" -return tIntersect; +#line 175 "Gmsh.l" +return tKnots; YY_BREAK case 86: YY_RULE_SETUP -#line 176 "Gmsh.l" -return tKnots; +#line 177 "Gmsh.l" +return tLength; YY_BREAK case 87: YY_RULE_SETUP #line 178 "Gmsh.l" -return tLength; +return tLine; YY_BREAK case 88: YY_RULE_SETUP #line 179 "Gmsh.l" -return tLine; +return tLoop; YY_BREAK case 89: YY_RULE_SETUP #line 180 "Gmsh.l" -return tLoop; +return tLog; YY_BREAK case 90: YY_RULE_SETUP #line 181 "Gmsh.l" -return tLog; +return tLog10; YY_BREAK case 91: YY_RULE_SETUP #line 182 "Gmsh.l" -return tLog10; +return tLayers; YY_BREAK case 92: YY_RULE_SETUP -#line 183 "Gmsh.l" -return tLayers; +#line 184 "Gmsh.l" +return tModulo; YY_BREAK case 93: YY_RULE_SETUP #line 185 "Gmsh.l" -return tModulo; +return tMPI_Rank; YY_BREAK case 94: YY_RULE_SETUP #line 186 "Gmsh.l" -return tMPI_Rank; +return tMPI_Size; YY_BREAK case 95: YY_RULE_SETUP -#line 187 "Gmsh.l" -return tMPI_Size; +#line 188 "Gmsh.l" +return tNurbs; YY_BREAK case 96: YY_RULE_SETUP -#line 189 "Gmsh.l" -return tNurbs; +#line 190 "Gmsh.l" +return tOrder; YY_BREAK case 97: YY_RULE_SETUP -#line 191 "Gmsh.l" -return tOrder; +#line 192 "Gmsh.l" +return tPhysical; YY_BREAK case 98: YY_RULE_SETUP #line 193 "Gmsh.l" -return tPhysical; +return tPi; YY_BREAK case 99: YY_RULE_SETUP #line 194 "Gmsh.l" -return tPi; +return tPlane; YY_BREAK case 100: YY_RULE_SETUP #line 195 "Gmsh.l" -return tPlane; +return tPoint; YY_BREAK case 101: YY_RULE_SETUP #line 196 "Gmsh.l" -return tPoint; +return tProgression; YY_BREAK case 102: YY_RULE_SETUP @@ -1538,200 +1533,190 @@ return tProgression; case 103: YY_RULE_SETUP #line 198 "Gmsh.l" -return tProgression; +return tParametric; YY_BREAK case 104: YY_RULE_SETUP #line 199 "Gmsh.l" -return tParametric; +return tPrintf; YY_BREAK case 105: YY_RULE_SETUP #line 200 "Gmsh.l" -return tPrintf; +return tPlugin; YY_BREAK case 106: YY_RULE_SETUP -#line 201 "Gmsh.l" -return tPlugin; +#line 202 "Gmsh.l" +return tRecombine; YY_BREAK case 107: YY_RULE_SETUP #line 203 "Gmsh.l" -return tRecombine; +return tRotate; YY_BREAK case 108: YY_RULE_SETUP #line 204 "Gmsh.l" -return tRotate; +return tRuled; YY_BREAK case 109: YY_RULE_SETUP #line 205 "Gmsh.l" -return tRuled; +return tRand; YY_BREAK case 110: YY_RULE_SETUP #line 206 "Gmsh.l" -return tRand; +return tReturn; YY_BREAK case 111: YY_RULE_SETUP -#line 207 "Gmsh.l" -return tReturn; +#line 208 "Gmsh.l" +return tSqrt; YY_BREAK case 112: YY_RULE_SETUP #line 209 "Gmsh.l" -return tSqrt; +return tSin; YY_BREAK case 113: YY_RULE_SETUP #line 210 "Gmsh.l" -return tSin; +return tSinh; YY_BREAK case 114: YY_RULE_SETUP #line 211 "Gmsh.l" -return tSinh; +return tSpline; YY_BREAK case 115: YY_RULE_SETUP #line 212 "Gmsh.l" -return tSpline; +return tSurface; YY_BREAK case 116: YY_RULE_SETUP #line 213 "Gmsh.l" -return tSurface; +return tSymmetry; YY_BREAK case 117: YY_RULE_SETUP #line 214 "Gmsh.l" -return tSymmetry; +return tSprintf; YY_BREAK case 118: YY_RULE_SETUP #line 215 "Gmsh.l" -return tSprintf; +return tStrCat; YY_BREAK case 119: YY_RULE_SETUP #line 216 "Gmsh.l" -return tStrCat; +return tStrPrefix; YY_BREAK case 120: YY_RULE_SETUP #line 217 "Gmsh.l" -return tStrPrefix; +return tStrRelative; YY_BREAK case 121: YY_RULE_SETUP #line 218 "Gmsh.l" -return tStrRelative; +return tShow; YY_BREAK case 122: YY_RULE_SETUP -#line 219 "Gmsh.l" -return tShow; +#line 220 "Gmsh.l" +return tTransfinite; YY_BREAK case 123: YY_RULE_SETUP #line 221 "Gmsh.l" -return tTransfinite; +return tTranslate; YY_BREAK case 124: YY_RULE_SETUP #line 222 "Gmsh.l" -return tTranslate; +return tTanh; YY_BREAK case 125: YY_RULE_SETUP #line 223 "Gmsh.l" -return tTanh; +return tTan; YY_BREAK case 126: YY_RULE_SETUP #line 224 "Gmsh.l" -return tTan; +return tToday; YY_BREAK case 127: YY_RULE_SETUP -#line 225 "Gmsh.l" -return tTrimmed; +#line 226 "Gmsh.l" +return tUsing; YY_BREAK case 128: YY_RULE_SETUP -#line 226 "Gmsh.l" -return tToday; +#line 228 "Gmsh.l" +return tVolume; YY_BREAK case 129: YY_RULE_SETUP -#line 228 "Gmsh.l" -return tUsing; +#line 230 "Gmsh.l" +return tWith; YY_BREAK case 130: YY_RULE_SETUP -#line 230 "Gmsh.l" -return tVolume; +#line 232 "Gmsh.l" +return tText2D; YY_BREAK case 131: YY_RULE_SETUP -#line 232 "Gmsh.l" -return tWith; +#line 233 "Gmsh.l" +return tText3D; YY_BREAK case 132: YY_RULE_SETUP #line 234 "Gmsh.l" -return tText2D; +return tInterpolationScheme; YY_BREAK case 133: YY_RULE_SETUP #line 235 "Gmsh.l" -return tText3D; +return tTime; YY_BREAK case 134: YY_RULE_SETUP #line 236 "Gmsh.l" -return tInterpolationScheme; +return tGrain; YY_BREAK case 135: -YY_RULE_SETUP -#line 237 "Gmsh.l" -return tTime; - YY_BREAK +#line 239 "Gmsh.l" case 136: -YY_RULE_SETUP -#line 238 "Gmsh.l" -return tGrain; - YY_BREAK +#line 240 "Gmsh.l" case 137: #line 241 "Gmsh.l" case 138: -#line 242 "Gmsh.l" -case 139: -#line 243 "Gmsh.l" -case 140: YY_RULE_SETUP -#line 243 "Gmsh.l" +#line 241 "Gmsh.l" {yylval.d = atof((char *)yytext); return tDOUBLE;} YY_BREAK -case 141: +case 139: YY_RULE_SETUP -#line 245 "Gmsh.l" +#line 243 "Gmsh.l" {yylval.c = strsave((char*)yytext); return tSTRING;} YY_BREAK -case 142: +case 140: YY_RULE_SETUP -#line 247 "Gmsh.l" +#line 245 "Gmsh.l" return yytext[0]; YY_BREAK -case 143: +case 141: YY_RULE_SETUP -#line 249 "Gmsh.l" +#line 247 "Gmsh.l" ECHO; YY_BREAK -#line 1735 "Gmsh.yy.cpp" +#line 1720 "Gmsh.yy.cpp" case YY_STATE_EOF(INITIAL): yyterminate(); @@ -2023,7 +2008,7 @@ static yy_state_type yy_get_previous_state() while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 589 ) + if ( yy_current_state >= 577 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -2058,11 +2043,11 @@ yy_state_type yy_current_state; while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 589 ) + if ( yy_current_state >= 577 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 588); + yy_is_jam = (yy_current_state == 576); return yy_is_jam ? 0 : yy_current_state; } @@ -2617,7 +2602,7 @@ int main() return 0; } #endif -#line 249 "Gmsh.l" +#line 247 "Gmsh.l" #undef yywrap diff --git a/doc/texinfo/gmsh.texi b/doc/texinfo/gmsh.texi index 7d5382934c264262b7aa4a6f9e6ebade86a63558..f68fd42028336b1f02a714b967f66a6553ac4d4d 100644 --- a/doc/texinfo/gmsh.texi +++ b/doc/texinfo/gmsh.texi @@ -1,5 +1,5 @@ \input texinfo.tex @c -*-texinfo-*- -@c $Id: gmsh.texi,v 1.224 2006-12-21 17:10:15 geuzaine Exp $ +@c $Id: gmsh.texi,v 1.225 2007-01-12 08:10:32 geuzaine Exp $ @c @c Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle @c @@ -1573,12 +1573,6 @@ elementary lines in the saved mesh. @cindex Surfaces, physical @ftable @code -@c todo: -@c @item Nurbs Surface ( @var{expression} ) = @{ @var{expression-list-list} @} Knots @{ @{ @var{expression-list} @}, @{ @var{expression-list} @} @} Order @{ @var{expression}, @var{expression} @}; - -@c todo: -@c @item Nurbs Surface With Bounds ( @var{expression} ) = @{ @var{expression-list-list} @} Knots @{ @{ @var{expression-list} @}, @{ @var{expression-list} @} @} Order @{ @var{expression}, @var{expression} @}; - @item Plane Surface ( @var{expression} ) = @{ @var{expression-list} @}; Creates a plane surface. The @var{expression} inside the parentheses is the plane surface's identification number; the @var{expression-list} on the @@ -1598,9 +1592,6 @@ the ruled surface's identification number; the @var{expression-list} on the right hand side should the identification number of a single line loop, composed of either three or four elementary lines. -@c todo: -@c @item Trimmed Surface ( @var{expression} ) = @{ @var{expression}, @{ @var{expression-list} @} @}; - @item Surface Loop ( @var{expression} ) = @{ @var{expression-list} @}; Creates a surface loop (a shell). The @var{expression} inside the parentheses is the surface loop's identification number; the @@ -1805,10 +1796,6 @@ Show the entities listed in @var{expression-list}, if Show the entity @var{char-expression}, if @code{General.VisibilityMode} is set to @code{0} or @code{1} (@var{char-expression} can for example be @code{"*"}). - -@c todo: -@c @item Intersect; -@c Intersects all lines. @end ftable @c -------------------------------------------------------------------------