VTK
/Users/kitware/Dashboards/MyTests/VTK_BLD_Release_docs/Utilities/Doxygen/dox/IO/Import/vtkVRMLImporter_Yacc.h
Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   Visualization Toolkit
00004   Module:    vtkVRMLInternal_Yacc.h
00005 
00006   Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
00007   All rights reserved.
00008   See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
00009 
00010      This software is distributed WITHOUT ANY WARRANTY; without even
00011      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
00012      PURPOSE.  See the above copyright notice for more information.
00013 
00014 =========================================================================*/
00019 #ifndef vtkVRMLImporter_Yacc_h
00020 #define vtkVRMLImporter_Yacc_h
00021 
00022 
00023 #include "vtkFloatArray.h"
00024 #include "vtkIdTypeArray.h"
00025 #include "vtkPoints.h"
00026 #include "vtkVRML.h"
00027 #include "vtkVRMLImporter.h"
00028 
00029 #include <cassert>
00030 #include <cstdio>
00031 #include <cstring>
00032 
00033 //
00034 // The VrmlNodeType class is responsible for storing information about node
00035 // or prototype types.
00036 //
00037 
00038 // used to hold the VRML DEF names and assoc vtkObjects
00039 class vtkVRMLUseStruct {
00040 public:
00041   vtkVRMLUseStruct( char *n, vtkObject *o) { defName = n; defObject = o; }
00042   char            *defName;
00043   vtkObject       *defObject;
00044 
00045   void* operator new(size_t n)
00046   {
00047     return vtkVRMLAllocator::AllocateMemory(n);
00048   }
00049 
00050   void operator delete(void *vtkNotUsed(ptr)) {}
00051 };
00052 
00053 
00054 
00055 class VrmlNodeType {
00056 public:
00057   // Constructor.  Takes name of new type (e.g. "Transform" or "Box")
00058   // Copies the string given as name.
00059   VrmlNodeType(const char *nm);
00060 
00061   // Destructor exists mainly to deallocate storage for name
00062   ~VrmlNodeType();
00063 
00064   // Routines for adding/getting eventIns/Outs/fields
00065   void addEventIn(const char *name, int type);
00066   void addEventOut(const char *name, int type);
00067   void addField(const char *name, int type);
00068   void addExposedField(const char *name, int type);
00069 
00070   int hasEventIn(const char *name) const;
00071   int hasEventOut(const char *name) const;
00072   int hasField(const char *name) const;
00073   int hasExposedField(const char *name) const;
00074 
00075   const char *getName() const { return name; }
00076 
00077   void* operator new(size_t n)
00078   {
00079     return vtkVRMLAllocator::AllocateMemory(n);
00080   }
00081 
00082   void operator delete(void *vtkNotUsed(ptr)) {}
00083 
00084   struct NameTypeRec {
00085     char *name;
00086     int type;
00087 
00088     void* operator new(size_t n)
00089     {
00090       return vtkVRMLAllocator::AllocateMemory(n);
00091     }
00092 
00093     void operator delete(void *vtkNotUsed(ptr)) {}
00094 
00095   };
00096 
00097   // This is used to keep track of which field in which type of node is being
00098   // parsed.  Field are nested (nodes are contained inside MFNode/SFNode fields)
00099   // so a stack of these is needed:
00100   struct FieldRec
00101   {
00102     const VrmlNodeType *nodeType;
00103     const char *fieldName;
00104   };
00105 
00106 private:
00107   void add(vtkVRMLVectorType<NameTypeRec*> &,const char *,int);
00108   int has(const vtkVRMLVectorType<NameTypeRec*> &,const char *) const;
00109 
00110   char *name;
00111 
00112   vtkVRMLVectorType<NameTypeRec*> eventIns;
00113   vtkVRMLVectorType<NameTypeRec*> eventOuts;
00114   vtkVRMLVectorType<NameTypeRec*> fields;
00115 };
00116 
00117 class vtkVRMLYaccData
00118 {
00119 public:
00120   vtkVRMLYaccData();
00121   ~vtkVRMLYaccData();
00122   typedef unsigned char YY_CHAR;
00123   typedef int yy_state_type;
00124 private:
00125   vtkVRMLYaccData(const vtkVRMLYaccData&); // Not implemented
00126   vtkVRMLYaccData& operator=(const vtkVRMLYaccData&); // Not implemented
00127 public:
00128   // Parser variables and functions:
00129   // Currently-being-define proto.  Prototypes may be nested, so a stack
00130   // is needed:
00131   vtkVRMLVectorType<VrmlNodeType*> *CurrentProtoStack;// = NULL;
00132 
00133   // Some helper routines defined below:
00134   void beginProto(const char *);
00135   void endProto();
00136 
00137   int addField(const char *type, const char *name);
00138   int addEventIn(const char *type, const char *name);
00139   int addEventOut(const char *type, const char *name);
00140   int addExposedField(const char *type, const char *name);
00141   int add(void (VrmlNodeType::*)(const char *, int), const char *,
00142           const char *);
00143   int fieldType(const char *type);
00144   void inScript();
00145   void expect(int type);
00146 
00147   void yyerror(const char *);
00148   int  yylex(vtkVRMLImporter* self);
00149 
00150   class FakeAlloca;
00151 
00152   typedef union {
00153     char                    *string;
00154 
00155     /* Other types that will be needed by a true VRML implementation
00156    * (but are not defined by this parser due to the complexity):
00157    * Node *node;
00158    * list<Node *> *nodeList;
00159    */
00160 
00161     float           sffloat;
00162     vtkPoints       *vec3f;
00163     vtkFloatArray   *vec2f;
00164     vtkIdTypeArray  *mfint32;
00165     int             sfint;
00166   } YYSTYPE;
00167 
00168 
00169   typedef
00170   struct yyltype
00171   {
00172     int timestamp;
00173     int first_line;
00174     int first_column;
00175     int last_line;
00176     int last_column;
00177     char *text;
00178   }
00179   yyltype;
00180 
00181 
00182   int     yychar;          /*  the lookahead symbol                */
00183   YYSTYPE yylval;          /*  the semantic value of the           */
00184   /*  lookahead symbol                    */
00185   yyltype yylloc;                 /*  location data for the lookahead     */
00186   /*  symbol                              */
00187   int yynerrs;             /*  number of parse errors so far       */
00188   // Lexer variables and functions:
00189   int yyleng;
00190   FILE *yyin, *yyout;
00191   int yywrap(void );
00192 
00193   struct yy_buffer_state
00194   {
00195     FILE *yy_input_file;
00196 
00197     char *yy_ch_buf;                /* input buffer */
00198     char *yy_buf_pos;               /* current position in input buffer */
00199 
00200     /* Size of input buffer in bytes, not including room for EOB
00201    * characters.
00202    */
00203     int yy_buf_size;
00204 
00205     /* Number of characters read into yy_ch_buf, not including EOB
00206    * characters.
00207    */
00208     int yy_n_chars;
00209 
00210     /* Whether this is an "interactive" input source; if so, and
00211    * if we're using stdio for input, then we want to use getc()
00212    * instead of fread(), to make sure we stop fetching input after
00213    * each newline.
00214    */
00215     int yy_is_interactive;
00216 
00217     /* Whether to try to fill the input buffer when we reach the
00218    * end of it.
00219    */
00220     int yy_fill_buffer;
00221 
00222     enum YY_BUFFER_STATUS_STATE {
00223       YY_BUFFER_NEW=0,
00224       YY_BUFFER_NORMAL=1,
00225       /* When an EOF's been seen but there's still some text to process
00226    * then we mark the buffer as YY_EOF_PENDING, to indicate that we
00227    * shouldn't try reading from the input source any more.  We might
00228    * still have a bunch of tokens to match, though, because of
00229    * possible backing-up.
00230    *
00231    * When we actually see the EOF, we change the status to "new"
00232    * (via yyrestart()), so that the user can continue scanning by
00233    * just pointing yyin at a new input file.
00234    */
00235       YY_BUFFER_EOF_PENDING=2
00236     };
00237     YY_BUFFER_STATUS_STATE yy_buffer_status;
00238 
00239   };
00240   typedef struct yy_buffer_state *YY_BUFFER_STATE;
00241 
00242   YY_BUFFER_STATE yy_current_buffer;// = 0;
00243 
00244   /* yy_hold_char holds the character lost when yytext is formed. */
00245   char yy_hold_char;
00246 
00247   int yy_n_chars;          /* number of characters read into yy_ch_buf */
00248 
00249 
00250   /* Points to current character in buffer. */
00251   char *yy_c_buf_p;// = (char *) 0;
00252   int yy_init;// = 1;         /* whether we need to initialize */
00253   int yy_start;// = 0;        /* start state number */
00254 
00255   /* Flag which is used to allow yywrap()'s to do buffer switches
00256  * instead of setting up a fresh yyin.  A bit of a hack ...
00257  */
00258   int yy_did_buffer_switch_on_eof;
00259 
00260   void yyrestart ( FILE *input_file );
00261   void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer );
00262   void yy_load_buffer_state ( void );
00263   YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size );
00264   void yy_delete_buffer ( YY_BUFFER_STATE b );
00265   void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file );
00266 
00267   void *yy_flex_alloc ( unsigned int );
00268   void *yy_flex_realloc ( void *, unsigned int );
00269   void yy_flex_free ( void * );
00270 
00271   char *yytext;
00272 
00273   yy_state_type yy_get_previous_state ( void );
00274   yy_state_type yy_try_NUL_trans ( yy_state_type current_state );
00275   int yy_get_next_buffer ( void );
00276   void yy_fatal_error ( const char msg[] );
00277 
00278   yy_state_type yy_last_accepting_state;
00279   char *yy_last_accepting_cpos;
00280 
00281   int yy_flex_debug;// = 1;
00282 
00283   // used to reset the lexer input after initialization of VRML nodes
00284   void (*theyyInput)(char *, int &, int, vtkVRMLYaccData*);
00285 
00286 
00287   /* Current line number */
00288   int currentLineNumber;// = 1;
00289   void yyResetLineNumber() { currentLineNumber = 1; }
00290 
00291   /* The YACC parser sets this to a token to direct the lexer */
00292   /* in cases where just syntax isn't enough: */
00293   int expectToken;// = 0;
00294 
00295   /* True when parsing a multiple-valued field: */
00296   int parsing_mf;// = 0;
00297 
00298   /* These are used when parsing SFImage fields: */
00299   int sfImageIntsParsed;// = 0;
00300   int sfImageIntsExpected;// = 0;
00301 
00302   int yydebug;             /*  nonzero means print parse trace     */
00303   int yyparse(vtkVRMLImporter* self);
00304 
00305   static void memyyInput(char *buf, int &result, int max_size, vtkVRMLYaccData* self);
00306   static void defyyInput(char *buf, int &result, int max_size, vtkVRMLYaccData* self);
00307 
00308   int memyyInput_i;// = 0;
00309   int memyyInput_j;// = 0;
00310 
00311   // Used during the parsing
00312   int creatingDEF;// = 0;
00313   char *curDEFName;
00314 
00315   // Node types are stored in this data structure:
00316   vtkVRMLVectorType<VrmlNodeType*>* typeList;
00317   vtkVRMLVectorType<vtkVRMLUseStruct *>* useList;
00318   vtkVRMLVectorType<VrmlNodeType::FieldRec*>* currentField;
00319 
00320   // Moved from VrmlNodeType when getting rid of static data
00321   //
00322   // Namespace management functions.  PROTO definitions add node types
00323   // to the namespace.  PROTO implementations are a separate node
00324   // namespace, and require that any nested PROTOs NOT be available
00325   // outside the PROTO implementation.
00326   // addToNameSpace will print an error to stderr if the given type
00327   // is already defined.
00328   void addToNameSpace(VrmlNodeType *);
00329   void pushNameSpace();
00330   void popNameSpace();
00331 
00332   // Find a node type, given its name.  Returns NULL if type is not defined.
00333   const VrmlNodeType *find(const char *nm);
00334 
00335 };
00336 
00337 //------------------------------------------------------------------------------------
00338 //
00339 // Implementation of the above begins here
00340 //
00341 
00342 VrmlNodeType::VrmlNodeType(const char *nm)
00343 {
00344   assert(nm != NULL);
00345   name = static_cast<char*>(
00346     vtkVRMLAllocator::AllocateMemory((strlen(nm)+1)*sizeof(char)));
00347   strcpy(name, nm);
00348 }
00349 
00350 VrmlNodeType::~VrmlNodeType()
00351 {
00352   // Free strings duplicated when fields/eventIns/eventOuts added:
00353 
00354   int i;
00355   for (i = 0;i < eventIns.Count(); i++)
00356     {
00357     NameTypeRec *r = eventIns[i];
00358 //    free(r->name);
00359     delete r;
00360     }
00361   for (i = 0;i < eventOuts.Count(); i++)
00362     {
00363     NameTypeRec *r = eventOuts[i];
00364 //    free(r->name);
00365     delete r;
00366     }
00367   for (i = 0;i < fields.Count(); i++)
00368     {
00369     NameTypeRec *r = fields[i];
00370 //    free(r->name);
00371     delete r;
00372     }
00373 }
00374 void
00375 VrmlNodeType::addEventIn(const char *nodeName, int type)
00376 {
00377   add(eventIns, nodeName, type);
00378 };
00379 void
00380 VrmlNodeType::addEventOut(const char *nodeName, int type)
00381 {
00382   add(eventOuts, nodeName, type);
00383 };
00384 void
00385 VrmlNodeType::addField(const char *nodeName, int type)
00386 {
00387   add(fields, nodeName, type);
00388 };
00389 void
00390 VrmlNodeType::addExposedField(const char *nodeName, int type)
00391 {
00392   char tmp[1000];
00393   add(fields, nodeName, type);
00394   sprintf(tmp, "set_%s", nodeName);
00395   add(eventIns, tmp, type);
00396   sprintf(tmp, "%s_changed", nodeName);
00397   add(eventOuts, tmp, type);
00398 };
00399 
00400 void
00401 VrmlNodeType::add(vtkVRMLVectorType<NameTypeRec*> &recs, const char *nodeName, int type)
00402 {
00403   NameTypeRec *r = new NameTypeRec;
00404   r->name = vtkVRMLAllocator::StrDup(nodeName); //strdup(nodeName);
00405   r->type = type;
00406   recs += r;
00407 }
00408 
00409 int
00410 VrmlNodeType::hasEventIn(const char *nodeName) const
00411 {
00412   return has(eventIns, nodeName);
00413 }
00414 int
00415 VrmlNodeType::hasEventOut(const char *nodeName) const
00416 {
00417   return has(eventOuts, nodeName);
00418 }
00419 int
00420 VrmlNodeType::hasField(const char *nodeName) const
00421 {
00422   return has(fields, nodeName);
00423 }
00424 int
00425 VrmlNodeType::hasExposedField(const char *nodeName) const
00426 {
00427   // Must have field "name", eventIn "set_name", and eventOut
00428   // "name_changed", all with same type:
00429   char tmp[1000];
00430   int type;
00431   if ( (type = has(fields, nodeName)) == 0) return 0;
00432 
00433   sprintf(tmp, "set_%s\n", nodeName);
00434   if (type != has(eventIns, nodeName)) return 0;
00435 
00436   sprintf(tmp, "%s_changed", nodeName);
00437   if (type != has(eventOuts, nodeName)) return 0;
00438 
00439   return type;
00440 }
00441 int
00442 VrmlNodeType::has(const vtkVRMLVectorType<NameTypeRec*> &recs, const char *nodeName) const
00443 {
00444   for (int i = 0;i < recs.Count(); i++)
00445     {
00446     NameTypeRec *n = recs.Get(i);
00447     if (strcmp(n->name, nodeName) == 0)
00448       return n->type;
00449     }
00450   return 0;
00451 }
00452 
00453 
00454 
00455 
00456 //----------------------------------------------------------------------------
00457 vtkVRMLYaccData::vtkVRMLYaccData()
00458 {
00459   yy_current_buffer = NULL;
00460   yy_c_buf_p = NULL;
00461   yy_init = 1;
00462   yy_start = 0;
00463   yy_flex_debug = 1;
00464   yyin = NULL;
00465   yyout = NULL;
00466   currentLineNumber = 1;
00467   expectToken = 0;
00468   parsing_mf = 0;
00469   sfImageIntsExpected = 0;
00470   sfImageIntsParsed = 0;
00471   memyyInput_i = 0;
00472   memyyInput_j = 0;
00473   creatingDEF = 0;
00474   theyyInput = NULL;
00475 
00476   typeList = NULL;
00477   useList = NULL;
00478   currentField = NULL;
00479 }
00480 
00481 //----------------------------------------------------------------------------
00482 vtkVRMLYaccData::~vtkVRMLYaccData()
00483 {
00484   if (yy_current_buffer)
00485     {
00486     yy_delete_buffer(yy_current_buffer);
00487     yy_current_buffer = NULL;
00488     }
00489 }
00490 
00491 
00492 void vtkVRMLYaccData::addToNameSpace(VrmlNodeType *_type)
00493 {
00494   if (find(_type->getName()) != NULL)
00495     {
00496     cerr << "PROTO " << _type->getName() << " already defined\n";
00497     return;
00498     }
00499   *typeList += _type;
00500 }
00501 
00502 //
00503 // One list is used to store all the node types.  Nested namespaces are
00504 // separated by NULL elements.
00505 // This isn't terribly efficient, but it is nice and simple.
00506 //
00507 void vtkVRMLYaccData::pushNameSpace()
00508 {
00509   *typeList += (VrmlNodeType *) NULL;
00510 }
00511 
00512 void vtkVRMLYaccData::popNameSpace()
00513 {
00514   // Remove everything up to and including the next NULL marker:
00515   for (int i = 0;i < typeList->Count(); i++)
00516     {
00517     VrmlNodeType *nodeType = typeList->Pop();
00518 
00519     if (nodeType == NULL)
00520       {
00521       break;
00522       }
00523     else
00524       {
00525       // NOTE:  Instead of just deleting the VrmlNodeTypes, you will
00526       // probably want to reference count or garbage collect them, since
00527       // any nodes created as part of the PROTO implementation will
00528       // probably point back to their VrmlNodeType structure.
00529       delete nodeType;
00530       }
00531     }
00532 }
00533 
00534 const VrmlNodeType* vtkVRMLYaccData::find(const char *_name)
00535 {
00536   // Look through the type stack:
00537   for (int i = 0;i < typeList->Count(); i++)
00538     {
00539     const VrmlNodeType *nt = (*typeList)[i];
00540     if (nt != NULL && strcmp(nt->getName(),_name) == 0)
00541       {
00542       return nt;
00543       }
00544     }
00545   return NULL;
00546 }
00547 
00548 
00549 // Begin of Auto-generated Parser Code
00550 
00551 
00552 /*  A Bison parser, made from parser.y with Bison version GNU Bison version 1.24
00553   */
00554 
00555 #define YYBISON 1  /* Identify Bison output.  */
00556 
00557 #define IDENTIFIER      258
00558 #define DEF     259
00559 #define USE     260
00560 #define PROTO   261
00561 #define EXTERNPROTO     262
00562 #define TO      263
00563 #define IS      264
00564 #define ROUTE   265
00565 #define SFN_NULL        266
00566 #define EVENTIN 267
00567 #define EVENTOUT        268
00568 #define FIELD   269
00569 #define EXPOSEDFIELD    270
00570 #define SFBOOL  271
00571 #define SFCOLOR 272
00572 #define SFFLOAT 273
00573 #define SFIMAGE 274
00574 #define SFINT32 275
00575 #define SFNODE  276
00576 #define SFROTATION      277
00577 #define SFSTRING        278
00578 #define SFTIME  279
00579 #define SFVEC2F 280
00580 #define SFVEC3F 281
00581 #define MFCOLOR 282
00582 #define MFFLOAT 283
00583 #define MFINT32 284
00584 #define MFROTATION      285
00585 #define MFSTRING        286
00586 #define MFVEC2F 287
00587 #define MFVEC3F 288
00588 #define MFNODE  289
00589 
00590 
00591 
00592 //
00593 // Parser for VRML 2.0 files.
00594 // This is a minimal parser that does NOT generate an in-memory scene graph.
00595 //
00596 
00597 // The original parser was developed on a Windows 95 PC with
00598 // Borland's C++ 5.0 development tools.  This was then ported
00599 // to a Windows 95 PC with Microsoft's MSDEV C++ 4.0 development
00600 // tools.  The port introduced the ifdef's for
00601 //    USING_BORLAND_CPP_5          : since this provides a "std namespace",
00602 //    TWO_ARGUMENTS_FOR_STL_STACK  : STL is a moving target.  The stack template
00603 //                                     class takes either one or two arguments.
00604 
00605 
00606 #define YYDEBUG 1
00607 
00608 #include <stdlib.h>
00609 
00610 
00611 
00612 
00613 // This is used when the parser knows what kind of token it expects
00614 // to get next-- used when parsing field values (whose types are declared
00615 // and read by the parser) and at certain other places:
00616 //extern int expectToken;
00617 
00618 // Current line number (set by lexer)
00619 //extern int currentLineNumber;
00620 
00621 // Some helper routines defined below:
00622 //static void beginProto(const char *);
00623 //static void endProto();
00624 
00625 //static int addField(const char *type, const char *name);
00626 //static int addEventIn(const char *type, const char *name);
00627 //static int addEventOut(const char *type, const char *name);
00628 //static int addExposedField(const char *type, const char *name);
00629 //static int add(void (VrmlNodeType::*)(const char *, int), const char *,
00630 //               const char *);
00631 //static int fieldType(const char *type);
00632 //static void inScript();
00633 //static void expect(int type);
00634 
00635 //void yyerror(const char *);
00636 //int  yylex(vtkVRMLImporter* self);
00637 
00638 
00639 
00640 #ifndef YYLTYPE
00641 
00642 #define YYLTYPE yyltype
00643 #endif
00644 
00645 #define YYFINAL         128
00646 #define YYFLAG          -32768
00647 #define YYNTBASE        40
00648 
00649 #define YYTRANSLATE(x) ((unsigned)(x) <= 289 ? yytranslate[x] : 68)
00650 
00651 static const char yytranslate[] = {     0,
00652                                         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00653                                         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00654                                         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00655                                         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00656                                         2,     2,     2,     2,     2,    39,     2,     2,     2,     2,
00657                                         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00658                                         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00659                                         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00660                                         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00661                                         35,     2,    36,     2,     2,     2,     2,     2,     2,     2,
00662                                         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00663                                         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00664                                         2,     2,    37,     2,    38,     2,     2,     2,     2,     2,
00665                                         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00666                                         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00667                                         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00668                                         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00669                                         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00670                                         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00671                                         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00672                                         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00673                                         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00674                                         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00675                                         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00676                                         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00677                                         2,     2,     2,     2,     2,     1,     2,     3,     4,     5,
00678                                         6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
00679                                         16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
00680                                         26,    27,    28,    29,    30,    31,    32,    33,    34
00681 };
00682 
00683 #if YYDEBUG != 0
00684 static const short yyprhs[] = {     0,
00685                                     0,     2,     3,     6,     8,    10,    12,    14,    15,    16,
00686                                     22,    25,    27,    29,    30,    40,    41,    42,    51,    52,
00687                                     55,    59,    63,    64,    70,    71,    77,    78,    81,    85,
00688                                     89,    93,    97,   106,   107,   113,   114,   117,   118,   122,
00689                                     124,   126,   130,   134,   135,   141,   147,   153,   155,   157,
00690                                     159,   161,   163,   165,   167,   169,   171,   173,   175,   177,
00691                                     179,   181,   183,   185,   187,   190,   193,   196,   199,   203,
00692                                     205,   206
00693 };
00694 
00695 static const short yyrhs[] = {    41,
00696                                   0,     0,    41,    42,     0,    43,     0,    46,     0,    58,
00697                                   0,    59,     0,     0,     0,     4,    44,     3,    45,    59,
00698                                   0,     5,     3,     0,    47,     0,    49,     0,     0,     6,
00699                                   3,    48,    35,    52,    36,    37,    41,    38,     0,     0,
00700                                   0,     7,     3,    50,    35,    56,    36,    51,    65,     0,
00701                                   0,    52,    53,     0,    12,     3,     3,     0,    13,     3,
00702                                   3,     0,     0,    14,     3,     3,    54,    65,     0,     0,
00703                                   15,     3,     3,    55,    65,     0,     0,    56,    57,     0,
00704                                   12,     3,     3,     0,    13,     3,     3,     0,    14,     3,
00705                                   3,     0,    15,     3,     3,     0,    10,     3,    39,     3,
00706                                   8,     3,    39,     3,     0,     0,     3,    60,    37,    61,
00707                                   38,     0,     0,    61,    62,     0,     0,     3,    63,    65,
00708                                   0,    58,     0,    46,     0,    12,     3,     3,     0,    13,
00709                                   3,     3,     0,     0,    14,     3,     3,    64,    65,     0,
00710                                   12,     3,     3,     9,     3,     0,    13,     3,     3,     9,
00711                                   3,     0,    16,     0,    17,     0,    27,     0,    18,     0,
00712                                   28,     0,    19,     0,    20,     0,    29,     0,    22,     0,
00713                                   30,     0,    23,     0,    31,     0,    24,     0,    25,     0,
00714                                   32,     0,    26,     0,    33,     0,    21,    43,     0,    21,
00715                                   11,     0,    34,    66,     0,     9,     3,     0,    35,    67,
00716                                   36,     0,    43,     0,     0,    67,    43,     0
00717 };
00718 
00719 #endif
00720 
00721 #if YYDEBUG != 0
00722 static const short yyrline[] = { 0,
00723                                  106,   109,   111,   114,   116,   117,   120,   122,   123,   124,
00724                                  125,   128,   130,   133,   135,   139,   141,   143,   145,   147,
00725                                  150,   153,   155,   157,   158,   160,   163,   165,   168,   171,
00726                                  173,   175,   179,   184,   186,   189,   191,   194,   196,   197,
00727                                  198,   201,   202,   203,   206,   207,   209,   213,   215,   216,
00728                                  217,   218,   219,   220,   221,   222,   223,   224,   225,   226,
00729                                  227,   228,   229,   230,   232,   233,   234,   235,   238,   240,
00730                                  243,   245
00731 };
00732 
00733 static const char * const yytname[] = {   "$","error","$undefined.","IDENTIFIER",
00734                                           "DEF","USE","PROTO","EXTERNPROTO","TO","IS","ROUTE","SFN_NULL","EVENTIN","EVENTOUT",
00735                                           "FIELD","EXPOSEDFIELD","SFBOOL","SFCOLOR","SFFLOAT","SFIMAGE","SFINT32","SFNODE",
00736                                           "SFROTATION","SFSTRING","SFTIME","SFVEC2F","SFVEC3F","MFCOLOR","MFFLOAT","MFINT32",
00737                                           "MFROTATION","MFSTRING","MFVEC2F","MFVEC3F","MFNODE","'['","']'","'{'","'}'",
00738                                           "'.'","vrmlscene","declarations","declaration","nodeDeclaration","@1","@2","protoDeclaration",
00739                                           "proto","@3","externproto","@4","@5","interfaceDeclarations","interfaceDeclaration",
00740                                           "@6","@7","externInterfaceDeclarations","externInterfaceDeclaration","routeDeclaration",
00741                                           "node","@8","nodeGuts","nodeGut","@9","@10","fieldValue","mfnodeValue","nodes",
00742                                           ""
00743 };
00744 #endif
00745 
00746 static const short yyr1[] = {     0,
00747                                   40,    41,    41,    42,    42,    42,    43,    44,    45,    43,
00748                                   43,    46,    46,    48,    47,    50,    51,    49,    52,    52,
00749                                   53,    53,    54,    53,    55,    53,    56,    56,    57,    57,
00750                                   57,    57,    58,    60,    59,    61,    61,    63,    62,    62,
00751                                   62,    62,    62,    64,    62,    62,    62,    65,    65,    65,
00752                                   65,    65,    65,    65,    65,    65,    65,    65,    65,    65,
00753                                   65,    65,    65,    65,    65,    65,    65,    65,    66,    66,
00754                                   67,    67
00755 };
00756 
00757 static const short yyr2[] = {     0,
00758                                   1,     0,     2,     1,     1,     1,     1,     0,     0,     5,
00759                                   2,     1,     1,     0,     9,     0,     0,     8,     0,     2,
00760                                   3,     3,     0,     5,     0,     5,     0,     2,     3,     3,
00761                                   3,     3,     8,     0,     5,     0,     2,     0,     3,     1,
00762                                   1,     3,     3,     0,     5,     5,     5,     1,     1,     1,
00763                                   1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
00764                                   1,     1,     1,     1,     2,     2,     2,     2,     3,     1,
00765                                   0,     2
00766 };
00767 
00768 static const short yydefact[] = {     2,
00769                                       1,    34,     8,     0,     0,     0,     0,     3,     4,     5,
00770                                       12,    13,     6,     7,     0,     0,    11,    14,    16,     0,
00771                                       36,     9,     0,     0,     0,     0,     0,    19,    27,     0,
00772                                       38,     0,     0,     0,    35,    41,    40,    37,    10,     0,
00773                                       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
00774                                       0,    20,     0,     0,     0,     0,    17,    28,     0,     0,
00775                                       48,    49,    51,    53,    54,     0,    56,    58,    60,    61,
00776                                       63,    50,    52,    55,    57,    59,    62,    64,     0,    39,
00777                                       42,    43,    44,     0,     0,     0,     0,     2,     0,     0,
00778                                       0,     0,     0,     0,    68,    66,    65,    71,    70,    67,
00779                                       0,     0,     0,    21,    22,    23,    25,     0,    29,    30,
00780                                       31,    32,    18,    33,     0,    46,    47,    45,     0,     0,
00781                                       15,    69,    72,    24,    26,     0,     0,     0
00782 };
00783 
00784 static const short yydefgoto[] = {   126,
00785                                      1,     8,     9,    16,    27,    10,    11,    23,    12,    24,
00786                                      93,    40,    52,   119,   120,    41,    58,    13,    14,    15,
00787                                      26,    38,    43,   103,    80,   100,   115
00788 };
00789 
00790 static const short yypact[] = {-32768,
00791                                79,-32768,-32768,    -1,     0,     3,     4,-32768,-32768,-32768,
00792                                -32768,-32768,-32768,-32768,   -28,    11,-32768,-32768,-32768,   -18,
00793                                -32768,-32768,    -6,     5,    32,    -2,    38,-32768,-32768,    35,
00794                                -32768,    39,    41,    45,-32768,-32768,-32768,-32768,-32768,    19,
00795                                66,    48,    43,    50,    51,    54,    84,    85,    87,    88,
00796                                55,-32768,    90,    91,    92,    93,-32768,-32768,    58,    95,
00797                                -32768,-32768,-32768,-32768,-32768,    34,-32768,-32768,-32768,-32768,
00798                                -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,    23,-32768,
00799                                94,    96,-32768,    97,    98,   101,   103,-32768,   104,   105,
00800                                106,   107,    43,   108,-32768,-32768,-32768,-32768,-32768,-32768,
00801                                109,   110,    43,-32768,-32768,-32768,-32768,    12,-32768,-32768,
00802                                -32768,-32768,-32768,-32768,    20,-32768,-32768,-32768,    43,    43,
00803                                -32768,-32768,-32768,-32768,-32768,    99,   114,-32768
00804 };
00805 
00806 static const short yypgoto[] = {-32768,
00807                                 27,-32768,   -66,-32768,-32768,   100,-32768,-32768,-32768,-32768,
00808                                 -32768,-32768,-32768,-32768,-32768,-32768,-32768,   102,    89,-32768,
00809                                 -32768,-32768,-32768,-32768,   -73,-32768,-32768
00810 };
00811 
00812 
00813 #define YYLAST          128
00814 
00815 
00816 static const short yytable[] = {    97,
00817                                     31,    17,    18,     5,     6,    19,    20,     7,    21,    32,
00818                                     33,    34,    99,    22,     2,     3,     4,     5,     6,   113,
00819                                     25,     7,     2,     3,     4,     2,     3,     4,    28,   118,
00820                                     47,    48,    49,    50,    30,    35,     2,     3,     4,    29,
00821                                     2,    44,    42,    45,    96,   124,   125,    46,   123,   121,
00822                                     59,    60,    81,    82,    51,   122,    83,    98,    61,    62,
00823                                     63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
00824                                     73,    74,    75,    76,    77,    78,    79,    53,    54,    55,
00825                                     56,     2,     3,     4,     5,     6,    84,    85,     7,    86,
00826                                     87,    88,    89,    90,    91,    92,    94,    95,   127,   104,
00827                                     105,    57,   101,   106,   102,   107,   109,   110,   111,   112,
00828                                     114,   116,   117,   128,   108,    39,     0,     0,     0,     0,
00829                                     0,     0,     0,     0,     0,    36,     0,    37
00830 };
00831 
00832 static const short yycheck[] = {    66,
00833                                     3,     3,     3,     6,     7,     3,     3,    10,    37,    12,
00834                                     13,    14,    79,     3,     3,     4,     5,     6,     7,    93,
00835                                     39,    10,     3,     4,     5,     3,     4,     5,    35,   103,
00836                                     12,    13,    14,    15,     3,    38,     3,     4,     5,    35,
00837                                     3,     3,     8,     3,    11,   119,   120,     3,   115,    38,
00838                                     3,     9,     3,     3,    36,    36,     3,    35,    16,    17,
00839                                     18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
00840                                     28,    29,    30,    31,    32,    33,    34,    12,    13,    14,
00841                                     15,     3,     4,     5,     6,     7,     3,     3,    10,     3,
00842                                     3,    37,     3,     3,     3,     3,    39,     3,     0,     3,
00843                                     3,    36,     9,     3,     9,     3,     3,     3,     3,     3,
00844                                     3,     3,     3,     0,    88,    27,    -1,    -1,    -1,    -1,
00845                                     -1,    -1,    -1,    -1,    -1,    26,    -1,    26
00846 };
00847 /* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
00848 
00849 
00850 /* Skeleton output parser for bison,
00851    Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
00852 
00853    This program is free software; you can redistribute it and/or modify
00854    it under the terms of the GNU General Public License as published by
00855    the Free Software Foundation; either version 2, or (at your option)
00856    any later version.
00857 
00858    This program is distributed in the hope that it will be useful,
00859    but WITHOUT ANY WARRANTY; without even the implied warranty of
00860    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00861    GNU General Public License for more details.
00862 
00863    You should have received a copy of the GNU General Public License
00864    along with this program; if not, write to the Free Software
00865    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
00866 
00867 /* As a special exception, when this file is copied by Bison into a
00868    Bison output file, you may use that output file without restriction.
00869    This special exception was added by the Free Software Foundation
00870    in version 1.24 of Bison.  */
00871 
00872 //extern int yylex(vtkVRMLImporter* self);
00873 //extern void yyerror();
00874 
00875 #include <list>
00876 //
00877 // This file was originally generated from a yacc grammar source
00878 // file, but subsequently it has been locally modified to suit
00879 // VTK's needs.  The use of alloca -- part of the original parser
00880 // boilerplate became problematic because the confusing
00881 // preprocessor #defines with respect to alloca were causing
00882 // compile problems with newer versions of CLang.
00883 //
00884 // This class replaces alloca with a malloc-based allocator that
00885 // cleans up after itself when the FakeAlloca object goes out of
00886 // scope.  Whatever performance penalty this incurs is minor and
00887 // would only be noticeably if a very large, deeply nested VRML
00888 // file was imported; in the real world, I think alloca was very
00889 // rarely called here.
00890 
00891 class vtkVRMLYaccData::FakeAlloca
00892 {
00893 public:
00894   typedef std::list<void *> list_type;
00895   ~FakeAlloca()
00896     {
00897       for(list_type::iterator it = this->m_allocs.begin();
00898           it != this->m_allocs.end(); ++it)
00899         {
00900         free(*it);
00901         }
00902     }
00903   void *Allocate(size_t size)
00904     {
00905       void *rval = malloc(size);
00906       m_allocs.push_back(rval);
00907       return rval;
00908     }
00909 private:
00910   list_type m_allocs;
00911 };
00912 /* This is the parser code that is written into each bison parser
00913   when the %semantic_parser declaration is not specified in the grammar.
00914   It was written by Richard Stallman by simplifying the hairy parser
00915   used when %semantic_parser is specified.  */
00916 
00917 /* Note: there must be only one dollar sign in this file.
00918    It is replaced by the list of actions, each action
00919    as one case of the switch.  */
00920 
00921 #define yyerrok         (yyerrstatus = 0)
00922 #define yyclearin       (yychar = YYEMPTY)
00923 #define YYEMPTY         -2
00924 #define YYEOF           0
00925 #define YYACCEPT        return(0)
00926 #define YYABORT         return(1)
00927 #define YYERROR         goto yyerrlab1
00928 /* Like YYERROR except do call yyerror.
00929    This remains here temporarily to ease the
00930    transition to the new meaning of YYERROR, for GCC.
00931    Once GCC version 2 has supplanted version 1, this can go.  */
00932 #define YYFAIL          goto yyerrlab
00933 #define YYRECOVERING()  (!!yyerrstatus)
00934 #define YYBACKUP(token, value) \
00935 do                                                              \
00936   if (yychar == YYEMPTY && yylen == 1)                          \
00937     { yychar = (token), yylval = (value);                       \
00938       yychar1 = YYTRANSLATE (yychar);                           \
00939       YYPOPSTACK;                                               \
00940       goto yybackup;                                            \
00941     }                                                           \
00942   else                                                          \
00943     { yyerror ("syntax error: cannot back up"); YYERROR; }      \
00944 while (0)
00945 
00946 #define YYTERROR        1
00947 #define YYERRCODE       256
00948 
00949 
00950 /*  YYINITDEPTH indicates the initial size of the parser's stacks       */
00951 
00952 #ifndef YYINITDEPTH
00953 #define YYINITDEPTH 200
00954 #endif
00955 
00956 /*  YYMAXDEPTH is the maximum size the stacks can grow to
00957     (effective only if the built-in stack extension method is used).  */
00958 
00959 #if defined(YYMAXDEPTH) && (YYMAXDEPTH == 0)
00960 #undef YYMAXDEPTH
00961 #endif
00962 
00963 #ifndef YYMAXDEPTH
00964 #define YYMAXDEPTH 10000
00965 #endif
00966 
00967 static void
00968 __yy_memcpy (char *from, char *to, int count)
00969 {
00970   char *f = from;
00971   char *t = to;
00972   int i = count;
00973 
00974   while (i-- > 0)
00975     *t++ = *f++;
00976 }
00977 
00978 
00979 int vtkVRMLYaccData::yyparse(vtkVRMLImporter* self)
00980 {
00981   FakeAlloca yyallocator;
00982   int yystate;
00983   int yyn;
00984   short *yyssp;
00985   YYSTYPE *yyvsp;
00986   int yyerrstatus;      /*  number of tokens to shift before error messages enabled */
00987   int yychar1 = 0;              /*  lookahead token as an internal (translated) token number */
00988 
00989   short yyssa[YYINITDEPTH];     /*  the state stack                     */
00990   YYSTYPE yyvsa[YYINITDEPTH];   /*  the semantic value stack            */
00991 
00992   short *yyss = yyssa;          /*  refer to the stacks thru separate pointers */
00993   YYSTYPE *yyvs = yyvsa;        /*  to allow yyoverflow to reallocate them elsewhere */
00994 
00995 #ifdef YYLSP_NEEDED
00996   YYLTYPE yylsa[YYINITDEPTH];   /*  the location stack                  */
00997   YYLTYPE *yyls = yylsa;
00998   YYLTYPE *yylsp;
00999 
01000 #define YYPOPSTACK   (yyvsp--, yyssp--, yylsp--)
01001 #else
01002 #define YYPOPSTACK   (yyvsp--, yyssp--)
01003 #endif
01004 
01005   int yystacksize = YYINITDEPTH;
01006 
01007 #ifdef YYPURE
01008   int yychar;
01009   YYSTYPE yylval;
01010   int yynerrs;
01011 #ifdef YYLSP_NEEDED
01012   YYLTYPE yylloc;
01013 #endif
01014 #endif
01015 
01016   YYSTYPE yyval;                /*  the variable used to return         */
01017                                 /*  semantic values from the action     */
01018                                 /*  routines                            */
01019 
01020   int yylen;
01021 
01022 #if YYDEBUG != 0
01023   if (yydebug)
01024     fprintf(stderr, "Starting parse\n");
01025 #endif
01026 
01027   yystate = 0;
01028   yyerrstatus = 0;
01029   yynerrs = 0;
01030   yychar = YYEMPTY;             /* Cause a token to be read.  */
01031 
01032   /* Initialize stack pointers.
01033      Waste one element of value and location stack
01034      so that they stay on the same level as the state stack.
01035      The wasted elements are never initialized.  */
01036 
01037   yyssp = yyss - 1;
01038   yyvsp = yyvs;
01039 #ifdef YYLSP_NEEDED
01040   yylsp = yyls;
01041 #endif
01042 
01043   /* Push a new state, which is found in  yystate  .  */
01044   /* In all cases, when you get here, the value and location stacks
01045      have just been pushed. so pushing a state here evens the stacks.  */
01046   yynewstate:
01047 
01048   *++yyssp = yystate;
01049 
01050   if (yyssp >= yyss + yystacksize - 1)
01051     {
01052     /* Give user a chance to reallocate the stack */
01053     /* Use copies of these so that the &'s don't force the real ones into memory. */
01054     YYSTYPE *yyvs1 = yyvs;
01055     short *yyss1 = yyss;
01056 #ifdef YYLSP_NEEDED
01057     YYLTYPE *yyls1 = yyls;
01058 #endif
01059 
01060     /* Get the current used size of the three stacks, in elements.  */
01061     int size = yyssp - yyss + 1;
01062 
01063 #ifdef yyoverflow
01064     /* Each stack pointer address is followed by the size of
01065        the data in use in that stack, in bytes.  */
01066 #ifdef YYLSP_NEEDED
01067     /* This used to be a conditional around just the two extra args,
01068        but that might be undefined if yyoverflow is a macro.  */
01069     yyoverflow("parser stack overflow",
01070                &yyss1, size * sizeof (*yyssp),
01071                &yyvs1, size * sizeof (*yyvsp),
01072                &yyls1, size * sizeof (*yylsp),
01073                &yystacksize);
01074 #else
01075     yyoverflow("parser stack overflow",
01076                &yyss1, size * sizeof (*yyssp),
01077                &yyvs1, size * sizeof (*yyvsp),
01078                &yystacksize);
01079 #endif
01080 
01081     yyss = yyss1; yyvs = yyvs1;
01082 #ifdef YYLSP_NEEDED
01083     yyls = yyls1;
01084 #endif
01085 #else /* no yyoverflow */
01086     /* Extend the stack our own way.  */
01087     if (yystacksize >= YYMAXDEPTH)
01088       {
01089       yyerror("parser stack overflow");
01090       return 2;
01091       }
01092     yystacksize *= 2;
01093     if (yystacksize > YYMAXDEPTH)
01094       yystacksize = YYMAXDEPTH;
01095     yyss = (short *) yyallocator.Allocate (yystacksize * sizeof (*yyssp));
01096     __yy_memcpy ((char *)yyss1, (char *)yyss, size * sizeof (*yyssp));
01097     yyvs = (YYSTYPE *) yyallocator.Allocate (yystacksize * sizeof (*yyvsp));
01098     __yy_memcpy ((char *)yyvs1, (char *)yyvs, size * sizeof (*yyvsp));
01099 #ifdef YYLSP_NEEDED
01100     yyls = (YYLTYPE *) yyallocator.Allocate (yystacksize * sizeof (*yylsp));
01101     __yy_memcpy ((char *)yyls1, (char *)yyls, size * sizeof (*yylsp));
01102 #endif
01103 #endif /* no yyoverflow */
01104 
01105     yyssp = yyss + size - 1;
01106     yyvsp = yyvs + size - 1;
01107 #ifdef YYLSP_NEEDED
01108     yylsp = yyls + size - 1;
01109 #endif
01110 
01111 #if YYDEBUG != 0
01112     if (yydebug)
01113       fprintf(stderr, "Stack size increased to %d\n", yystacksize);
01114 #endif
01115 
01116     if (yyssp >= yyss + yystacksize - 1)
01117       YYABORT;
01118     }
01119 
01120 #if YYDEBUG != 0
01121   if (yydebug)
01122     fprintf(stderr, "Entering state %d\n", yystate);
01123 #endif
01124 
01125   goto yybackup;
01126   yybackup:
01127 
01128   /* Do appropriate processing given the current state.  */
01129   /* Read a lookahead token if we need one and don't already have one.  */
01130   /* yyresume: */
01131 
01132   /* First try to decide what to do without reference to lookahead token.  */
01133 
01134   yyn = yypact[yystate];
01135   if (yyn == YYFLAG)
01136     goto yydefault;
01137 
01138   /* Not known => get a lookahead token if don't already have one.  */
01139 
01140   /* yychar is either YYEMPTY or YYEOF
01141      or a valid token in external form.  */
01142 
01143   if (yychar == YYEMPTY)
01144     {
01145 #if YYDEBUG != 0
01146     if (yydebug)
01147       fprintf(stderr, "Reading a token: ");
01148 #endif
01149     yychar = yylex(self);
01150     }
01151 
01152   /* Convert token to internal form (in yychar1) for indexing tables with */
01153 
01154   if (yychar <= 0)              /* This means end of input. */
01155     {
01156     yychar1 = 0;
01157     yychar = YYEOF;           /* Don't call YYLEX any more */
01158 
01159 #if YYDEBUG != 0
01160     if (yydebug)
01161       fprintf(stderr, "Now at end of input.\n");
01162 #endif
01163     }
01164   else
01165     {
01166     yychar1 = YYTRANSLATE(yychar);
01167 
01168 #if YYDEBUG != 0
01169     if (yydebug)
01170       {
01171       fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
01172       /* Give the individual parser a way to print the precise meaning
01173          of a token, for further debugging info.  */
01174 #ifdef YYPRINT
01175       YYPRINT (stderr, yychar, yylval);
01176 #endif
01177       fprintf (stderr, ")\n");
01178       }
01179 #endif
01180     }
01181 
01182   yyn += yychar1;
01183   if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
01184     goto yydefault;
01185 
01186   yyn = yytable[yyn];
01187 
01188   /* yyn is what to do for this token type in this state.
01189      Negative => reduce, -yyn is rule number.
01190      Positive => shift, yyn is new state.
01191      New state is final state => don't bother to shift,
01192      just return success.
01193      0, or most negative number => error.  */
01194 
01195   if (yyn < 0)
01196     {
01197     if (yyn == YYFLAG)
01198       goto yyerrlab;
01199     yyn = -yyn;
01200     goto yyreduce;
01201     }
01202   else if (yyn == 0)
01203     goto yyerrlab;
01204 
01205   if (yyn == YYFINAL)
01206     YYACCEPT;
01207 
01208   /* Shift the lookahead token.  */
01209 
01210 #if YYDEBUG != 0
01211   if (yydebug)
01212     fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
01213 #endif
01214 
01215   /* Discard the token being shifted unless it is eof.  */
01216   if (yychar != YYEOF)
01217     yychar = YYEMPTY;
01218 
01219   *++yyvsp = yylval;
01220 #ifdef YYLSP_NEEDED
01221   *++yylsp = yylloc;
01222 #endif
01223 
01224   /* count tokens shifted since error; after three, turn off error status.  */
01225   if (yyerrstatus) yyerrstatus--;
01226 
01227   yystate = yyn;
01228   goto yynewstate;
01229 
01230   /* Do the default action for the current state.  */
01231   yydefault:
01232 
01233   yyn = yydefact[yystate];
01234   if (yyn == 0)
01235     goto yyerrlab;
01236 
01237   /* Do a reduction.  yyn is the number of a rule to reduce with.  */
01238   yyreduce:
01239   yylen = yyr2[yyn];
01240   if (yylen > 0)
01241     yyval = yyvsp[1-yylen]; /* implement default value of the action */
01242   else
01243     yyval.sfint = 0;
01244 
01245 #if YYDEBUG != 0
01246   if (yydebug)
01247     {
01248     int i;
01249 
01250     fprintf (stderr, "Reducing via rule %d (line %d), ",
01251              yyn, yyrline[yyn]);
01252 
01253     /* Print the symbols being reduced, and their result.  */
01254     for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)
01255       fprintf (stderr, "%s ", yytname[yyrhs[i]]);
01256     fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
01257     }
01258 #endif
01259 
01260 
01261   // Note: several free() methods are commented out due to the use of
01262   // vtkVRMLAllocator.
01263   switch (yyn) {
01264 
01265   case 8:
01266   { creatingDEF = 1; ;
01267   break;}
01268   case 9:
01269   { curDEFName = yyvsp[0].string; ;
01270   break;}
01271   case 10:
01272   { creatingDEF = 0; ;
01273   break;}
01274   case 11:
01275   { self->useNode(yyvsp[0].string);//free(yyvsp[0].string); ;
01276   break;}
01277   case 14:
01278   { beginProto(yyvsp[0].string); ;
01279   break;}
01280   case 15:
01281   { endProto();  //free(yyvsp[-7].string);;
01282   break;}
01283   case 16:
01284   { beginProto(yyvsp[0].string); ;
01285   break;}
01286   case 17:
01287   { expect(MFSTRING); ;
01288   break;}
01289   case 18:
01290   { endProto();  //free(yyvsp[-6].string); ;
01291   break;}
01292   case 21:
01293   { addEventIn(yyvsp[-1].string, yyvsp[0].string);
01294   //free(yyvsp[-1].string); free(yyvsp[0].string); ;
01295   break;}
01296   case 22:
01297   { addEventOut(yyvsp[-1].string, yyvsp[0].string);
01298   //free(yyvsp[-1].string); free(yyvsp[0].string); ;
01299   break;}
01300   case 23:
01301   { int type = addField(yyvsp[-1].string, yyvsp[0].string);
01302   expect(type); ;
01303   break;}
01304   case 24:
01305   { //free(yyvsp[-3].string); free(yyvsp[-2].string); ;
01306   break;}
01307   case 25:
01308   { int type = addExposedField(yyvsp[-1].string, yyvsp[0].string);
01309   expect(type); ;
01310   break;}
01311   case 26:
01312   { //free(yyvsp[-3].string); free(yyvsp[-2].string); ;
01313   break;}
01314   case 29:
01315   { addEventIn(yyvsp[-1].string, yyvsp[0].string);
01316   //free(yyvsp[-1].string); free(yyvsp[0].string); ;
01317   break;}
01318   case 30:
01319   { addEventOut(yyvsp[-1].string, yyvsp[0].string);
01320   //free(yyvsp[-1].string); free(yyvsp[0].string); ;
01321   break;}
01322   case 31:
01323   { addField(yyvsp[-1].string, yyvsp[0].string);
01324   //free(yyvsp[-1].string); free(yyvsp[0].string); ;
01325   break;}
01326   case 32:
01327   { addExposedField(yyvsp[-1].string, yyvsp[0].string);
01328   //free(yyvsp[-1].string); free(yyvsp[0].string); ;
01329   break;}
01330   case 33:
01331   { //free(yyvsp[-6].string); free(yyvsp[-4].string); free(yyvsp[-2].string); free(yyvsp[0].string); ;
01332   break;}
01333   case 34:
01334   { self->enterNode(yyvsp[0].string); ;
01335   break;}
01336   case 35:
01337   { self->exitNode(); //free(yyvsp[-4].string);;
01338   break;}
01339   case 38:
01340   { self->enterField(yyvsp[0].string); ;
01341   break;}
01342   case 39:
01343   { self->exitField(); //free(yyvsp[-2].string); ;
01344   break;}
01345   case 42:
01346   { inScript(); //free(yyvsp[-1].string); free(yyvsp[0].string); ;
01347   break;}
01348   case 43:
01349   { inScript(); //free(yyvsp[-1].string); free(yyvsp[0].string); ;
01350   break;}
01351   case 44:
01352   { inScript();
01353   int type = fieldType(yyvsp[-1].string);
01354   expect(type); ;
01355   break;}
01356   case 45:
01357   { //free(yyvsp[-3].string); free(yyvsp[-2].string); ;
01358   break;}
01359   case 46:
01360   { inScript(); //free(yyvsp[-3].string); free(yyvsp[-2].string); free(yyvsp[0].string); ;
01361   break;}
01362   case 47:
01363   { inScript(); //free(yyvsp[-3].string); free(yyvsp[-2].string); free(yyvsp[0].string); ;
01364   break;}
01365   case 49:
01366   {;
01367   break;}
01368   case 50:
01369   {     break;}
01370   case 55:
01371   {     break;}
01372   case 63:
01373   { ;
01374   break;}
01375   case 64:
01376   {     break;}
01377   case 68:
01378   { //free(yyvsp[0].string); ;
01379   break;}
01380   }
01381   /* the action file gets copied in in place of this dollarsign */
01382 
01383 
01384   yyvsp -= yylen;
01385   yyssp -= yylen;
01386 #ifdef YYLSP_NEEDED
01387   yylsp -= yylen;
01388 #endif
01389 
01390 #if YYDEBUG != 0
01391   if (yydebug)
01392     {
01393     short *ssp1 = yyss - 1;
01394     fprintf (stderr, "state stack now");
01395     while (ssp1 != yyssp)
01396       fprintf (stderr, " %d", *++ssp1);
01397     fprintf (stderr, "\n");
01398     }
01399 #endif
01400 
01401   *++yyvsp = yyval;
01402 
01403 #ifdef YYLSP_NEEDED
01404   yylsp++;
01405   if (yylen == 0)
01406     {
01407     yylsp->first_line = yylloc.first_line;
01408     yylsp->first_column = yylloc.first_column;
01409     yylsp->last_line = (yylsp-1)->last_line;
01410     yylsp->last_column = (yylsp-1)->last_column;
01411     yylsp->text = 0;
01412     }
01413   else
01414     {
01415     yylsp->last_line = (yylsp+yylen-1)->last_line;
01416     yylsp->last_column = (yylsp+yylen-1)->last_column;
01417     }
01418 #endif
01419 
01420   /* Now "shift" the result of the reduction.
01421      Determine what state that goes to,
01422      based on the state we popped back to
01423      and the rule number reduced by.  */
01424 
01425   yyn = yyr1[yyn];
01426 
01427   yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
01428   if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
01429     yystate = yytable[yystate];
01430   else
01431     yystate = yydefgoto[yyn - YYNTBASE];
01432 
01433   goto yynewstate;
01434 
01435   yyerrlab:   /* here on detecting error */
01436 
01437   if (! yyerrstatus)
01438     /* If not already recovering from an error, report this error.  */
01439     {
01440     ++yynerrs;
01441 
01442 #ifdef YYERROR_VERBOSE
01443     yyn = yypact[yystate];
01444 
01445     if (yyn > YYFLAG && yyn < YYLAST)
01446       {
01447       int size = 0;
01448       char *msg;
01449       int x, count;
01450 
01451       count = 0;
01452       /* Start X at -yyn if nec to avoid negative indexes in yycheck.  */
01453       for (x = (yyn < 0 ? -yyn : 0);
01454            x < (sizeof(yytname) / sizeof(char *)); x++)
01455         if (yycheck[x + yyn] == x)
01456           size += strlen(yytname[x]) + 15, count++;
01457       msg = (char *) malloc(size + 15);
01458       if (msg != 0)
01459         {
01460         strcpy(msg, "parse error");
01461 
01462         if (count < 5)
01463           {
01464           count = 0;
01465           for (x = (yyn < 0 ? -yyn : 0);
01466                x < (sizeof(yytname) / sizeof(char *)); x++)
01467             if (yycheck[x + yyn] == x)
01468               {
01469               strcat(msg, count == 0 ? ", expecting `" : " or `");
01470               strcat(msg, yytname[x]);
01471               strcat(msg, "'");
01472               count++;
01473               }
01474           }
01475         yyerror(msg);
01476         free(msg);
01477         }
01478       else
01479         yyerror ("parse error; also virtual memory exceeded");
01480       }
01481     else
01482 #endif /* YYERROR_VERBOSE */
01483       yyerror("parse error");
01484     }
01485 
01486   goto yyerrlab1;
01487   yyerrlab1:   /* here on error raised explicitly by an action */
01488 
01489   if (yyerrstatus == 3)
01490     {
01491     /* if just tried and failed to reuse lookahead token after an error, discard it.  */
01492 
01493     /* return failure if at end of input */
01494     if (yychar == YYEOF)
01495       YYABORT;
01496 
01497 #if YYDEBUG != 0
01498     if (yydebug)
01499       fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);
01500 #endif
01501 
01502     yychar = YYEMPTY;
01503     }
01504 
01505   /* Else will try to reuse lookahead token
01506      after shifting the error token.  */
01507 
01508   yyerrstatus = 3;              /* Each real token shifted decrements this */
01509 
01510   goto yyerrhandle;
01511 
01512   yyerrdefault:  /* current state does not do anything special for the error token. */
01513 
01514 #if 0
01515   /* This is wrong; only states that explicitly want error tokens
01516      should shift them.  */
01517   yyn = yydefact[yystate];  /* If its default is to accept any token, ok.  Otherwise pop it.*/
01518   if (yyn) goto yydefault;
01519 #endif
01520 
01521   yyerrpop:   /* pop the current state because it cannot handle the error token */
01522 
01523   if (yyssp == yyss) YYABORT;
01524   yyvsp--;
01525   yystate = *--yyssp;
01526 #ifdef YYLSP_NEEDED
01527   yylsp--;
01528 #endif
01529 
01530 #if YYDEBUG != 0
01531   if (yydebug)
01532     {
01533     short *ssp1 = yyss - 1;
01534     fprintf (stderr, "Error: state stack now");
01535     while (ssp1 != yyssp)
01536       fprintf (stderr, " %d", *++ssp1);
01537     fprintf (stderr, "\n");
01538     }
01539 #endif
01540 
01541   yyerrhandle:
01542 
01543   yyn = yypact[yystate];
01544   if (yyn == YYFLAG)
01545     goto yyerrdefault;
01546 
01547   yyn += YYTERROR;
01548   if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
01549     goto yyerrdefault;
01550 
01551   yyn = yytable[yyn];
01552   if (yyn < 0)
01553     {
01554     if (yyn == YYFLAG)
01555       goto yyerrpop;
01556     yyn = -yyn;
01557     goto yyreduce;
01558     }
01559   else if (yyn == 0)
01560     goto yyerrpop;
01561 
01562   if (yyn == YYFINAL)
01563     YYACCEPT;
01564 
01565 #if YYDEBUG != 0
01566   if (yydebug)
01567     fprintf(stderr, "Shifting error token, ");
01568 #endif
01569 
01570   *++yyvsp = yylval;
01571 #ifdef YYLSP_NEEDED
01572   *++yylsp = yylloc;
01573 #endif
01574 
01575   yystate = yyn;
01576   goto yynewstate;
01577 }
01578 
01579 
01580 void vtkVRMLYaccData::yyerror(const char *msg)
01581 {
01582   cerr << "Error near line " << currentLineNumber << ": " << msg << "\n";
01583   expect(0);
01584 }
01585 
01586 void vtkVRMLYaccData::beginProto(const char *protoName)
01587 {
01588   // Any protos in the implementation are in a local namespace:
01589   pushNameSpace();
01590 
01591   VrmlNodeType *t = new VrmlNodeType(protoName);
01592   *CurrentProtoStack += t;
01593 }
01594 
01595 void vtkVRMLYaccData::endProto()
01596 {
01597   // Make any protos defined in implementation unavailable:
01598   popNameSpace();
01599 
01600   // Add this proto definition:
01601   if (CurrentProtoStack->Count() == 0)
01602     {
01603     cerr << "Error: Empty PROTO stack!\n";
01604     }
01605   else
01606     {
01607     VrmlNodeType *t = CurrentProtoStack->Top();
01608     CurrentProtoStack->Pop();
01609     addToNameSpace(t);
01610     }
01611 }
01612 
01613 int vtkVRMLYaccData::addField(const char *type, const char *name)
01614 {
01615   return add(&VrmlNodeType::addField, type, name);
01616 }
01617 
01618 int vtkVRMLYaccData::addEventIn(const char *type, const char *name)
01619 {
01620   return add(&VrmlNodeType::addEventIn, type, name);
01621 }
01622 int vtkVRMLYaccData::addEventOut(const char *type, const char *name)
01623 {
01624   return add(&VrmlNodeType::addEventOut, type, name);
01625 }
01626 int vtkVRMLYaccData::addExposedField(const char *type, const char *name)
01627 {
01628   return add(&VrmlNodeType::addExposedField, type, name);
01629 }
01630 
01631 int vtkVRMLYaccData::add(void (VrmlNodeType::*func)(const char *, int),
01632     const char *typeString, const char *name)
01633 {
01634   int type = fieldType(typeString);
01635 
01636   if (type == 0)
01637     {
01638     cerr << "Error: invalid field type: " << type << "\n";
01639     }
01640 
01641   // Need to add support for Script nodes:
01642   // if (inScript) ... ???
01643 
01644   if (CurrentProtoStack->Count() == 0)
01645     {
01646     cerr << "Error: declaration outside of prototype\n";
01647     return 0;
01648     }
01649   VrmlNodeType *t = CurrentProtoStack->Top();
01650   (t->*func)(name, type);
01651 
01652   return type;
01653 }
01654 
01655 int vtkVRMLYaccData::fieldType(const char *type)
01656 {
01657   if (strcmp(type, "SFBool") == 0) return SFBOOL;
01658   if (strcmp(type, "SFColor") == 0) return SFCOLOR;
01659   if (strcmp(type, "SFFloat") == 0) return SFFLOAT;
01660   if (strcmp(type, "SFImage") == 0) return SFIMAGE;
01661   if (strcmp(type, "SFInt32") == 0) return SFINT32;
01662   if (strcmp(type, "SFNode") == 0) return SFNODE;
01663   if (strcmp(type, "SFRotation") == 0) return SFROTATION;
01664   if (strcmp(type, "SFString") == 0) return SFSTRING;
01665   if (strcmp(type, "SFTime") == 0) return SFTIME;
01666   if (strcmp(type, "SFVec2f") == 0) return SFVEC2F;
01667   if (strcmp(type, "SFVec3f") == 0) return SFVEC3F;
01668   if (strcmp(type, "MFColor") == 0) return MFCOLOR;
01669   if (strcmp(type, "MFFloat") == 0) return MFFLOAT;
01670   if (strcmp(type, "MFInt32") == 0) return MFINT32;
01671   if (strcmp(type, "MFNode") == 0) return MFNODE;
01672   if (strcmp(type, "MFRotation") == 0) return MFROTATION;
01673   if (strcmp(type, "MFString") == 0) return MFSTRING;
01674   if (strcmp(type, "MFVec2f") == 0) return MFVEC2F;
01675   if (strcmp(type, "MFVec3f") == 0) return MFVEC3F;
01676 
01677   cerr << "Illegal field type: " << type << "\n";
01678 
01679   return 0;
01680 }
01681 
01682 void vtkVRMLYaccData::inScript()
01683 {
01684   VrmlNodeType::FieldRec *fr = currentField->Top();
01685   if (fr->nodeType == NULL ||
01686       strcmp(fr->nodeType->getName(), "Script") != 0)
01687     {
01688     yyerror("interface declaration outside of Script or prototype");
01689     }
01690 }
01691 
01692 
01693 void vtkVRMLYaccData::expect(int type)
01694 {
01695   expectToken = type;
01696 }
01697 
01698 // End of Auto-generated Parser Code
01699 // Begin of Auto-generated Lexer Code
01700 
01701 /* A lexical scanner generated by flex */
01702 
01703 
01704 #define FLEX_SCANNER
01705 
01706 #ifdef WIN32
01707 #include <io.h>
01708 #else
01709 #include <unistd.h>
01710 #endif
01711 
01712 /* Use prototypes in function declarations. */
01713 #define YY_USE_PROTOS
01714 #define YY_PROTO(proto) proto
01715 
01716 /* Returned upon end-of-file. */
01717 #define YY_NULL 0
01718 
01719 /* Promotes a possibly negative, possibly signed char to an unsigned
01720  * integer for use as an array index.  If the signed char is negative,
01721  * we want to instead treat it as an 8-bit unsigned char, hence the
01722  * double cast.
01723  */
01724 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
01725 
01726 /* Enter a start condition.  This macro really ought to take a parameter,
01727  * but we do it the disgusting crufty way forced on us by the ()-less
01728  * definition of BEGIN.
01729  */
01730 #define BEGIN yy_start = 1 + 2 *
01731 
01732 /* Translate the current start state into a value that can be later handed
01733  * to BEGIN to return to the state.
01734  */
01735 #define YY_START ((yy_start - 1) / 2)
01736 
01737 /* Action number for EOF rule of a given start state. */
01738 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
01739 
01740 /* Special action meaning "start processing a new file".  Now included
01741  * only for backward compatibility with previous versions of flex.
01742  */
01743 #define YY_NEW_FILE yyrestart( yyin )
01744 
01745 #define YY_END_OF_BUFFER_CHAR 0
01746 
01747 /* Size of default input buffer. */
01748 #define YY_BUF_SIZE 16384
01749 
01750 //typedef struct yy_buffer_state *YY_BUFFER_STATE;
01751 
01752 //extern int yyleng;
01753 //extern FILE *yyin, *yyout;
01754 
01755 #ifdef __cplusplus
01756 extern "C" {
01757 #endif
01758   //extern int yywrap YY_PROTO(( void ));
01759 #ifdef __cplusplus
01760 }
01761 #endif
01762 
01763 #define EOB_ACT_CONTINUE_SCAN 0
01764 #define EOB_ACT_END_OF_FILE 1
01765 #define EOB_ACT_LAST_MATCH 2
01766 
01767 /* The funky do-while in the following #define is used to turn the definition
01768  * int a single C statement (which needs a semi-colon terminator).  This
01769  * avoids problems with code like:
01770  *
01771  *      if ( condition_holds )
01772  *              yyless( 5 );
01773  *      else
01774  *              do_something_else();
01775  *
01776  * Prior to using the do-while the compiler would get upset at the
01777  * "else" because it interpreted the "if" statement as being all
01778  * done when it reached the ';' after the yyless() call.
01779  */
01780 
01781 /* Return all but the first 'n' matched characters back to the input stream. */
01782 
01783 #define yyless(n) \
01784         do \
01785                 { \
01786                 /* Undo effects of setting up yytext. */ \
01787                 *yy_cp = yy_hold_char; \
01788                 yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
01789                 YY_DO_BEFORE_ACTION; /* set up yytext again */ \
01790                 } \
01791         while ( 0 )
01792 
01793 
01794 //struct yy_buffer_state
01795 //{
01796 //  FILE *yy_input_file;
01797 
01798 //  char *yy_ch_buf;                /* input buffer */
01799 //  char *yy_buf_pos;               /* current position in input buffer */
01800 
01801   /* Size of input buffer in bytes, not including room for EOB
01802    * characters.
01803    */
01804 //  int yy_buf_size;
01805 
01806   /* Number of characters read into yy_ch_buf, not including EOB
01807    * characters.
01808    */
01809 //  int yy_n_chars;
01810 
01811   /* Whether this is an "interactive" input source; if so, and
01812    * if we're using stdio for input, then we want to use getc()
01813    * instead of fread(), to make sure we stop fetching input after
01814    * each newline.
01815    */
01816 //  int yy_is_interactive;
01817 
01818   /* Whether to try to fill the input buffer when we reach the
01819    * end of it.
01820    */
01821 //  int yy_fill_buffer;
01822 
01823 //  int yy_buffer_status;
01824 //#define YY_BUFFER_NEW 0
01825 //#define YY_BUFFER_NORMAL 1
01826   /* When an EOF's been seen but there's still some text to process
01827    * then we mark the buffer as YY_EOF_PENDING, to indicate that we
01828    * shouldn't try reading from the input source any more.  We might
01829    * still have a bunch of tokens to match, though, because of
01830    * possible backing-up.
01831    *
01832    * When we actually see the EOF, we change the status to "new"
01833    * (via yyrestart()), so that the user can continue scanning by
01834    * just pointing yyin at a new input file.
01835    */
01836 //#define YY_BUFFER_EOF_PENDING 2
01837 //};
01838 
01839 //static YY_BUFFER_STATE yy_current_buffer = 0;
01840 
01841 /* We provide macros for accessing buffer states in case in the
01842  * future we want to put the buffer states in a more general
01843  * "scanner state".
01844  */
01845 #define YY_CURRENT_BUFFER yy_current_buffer
01846 
01847 
01848 /* yy_hold_char holds the character lost when yytext is formed. */
01849 //static char yy_hold_char;
01850 
01851 //static int yy_n_chars;          /* number of characters read into yy_ch_buf */
01852 
01853 
01854 //int yyleng;
01855 
01856 /* Points to current character in buffer. */
01857 //static char *yy_c_buf_p = (char *) 0;
01858 //static int yy_init = 1;         /* whether we need to initialize */
01859 //static int yy_start = 0;        /* start state number */
01860 
01861 /* Flag which is used to allow yywrap()'s to do buffer switches
01862  * instead of setting up a fresh yyin.  A bit of a hack ...
01863  */
01864 //static int yy_did_buffer_switch_on_eof;
01865 
01866 //void yyrestart YY_PROTO(( FILE *input_file ));
01867 //void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
01868 //void yy_load_buffer_state YY_PROTO(( void ));
01869 //YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
01870 //void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
01871 //void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
01872 
01873 //static void *yy_flex_alloc YY_PROTO(( unsigned int ));
01874 //static void *yy_flex_realloc YY_PROTO(( void *, unsigned int ));
01875 //static void yy_flex_free YY_PROTO(( void * ));
01876 
01877 #define yy_new_buffer yy_create_buffer
01878 
01879 #define INITIAL 0
01880 #define NODE 1
01881 #define SFB 2
01882 #define SFC 3
01883 #define SFF 4
01884 #define SFIMG 5
01885 #define SFI 6
01886 #define SFR 7
01887 #define SFS 8
01888 #define SFT 9
01889 #define SFV2 10
01890 #define SFV3 11
01891 #define MFC 12
01892 #define MFF 13
01893 #define MFI 14
01894 #define MFR 15
01895 #define MFS 16
01896 #define MFV2 17
01897 #define MFV3 18
01898 #define IN_SFS 19
01899 #define IN_MFS 20
01900 #define IN_SFIMG 21
01901 
01902 #define FLEX_DEBUG
01903 //FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
01904 //extern char *yytext;
01905 #define yytext_ptr yytext
01906 
01907 #ifndef yytext_ptr
01908 //static void yy_flex_strncpy YY_PROTO(( char *, const char *, int ));
01909 #endif
01910 
01911 //static yy_state_type yy_get_previous_state YY_PROTO(( void ));
01912 //static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
01913 //static int yy_get_next_buffer YY_PROTO(( void ));
01914 //static void yy_fatal_error YY_PROTO(( const char msg[] ));
01915 
01916 /* Done after the current pattern has been matched and before the
01917  * corresponding action - sets up yytext.
01918  */
01919 #define YY_DO_BEFORE_ACTION \
01920         yytext_ptr = yy_bp; \
01921         yyleng = yy_cp - yy_bp; \
01922         yy_hold_char = *yy_cp; \
01923         *yy_cp = '\0'; \
01924         yy_c_buf_p = yy_cp;
01925 
01926 #define YY_END_OF_BUFFER 50
01927 static const short int yy_accept[949] =
01928 {   0,
01929     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
01930     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
01931     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
01932     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
01933     0,    0,    0,    0,   50,   48,   46,   47,   46,   14,
01934     46,   14,   14,   14,   14,   14,   14,   14,   14,   14,
01935     14,   48,   48,   48,   48,   48,   48,   48,   48,   25,
01936     48,   48,   48,   48,   23,   23,   48,   48,   48,   38,
01937     36,   38,   38,   48,   48,   35,   48,   48,   48,   48,
01938     48,   48,   48,   48,   48,   48,   19,   20,   48,   48,
01939 
01940     26,   17,   48,   24,   24,   18,   48,   48,   48,   39,
01941     37,   39,   39,   48,   48,   48,   48,   48,   48,   41,
01942     41,   42,   41,   41,   43,   48,   45,   45,   46,   47,
01943     46,   47,   47,   46,   46,   46,   46,   14,   14,   14,
01944     7,   14,   14,   14,    6,   14,   14,   14,   14,    0,
01945     15,    0,    0,    0,    0,    0,    0,    0,    0,   25,
01946     25,    0,    0,    0,    0,    0,   23,   23,    0,    0,
01947     0,    0,    0,    0,   38,   38,   38,   15,    0,   35,
01948     35,    0,    0,    0,    0,    0,    0,    0,    0,    0,
01949     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
01950 
01951     16,    0,   26,   26,    0,   24,   24,    0,    0,    0,
01952     0,    0,    0,   39,   39,   39,   16,    0,    0,    0,
01953     0,    0,    0,    0,    0,    0,    0,    0,    0,   41,
01954     41,   41,   41,   41,   41,   40,   45,   45,   47,   47,
01955     47,   46,    4,   14,   14,   14,   14,    5,   14,   14,
01956     14,    0,    0,    0,    0,    0,    0,    0,    0,    0,
01957     0,    0,    0,    0,    0,   25,    0,   44,   44,    0,
01958     0,    0,    0,   44,   44,    0,   23,    0,    0,    0,
01959     0,    0,    0,    0,    0,    0,    0,    0,    0,   35,
01960     0,    0,   27,    0,    0,    0,    0,    0,   27,    0,
01961 
01962     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
01963     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
01964     0,    0,    0,    0,   26,   24,    0,    0,    0,    0,
01965     0,    0,    0,    0,    0,    0,    0,    0,    0,   28,
01966     0,    0,    0,    0,    0,   28,    0,    0,    0,    0,
01967     0,    0,    0,    0,    0,    0,    0,    0,    0,   45,
01968     46,   14,    9,   14,   14,   14,   14,   14,    0,   21,
01969     0,    0,    0,    0,    0,    0,    0,    0,   44,   44,
01970     0,    0,    0,    0,    0,    0,    0,    0,   27,    0,
01971     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
01972 
01973     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
01974     0,    0,    0,    0,    0,   28,    0,    0,    0,    0,
01975     0,    0,    0,    0,    0,    0,   46,   14,    2,    8,
01976     14,   14,   12,   22,    0,    0,   33,    0,    0,    0,
01977     0,    0,   33,    0,    0,    0,    0,   33,    0,    0,
01978     0,   33,    0,    0,    0,    0,    0,   33,    0,    0,
01979     0,   44,   44,   44,   44,    0,    0,    0,    0,    0,
01980     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
01981     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
01982     0,    0,    0,   27,    0,    0,   27,    0,    0,   29,
01983 
01984     0,    0,    0,    0,    0,   29,    0,    0,    0,    0,
01985     29,    0,    0,    0,   29,    0,    0,    0,    0,    0,
01986     29,    0,    0,    0,    0,    0,   34,    0,    0,    0,
01987     0,    0,   34,    0,    0,    0,    0,   34,    0,    0,
01988     0,   34,    0,    0,    0,    0,    0,   34,    0,    0,
01989     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
01990     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
01991     0,    0,    0,    0,    0,    0,    0,    0,    0,   28,
01992     0,    0,   28,    0,    0,   30,    0,    0,    0,    0,
01993     0,   30,    0,    0,    0,    0,   30,    0,    0,    0,
01994 
01995     30,    0,    0,    0,    0,    0,   30,    0,    0,    0,
01996     46,   14,   14,   14,   14,   33,    0,    0,   33,    0,
01997     33,    0,    0,    0,    0,    0,    0,    0,    0,    0,
01998     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
01999     0,    0,   29,    0,    0,   29,    0,   29,    0,    0,
02000     34,    0,    0,   34,    0,   34,    0,    0,    0,    0,
02001     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
02002     0,    0,    0,    0,    0,    0,    0,   30,    0,    0,
02003     30,    0,   30,    0,    0,   46,   14,   10,   14,   14,
02004     0,   33,    0,    0,   33,    0,    0,   33,    0,   33,
02005 
02006     0,    0,   33,    0,    0,   31,    0,    0,    0,    0,
02007     0,   31,    0,    0,    0,    0,   31,    0,    0,   31,
02008     0,    0,    0,    0,    0,   31,    0,    0,    0,    0,
02009     0,   31,    0,    0,    0,   31,    0,    0,    0,    0,
02010     0,   31,    0,    0,    0,    0,    0,    0,    0,   31,
02011     0,    0,    0,    0,   29,    0,    0,   29,    0,    0,
02012     29,    0,   29,    0,    0,   29,    0,   34,    0,    0,
02013     34,    0,    0,   34,    0,   34,    0,    0,   34,    0,
02014     0,   32,    0,    0,    0,    0,    0,   32,    0,    0,
02015     0,    0,   32,    0,    0,   32,    0,    0,    0,    0,
02016 
02017     0,   32,    0,    0,    0,    0,    0,   32,    0,    0,
02018     0,   32,    0,    0,    0,    0,    0,   32,    0,    0,
02019     0,    0,    0,    0,    0,   32,    0,    0,    0,    0,
02020     30,    0,    0,   30,    0,    0,   30,    0,   30,    0,
02021     0,   30,   46,   14,   11,   14,   31,    0,    0,   31,
02022     0,   31,    0,    0,   31,    0,   31,    0,    0,   31,
02023     0,   32,    0,    0,   32,    0,   32,    0,    0,   32,
02024     0,   32,    0,    0,   32,    0,   46,   14,   14,    0,
02025     31,    0,    0,   31,    0,    0,   31,    0,   31,    0,
02026     0,   31,    0,    0,   31,    0,   31,    0,    0,   31,
02027 
02028     0,    0,   31,    0,   32,    0,    0,   32,    0,    0,
02029     32,    0,   32,    0,    0,   32,    0,    0,   32,    0,
02030     32,    0,    0,   32,    0,    0,   32,   46,   14,   14,
02031     46,    3,   14,   46,   13,   46,   46,   46,   46,   46,
02032     1,   46,    1,    1,    1,    1,    1,    0
02033 } ;
02034 
02035 static const int yy_ec[256] =
02036 {   0,
02037     1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
02038     1,    1,    2,    1,    1,    1,    1,    1,    1,    1,
02039     1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
02040     1,    4,    5,    6,    7,    5,    5,    5,    1,    5,
02041     5,    5,    8,    2,    9,   10,    5,   11,   12,   13,
02042     12,   12,   12,   12,   12,   14,   12,    5,    5,    5,
02043     5,    5,    5,    5,   15,   16,   16,   17,   18,   19,
02044     5,    5,   20,    5,    5,   21,   22,   23,   24,   25,
02045     5,   26,   27,   28,   29,   30,    5,   31,    5,    5,
02046     32,   33,   34,    5,    5,    5,   16,   16,   16,   35,
02047 
02048     36,   37,    5,    5,   38,    5,    5,   39,    5,   40,
02049     41,   42,    5,    5,   43,   44,   45,   46,    5,   47,
02050     5,    5,    1,    5,    1,    5,    5,    5,    5,    5,
02051     5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
02052     5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
02053     5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
02054     5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
02055     5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
02056     5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
02057     5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
02058 
02059     5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
02060     5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
02061     5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
02062     5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
02063     5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
02064     5,    5,    5,    5,    5
02065 } ;
02066 
02067 static const int yy_meta[48] =
02068 {   0,
02069     1,    2,    3,    2,    4,    5,    6,    4,    4,    1,
02070     7,    7,    7,    7,    7,    7,    7,    7,    7,    4,
02071     4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
02072     4,    8,    1,    8,    7,    7,    7,    4,    4,    4,
02073     4,    4,    4,    4,    4,    4,    4
02074 } ;
02075 
02076 static const short int yy_base[1090] =
02077 {   0,
02078     0,    6,   13,    0,   59,   65,   92,    0,  104,  110,
02079     116,  122,  128,  134,  140,  146,  159,  165,  164,  177,
02080     183,  189,  195,  201,  207,  233,  259,  285,  311,  337,
02081     363,  389,  422,  455,  481,  507,  533,  559,  222,  228,
02082     256,  274,  324,  350,  787, 7663,   73,   79,  280,    0,
02083     247,  768,  753,  751,  745,  726,  725,  719,  715,   18,
02084     685,  702,  687,  682,   78,   96,  592,  170,  289,  368,
02085     300,  627,   51,  315,  380,  328,  342,  354,  673,    0,
02086     7663,  410,  677,  420,  376,  427,  436,  394,  708,  454,
02087     458,  743,  466,  470,  778,  676, 7663, 7663,  486,  491,
02088 
02089     496, 7663,  511,  517,  522, 7663,  544,  538,  813,    0,
02090     7663,  579,  665,  549,  563,  848,  604,  576,  883,    0,
02091     605, 7663,  617,  672, 7663,  631,  635,  639,  652,  302,
02092     658,  665,  666,  686,  692,  698,  725,    0,  652,  636,
02093     0,  636,  613,  607,    0,  617,  597,  590,  591,  605,
02094     7663,  596,  722,    0,  727,  918,  931,  751,  755,  792,
02095     759,  821,    0,  944,  957,  805,  786,    0,  825,    0,
02096     830,  970,  983,  856,    0,  869,  875,    0,  834,  900,
02097     987,  891,  895,    0,  996, 1022, 1035, 1003, 1007,    0,
02098     1040, 1053, 1066, 1073, 1077,    0, 1082, 1095, 1108, 1115,
02099 
02100     7663, 1119, 1124, 1132, 1140, 1144,    0, 1150,    0, 1159,
02101     1172, 1185, 1192,    0, 1205, 1211,    0, 1208,    0, 1213,
02102     1244, 1257, 1220, 1261, 1274, 1283, 1309, 1322, 1290,    0,
02103     1335, 1341, 1347, 1353, 1359, 7663, 1294,    0, 1234, 1365,
02104     1366, 1372,    0,  604,  580,  572,  569,    0,  552,  537,
02105     501,  511,  519, 1370, 1374, 1393, 1428, 1441,    0,    0,
02106     0, 1410, 1378, 1454, 1407, 1411, 1458, 1462, 1466, 1508,
02107     1521, 1534, 1547, 1560,  191, 1479,    0, 1477, 1483, 1606,
02108     1641, 1654,    0,    0,    0, 1575, 1487, 1667, 1491, 1572,
02109     1584, 1576, 1623, 1680,    0,    0,    0,    0,  230, 1588,
02110 
02111     1693, 1615, 1592, 1706, 1741,    0,    0,    0,    0, 1723,
02112     1720, 1758, 1725, 1762, 1775, 1810,    0,    0,    0,    0,
02113     1792, 1789, 1827, 1793, 1831,    0, 1836, 1840, 1853, 1888,
02114     0,    0,    0,    0, 1870, 1867, 1905, 1872, 1909, 1914,
02115     1949,    0,    0,    0,    0,  238, 1922, 1962, 1927, 1931,
02116     1975, 2010,    0,    0,    0,    0, 1992, 1935, 2027,    0,
02117     2040,  500,    0,  488,  493,  444,  443,  450,  456, 7663,
02118     1990, 2060, 2073, 2037, 2086, 2099, 2112, 2044,    0, 2116,
02119     1995, 2162, 2175, 2128, 2188, 2201, 2214, 2227, 2132, 2146,
02120     2240, 2253, 2288, 2301, 2261, 2314, 2327, 2340, 2353, 2366,
02121 
02122     2401, 2414, 2268, 2427, 2440, 2453, 2466, 2479, 2514, 2527,
02123     2374, 2540, 2553, 2566, 2579, 2383, 2487, 2592, 2605, 2640,
02124     2653, 2494, 2666, 2679, 2692, 2705, 2281,  437,    0,    0,
02125     50,  386,    0, 7663, 2379, 2498, 2622, 2718, 2731,    0,
02126     0,    0,  239, 2613, 2744, 2757, 2770, 2783, 2818, 2792,
02127     2617, 2831, 2866,    0,    0,    0,    0,  272, 2796, 2800,
02128     2845,    0, 2881,  205,  285, 2840, 2804, 2927, 2962, 2975,
02129     0,    0,    0, 2944, 2941, 2988, 3001, 3014, 3027, 3062,
02130     2946, 3035, 3075, 3110,    0,    0,    0,    0, 3092, 3039,
02131     3043, 3127, 3047, 3089, 3162, 3175,  400, 3094, 3135, 3144,
02132 
02133     3188, 3201,    0,    0,    0,  417, 3139, 3214, 3227, 3240,
02134     3253, 3288, 3262, 3266, 3301, 3336,    0,    0,    0,    0,
02135     437, 3270, 3274, 3315, 3310, 3341, 3346, 3381, 3394,    0,
02136     0,    0,  548, 3354, 3407, 3420, 3433, 3446, 3481, 3359,
02137     3363, 3494, 3529,    0,    0,    0,    0,  562, 3367, 3454,
02138     3463, 3503, 3458, 3542, 3577, 3590,    0,    0,    0, 3559,
02139     3507, 3603, 3616, 3629, 3642, 3677, 3512, 3556, 3690, 3725,
02140     0,    0,    0,    0, 3659, 3560, 3656, 3738, 3660, 3698,
02141     3773, 3786,  645, 3703, 3707, 3755, 3799, 3812,    0,    0,
02142     0,  661, 3711, 3825, 3838, 3851, 3864, 3899, 3747, 3872,
02143 
02144     3912, 3947,    0,    0,    0,    0,  680, 3876, 3880, 3926,
02145     3925,  390,  370,  351,  323, 3952, 3960, 3987, 4000, 4035,
02146     4048, 3967, 4083, 4096, 4131, 4144, 4008, 4157, 4170, 4183,
02147     4196, 4209, 4244, 4257, 4270, 4283, 4296, 4331, 4015, 4344,
02148     4357, 4370, 4065, 4056, 4383, 4396, 4431, 4444, 4104, 4479,
02149     4113, 4217, 4492, 4505, 4540, 4553, 4224, 4588, 4601, 4636,
02150     4649, 4304, 4662, 4675, 4688, 4701, 4714, 4749, 4762, 4775,
02151     4788, 4801, 4836, 4311, 4849, 4862, 4875, 4413, 4404, 4888,
02152     4901, 4936, 4949, 4452, 4984, 2858,  304,    0,  274,  296,
02153     3884, 3971, 4997, 5010,  688, 5023, 5036, 4522, 4019, 5049,
02154 
02155     5062, 5075,  689, 4061, 4108, 4461, 5088, 5101,    0,    0,
02156     0,  695, 4228, 5114, 5127, 5140, 5153, 4316, 4408, 5188,
02157     5223, 5236,    0,    0,    0,  712, 4456, 4519, 4570, 5249,
02158     5262, 5275, 5310, 4524, 4561, 5323, 5358,    0,    0,    0,
02159     0,  740, 4565, 4609, 4618, 4613, 5371, 5384, 5397, 5410,
02160     4722, 4726, 4731, 4809, 4813, 5445, 5458,  757, 5471, 5484,
02161     4918, 4817, 5497, 5510, 5523,  765, 4821, 4915, 5536, 5549,
02162     838, 5562, 5575, 4966, 4919, 5588, 5601, 5614,  862, 4964,
02163     4968, 5167, 5627, 5640,    0,    0,    0,  931, 5161, 5653,
02164     5666, 5679, 5692, 5197, 5201, 5727, 5762, 5775,    0,    0,
02165 
02166     0,  986, 5205, 5209, 5292, 5788, 5801, 5814, 5849, 5284,
02167     5331, 5862, 5897,    0,    0,    0,    0, 1022, 5335, 5339,
02168     5427, 5343, 5910, 5923, 5936, 5949, 5418, 5422, 5706, 5700,
02169     5735, 5984, 5997, 1023, 6010, 6023, 5831, 5739, 6036, 6049,
02170     6062, 1025, 5752,  268,    0,  250, 5879, 5828, 6075, 6088,
02171     6123, 6136, 5870, 6171, 6184, 6219, 6232, 5957, 6267, 6280,
02172     6315, 5966, 6096, 6103, 5833, 6144, 5875, 6151, 6192, 5962,
02173     6199, 6108, 6240, 6247, 6156, 6288, 6301,  236,  204, 6203,
02174     6251, 6328,    0, 1065,    3,  277, 6341, 6340, 6376, 6389,
02175     0, 1123,  376,  411, 6402, 6344, 6437, 6450,    0, 1129,
02176 
02177     435,  443, 6463, 6349, 6353, 6357, 6361, 6401, 6410, 6414,
02178     6464, 6418, 6499, 6422, 6472, 6478, 6504, 6508, 6513, 6521,
02179     6525, 6529, 6533, 6539, 6547, 6551, 6556, 3328,  213,  194,
02180     6569,    0,  188, 6575,    0, 6491, 3939, 5180, 5719, 6307,
02181     6579, 6586, 6592, 6593, 6599, 6600, 6606, 7663, 6619, 6627,
02182     6635, 6643, 6651, 6656, 6663, 6671, 6679, 6686, 6694, 6702,
02183     6710, 6718, 6726, 6733,  163, 6740, 6748, 6756, 6764,  157,
02184     6772, 6780, 6788, 6796, 6804,  104, 6812, 6820, 6825, 6832,
02185     6840, 6847,   93, 6854,   90, 6862, 6870,   66, 6878, 6886,
02186     6894, 6902, 6910, 6918, 6926, 6934, 6942, 6950, 6958, 6966,
02187 
02188     6974, 6982, 6990, 6998, 7006, 7011, 7018, 7026, 7034,   64,
02189     7042, 7050, 7058, 7066, 7074, 7082, 7090, 7098, 7106, 7114,
02190     7122, 7130, 7138, 7146, 7154, 7162, 7170, 7178, 7183, 7190,
02191     7198, 7206, 7214, 7222, 7230, 7238, 7246, 7254, 7262, 7270,
02192     7278, 7286, 7294, 7302, 7310, 7318, 7326, 7334, 7342, 7350,
02193     7358, 7366, 7374, 7382, 7387, 7394, 7402, 7410, 7418, 7426,
02194     7434, 7442, 7450, 7458, 7466, 7474, 7482, 7490, 7498, 7506,
02195     7514, 7522, 7530, 7538, 7546, 7554, 7562, 7570, 7578, 7586,
02196     7591, 7598, 7606, 7614, 7622, 7630, 7638, 7646, 7654
02197 } ;
02198 
02199 static const short int yy_def[1090] =
02200 {   0,
02201     949,  949,  948,    3,  949,  949,  949,    7,    7,    7,
02202     7,    7,    7,    7,    7,    7,  950,  950,    7,    7,
02203     7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
02204     7,    7,  951,  951,    7,    7,    7,    7,  952,  952,
02205     952,  952,    7,    7,  948,  948,  948,  948,  953,  954,
02206     953,  954,  954,  954,  954,  954,  954,  954,  954,  954,
02207     954,  948,  948,  948,  948,  948,  948,  948,  948,  948,
02208     948,  948,   72,  948,  948,  948,  948,  948,  948,  955,
02209     948,  956,  955,  948,  948,  948,  948,  948,  948,  948,
02210     948,  948,  948,  948,  948,  948,  948,  948,  948,  948,
02211 
02212     948,  948,  948,  948,  948,  948,  948,  948,  948,  957,
02213     948,  958,  957,  948,  948,  948,  948,  948,  948,  959,
02214     959,  948,  960,  959,  948,  948,  948,  948,  948,  948,
02215     953,  948,  961,  953,  953,  953,  953,  954,  954,  954,
02216     954,  954,  954,  954,  954,  954,  954,  954,  954,  948,
02217     948,  948,  948,   67,   67,  948,  962,  948,  948,  948,
02218     948,  948,   73,  948,  963,  964,  948,  965,  948,   79,
02219     79,  948,  966,  948,  955,  956,  956,  955,  948,  948,
02220     948,  948,  948,   89,   89,  948,  967,  948,  948,   92,
02221     92,  948,  968,  948,  948,   95,   95,  948,  969,  948,
02222 
02223     948,  948,  948,  948,  948,  948,  970,  948,  109,  109,
02224     948,  971,  948,  957,  958,  958,  957,  948,  116,  116,
02225     948,  972,  948,  948,  948,  225,  948,  973,  948,  974,
02226     974,  975,  975,  975,  975,  948,  948,  976,  977,  977,
02227     977,  978,  979,  979,  979,  979,  979,  979,  979,  979,
02228     979,  948,  948,  948,  948,  948,  980,  980,  258,  258,
02229     258,  258,  948,  948,  948,  948,  948,  948,  948,  981,
02230     981,  981,  981,  981,  274,  982,  983,  948,  948,  948,
02231     984,  984,  282,  282,  282,  282,  948,  948,  948,  948,
02232     948,  948,  948,  967,  294,  294,  294,  294,  294,  948,
02233 
02234     948,  948,  948,  948,  968,  305,  305,  305,  305,  305,
02235     948,  948,  948,  948,  948,  969,  316,  316,  316,  316,
02236     316,  948,  948,  948,  948,  985,  948,  948,  948,  971,
02237     330,  330,  330,  330,  330,  948,  948,  948,  948,  948,
02238     972,  341,  341,  341,  341,  341,  948,  948,  948,  948,
02239     948,  973,  352,  352,  352,  352,  352,  948,  948,  976,
02240     978,  979,  979,  979,  979,  979,  979,  979,  948,  948,
02241     256,  948,  986,  948,  258,  948,  987,  258,  988,  274,
02242     280,  948,  989,  948,  282,  948,  990,  385,  948,  948,
02243     991,  948,  948,  992,  948,  993,  948,  994,  993,  948,
02244 
02245     948,  995,  948,  996,  948,  997,  996,  948,  948,  998,
02246     948,  999,  948, 1000,  999,  948,  948, 1001,  948,  948,
02247     1002,  948, 1003,  948, 1004, 1003, 1005, 1006, 1006, 1006,
02248     1006, 1006, 1006,  948,  948,  948,  948, 1007, 1007,  439,
02249     439,  439,  439,  948,  948, 1008, 1008,  447, 1009,  948,
02250     948,  948, 1009,  453,  453,  453,  453,  453,  447,  447,
02251     448, 1010,  948,  463,  463,  948,  948,  948, 1011, 1011,
02252     470,  470,  470,  470,  948,  948, 1012, 1012,  478, 1013,
02253     948,  948,  948, 1013,  484,  484,  484,  484,  484,  478,
02254     478,  478,  948,  948, 1014, 1014,  496,  948,  948,  948,
02255 
02256     1015, 1015,  502,  502,  502,  502,  948,  948, 1016, 1016,
02257     510, 1017,  948,  948,  948, 1017,  516,  516,  516,  516,
02258     516,  510,  510,  511,  948,  948,  948, 1018, 1018,  529,
02259     529,  529,  529,  948,  948, 1019, 1019,  537, 1020,  948,
02260     948,  948, 1020,  543,  543,  543,  543,  543,  537,  537,
02261     538,  948,  948,  948, 1021, 1021,  556,  556,  556,  556,
02262     948,  948, 1022, 1022,  564, 1023,  948,  948,  948, 1023,
02263     570,  570,  570,  570,  570,  564,  564,  564,  948,  948,
02264     1024, 1024,  582,  948,  948,  948, 1025, 1025,  588,  588,
02265     588,  588,  948,  948, 1026, 1026,  596, 1027,  948,  948,
02266 
02267     948, 1027,  602,  602,  602,  602,  602,  596,  596,  597,
02268     1028, 1029, 1029, 1029, 1029,  948,  948, 1030, 1031, 1031,
02269     948,  948, 1032,  948,  948, 1033,  948, 1034,  948, 1035,
02270     1034, 1036, 1036,  948, 1037, 1036,  948, 1035,  948, 1038,
02271     1037, 1038,  948,  948, 1039, 1040, 1040,  948,  948, 1041,
02272     948,  948, 1042, 1043, 1043,  948,  948, 1044,  948,  948,
02273     1045,  948, 1046,  948, 1047, 1046, 1048, 1048,  948, 1049,
02274     1048,  948, 1047,  948, 1050, 1049, 1050,  948,  948, 1051,
02275     1052, 1052,  948,  948, 1053, 1054, 1055, 1055, 1055, 1055,
02276     948,  948, 1056, 1056,  694, 1057, 1057,  697,  948,  948,
02277 
02278     1058, 1058,  702,  948,  948,  948, 1059, 1059,  708,  708,
02279     708,  708,  948,  948, 1060, 1060,  716,  948,  948,  948,
02280     1061, 1061,  722,  722,  722,  722,  716,  716,  717, 1062,
02281     1062,  731, 1063,  948,  948,  948, 1063,  737,  737,  737,
02282     737,  737,  731,  731,  732,  948,  948, 1064, 1064,  749,
02283     749,  749,  750,  948,  948, 1065, 1065,  757, 1066, 1066,
02284     760,  948,  948, 1067, 1067,  765,  948,  948, 1068, 1068,
02285     770, 1069, 1069,  773,  948,  948, 1070, 1070,  778,  948,
02286     948,  948, 1071, 1071,  784,  784,  784,  784,  948,  948,
02287     1072, 1072,  792,  948,  948,  948, 1073, 1073,  798,  798,
02288 
02289     798,  798,  792,  792,  793, 1074, 1074,  807, 1075,  948,
02290     948,  948, 1075,  813,  813,  813,  813,  813,  807,  807,
02291     808,  948,  948, 1076, 1076,  825,  825,  825,  826,  948,
02292     948, 1077, 1077,  833, 1078, 1078,  836,  948,  948, 1079,
02293     1079,  841, 1080, 1081, 1081, 1081,  948,  948, 1082, 1083,
02294     1083,  948,  948, 1084, 1085, 1085,  948,  948, 1086, 1087,
02295     1087,  948,  948,  784,  793,  792,  796,  948,  798,  808,
02296     807,  812,  948,  813,  826,  825, 1080, 1081, 1081,  948,
02297     948, 1082,  882,  882,  851,  851,  851,  948,  948, 1084,
02298     890,  890,  856,  856,  856,  948,  948, 1086,  898,  898,
02299 
02300     861,  861,  861,  948,  948,  784,  784,  784,  792,  792,
02301     793,  948,  948,  798,  798,  798,  807,  807,  808,  948,
02302     823,  813,  813,  813,  825,  825,  826, 1080, 1081, 1081,
02303     1080, 1081, 1081, 1080, 1081, 1080, 1080, 1088, 1088, 1088,
02304     948, 1088,  948, 1089, 1089, 1089, 1089,    0,  948,  948,
02305     948,  948,  948,  948,  948,  948,  948,  948,  948,  948,
02306     948,  948,  948,  948,  948,  948,  948,  948,  948,  948,
02307     948,  948,  948,  948,  948,  948,  948,  948,  948,  948,
02308     948,  948,  948,  948,  948,  948,  948,  948,  948,  948,
02309     948,  948,  948,  948,  948,  948,  948,  948,  948,  948,
02310 
02311     948,  948,  948,  948,  948,  948,  948,  948,  948,  948,
02312     948,  948,  948,  948,  948,  948,  948,  948,  948,  948,
02313     948,  948,  948,  948,  948,  948,  948,  948,  948,  948,
02314     948,  948,  948,  948,  948,  948,  948,  948,  948,  948,
02315     948,  948,  948,  948,  948,  948,  948,  948,  948,  948,
02316     948,  948,  948,  948,  948,  948,  948,  948,  948,  948,
02317     948,  948,  948,  948,  948,  948,  948,  948,  948,  948,
02318     948,  948,  948,  948,  948,  948,  948,  948,  948,  948,
02319     948,  948,  948,  948,  948,  948,  948,  948,  948
02320 } ;
02321 
02322 static const short int yy_nxt[7711] =
02323 {   0,
02324     948,   47,   48,   47,  948,  948,   49,   47,   48,   47,
02325     469,  472,   49,   46,   47,   48,   47,   50,   46,   51,
02326     46,   46,   46,   46,   46,   46,   46,   50,   50,   52,
02327     53,   50,   54,   50,   50,   55,   50,   56,   57,   50,
02328     58,   59,   50,   50,   46,   46,   46,   50,   60,   61,
02329     50,   50,   50,   50,   50,   50,   50,   50,   50,   50,
02330     47,   48,   47,  147,  148,   51,   47,   48,   47,  613,
02331     462,   51,  462,  614,  129,  130,  129,   62,   63,  131,
02332     132,  948,  132,   62,   63,  133,   64,  153,  154,  154,
02333     154,  154,   64,   47,   48,   47,  326,  948,   51,  277,
02334 
02335     65,   66,   67,   67,   67,   67,  155,  155,  155,  155,
02336     360,   63,   68,   69,   70,   70,   70,   70,   68,   69,
02337     70,   70,   70,   70,   71,   46,   72,   73,   73,   73,
02338     71,   46,   72,   73,   73,   73,   74,   46,   75,   76,
02339     76,   76,   74,   46,   75,   76,   76,   76,   77,   78,
02340     79,   79,   79,   79,   77,   78,   79,   79,   79,   79,
02341     47,   48,   47,  326,   81,   82,   47,   48,   47,  277,
02342     81,   82,   84,   85,   86,   86,   86,   86,   83,  159,
02343     160,  160,  160,  160,   83,   84,   85,   86,   86,   86,
02344     86,   87,   88,   89,   89,   89,   89,   87,   88,   89,
02345 
02346     89,   89,   89,   90,   91,   92,   92,   92,   92,   90,
02347     91,   92,   92,   92,   92,   93,   94,   95,   95,   95,
02348     95,  270,  935,  121,   48,  121,   96,  122,  123,  121,
02349     48,  121,  933,  122,  123,  270,  932,  270,   97,  930,
02350     98,   93,   94,   95,   95,   95,   95,  391,  135,  130,
02351     135,  270,   96,  136,  124,  418,  618,  121,   48,  121,
02352     124,  125,  123,  929,   97,  391,   98,   99,  100,  101,
02353     101,  101,  101,  418,  618,  121,   48,  121,   96,  125,
02354     123,  135,  130,  135,  469,  472,  136,  879,  124,  623,
02355     102,  878,   98,   99,  100,  101,  101,  101,  101,  161,
02356 
02357     161,  161,  161,  132,   96,  132,  124,  623,  133,  137,
02358     163,  163,  163,  163,  846,  270,  102,  845,   98,  103,
02359     46,  104,  105,  105,  105,  167,  167,  167,  167,  844,
02360     96,  270,  126,   46,  127,  128,  128,  128,  167,  167,
02361     167,  167,  106,   46,   98,  103,   46,  104,  105,  105,
02362     105,  169,  170,  170,  170,  170,   96,  690,  126,   46,
02363     127,  128,  128,  128,  171,  171,  171,  171,  106,   46,
02364     98,  107,  108,  109,  109,  109,  109,  159,  160,  160,
02365     160,  160,   96,  281,  284,  162,  181,  181,  181,  181,
02366     167,  167,  167,  167,  102,  689,   98,  107,  108,  109,
02367 
02368     109,  109,  109,  162,  185,  185,  185,  185,   96,  688,
02369     168,  135,  130,  135,  687,  134,  177,  391,  281,  284,
02370     102,  615,   98,   47,   48,   47,  168,  111,  112,  179,
02371     180,  180,  180,  180,  645,  391,  179,  180,  180,  180,
02372     180,  113,  484,  487,  182,  183,  184,  184,  184,  184,
02373     484,  487,  645,  102,  650,   98,   47,   48,   47,  612,
02374     111,  112,  182,  189,  190,  190,  190,  190,  191,  191,
02375     191,  191,  650,  434,  113,  195,  196,  196,  196,  196,
02376     197,  197,  197,  197,  433,  432,  102,  431,   98,  114,
02377     115,  116,  116,  116,  116,  202,  203,  203,  203,  203,
02378 
02379     96,  204,  204,  204,  204,  202,  203,  203,  203,  203,
02380     430,  429,  102,  205,   98,  114,  115,  116,  116,  116,
02381     116,  206,  206,  206,  206,  428,   96,  206,  206,  206,
02382     206,  205,  206,  206,  206,  206,  370,  369,  102,  368,
02383     98,  117,  118,  119,  119,  119,  119,  207,  210,  210,
02384     210,  210,   96,  208,  209,  209,  209,  209,  218,  219,
02385     219,  219,  219,  207,   97,  653,   98,  117,  118,  119,
02386     119,  119,  119,  220,  220,  220,  220,  367,   96,  658,
02387     135,  130,  135,  653,  134,  216,  226,  226,  226,  226,
02388     97,  366,   98,  156,  156,  156,  365,  658,  157,  364,
02389 
02390     363,  153,  154,  154,  154,  154,  231,  130,  231,  158,
02391     134,  232,  134,  224,  225,  225,  225,  225,  234,  130,
02392     234,  362,  134,  235,  253,  252,  251,  158,  164,  164,
02393     164,  250,  249,  165,  248,  247,  246,  163,  163,  163,
02394     163,  237,  237,  237,  237,  237,  237,  237,  237,  237,
02395     237,  237,  237,  129,  130,  129,  245,  166,  131,  135,
02396     130,  135,  418,  244,  136,  238,  132,  240,  132,  240,
02397     243,  133,  241,  166,  172,  172,  172,  236,  680,  173,
02398     418,  238,  169,  170,  170,  170,  170,  135,  130,  135,
02399     174,  217,  136,  135,  130,  135,  680,  685,  136,  135,
02400 
02401     130,  135,  201,  178,  136,  618,  623,  152,  174,  186,
02402     186,  186,  849,  151,  187,  685,  150,  183,  184,  184,
02403     184,  184,  149,  618,  623,  188,  135,  130,  135,  854,
02404     849,  136,  155,  155,  155,  155,  948,  155,  155,  155,
02405     155,  146,  145,  188,  192,  192,  192,  854,  144,  193,
02406     242,  143,  189,  190,  190,  190,  190,  859,  263,  263,
02407     194,  264,  264,  264,  264,  161,  161,  161,  161,  161,
02408     161,  161,  161,  142,  645,  859,  162,  141,  194,  198,
02409     198,  198,  650,  140,  199,  139,  948,  195,  196,  196,
02410     196,  196,  645,  948,  162,  200,  167,  167,  167,  167,
02411 
02412     650,  159,  160,  160,  160,  160,  164,  164,  164,  162,
02413     948,  165,  948,  200,  211,  211,  211,  948,  948,  212,
02414     948,  948,  208,  209,  209,  209,  209,  162,  265,  265,
02415     213,  266,  266,  266,  266,  171,  171,  171,  171,  948,
02416     171,  171,  171,  171,  181,  181,  181,  181,  213,  221,
02417     221,  221,  948,  948,  222,  653,  948,  218,  219,  219,
02418     219,  219,  948,  287,  287,  223,  288,  288,  288,  288,
02419     135,  130,  135,  653,  134,  177,  135,  130,  135,  658,
02420     134,  177,  948,  223,  227,  227,  227,  948,  948,  228,
02421     948,  948,  224,  225,  225,  225,  225,  658,  289,  289,
02422 
02423     229,  290,  290,  290,  290,  185,  185,  185,  185,  179,
02424     180,  180,  180,  180,  948,  948,  948,  182,  229,  156,
02425     156,  156,  948,  948,  157,  948,  254,  255,  256,  256,
02426     256,  256,  258,  156,  258,  182,  948,  259,  948,  260,
02427     261,  262,  262,  262,  262,  164,  164,  164,  864,  948,
02428     165,  948,  267,  948,  268,  269,  269,  269,  271,  164,
02429     271,  948,  948,  272,  948,  273,  864,  274,  275,  275,
02430     275,  172,  172,  172,  948,  948,  173,  948,  278,  279,
02431     280,  280,  280,  280,  282,  172,  282,  948,  948,  283,
02432     948,  284,  285,  286,  286,  286,  286,  181,  181,  181,
02433 
02434     181,  948,  948,  869,  182,  948,  185,  185,  185,  185,
02435     300,  300,  948,  301,  301,  301,  301,  191,  191,  191,
02436     191,  869,  182,  186,  186,  186,  948,  948,  187,  948,
02437     291,  292,  293,  293,  293,  293,  295,  186,  295,  874,
02438     680,  296,  685,  297,  298,  299,  299,  299,  299,  948,
02439     191,  191,  191,  191,  192,  192,  192,  874,  680,  193,
02440     685,  302,  303,  304,  304,  304,  304,  306,  192,  306,
02441     948,  948,  307,  948,  308,  309,  310,  310,  310,  310,
02442     311,  311,  849,  312,  312,  312,  312,  197,  197,  197,
02443     197,  948,  197,  197,  197,  197,  198,  198,  198,  948,
02444 
02445     849,  199,  948,  313,  314,  315,  315,  315,  315,  317,
02446     198,  317,  948,  948,  318,  948,  319,  320,  321,  321,
02447     321,  321,  322,  322,  948,  323,  323,  323,  323,  204,
02448     204,  204,  204,  202,  203,  203,  203,  203,  948,  948,
02449     854,  205,  204,  204,  204,  204,  859,  324,  324,  205,
02450     325,  325,  325,  325,  206,  206,  206,  206,  854,  205,
02451     210,  210,  210,  210,  859,  948,  948,  205,  948,  210,
02452     210,  210,  210,  211,  211,  211,  948,  948,  212,  948,
02453     327,  328,  329,  329,  329,  329,  331,  211,  331,  948,
02454     948,  332,  948,  333,  334,  335,  335,  335,  335,  336,
02455 
02456     336,  948,  337,  337,  337,  337,  135,  130,  135,  948,
02457     134,  216,  135,  130,  135,  948,  134,  216,  220,  220,
02458     220,  220,  948,  220,  220,  220,  220,  347,  347,  948,
02459     348,  348,  348,  348,  948,  240,  134,  240,  134,  948,
02460     241,  948,  134,  948,  134,  221,  221,  221,  948,  948,
02461     222,  948,  338,  339,  340,  340,  340,  340,  342,  221,
02462     342,  948,  948,  343,  948,  344,  345,  346,  346,  346,
02463     346,  226,  226,  226,  226,  227,  227,  227,  948,  948,
02464     228,  948,  948,  224,  225,  225,  225,  225,  948,  948,
02465     948,  229,  948,  226,  226,  226,  226,  358,  358,  948,
02466 
02467     359,  359,  359,  359,  237,  237,  237,  237,  948,  229,
02468     227,  227,  227,  948,  948,  228,  948,  349,  350,  351,
02469     351,  351,  351,  353,  227,  353,  948,  948,  354,  948,
02470     355,  356,  357,  357,  357,  357,  231,  130,  231,  948,
02471     948,  232,  234,  130,  234,  948,  134,  235,  234,  130,
02472     234,  948,  134,  235,  234,  130,  234,  948,  134,  235,
02473     234,  130,  234,  948,  134,  235,  240,  240,  240,  240,
02474     948,  241,  241,  135,  130,  135,  948,  948,  136,  255,
02475     256,  256,  256,  256,  371,  371,  371,  371,  264,  264,
02476     264,  264,  948,  361,  372,  372,  372,  948,  948,  373,
02477 
02478     948,  948,  255,  256,  256,  256,  256,  948,  948,  948,
02479     374,  375,  376,  375,  948,  948,  377,  266,  266,  266,
02480     266,  266,  266,  266,  266,  948,  948,  378,  374,  258,
02481     156,  258,  948,  948,  259,  948,  260,  261,  262,  262,
02482     262,  262,  258,  156,  258,  378,  948,  259,  948,  260,
02483     261,  262,  262,  262,  262,  156,  156,  156,  948,  948,
02484     157,  948,  948,  948,  264,  264,  264,  264,  269,  269,
02485     269,  269,  269,  269,  269,  269,  269,  269,  269,  269,
02486     164,  164,  164,  948,  948,  165,  279,  280,  280,  280,
02487     280,  948,  379,  381,  381,  381,  381,  288,  288,  288,
02488 
02489     288,  290,  290,  290,  290,  948,  948,  948,  379,  271,
02490     164,  271,  948,  948,  272,  948,  273,  948,  274,  275,
02491     275,  275,  271,  164,  271,  948,  948,  272,  948,  273,
02492     948,  274,  275,  275,  275,  271,  164,  271,  948,  948,
02493     272,  948,  273,  948,  274,  275,  275,  275,  271,  164,
02494     271,  948,  948,  272,  948,  273,  948,  274,  275,  275,
02495     275,  271,  164,  271,  948,  948,  272,  948,  273,  948,
02496     274,  275,  275,  275,  948,  948,  385,  386,  385,  948,
02497     948,  387,  290,  290,  290,  290,  389,  389,  389,  389,
02498     380,  948,  388,  292,  293,  293,  293,  293,  301,  301,
02499 
02500     301,  301,  392,  392,  392,  392,  380,  382,  382,  382,
02501     388,  948,  383,  948,  948,  279,  280,  280,  280,  280,
02502     948,  948,  948,  384,  303,  304,  304,  304,  304,  948,
02503     948,  948,  292,  293,  293,  293,  293,  948,  948,  948,
02504     390,  384,  282,  172,  282,  948,  948,  283,  948,  284,
02505     285,  286,  286,  286,  286,  282,  172,  282,  390,  948,
02506     283,  948,  284,  285,  286,  286,  286,  286,  172,  172,
02507     172,  948,  948,  173,  948,  948,  948,  288,  288,  288,
02508     288,  295,  186,  295,  948,  948,  296,  948,  297,  298,
02509     299,  299,  299,  299,  186,  186,  186,  948,  948,  187,
02510 
02511     948,  948,  948,  301,  301,  301,  301,  393,  393,  393,
02512     948,  948,  394,  948,  948,  303,  304,  304,  304,  304,
02513     948,  948,  948,  395,  396,  397,  396,  948,  948,  398,
02514     312,  312,  312,  312,  314,  315,  315,  315,  315,  948,
02515     399,  395,  306,  192,  306,  948,  948,  307,  948,  308,
02516     309,  310,  310,  310,  310,  948,  948,  948,  399,  192,
02517     192,  192,  948,  948,  193,  948,  948,  948,  312,  312,
02518     312,  312,  400,  400,  400,  400,  401,  401,  401,  948,
02519     948,  402,  948,  948,  314,  315,  315,  315,  315,  948,
02520     948,  948,  403,  404,  405,  404,  948,  948,  406,  323,
02521 
02522     323,  323,  323,  325,  325,  325,  325,  948,  948,  407,
02523     403,  317,  198,  317,  948,  948,  318,  948,  319,  320,
02524     321,  321,  321,  321,  948,  948,  948,  407,  198,  198,
02525     198,  948,  948,  199,  948,  948,  948,  323,  323,  323,
02526     323,  325,  325,  325,  325,  328,  329,  329,  329,  329,
02527     408,  408,  408,  408,  409,  409,  409,  948,  948,  410,
02528     948,  948,  328,  329,  329,  329,  329,  948,  948,  948,
02529     411,  412,  413,  412,  948,  948,  414,  337,  337,  337,
02530     337,  339,  340,  340,  340,  340,  948,  415,  411,  331,
02531     211,  331,  948,  948,  332,  948,  333,  334,  335,  335,
02532 
02533     335,  335,  948,  948,  948,  415,  211,  211,  211,  948,
02534     948,  212,  948,  948,  948,  337,  337,  337,  337,  416,
02535     416,  416,  416,  339,  340,  340,  340,  340,  948,  948,
02536     948,  417,  348,  348,  348,  348,  350,  351,  351,  351,
02537     351,  419,  419,  419,  419,  359,  359,  359,  359,  417,
02538     342,  221,  342,  948,  948,  343,  948,  344,  345,  346,
02539     346,  346,  346,  221,  221,  221,  948,  948,  222,  948,
02540     948,  948,  348,  348,  348,  348,  420,  420,  420,  948,
02541     948,  421,  948,  948,  350,  351,  351,  351,  351,  948,
02542     948,  948,  422,  423,  424,  423,  948,  948,  425,  948,
02543 
02544     371,  371,  371,  371,  948,  381,  381,  381,  381,  426,
02545     422,  353,  227,  353,  948,  948,  354,  948,  355,  356,
02546     357,  357,  357,  357,  948,  948,  948,  426,  227,  227,
02547     227,  948,  948,  228,  948,  948,  948,  359,  359,  359,
02548     359,  135,  130,  135,  444,  444,  136,  445,  445,  445,
02549     445,  459,  460,  948,  461,  461,  461,  461,  948,  948,
02550     427,  372,  372,  372,  948,  948,  373,  948,  435,  436,
02551     437,  437,  437,  437,  439,  372,  439,  948,  948,  440,
02552     948,  441,  442,  443,  443,  443,  443,  375,  376,  375,
02553     948,  948,  377,  948,  446,  447,  448,  448,  448,  448,
02554 
02555     376,  376,  376,  948,  948,  449,  948,  450,  451,  452,
02556     452,  452,  452,  454,  376,  454,  948,  948,  455,  948,
02557     456,  457,  458,  458,  458,  458,  463,  464,  464,  464,
02558     465,  465,  465,  465,  465,  475,  475,  948,  476,  476,
02559     476,  476,  389,  389,  389,  389,  270,  948,  948,  390,
02560     465,  465,  465,  493,  493,  948,  494,  494,  494,  494,
02561     948,  948,  270,  382,  382,  382,  948,  390,  383,  948,
02562     466,  467,  468,  468,  468,  468,  470,  382,  470,  948,
02563     948,  471,  948,  472,  473,  474,  474,  474,  474,  385,
02564     386,  385,  948,  948,  387,  948,  477,  478,  479,  479,
02565 
02566     479,  479,  386,  386,  386,  948,  948,  480,  948,  481,
02567     482,  483,  483,  483,  483,  485,  386,  485,  948,  948,
02568     486,  948,  487,  488,  489,  489,  489,  489,  282,  172,
02569     282,  948,  948,  283,  490,  491,  285,  492,  492,  492,
02570     492,  295,  186,  295,  948,  948,  296,  495,  496,  298,
02571     497,  497,  497,  497,  393,  393,  393,  948,  948,  394,
02572     948,  948,  948,  392,  392,  392,  392,  948,  507,  507,
02573     395,  508,  508,  508,  508,  534,  534,  948,  535,  535,
02574     535,  535,  135,  130,  611,  948,  948,  136,  395,  393,
02575     393,  393,  948,  948,  394,  948,  498,  499,  500,  500,
02576 
02577     500,  500,  502,  393,  502,  948,  948,  503,  948,  504,
02578     505,  506,  506,  506,  506,  396,  397,  396,  948,  948,
02579     398,  948,  509,  510,  511,  511,  511,  511,  397,  397,
02580     397,  948,  948,  512,  948,  513,  514,  515,  515,  515,
02581     515,  517,  397,  517,  948,  948,  518,  948,  519,  520,
02582     521,  521,  521,  521,  306,  192,  306,  948,  948,  307,
02583     522,  523,  309,  524,  524,  524,  524,  401,  401,  401,
02584     948,  948,  402,  948,  948,  948,  400,  400,  400,  400,
02585     948,  561,  561,  403,  562,  562,  562,  562,  436,  437,
02586     437,  437,  437,  416,  416,  416,  416,  948,  948,  948,
02587 
02588     417,  403,  401,  401,  401,  948,  948,  402,  948,  525,
02589     526,  527,  527,  527,  527,  529,  401,  529,  417,  948,
02590     530,  948,  531,  532,  533,  533,  533,  533,  404,  405,
02591     404,  948,  948,  406,  948,  536,  537,  538,  538,  538,
02592     538,  405,  405,  405,  948,  948,  539,  948,  540,  541,
02593     542,  542,  542,  542,  544,  405,  544,  948,  948,  545,
02594     948,  546,  547,  548,  548,  548,  548,  317,  198,  317,
02595     948,  948,  318,  549,  550,  320,  551,  551,  551,  551,
02596     409,  409,  409,  948,  948,  410,  948,  948,  948,  408,
02597     408,  408,  408,  948,  579,  579,  411,  580,  580,  580,
02598 
02599     580,  593,  593,  948,  594,  594,  594,  594,  616,  616,
02600     616,  616,  948,  948,  411,  409,  409,  409,  948,  948,
02601     410,  948,  552,  553,  554,  554,  554,  554,  556,  409,
02602     556,  948,  948,  557,  948,  558,  559,  560,  560,  560,
02603     560,  412,  413,  412,  948,  948,  414,  948,  563,  564,
02604     565,  565,  565,  565,  413,  413,  413,  948,  948,  566,
02605     948,  567,  568,  569,  569,  569,  569,  571,  413,  571,
02606     948,  948,  572,  948,  573,  574,  575,  575,  575,  575,
02607     331,  211,  331,  948,  948,  332,  576,  577,  334,  578,
02608     578,  578,  578,  342,  221,  342,  948,  948,  343,  581,
02609 
02610     582,  345,  583,  583,  583,  583,  420,  420,  420,  948,
02611     948,  421,  948,  948,  948,  419,  419,  419,  419,  948,
02612     948,  948,  422,  445,  445,  445,  445,  621,  621,  621,
02613     621,  436,  437,  437,  437,  437,  948,  948,  948,  617,
02614     422,  420,  420,  420,  948,  948,  421,  948,  584,  585,
02615     586,  586,  586,  586,  588,  420,  588,  617,  948,  589,
02616     948,  590,  591,  592,  592,  592,  592,  423,  424,  423,
02617     948,  948,  425,  948,  595,  596,  597,  597,  597,  597,
02618     424,  424,  424,  948,  948,  598,  948,  599,  600,  601,
02619     601,  601,  601,  603,  424,  603,  948,  948,  604,  948,
02620 
02621     605,  606,  607,  607,  607,  607,  353,  227,  353,  948,
02622     948,  354,  608,  609,  356,  610,  610,  610,  610,  439,
02623     372,  439,  948,  948,  440,  948,  441,  442,  443,  443,
02624     443,  443,  439,  372,  439,  948,  948,  440,  948,  441,
02625     442,  443,  443,  443,  443,  372,  372,  372,  948,  948,
02626     373,  948,  948,  948,  445,  445,  445,  445,  258,  156,
02627     258,  948,  948,  259,  948,  260,  447,  448,  448,  448,
02628     448,  258,  156,  258,  948,  948,  259,  948,  260,  261,
02629     619,  619,  619,  619,  375,  376,  375,  948,  948,  377,
02630     948,  948,  447,  448,  448,  448,  448,  948,  948,  948,
02631 
02632     620,  451,  452,  452,  452,  452,  461,  461,  461,  461,
02633     461,  461,  461,  461,  624,  624,  624,  624,  620,  454,
02634     376,  454,  948,  948,  455,  948,  456,  457,  458,  458,
02635     458,  458,  372,  372,  372,  948,  948,  373,  948,  948,
02636     451,  452,  452,  452,  452,  948,  948,  948,  622,  467,
02637     468,  468,  468,  468,  261,  461,  461,  461,  461,  135,
02638     130,  135,  378,  948,  136,  948,  622,  454,  376,  454,
02639     843,  948,  455,  948,  456,  457,  458,  458,  458,  458,
02640     378,  270,  271,  164,  271,  270,  270,  272,  270,  273,
02641     270,  463,  464,  464,  464,  465,  465,  465,  465,  465,
02642 
02643     270,  270,  270,  270,  270,  270,  270,  270,  270,  270,
02644     270,  380,  270,  270,  270,  465,  465,  465,  270,  270,
02645     270,  270,  270,  270,  270,  270,  270,  380,  625,  625,
02646     625,  948,  948,  626,  948,  948,  467,  468,  468,  468,
02647     468,  948,  948,  948,  627,  628,  629,  628,  948,  948,
02648     630,  476,  476,  476,  476,  482,  483,  483,  483,  483,
02649     948,  631,  627,  470,  382,  470,  948,  948,  471,  948,
02650     472,  473,  474,  474,  474,  474,  470,  382,  470,  631,
02651     948,  471,  948,  472,  473,  474,  474,  474,  474,  382,
02652     382,  382,  948,  948,  383,  948,  948,  948,  476,  476,
02653 
02654     476,  476,  282,  172,  282,  948,  948,  283,  948,  284,
02655     478,  479,  479,  479,  479,  282,  172,  282,  948,  948,
02656     283,  948,  284,  285,  632,  632,  632,  632,  633,  634,
02657     633,  948,  948,  635,  948,  948,  478,  479,  479,  479,
02658     479,  948,  948,  948,  636,  637,  637,  637,  637,  492,
02659     492,  492,  492,  492,  492,  492,  492,  494,  494,  494,
02660     494,  948,  636,  485,  386,  485,  948,  948,  486,  948,
02661     487,  488,  489,  489,  489,  489,  629,  629,  629,  948,
02662     948,  638,  948,  948,  482,  483,  483,  483,  483,  948,
02663     948,  948,  639,  640,  634,  640,  948,  948,  641,  494,
02664 
02665     494,  494,  494,  499,  500,  500,  500,  500,  948,  642,
02666     639,  485,  386,  485,  948,  948,  486,  948,  487,  488,
02667     489,  489,  489,  489,  948,  948,  948,  642,  385,  386,
02668     385,  948,  948,  387,  948,  948,  948,  492,  492,  492,
02669     492,  948,  948,  948,  388,  643,  643,  643,  643,  508,
02670     508,  508,  508,  499,  500,  500,  500,  500,  948,  948,
02671     948,  644,  388,  295,  186,  295,  948,  948,  296,  948,
02672     297,  298,  497,  497,  497,  497,  295,  186,  295,  644,
02673     948,  296,  948,  297,  298,  497,  497,  497,  497,  502,
02674     393,  502,  948,  948,  503,  948,  504,  505,  506,  506,
02675 
02676     506,  506,  502,  393,  502,  948,  948,  503,  948,  504,
02677     505,  506,  506,  506,  506,  393,  393,  393,  948,  948,
02678     394,  948,  948,  948,  508,  508,  508,  508,  306,  192,
02679     306,  948,  948,  307,  948,  308,  510,  511,  511,  511,
02680     511,  306,  192,  306,  948,  948,  307,  948,  308,  309,
02681     646,  646,  646,  646,  396,  397,  396,  948,  948,  398,
02682     948,  948,  510,  511,  511,  511,  511,  948,  948,  948,
02683     647,  514,  515,  515,  515,  515,  648,  648,  648,  648,
02684     524,  524,  524,  524,  524,  524,  524,  524,  647,  517,
02685     397,  517,  948,  948,  518,  948,  519,  520,  521,  521,
02686 
02687     521,  521,  393,  393,  393,  948,  948,  394,  948,  948,
02688     514,  515,  515,  515,  515,  948,  948,  948,  649,  526,
02689     527,  527,  527,  527,  309,  524,  524,  524,  524,  135,
02690     130,  931,  399,  948,  136,  948,  649,  517,  397,  517,
02691     948,  948,  518,  948,  519,  520,  521,  521,  521,  521,
02692     399,  651,  651,  651,  651,  526,  527,  527,  527,  527,
02693     948,  948,  948,  652,  535,  535,  535,  535,  541,  542,
02694     542,  542,  542,  656,  656,  656,  656,  551,  551,  551,
02695     551,  652,  529,  401,  529,  948,  948,  530,  948,  531,
02696     532,  533,  533,  533,  533,  529,  401,  529,  948,  948,
02697 
02698     530,  948,  531,  532,  533,  533,  533,  533,  401,  401,
02699     401,  948,  948,  402,  948,  948,  948,  535,  535,  535,
02700     535,  317,  198,  317,  948,  948,  318,  948,  319,  537,
02701     538,  538,  538,  538,  317,  198,  317,  948,  948,  318,
02702     948,  319,  320,  654,  654,  654,  654,  404,  405,  404,
02703     948,  948,  406,  948,  948,  537,  538,  538,  538,  538,
02704     948,  948,  948,  655,  551,  551,  551,  551,  659,  659,
02705     659,  659,  320,  551,  551,  551,  551,  948,  948,  948,
02706     407,  655,  544,  405,  544,  948,  948,  545,  948,  546,
02707     547,  548,  548,  548,  548,  401,  401,  401,  407,  948,
02708 
02709     402,  948,  948,  541,  542,  542,  542,  542,  948,  948,
02710     948,  657,  553,  554,  554,  554,  554,  562,  562,  562,
02711     562,  568,  569,  569,  569,  569,  948,  948,  948,  657,
02712     544,  405,  544,  948,  948,  545,  948,  546,  547,  548,
02713     548,  548,  548,  660,  660,  660,  948,  948,  661,  948,
02714     948,  553,  554,  554,  554,  554,  948,  948,  948,  662,
02715     663,  664,  663,  948,  948,  665,  672,  672,  672,  672,
02716     578,  578,  578,  578,  948,  948,  666,  662,  556,  409,
02717     556,  948,  948,  557,  948,  558,  559,  560,  560,  560,
02718     560,  556,  409,  556,  666,  948,  557,  948,  558,  559,
02719 
02720     560,  560,  560,  560,  409,  409,  409,  948,  948,  410,
02721     948,  948,  948,  562,  562,  562,  562,  331,  211,  331,
02722     948,  948,  332,  948,  333,  564,  565,  565,  565,  565,
02723     331,  211,  331,  948,  948,  332,  948,  333,  334,  667,
02724     667,  667,  667,  668,  669,  668,  948,  948,  670,  948,
02725     948,  564,  565,  565,  565,  565,  948,  948,  948,  671,
02726     675,  669,  675,  948,  948,  676,  578,  578,  578,  578,
02727     580,  580,  580,  580,  948,  948,  677,  671,  571,  413,
02728     571,  948,  948,  572,  948,  573,  574,  575,  575,  575,
02729     575,  664,  664,  664,  677,  948,  673,  948,  948,  568,
02730 
02731     569,  569,  569,  569,  948,  948,  948,  674,  580,  580,
02732     580,  580,  585,  586,  586,  586,  586,  678,  678,  678,
02733     678,  594,  594,  594,  594,  674,  571,  413,  571,  948,
02734     948,  572,  948,  573,  574,  575,  575,  575,  575,  412,
02735     413,  412,  948,  948,  414,  948,  948,  948,  578,  578,
02736     578,  578,  948,  948,  948,  415,  600,  601,  601,  601,
02737     601,  948,  948,  948,  585,  586,  586,  586,  586,  948,
02738     948,  948,  679,  415,  342,  221,  342,  948,  948,  343,
02739     948,  344,  345,  583,  583,  583,  583,  342,  221,  342,
02740     679,  948,  343,  948,  344,  345,  583,  583,  583,  583,
02741 
02742     588,  420,  588,  948,  948,  589,  948,  590,  591,  592,
02743     592,  592,  592,  588,  420,  588,  948,  948,  589,  948,
02744     590,  591,  592,  592,  592,  592,  420,  420,  420,  948,
02745     948,  421,  948,  948,  948,  594,  594,  594,  594,  353,
02746     227,  353,  948,  948,  354,  948,  355,  596,  597,  597,
02747     597,  597,  353,  227,  353,  948,  948,  354,  948,  355,
02748     356,  681,  681,  681,  681,  423,  424,  423,  948,  948,
02749     425,  948,  948,  596,  597,  597,  597,  597,  948,  948,
02750     948,  682,  683,  683,  683,  683,  610,  610,  610,  610,
02751     610,  610,  610,  610,  692,  692,  692,  692,  948,  682,
02752 
02753     603,  424,  603,  948,  948,  604,  948,  605,  606,  607,
02754     607,  607,  607,  420,  420,  420,  948,  948,  421,  948,
02755     948,  600,  601,  601,  601,  601,  135,  130,  135,  684,
02756     948,  136,  948,  948,  948,  356,  610,  610,  610,  610,
02757     135,  130,  135,  426,  948,  136,  948,  684,  603,  424,
02758     603,  948,  938,  604,  686,  605,  606,  607,  607,  607,
02759     607,  426,  616,  616,  616,  616,  948,  691,  691,  617,
02760     692,  692,  692,  692,  699,  699,  948,  700,  700,  700,
02761     700,  692,  692,  692,  692,  948,  948,  617,  439,  372,
02762     439,  948,  948,  440,  693,  694,  442,  695,  695,  695,
02763 
02764     695,  375,  376,  375,  948,  948,  377,  948,  260,  261,
02765     619,  619,  619,  619,  948,  713,  713,  620,  714,  714,
02766     714,  714,  746,  746,  948,  747,  747,  747,  747,  700,
02767     700,  700,  700,  948,  948,  620,  258,  156,  258,  948,
02768     948,  259,  696,  697,  261,  698,  698,  698,  698,  372,
02769     372,  372,  948,  948,  373,  948,  948,  948,  621,  621,
02770     621,  621,  948,  754,  754,  622,  755,  755,  755,  755,
02771     705,  706,  706,  706,  706,  643,  643,  643,  643,  948,
02772     948,  948,  644,  622,  454,  376,  454,  948,  948,  455,
02773     701,  702,  457,  703,  703,  703,  703,  625,  625,  625,
02774 
02775     644,  948,  626,  948,  948,  948,  624,  624,  624,  624,
02776     948,  762,  762,  627,  763,  763,  763,  763,  847,  847,
02777     847,  847,  948,  651,  651,  651,  651,  948,  948,  948,
02778     652,  627,  625,  625,  625,  948,  948,  626,  948,  704,
02779     705,  706,  706,  706,  706,  708,  625,  708,  652,  948,
02780     709,  948,  710,  711,  712,  712,  712,  712,  628,  629,
02781     628,  948,  948,  630,  948,  715,  716,  717,  717,  717,
02782     717,  629,  629,  629,  948,  948,  638,  948,  718,  719,
02783     720,  720,  720,  720,  722,  629,  722,  948,  948,  723,
02784     948,  724,  725,  726,  726,  726,  726,  470,  382,  470,
02785 
02786     948,  948,  471,  727,  728,  473,  729,  729,  729,  729,
02787     633,  634,  633,  948,  948,  635,  948,  284,  285,  632,
02788     632,  632,  632,  948,  767,  767,  636,  768,  768,  768,
02789     768,  775,  775,  948,  776,  776,  776,  776,  714,  714,
02790     714,  714,  948,  948,  636,  633,  634,  633,  948,  948,
02791     635,  948,  730,  731,  732,  732,  732,  732,  634,  634,
02792     634,  948,  948,  733,  948,  734,  735,  736,  736,  736,
02793     736,  738,  634,  738,  948,  948,  739,  948,  740,  741,
02794     742,  742,  742,  742,  282,  172,  282,  948,  948,  283,
02795     743,  744,  285,  745,  745,  745,  745,  629,  629,  629,
02796 
02797     948,  948,  638,  948,  948,  948,  637,  637,  637,  637,
02798     948,  789,  789,  639,  790,  790,  790,  790,  822,  822,
02799     948,  823,  823,  823,  823,  719,  720,  720,  720,  720,
02800     948,  639,  722,  629,  722,  948,  948,  723,  948,  724,
02801     725,  726,  726,  726,  726,  640,  634,  640,  948,  948,
02802     641,  948,  748,  749,  750,  750,  750,  750,  738,  634,
02803     738,  948,  948,  739,  948,  740,  741,  742,  742,  742,
02804     742,  485,  386,  485,  948,  948,  486,  751,  752,  488,
02805     753,  753,  753,  753,  502,  393,  502,  948,  948,  503,
02806     756,  757,  505,  758,  758,  758,  758,  396,  397,  396,
02807 
02808     948,  948,  398,  948,  308,  309,  646,  646,  646,  646,
02809     948,  830,  830,  647,  831,  831,  831,  831,  852,  852,
02810     852,  852,  948,  678,  678,  678,  678,  948,  948,  948,
02811     679,  647,  306,  192,  306,  948,  948,  307,  759,  760,
02812     309,  761,  761,  761,  761,  393,  393,  393,  679,  948,
02813     394,  948,  948,  948,  648,  648,  648,  648,  948,  838,
02814     838,  649,  839,  839,  839,  839,  729,  729,  729,  729,
02815     705,  706,  706,  706,  706,  948,  948,  948,  848,  649,
02816     517,  397,  517,  948,  948,  518,  764,  765,  520,  766,
02817     766,  766,  766,  529,  401,  529,  848,  948,  530,  769,
02818 
02819     770,  532,  771,  771,  771,  771,  404,  405,  404,  948,
02820     948,  406,  948,  319,  320,  654,  654,  654,  654,  948,
02821     948,  948,  655,  375,  376,  375,  948,  948,  377,  729,
02822     729,  729,  729,  735,  736,  736,  736,  736,  948,  378,
02823     655,  317,  198,  317,  948,  948,  318,  772,  773,  320,
02824     774,  774,  774,  774,  401,  401,  401,  378,  948,  402,
02825     948,  948,  948,  656,  656,  656,  656,  948,  948,  948,
02826     657,  857,  857,  857,  857,  745,  745,  745,  745,  473,
02827     729,  729,  729,  729,  948,  948,  948,  631,  657,  544,
02828     405,  544,  948,  948,  545,  777,  778,  547,  779,  779,
02829 
02830     779,  779,  660,  660,  660,  631,  948,  661,  948,  948,
02831     948,  659,  659,  659,  659,  948,  948,  948,  662,  745,
02832     745,  745,  745,  747,  747,  747,  747,  285,  745,  745,
02833     745,  745,  948,  948,  948,  388,  662,  660,  660,  660,
02834     948,  948,  661,  948,  780,  781,  782,  782,  782,  782,
02835     784,  660,  784,  388,  948,  785,  948,  786,  787,  788,
02836     788,  788,  788,  663,  664,  663,  948,  948,  665,  948,
02837     791,  792,  793,  793,  793,  793,  664,  664,  664,  948,
02838     948,  673,  948,  794,  795,  796,  796,  796,  796,  798,
02839     664,  798,  948,  948,  799,  948,  800,  801,  802,  802,
02840 
02841     802,  802,  556,  409,  556,  948,  948,  557,  803,  804,
02842     559,  805,  805,  805,  805,  668,  669,  668,  948,  948,
02843     670,  948,  333,  334,  667,  667,  667,  667,  948,  948,
02844     948,  671,  753,  753,  753,  753,  753,  753,  753,  753,
02845     488,  753,  753,  753,  753,  948,  948,  948,  642,  671,
02846     668,  669,  668,  948,  948,  670,  948,  806,  807,  808,
02847     808,  808,  808,  669,  669,  669,  642,  948,  809,  948,
02848     810,  811,  812,  812,  812,  812,  814,  669,  814,  948,
02849     948,  815,  948,  816,  817,  818,  818,  818,  818,  331,
02850     211,  331,  948,  948,  332,  819,  820,  334,  821,  821,
02851 
02852     821,  821,  664,  664,  664,  948,  948,  673,  948,  948,
02853     948,  672,  672,  672,  672,  948,  948,  948,  674,  755,
02854     755,  755,  755,  755,  755,  755,  755,  763,  763,  763,
02855     763,  768,  768,  768,  768,  948,  674,  798,  664,  798,
02856     948,  948,  799,  948,  800,  801,  802,  802,  802,  802,
02857     675,  669,  675,  948,  948,  676,  948,  824,  825,  826,
02858     826,  826,  826,  814,  669,  814,  948,  948,  815,  948,
02859     816,  817,  818,  818,  818,  818,  571,  413,  571,  948,
02860     948,  572,  827,  828,  574,  829,  829,  829,  829,  588,
02861     420,  588,  948,  948,  589,  832,  833,  591,  834,  834,
02862 
02863     834,  834,  423,  424,  423,  948,  948,  425,  948,  355,
02864     356,  681,  681,  681,  681,  948,  948,  948,  682,  396,
02865     397,  396,  948,  948,  398,  768,  768,  768,  768,  776,
02866     776,  776,  776,  948,  948,  399,  682,  353,  227,  353,
02867     948,  948,  354,  835,  836,  356,  837,  837,  837,  837,
02868     420,  420,  420,  399,  948,  421,  948,  948,  948,  683,
02869     683,  683,  683,  948,  948,  948,  684,  404,  405,  404,
02870     948,  948,  406,  781,  782,  782,  782,  782,  862,  862,
02871     862,  862,  948,  407,  684,  603,  424,  603,  948,  948,
02872     604,  840,  841,  606,  842,  842,  842,  842,  439,  372,
02873 
02874     439,  407,  948,  440,  948,  441,  442,  695,  695,  695,
02875     695,  439,  372,  439,  948,  948,  440,  948,  441,  442,
02876     695,  695,  695,  695,  258,  156,  258,  948,  948,  259,
02877     948,  260,  261,  698,  698,  698,  698,  258,  156,  258,
02878     948,  948,  259,  948,  260,  261,  698,  698,  698,  698,
02879     372,  372,  372,  948,  948,  373,  948,  948,  948,  700,
02880     700,  700,  700,  454,  376,  454,  948,  948,  455,  948,
02881     456,  457,  703,  703,  703,  703,  454,  376,  454,  948,
02882     948,  455,  948,  456,  457,  703,  703,  703,  703,  708,
02883     625,  708,  948,  948,  709,  948,  710,  711,  712,  712,
02884 
02885     712,  712,  708,  625,  708,  948,  948,  709,  948,  710,
02886     711,  712,  712,  712,  712,  625,  625,  625,  948,  948,
02887     626,  948,  948,  948,  714,  714,  714,  714,  470,  382,
02888     470,  948,  948,  471,  948,  472,  716,  717,  717,  717,
02889     717,  470,  382,  470,  948,  948,  471,  948,  472,  473,
02890     850,  850,  850,  850,  628,  629,  628,  948,  948,  630,
02891     948,  948,  716,  717,  717,  717,  717,  948,  948,  948,
02892     851,  790,  790,  790,  790,  948,  781,  782,  782,  782,
02893     782,  940,  941,  940,  863,  948,  942,  948,  851,  625,
02894     625,  625,  948,  948,  626,  948,  948,  719,  720,  720,
02895 
02896     720,  720,  863,  948,  948,  853,  795,  796,  796,  796,
02897     796,  867,  867,  867,  867,  805,  805,  805,  805,  805,
02898     805,  805,  805,  853,  722,  629,  722,  948,  948,  723,
02899     948,  724,  725,  726,  726,  726,  726,  722,  629,  722,
02900     948,  948,  723,  948,  724,  725,  726,  726,  726,  726,
02901     282,  172,  282,  948,  948,  283,  948,  284,  731,  732,
02902     732,  732,  732,  282,  172,  282,  948,  948,  283,  948,
02903     284,  285,  855,  855,  855,  855,  633,  634,  633,  948,
02904     948,  635,  948,  948,  731,  732,  732,  732,  732,  948,
02905     948,  948,  856,  811,  812,  812,  812,  812,  948,  948,
02906 
02907     948,  559,  805,  805,  805,  805,  948,  948,  948,  666,
02908     856,  738,  634,  738,  948,  948,  739,  948,  740,  741,
02909     742,  742,  742,  742,  629,  629,  629,  666,  948,  638,
02910     948,  948,  735,  736,  736,  736,  736,  948,  948,  948,
02911     858,  872,  872,  872,  872,  821,  821,  821,  821,  821,
02912     821,  821,  821,  823,  823,  823,  823,  948,  858,  738,
02913     634,  738,  948,  948,  739,  948,  740,  741,  742,  742,
02914     742,  742,  629,  629,  629,  948,  948,  638,  948,  948,
02915     948,  747,  747,  747,  747,  485,  386,  485,  948,  948,
02916     486,  948,  487,  749,  750,  750,  750,  750,  485,  386,
02917 
02918     485,  948,  948,  486,  948,  487,  488,  860,  860,  860,
02919     860,  640,  634,  640,  948,  948,  641,  948,  948,  749,
02920     750,  750,  750,  750,  948,  948,  948,  861,  829,  829,
02921     829,  829,  829,  829,  829,  829,  334,  821,  821,  821,
02922     821,  948,  948,  948,  415,  861,  502,  393,  502,  948,
02923     948,  503,  948,  504,  505,  758,  758,  758,  758,  502,
02924     393,  502,  415,  948,  503,  948,  504,  505,  758,  758,
02925     758,  758,  306,  192,  306,  948,  948,  307,  948,  308,
02926     309,  761,  761,  761,  761,  306,  192,  306,  948,  948,
02927     307,  948,  308,  309,  761,  761,  761,  761,  393,  393,
02928 
02929     393,  948,  948,  394,  948,  948,  948,  763,  763,  763,
02930     763,  517,  397,  517,  948,  948,  518,  948,  519,  520,
02931     766,  766,  766,  766,  517,  397,  517,  948,  948,  518,
02932     948,  519,  520,  766,  766,  766,  766,  529,  401,  529,
02933     948,  948,  530,  948,  531,  532,  771,  771,  771,  771,
02934     529,  401,  529,  948,  948,  530,  948,  531,  532,  771,
02935     771,  771,  771,  317,  198,  317,  948,  948,  318,  948,
02936     319,  320,  774,  774,  774,  774,  317,  198,  317,  948,
02937     948,  318,  948,  319,  320,  774,  774,  774,  774,  401,
02938     401,  401,  948,  948,  402,  948,  948,  948,  776,  776,
02939 
02940     776,  776,  544,  405,  544,  948,  948,  545,  948,  546,
02941     547,  779,  779,  779,  779,  544,  405,  544,  948,  948,
02942     545,  948,  546,  547,  779,  779,  779,  779,  784,  660,
02943     784,  948,  948,  785,  948,  786,  787,  788,  788,  788,
02944     788,  784,  660,  784,  948,  948,  785,  948,  786,  787,
02945     788,  788,  788,  788,  660,  660,  660,  948,  948,  661,
02946     948,  948,  948,  790,  790,  790,  790,  556,  409,  556,
02947     948,  948,  557,  948,  558,  792,  793,  793,  793,  793,
02948     556,  409,  556,  948,  948,  557,  948,  558,  559,  865,
02949     865,  865,  865,  663,  664,  663,  948,  948,  665,  948,
02950 
02951     948,  792,  793,  793,  793,  793,  948,  948,  948,  866,
02952     831,  831,  831,  831,  948,  574,  829,  829,  829,  829,
02953     940,  941,  940,  677,  948,  942,  948,  866,  660,  660,
02954     660,  948,  948,  661,  948,  948,  795,  796,  796,  796,
02955     796,  677,  948,  948,  868,  831,  831,  831,  831,  839,
02956     839,  839,  839,  135,  130,  135,  948,  948,  136,  948,
02957     948,  877,  868,  798,  664,  798,  948,  948,  799,  948,
02958     800,  801,  802,  802,  802,  802,  798,  664,  798,  948,
02959     948,  799,  948,  800,  801,  802,  802,  802,  802,  331,
02960     211,  331,  948,  948,  332,  948,  333,  807,  808,  808,
02961 
02962     808,  808,  331,  211,  331,  948,  948,  332,  948,  333,
02963     334,  870,  870,  870,  870,  668,  669,  668,  948,  948,
02964     670,  948,  948,  807,  808,  808,  808,  808,  948,  948,
02965     948,  871,  423,  424,  423,  880,  880,  425,  881,  881,
02966     881,  881,  559,  865,  865,  865,  865,  948,  426,  871,
02967     814,  669,  814,  948,  948,  815,  948,  816,  817,  818,
02968     818,  818,  818,  664,  664,  664,  426,  948,  673,  948,
02969     948,  811,  812,  812,  812,  812,  948,  888,  888,  873,
02970     889,  889,  889,  889,  948,  867,  867,  867,  867,  847,
02971     847,  847,  847,  948,  948,  948,  848,  873,  814,  669,
02972 
02973     814,  948,  948,  815,  948,  816,  817,  818,  818,  818,
02974     818,  664,  664,  664,  848,  948,  673,  948,  948,  948,
02975     823,  823,  823,  823,  571,  413,  571,  948,  948,  572,
02976     948,  573,  825,  826,  826,  826,  826,  571,  413,  571,
02977     948,  948,  572,  948,  573,  574,  875,  875,  875,  875,
02978     675,  669,  675,  948,  948,  676,  948,  948,  825,  826,
02979     826,  826,  826,  948,  896,  896,  876,  897,  897,  897,
02980     897,  334,  870,  870,  870,  870,  862,  862,  862,  862,
02981     948,  948,  948,  863,  876,  588,  420,  588,  948,  948,
02982     589,  948,  590,  591,  834,  834,  834,  834,  588,  420,
02983 
02984     588,  863,  948,  589,  948,  590,  591,  834,  834,  834,
02985     834,  353,  227,  353,  948,  948,  354,  948,  355,  356,
02986     837,  837,  837,  837,  353,  227,  353,  948,  948,  354,
02987     948,  355,  356,  837,  837,  837,  837,  420,  420,  420,
02988     948,  948,  421,  948,  948,  948,  839,  839,  839,  839,
02989     603,  424,  603,  948,  948,  604,  948,  605,  606,  842,
02990     842,  842,  842,  603,  424,  603,  948,  948,  604,  948,
02991     605,  606,  842,  842,  842,  842,  708,  625,  708,  948,
02992     948,  709,  882,  883,  711,  884,  884,  884,  884,  628,
02993     629,  628,  948,  948,  630,  948,  472,  473,  850,  850,
02994 
02995     850,  850,  948,  904,  904,  851,  905,  905,  905,  905,
02996     906,  907,  948,  908,  908,  908,  908,  948,  872,  872,
02997     872,  872,  948,  851,  470,  382,  470,  948,  948,  471,
02998     885,  886,  473,  887,  887,  887,  887,  625,  625,  625,
02999     948,  948,  626,  948,  948,  948,  852,  852,  852,  852,
03000     948,  909,  910,  853,  911,  911,  911,  911,  912,  912,
03001     948,  913,  913,  913,  913,  574,  875,  875,  875,  875,
03002     948,  853,  722,  629,  722,  948,  948,  723,  890,  891,
03003     725,  892,  892,  892,  892,  633,  634,  633,  948,  948,
03004     635,  948,  284,  285,  855,  855,  855,  855,  948,  914,
03005 
03006     915,  856,  916,  916,  916,  916,  917,  918,  948,  919,
03007     919,  919,  919,  881,  881,  881,  881,  948,  948,  856,
03008     282,  172,  282,  948,  948,  283,  893,  894,  285,  895,
03009     895,  895,  895,  629,  629,  629,  948,  948,  638,  948,
03010     948,  948,  857,  857,  857,  857,  948,  920,  920,  858,
03011     921,  921,  921,  921,  922,  923,  948,  924,  924,  924,
03012     924,  881,  881,  881,  881,  948,  948,  858,  738,  634,
03013     738,  948,  948,  739,  898,  899,  741,  900,  900,  900,
03014     900,  640,  634,  640,  948,  948,  641,  948,  487,  488,
03015     860,  860,  860,  860,  948,  925,  926,  861,  927,  927,
03016 
03017     927,  927,  135,  130,  135,  948,  948,  136,  940,  941,
03018     940,  928,  948,  942,  948,  861,  485,  386,  485,  948,
03019     948,  486,  901,  902,  488,  903,  903,  903,  903,  708,
03020     625,  708,  948,  948,  709,  948,  710,  711,  884,  884,
03021     884,  884,  628,  629,  628,  948,  948,  630,  469,  472,
03022     889,  889,  889,  889,  897,  897,  897,  897,  631,  905,
03023     905,  905,  905,  905,  905,  905,  905,  908,  908,  908,
03024     908,  908,  908,  908,  908,  948,  631,  625,  625,  625,
03025     948,  948,  626,  948,  948,  948,  889,  889,  889,  889,
03026     722,  629,  722,  948,  948,  723,  948,  724,  725,  892,
03027 
03028     892,  892,  892,  633,  634,  633,  948,  948,  635,  281,
03029     284,  908,  908,  908,  908,  948,  948,  948,  864,  388,
03030     911,  911,  911,  911,  911,  911,  911,  911,  913,  913,
03031     913,  913,  916,  916,  916,  916,  864,  388,  629,  629,
03032     629,  948,  948,  638,  948,  948,  948,  897,  897,  897,
03033     897,  738,  634,  738,  948,  948,  739,  948,  740,  741,
03034     900,  900,  900,  900,  640,  634,  640,  948,  948,  641,
03035     484,  487,  948,  559,  911,  911,  911,  911,  948,  948,
03036     642,  666,  916,  916,  916,  916,  948,  948,  916,  916,
03037     916,  916,  135,  130,  135,  869,  948,  136,  642,  666,
03038 
03039     660,  660,  660,  948,  948,  661,  948,  948,  948,  913,
03040     913,  913,  913,  869,  919,  919,  919,  919,  919,  919,
03041     919,  919,  334,  919,  919,  919,  919,  937,  948,  948,
03042     415,  921,  921,  921,  921,  921,  921,  921,  921,  924,
03043     924,  924,  924,  924,  924,  924,  924,  948,  415,  924,
03044     924,  924,  924,  948,  948,  948,  874,  927,  927,  927,
03045     927,  927,  927,  927,  927,  574,  927,  927,  927,  927,
03046     135,  130,  135,  677,  874,  136,  135,  130,  135,  948,
03047     943,  136,  943,  948,  948,  944,  948,  940,  941,  940,
03048     948,  677,  942,  943,  946,  943,  946,  948,  944,  947,
03049 
03050     946,  946,  946,  946,  948,  947,  947,  946,  948,  946,
03051     948,  948,  947,  934,  948,  948,  948,  948,  936,   46,
03052     46,   46,   46,   46,   46,   46,   46,   80,   80,   80,
03053     80,   80,   80,   80,   80,  110,  110,  110,  110,  110,
03054     110,  110,  110,  120,  120,  120,  120,  120,  120,  120,
03055     120,  134,  134,  134,  134,  134,  134,  134,  134,  138,
03056     948,  948,  138,  175,  948,  948,  175,  948,  175,  175,
03057     175,  176,  176,  176,  176,  176,  176,  176,  176,  214,
03058     948,  948,  214,  948,  214,  214,  215,  215,  215,  215,
03059     215,  215,  215,  215,  230,  230,  948,  230,  948,  230,
03060 
03061     230,  230,  233,  233,  233,  233,  233,  233,  233,  233,
03062     239,  239,  948,  239,  239,  239,  239,  239,  257,  257,
03063     257,  257,  257,  257,  257,  257,  270,  270,  270,  270,
03064     270,  270,  270,  270,  276,  276,  948,  948,  276,  276,
03065     281,  281,  281,  281,  281,  281,  281,  281,  294,  294,
03066     294,  294,  294,  294,  294,  294,  305,  305,  305,  305,
03067     305,  305,  305,  305,  316,  316,  316,  316,  316,  316,
03068     316,  316,  330,  330,  330,  330,  330,  330,  330,  330,
03069     341,  341,  341,  341,  341,  341,  341,  341,  352,  352,
03070     352,  352,  352,  352,  352,  352,  230,  230,  948,  230,
03071 
03072     948,  230,  230,  230,  233,  233,  233,  233,  233,  233,
03073     233,  233,  239,  239,  948,  239,  239,  239,  239,  239,
03074     134,  134,  134,  134,  134,  134,  134,  134,  138,  948,
03075     948,  138,  257,  257,  257,  257,  257,  257,  257,  257,
03076     270,  270,  270,  270,  270,  270,  270,  270,  276,  276,
03077     948,  948,  276,  276,  281,  281,  281,  281,  281,  281,
03078     281,  281,  438,  438,  438,  438,  438,  438,  438,  438,
03079     453,  453,  453,  453,  453,  453,  453,  453,  469,  469,
03080     469,  469,  469,  469,  469,  469,  484,  484,  484,  484,
03081     484,  484,  484,  484,  294,  294,  294,  294,  294,  294,
03082 
03083     294,  294,  501,  501,  501,  501,  501,  501,  501,  501,
03084     305,  305,  305,  305,  305,  305,  305,  305,  516,  516,
03085     516,  516,  516,  516,  516,  516,  528,  528,  528,  528,
03086     528,  528,  528,  528,  316,  316,  316,  316,  316,  316,
03087     316,  316,  543,  543,  543,  543,  543,  543,  543,  543,
03088     555,  555,  555,  555,  555,  555,  555,  555,  330,  330,
03089     330,  330,  330,  330,  330,  330,  570,  570,  570,  570,
03090     570,  570,  570,  570,  341,  341,  341,  341,  341,  341,
03091     341,  341,  587,  587,  587,  587,  587,  587,  587,  587,
03092     352,  352,  352,  352,  352,  352,  352,  352,  602,  602,
03093 
03094     602,  602,  602,  602,  602,  602,  134,  134,  134,  134,
03095     134,  134,  134,  134,  138,  948,  948,  138,  438,  438,
03096     438,  438,  438,  438,  438,  438,  257,  257,  257,  257,
03097     257,  257,  257,  257,  453,  453,  453,  453,  453,  453,
03098     453,  453,  469,  469,  469,  469,  469,  469,  469,  469,
03099     281,  281,  281,  281,  281,  281,  281,  281,  484,  484,
03100     484,  484,  484,  484,  484,  484,  294,  294,  294,  294,
03101     294,  294,  294,  294,  501,  501,  501,  501,  501,  501,
03102     501,  501,  305,  305,  305,  305,  305,  305,  305,  305,
03103     516,  516,  516,  516,  516,  516,  516,  516,  528,  528,
03104 
03105     528,  528,  528,  528,  528,  528,  316,  316,  316,  316,
03106     316,  316,  316,  316,  543,  543,  543,  543,  543,  543,
03107     543,  543,  555,  555,  555,  555,  555,  555,  555,  555,
03108     330,  330,  330,  330,  330,  330,  330,  330,  570,  570,
03109     570,  570,  570,  570,  570,  570,  341,  341,  341,  341,
03110     341,  341,  341,  341,  587,  587,  587,  587,  587,  587,
03111     587,  587,  352,  352,  352,  352,  352,  352,  352,  352,
03112     602,  602,  602,  602,  602,  602,  602,  602,  134,  134,
03113     134,  134,  134,  134,  134,  134,  138,  948,  948,  138,
03114     438,  438,  438,  438,  438,  438,  438,  438,  257,  257,
03115 
03116     257,  257,  257,  257,  257,  257,  453,  453,  453,  453,
03117     453,  453,  453,  453,  707,  707,  707,  707,  707,  707,
03118     707,  707,  469,  469,  469,  469,  469,  469,  469,  469,
03119     721,  721,  721,  721,  721,  721,  721,  721,  281,  281,
03120     281,  281,  281,  281,  281,  281,  737,  737,  737,  737,
03121     737,  737,  737,  737,  484,  484,  484,  484,  484,  484,
03122     484,  484,  501,  501,  501,  501,  501,  501,  501,  501,
03123     305,  305,  305,  305,  305,  305,  305,  305,  516,  516,
03124     516,  516,  516,  516,  516,  516,  528,  528,  528,  528,
03125     528,  528,  528,  528,  316,  316,  316,  316,  316,  316,
03126 
03127     316,  316,  543,  543,  543,  543,  543,  543,  543,  543,
03128     783,  783,  783,  783,  783,  783,  783,  783,  555,  555,
03129     555,  555,  555,  555,  555,  555,  797,  797,  797,  797,
03130     797,  797,  797,  797,  330,  330,  330,  330,  330,  330,
03131     330,  330,  813,  813,  813,  813,  813,  813,  813,  813,
03132     570,  570,  570,  570,  570,  570,  570,  570,  587,  587,
03133     587,  587,  587,  587,  587,  587,  352,  352,  352,  352,
03134     352,  352,  352,  352,  602,  602,  602,  602,  602,  602,
03135     602,  602,  134,  134,  134,  134,  134,  134,  134,  134,
03136     138,  948,  948,  138,  438,  438,  438,  438,  438,  438,
03137 
03138     438,  438,  257,  257,  257,  257,  257,  257,  257,  257,
03139     453,  453,  453,  453,  453,  453,  453,  453,  707,  707,
03140     707,  707,  707,  707,  707,  707,  469,  469,  469,  469,
03141     469,  469,  469,  469,  721,  721,  721,  721,  721,  721,
03142     721,  721,  281,  281,  281,  281,  281,  281,  281,  281,
03143     737,  737,  737,  737,  737,  737,  737,  737,  484,  484,
03144     484,  484,  484,  484,  484,  484,  501,  501,  501,  501,
03145     501,  501,  501,  501,  305,  305,  305,  305,  305,  305,
03146     305,  305,  516,  516,  516,  516,  516,  516,  516,  516,
03147     528,  528,  528,  528,  528,  528,  528,  528,  316,  316,
03148 
03149     316,  316,  316,  316,  316,  316,  543,  543,  543,  543,
03150     543,  543,  543,  543,  783,  783,  783,  783,  783,  783,
03151     783,  783,  555,  555,  555,  555,  555,  555,  555,  555,
03152     797,  797,  797,  797,  797,  797,  797,  797,  330,  330,
03153     330,  330,  330,  330,  330,  330,  813,  813,  813,  813,
03154     813,  813,  813,  813,  570,  570,  570,  570,  570,  570,
03155     570,  570,  587,  587,  587,  587,  587,  587,  587,  587,
03156     352,  352,  352,  352,  352,  352,  352,  352,  602,  602,
03157     602,  602,  602,  602,  602,  602,  134,  134,  134,  134,
03158     134,  134,  134,  134,  138,  948,  948,  138,  707,  707,
03159 
03160     707,  707,  707,  707,  707,  707,  469,  469,  469,  469,
03161     469,  469,  469,  469,  721,  721,  721,  721,  721,  721,
03162     721,  721,  281,  281,  281,  281,  281,  281,  281,  281,
03163     737,  737,  737,  737,  737,  737,  737,  737,  484,  484,
03164     484,  484,  484,  484,  484,  484,  939,  939,  939,  939,
03165     939,  939,  939,  939,  945,  945,  948,  945,  945,  945,
03166     945,  945,   45,  948,  948,  948,  948,  948,  948,  948,
03167     948,  948,  948,  948,  948,  948,  948,  948,  948,  948,
03168     948,  948,  948,  948,  948,  948,  948,  948,  948,  948,
03169     948,  948,  948,  948,  948,  948,  948,  948,  948,  948,
03170 
03171     948,  948,  948,  948,  948,  948,  948,  948,  948,  948
03172 } ;
03173 
03174 static const short int yy_chk[7711] =
03175 {   0,
03176     0,    1,    1,    1,    0,    0,    1,    2,    2,    2,
03177     885,  885,    2,    3,    3,    3,    3,    3,    3,    3,
03178     3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
03179     3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
03180     3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
03181     3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
03182     5,    5,    5,   60,   60,    5,    6,    6,    6,  431,
03183     1010,    6,  988,  431,   47,   47,   47,    5,    5,   47,
03184     48,   73,   48,    6,    6,   48,    5,   65,   65,   65,
03185     65,   65,    6,    7,    7,    7,  985,   73,    7,  983,
03186 
03187     7,    7,    7,    7,    7,    7,   66,   66,   66,   66,
03188     976,    7,    9,    9,    9,    9,    9,    9,   10,   10,
03189     10,   10,   10,   10,   11,   11,   11,   11,   11,   11,
03190     12,   12,   12,   12,   12,   12,   13,   13,   13,   13,
03191     13,   13,   14,   14,   14,   14,   14,   14,   15,   15,
03192     15,   15,   15,   15,   16,   16,   16,   16,   16,   16,
03193     17,   17,   17,  970,   17,   17,   18,   18,   18,  965,
03194     18,   18,   19,   19,   19,   19,   19,   19,   17,   68,
03195     68,   68,   68,   68,   18,   20,   20,   20,   20,   20,
03196     20,   21,   21,   21,   21,   21,   21,   22,   22,   22,
03197 
03198     22,   22,   22,   23,   23,   23,   23,   23,   23,   24,
03199     24,   24,   24,   24,   24,   25,   25,   25,   25,   25,
03200     25,  275,  933,   39,   39,   39,   25,   39,   39,   40,
03201     40,   40,  930,   40,   40,  464,  929,  275,   25,  879,
03202     25,   26,   26,   26,   26,   26,   26,  299,   51,   51,
03203     51,  464,   26,   51,   39,  346,  443,   41,   41,   41,
03204     40,   41,   41,  878,   26,  299,   26,   27,   27,   27,
03205     27,   27,   27,  346,  443,   42,   42,   42,   27,   42,
03206     42,   49,   49,   49,  886,  886,   49,  846,   41,  458,
03207     27,  844,   27,   28,   28,   28,   28,   28,   28,   69,
03208 
03209     69,   69,   69,  130,   28,  130,   42,  458,  130,   49,
03210     71,   71,   71,   71,  690,  465,   28,  689,   28,   29,
03211     29,   29,   29,   29,   29,   74,   74,   74,   74,  687,
03212     29,  465,   43,   43,   43,   43,   43,   43,   76,   76,
03213     76,   76,   29,   43,   29,   30,   30,   30,   30,   30,
03214     30,   77,   77,   77,   77,   77,   30,  615,   44,   44,
03215     44,   44,   44,   44,   78,   78,   78,   78,   30,   44,
03216     30,   31,   31,   31,   31,   31,   31,   70,   70,   70,
03217     70,   70,   31,  893,  893,   70,   85,   85,   85,   85,
03218     75,   75,   75,   75,   31,  614,   31,   32,   32,   32,
03219 
03220     32,   32,   32,   70,   88,   88,   88,   88,   32,  613,
03221     75,   82,   82,   82,  612,   82,   82,  497,  894,  894,
03222     32,  432,   32,   33,   33,   33,   75,   33,   33,   84,
03223     84,   84,   84,   84,  506,  497,   86,   86,   86,   86,
03224     86,   33,  901,  901,   86,   87,   87,   87,   87,   87,
03225     902,  902,  506,   33,  521,   33,   34,   34,   34,  428,
03226     34,   34,   86,   90,   90,   90,   90,   90,   91,   91,
03227     91,   91,  521,  369,   34,   93,   93,   93,   93,   93,
03228     94,   94,   94,   94,  368,  367,   34,  366,   34,   35,
03229     35,   35,   35,   35,   35,   99,   99,   99,   99,   99,
03230 
03231     35,  100,  100,  100,  100,  101,  101,  101,  101,  101,
03232     365,  364,   35,  101,   35,   36,   36,   36,   36,   36,
03233     36,  103,  103,  103,  103,  362,   36,  104,  104,  104,
03234     104,  101,  105,  105,  105,  105,  253,  252,   36,  251,
03235     36,   37,   37,   37,   37,   37,   37,  104,  108,  108,
03236     108,  108,   37,  107,  107,  107,  107,  107,  114,  114,
03237     114,  114,  114,  104,   37,  533,   37,   38,   38,   38,
03238     38,   38,   38,  115,  115,  115,  115,  250,   38,  548,
03239     112,  112,  112,  533,  112,  112,  118,  118,  118,  118,
03240     38,  249,   38,   67,   67,   67,  247,  548,   67,  246,
03241 
03242     245,   67,   67,   67,   67,   67,  121,  121,  121,   67,
03243     112,  121,  112,  117,  117,  117,  117,  117,  123,  123,
03244     123,  244,  123,  123,  152,  150,  149,   67,   72,   72,
03245     72,  148,  147,   72,  146,  144,  143,   72,   72,   72,
03246     72,  126,  126,  126,  126,  127,  127,  127,  127,  128,
03247     128,  128,  128,  129,  129,  129,  142,   72,  129,  131,
03248     131,  131,  583,  140,  131,  127,  132,  133,  132,  133,
03249     139,  132,  133,   72,   79,   79,   79,  124,  592,   79,
03250     583,  127,   79,   79,   79,   79,   79,  134,  134,  134,
03251     79,  113,  134,  135,  135,  135,  592,  607,  135,  136,
03252 
03253     136,  136,   96,   83,  136,  695,  703,   64,   79,   89,
03254     89,   89,  712,   63,   89,  607,   62,   89,   89,   89,
03255     89,   89,   61,  695,  703,   89,  137,  137,  137,  726,
03256     712,  137,  153,  153,  153,  153,  155,  155,  155,  155,
03257     155,   59,   58,   89,   92,   92,   92,  726,   57,   92,
03258     137,   56,   92,   92,   92,   92,   92,  742,  158,  158,
03259     92,  158,  158,  158,  158,  159,  159,  159,  159,  161,
03260     161,  161,  161,   55,  758,  742,  161,   54,   92,   95,
03261     95,   95,  766,   53,   95,   52,   45,   95,   95,   95,
03262     95,   95,  758,    0,  161,   95,  167,  167,  167,  167,
03263 
03264     766,  160,  160,  160,  160,  160,  166,  166,  166,  160,
03265     0,  166,    0,   95,  109,  109,  109,    0,    0,  109,
03266     0,    0,  109,  109,  109,  109,  109,  160,  162,  162,
03267     109,  162,  162,  162,  162,  169,  169,  169,  169,  171,
03268     171,  171,  171,  171,  179,  179,  179,  179,  109,  116,
03269     116,  116,    0,    0,  116,  771,    0,  116,  116,  116,
03270     116,  116,    0,  174,  174,  116,  174,  174,  174,  174,
03271     176,  176,  176,  771,  176,  176,  177,  177,  177,  779,
03272     177,  177,    0,  116,  119,  119,  119,    0,    0,  119,
03273     0,    0,  119,  119,  119,  119,  119,  779,  182,  182,
03274 
03275     119,  182,  182,  182,  182,  183,  183,  183,  183,  180,
03276     180,  180,  180,  180,    0,    0,    0,  180,  119,  156,
03277     156,  156,    0,    0,  156,    0,  156,  156,  156,  156,
03278     156,  156,  157,  157,  157,  180,    0,  157,    0,  157,
03279     157,  157,  157,  157,  157,  164,  164,  164,  788,    0,
03280     164,    0,  164,    0,  164,  164,  164,  164,  165,  165,
03281     165,    0,    0,  165,    0,  165,  788,  165,  165,  165,
03282     165,  172,  172,  172,    0,    0,  172,    0,  172,  172,
03283     172,  172,  172,  172,  173,  173,  173,    0,    0,  173,
03284     0,  173,  173,  173,  173,  173,  173,  181,  181,  181,
03285 
03286     181,    0,    0,  802,  181,  185,  185,  185,  185,  185,
03287     188,  188,    0,  188,  188,  188,  188,  189,  189,  189,
03288     189,  802,  181,  186,  186,  186,    0,    0,  186,    0,
03289     186,  186,  186,  186,  186,  186,  187,  187,  187,  818,
03290     834,  187,  842,  187,  187,  187,  187,  187,  187,  191,
03291     191,  191,  191,  191,  192,  192,  192,  818,  834,  192,
03292     842,  192,  192,  192,  192,  192,  192,  193,  193,  193,
03293     0,    0,  193,    0,  193,  193,  193,  193,  193,  193,
03294     194,  194,  884,  194,  194,  194,  194,  195,  195,  195,
03295     195,  197,  197,  197,  197,  197,  198,  198,  198,    0,
03296 
03297     884,  198,    0,  198,  198,  198,  198,  198,  198,  199,
03298     199,  199,    0,    0,  199,    0,  199,  199,  199,  199,
03299     199,  199,  200,  200,    0,  200,  200,  200,  200,  202,
03300     202,  202,  202,  203,  203,  203,  203,  203,    0,    0,
03301     892,  203,  204,  204,  204,  204,  900,  205,  205,  204,
03302     205,  205,  205,  205,  206,  206,  206,  206,  892,  203,
03303     208,  208,  208,  208,  900,    0,    0,  204,  210,  210,
03304     210,  210,  210,  211,  211,  211,    0,    0,  211,    0,
03305     211,  211,  211,  211,  211,  211,  212,  212,  212,    0,
03306     0,  212,    0,  212,  212,  212,  212,  212,  212,  213,
03307 
03308     213,    0,  213,  213,  213,  213,  215,  215,  215,    0,
03309     215,  215,  216,  216,  216,    0,  216,  216,  218,  218,
03310     218,  218,  220,  220,  220,  220,  220,  223,  223,    0,
03311     223,  223,  223,  223,    0,  239,  215,  239,  215,    0,
03312     239,    0,  216,    0,  216,  221,  221,  221,    0,    0,
03313     221,    0,  221,  221,  221,  221,  221,  221,  222,  222,
03314     222,    0,    0,  222,    0,  222,  222,  222,  222,  222,
03315     222,  224,  224,  224,  224,  225,  225,  225,    0,    0,
03316     225,    0,    0,  225,  225,  225,  225,  225,    0,    0,
03317     0,  225,  226,  226,  226,  226,  226,  229,  229,    0,
03318 
03319     229,  229,  229,  229,  237,  237,  237,  237,    0,  225,
03320     227,  227,  227,    0,    0,  227,    0,  227,  227,  227,
03321     227,  227,  227,  228,  228,  228,    0,    0,  228,    0,
03322     228,  228,  228,  228,  228,  228,  231,  231,  231,    0,
03323     0,  231,  232,  232,  232,    0,  232,  232,  233,  233,
03324     233,    0,  233,  233,  234,  234,  234,    0,  234,  234,
03325     235,  235,  235,    0,  235,  235,  240,  241,  240,  241,
03326     0,  240,  241,  242,  242,  242,    0,    0,  242,  254,
03327     254,  254,  254,  254,  255,  255,  255,  255,  263,  263,
03328     263,  263,    0,  242,  256,  256,  256,    0,    0,  256,
03329 
03330     0,    0,  256,  256,  256,  256,  256,    0,    0,    0,
03331     256,  262,  262,  262,    0,    0,  262,  265,  265,  265,
03332     265,  266,  266,  266,  266,    0,    0,  262,  256,  257,
03333     257,  257,    0,    0,  257,    0,  257,  257,  257,  257,
03334     257,  257,  258,  258,  258,  262,    0,  258,    0,  258,
03335     258,  258,  258,  258,  258,  264,  264,  264,    0,    0,
03336     264,    0,    0,    0,  264,  264,  264,  264,  267,  267,
03337     267,  267,  268,  268,  268,  268,  269,  269,  269,  269,
03338     276,  276,  276,    0,    0,  276,  278,  278,  278,  278,
03339     278,    0,  268,  279,  279,  279,  279,  287,  287,  287,
03340 
03341     287,  289,  289,  289,  289,    0,    0,    0,  268,  270,
03342     270,  270,    0,    0,  270,    0,  270,    0,  270,  270,
03343     270,  270,  271,  271,  271,    0,    0,  271,    0,  271,
03344     0,  271,  271,  271,  271,  272,  272,  272,    0,    0,
03345     272,    0,  272,    0,  272,  272,  272,  272,  273,  273,
03346     273,    0,    0,  273,    0,  273,    0,  273,  273,  273,
03347     273,  274,  274,  274,    0,    0,  274,    0,  274,    0,
03348     274,  274,  274,  274,    0,    0,  286,  286,  286,    0,
03349     0,  286,  290,  290,  290,  290,  292,  292,  292,  292,
03350     274,    0,  286,  291,  291,  291,  291,  291,  300,  300,
03351 
03352     300,  300,  303,  303,  303,  303,  274,  280,  280,  280,
03353     286,    0,  280,    0,    0,  280,  280,  280,  280,  280,
03354     0,    0,    0,  280,  302,  302,  302,  302,  302,    0,
03355     0,    0,  293,  293,  293,  293,  293,    0,    0,    0,
03356     293,  280,  281,  281,  281,    0,    0,  281,    0,  281,
03357     281,  281,  281,  281,  281,  282,  282,  282,  293,    0,
03358     282,    0,  282,  282,  282,  282,  282,  282,  288,  288,
03359     288,    0,    0,  288,    0,    0,    0,  288,  288,  288,
03360     288,  294,  294,  294,    0,    0,  294,    0,  294,  294,
03361     294,  294,  294,  294,  301,  301,  301,    0,    0,  301,
03362 
03363     0,    0,    0,  301,  301,  301,  301,  304,  304,  304,
03364     0,    0,  304,    0,    0,  304,  304,  304,  304,  304,
03365     0,    0,    0,  304,  310,  310,  310,    0,    0,  310,
03366     311,  311,  311,  311,  313,  313,  313,  313,  313,    0,
03367     310,  304,  305,  305,  305,    0,    0,  305,    0,  305,
03368     305,  305,  305,  305,  305,    0,    0,    0,  310,  312,
03369     312,  312,    0,    0,  312,    0,    0,    0,  312,  312,
03370     312,  312,  314,  314,  314,  314,  315,  315,  315,    0,
03371     0,  315,    0,    0,  315,  315,  315,  315,  315,    0,
03372     0,    0,  315,  321,  321,  321,    0,    0,  321,  322,
03373 
03374     322,  322,  322,  324,  324,  324,  324,    0,    0,  321,
03375     315,  316,  316,  316,    0,    0,  316,    0,  316,  316,
03376     316,  316,  316,  316,    0,    0,    0,  321,  323,  323,
03377     323,    0,    0,  323,    0,    0,    0,  323,  323,  323,
03378     323,  325,  325,  325,  325,  327,  327,  327,  327,  327,
03379     328,  328,  328,  328,  329,  329,  329,    0,    0,  329,
03380     0,    0,  329,  329,  329,  329,  329,    0,    0,    0,
03381     329,  335,  335,  335,    0,    0,  335,  336,  336,  336,
03382     336,  338,  338,  338,  338,  338,    0,  335,  329,  330,
03383     330,  330,    0,    0,  330,    0,  330,  330,  330,  330,
03384 
03385     330,  330,    0,    0,    0,  335,  337,  337,  337,    0,
03386     0,  337,    0,    0,    0,  337,  337,  337,  337,  339,
03387     339,  339,  339,  340,  340,  340,  340,  340,    0,    0,
03388     0,  340,  347,  347,  347,  347,  349,  349,  349,  349,
03389     349,  350,  350,  350,  350,  358,  358,  358,  358,  340,
03390     341,  341,  341,    0,    0,  341,    0,  341,  341,  341,
03391     341,  341,  341,  348,  348,  348,    0,    0,  348,    0,
03392     0,    0,  348,  348,  348,  348,  351,  351,  351,    0,
03393     0,  351,    0,    0,  351,  351,  351,  351,  351,    0,
03394     0,    0,  351,  357,  357,  357,    0,    0,  357,  371,
03395 
03396     371,  371,  371,  371,  381,  381,  381,  381,  381,  357,
03397     351,  352,  352,  352,    0,    0,  352,    0,  352,  352,
03398     352,  352,  352,  352,    0,    0,    0,  357,  359,  359,
03399     359,    0,    0,  359,    0,    0,    0,  359,  359,  359,
03400     359,  361,  361,  361,  374,  374,  361,  374,  374,  374,
03401     374,  378,  378,    0,  378,  378,  378,  378,    0,    0,
03402     361,  372,  372,  372,    0,    0,  372,    0,  372,  372,
03403     372,  372,  372,  372,  373,  373,  373,    0,    0,  373,
03404     0,  373,  373,  373,  373,  373,  373,  375,  375,  375,
03405     0,    0,  375,    0,  375,  375,  375,  375,  375,  375,
03406 
03407     376,  376,  376,    0,    0,  376,    0,  376,  376,  376,
03408     376,  376,  376,  377,  377,  377,    0,    0,  377,    0,
03409     377,  377,  377,  377,  377,  377,  380,  380,  380,  380,
03410     380,  380,  380,  380,  380,  384,  384,    0,  384,  384,
03411     384,  384,  389,  389,  389,  389,  380,    0,    0,  389,
03412     380,  380,  380,  390,  390,    0,  390,  390,  390,  390,
03413     0,    0,  380,  382,  382,  382,    0,  389,  382,    0,
03414     382,  382,  382,  382,  382,  382,  383,  383,  383,    0,
03415     0,  383,    0,  383,  383,  383,  383,  383,  383,  385,
03416     385,  385,    0,    0,  385,    0,  385,  385,  385,  385,
03417 
03418     385,  385,  386,  386,  386,    0,    0,  386,    0,  386,
03419     386,  386,  386,  386,  386,  387,  387,  387,    0,    0,
03420     387,    0,  387,  387,  387,  387,  387,  387,  388,  388,
03421     388,    0,    0,  388,  388,  388,  388,  388,  388,  388,
03422     388,  391,  391,  391,    0,    0,  391,  391,  391,  391,
03423     391,  391,  391,  391,  392,  392,  392,    0,    0,  392,
03424     0,    0,    0,  392,  392,  392,  392,    0,  395,  395,
03425     392,  395,  395,  395,  395,  403,  403,    0,  403,  403,
03426     403,  403,  427,  427,  427,    0,    0,  427,  392,  393,
03427     393,  393,    0,    0,  393,    0,  393,  393,  393,  393,
03428 
03429     393,  393,  394,  394,  394,    0,    0,  394,    0,  394,
03430     394,  394,  394,  394,  394,  396,  396,  396,    0,    0,
03431     396,    0,  396,  396,  396,  396,  396,  396,  397,  397,
03432     397,    0,    0,  397,    0,  397,  397,  397,  397,  397,
03433     397,  398,  398,  398,    0,    0,  398,    0,  398,  398,
03434     398,  398,  398,  398,  399,  399,  399,    0,    0,  399,
03435     399,  399,  399,  399,  399,  399,  399,  400,  400,  400,
03436     0,    0,  400,    0,    0,    0,  400,  400,  400,  400,
03437     0,  411,  411,  400,  411,  411,  411,  411,  435,  435,
03438     435,  435,  435,  416,  416,  416,  416,    0,    0,    0,
03439 
03440     416,  400,  401,  401,  401,    0,    0,  401,    0,  401,
03441     401,  401,  401,  401,  401,  402,  402,  402,  416,    0,
03442     402,    0,  402,  402,  402,  402,  402,  402,  404,  404,
03443     404,    0,    0,  404,    0,  404,  404,  404,  404,  404,
03444     404,  405,  405,  405,    0,    0,  405,    0,  405,  405,
03445     405,  405,  405,  405,  406,  406,  406,    0,    0,  406,
03446     0,  406,  406,  406,  406,  406,  406,  407,  407,  407,
03447     0,    0,  407,  407,  407,  407,  407,  407,  407,  407,
03448     408,  408,  408,    0,    0,  408,    0,    0,    0,  408,
03449     408,  408,  408,    0,  417,  417,  408,  417,  417,  417,
03450 
03451     417,  422,  422,    0,  422,  422,  422,  422,  436,  436,
03452     436,  436,    0,    0,  408,  409,  409,  409,    0,    0,
03453     409,    0,  409,  409,  409,  409,  409,  409,  410,  410,
03454     410,    0,    0,  410,    0,  410,  410,  410,  410,  410,
03455     410,  412,  412,  412,    0,    0,  412,    0,  412,  412,
03456     412,  412,  412,  412,  413,  413,  413,    0,    0,  413,
03457     0,  413,  413,  413,  413,  413,  413,  414,  414,  414,
03458     0,    0,  414,    0,  414,  414,  414,  414,  414,  414,
03459     415,  415,  415,    0,    0,  415,  415,  415,  415,  415,
03460     415,  415,  415,  418,  418,  418,    0,    0,  418,  418,
03461 
03462     418,  418,  418,  418,  418,  418,  419,  419,  419,    0,
03463     0,  419,    0,    0,    0,  419,  419,  419,  419,    0,
03464     0,    0,  419,  444,  444,  444,  444,  451,  451,  451,
03465     451,  437,  437,  437,  437,  437,    0,    0,    0,  437,
03466     419,  420,  420,  420,    0,    0,  420,    0,  420,  420,
03467     420,  420,  420,  420,  421,  421,  421,  437,    0,  421,
03468     0,  421,  421,  421,  421,  421,  421,  423,  423,  423,
03469     0,    0,  423,    0,  423,  423,  423,  423,  423,  423,
03470     424,  424,  424,    0,    0,  424,    0,  424,  424,  424,
03471     424,  424,  424,  425,  425,  425,    0,    0,  425,    0,
03472 
03473     425,  425,  425,  425,  425,  425,  426,  426,  426,    0,
03474     0,  426,  426,  426,  426,  426,  426,  426,  426,  438,
03475     438,  438,    0,    0,  438,    0,  438,  438,  438,  438,
03476     438,  438,  439,  439,  439,    0,    0,  439,    0,  439,
03477     439,  439,  439,  439,  439,  445,  445,  445,    0,    0,
03478     445,    0,    0,    0,  445,  445,  445,  445,  446,  446,
03479     446,    0,    0,  446,    0,  446,  446,  446,  446,  446,
03480     446,  447,  447,  447,    0,    0,  447,    0,  447,  447,
03481     447,  447,  447,  447,  448,  448,  448,    0,    0,  448,
03482     0,    0,  448,  448,  448,  448,  448,    0,    0,    0,
03483 
03484     448,  450,  450,  450,  450,  450,  459,  459,  459,  459,
03485     460,  460,  460,  460,  467,  467,  467,  467,  448,  449,
03486     449,  449,    0,    0,  449,    0,  449,  449,  449,  449,
03487     449,  449,  452,  452,  452,    0,    0,  452,    0,    0,
03488     452,  452,  452,  452,  452,    0,    0,    0,  452,  466,
03489     466,  466,  466,  466,  461,  461,  461,  461,  461,  686,
03490     686,  686,  461,    0,  686,    0,  452,  453,  453,  453,
03491     686,    0,  453,    0,  453,  453,  453,  453,  453,  453,
03492     461,  463,  463,  463,  463,  463,  463,  463,  463,  463,
03493     463,  463,  463,  463,  463,  463,  463,  463,  463,  463,
03494 
03495     463,  463,  463,  463,  463,  463,  463,  463,  463,  463,
03496     463,  463,  463,  463,  463,  463,  463,  463,  463,  463,
03497     463,  463,  463,  463,  463,  463,  463,  463,  468,  468,
03498     468,    0,    0,  468,    0,    0,  468,  468,  468,  468,
03499     468,    0,    0,    0,  468,  474,  474,  474,    0,    0,
03500     474,  475,  475,  475,  475,  481,  481,  481,  481,  481,
03501     0,  474,  468,  469,  469,  469,    0,    0,  469,    0,
03502     469,  469,  469,  469,  469,  469,  470,  470,  470,  474,
03503     0,  470,    0,  470,  470,  470,  470,  470,  470,  476,
03504     476,  476,    0,    0,  476,    0,    0,    0,  476,  476,
03505 
03506     476,  476,  477,  477,  477,    0,    0,  477,    0,  477,
03507     477,  477,  477,  477,  477,  478,  478,  478,    0,    0,
03508     478,    0,  478,  478,  478,  478,  478,  478,  479,  479,
03509     479,    0,    0,  479,    0,    0,  479,  479,  479,  479,
03510     479,    0,    0,    0,  479,  482,  482,  482,  482,  490,
03511     490,  490,  490,  491,  491,  491,  491,  493,  493,  493,
03512     493,    0,  479,  480,  480,  480,    0,    0,  480,    0,
03513     480,  480,  480,  480,  480,  480,  483,  483,  483,    0,
03514     0,  483,    0,    0,  483,  483,  483,  483,  483,    0,
03515     0,    0,  483,  489,  489,  489,    0,    0,  489,  494,
03516 
03517     494,  494,  494,  498,  498,  498,  498,  498,    0,  489,
03518     483,  484,  484,  484,    0,    0,  484,    0,  484,  484,
03519     484,  484,  484,  484,    0,    0,    0,  489,  492,  492,
03520     492,    0,    0,  492,    0,    0,    0,  492,  492,  492,
03521     492,    0,    0,    0,  492,  499,  499,  499,  499,  507,
03522     507,  507,  507,  500,  500,  500,  500,  500,    0,    0,
03523     0,  500,  492,  495,  495,  495,    0,    0,  495,    0,
03524     495,  495,  495,  495,  495,  495,  496,  496,  496,  500,
03525     0,  496,    0,  496,  496,  496,  496,  496,  496,  501,
03526     501,  501,    0,    0,  501,    0,  501,  501,  501,  501,
03527 
03528     501,  501,  502,  502,  502,    0,    0,  502,    0,  502,
03529     502,  502,  502,  502,  502,  508,  508,  508,    0,    0,
03530     508,    0,    0,    0,  508,  508,  508,  508,  509,  509,
03531     509,    0,    0,  509,    0,  509,  509,  509,  509,  509,
03532     509,  510,  510,  510,    0,    0,  510,    0,  510,  510,
03533     510,  510,  510,  510,  511,  511,  511,    0,    0,  511,
03534     0,    0,  511,  511,  511,  511,  511,    0,    0,    0,
03535     511,  513,  513,  513,  513,  513,  514,  514,  514,  514,
03536     522,  522,  522,  522,  523,  523,  523,  523,  511,  512,
03537     512,  512,    0,    0,  512,    0,  512,  512,  512,  512,
03538 
03539     512,  512,  515,  515,  515,    0,    0,  515,    0,    0,
03540     515,  515,  515,  515,  515,    0,    0,    0,  515,  525,
03541     525,  525,  525,  525,  524,  524,  524,  524,  524,  928,
03542     928,  928,  524,    0,  928,    0,  515,  516,  516,  516,
03543     0,    0,  516,    0,  516,  516,  516,  516,  516,  516,
03544     524,  526,  526,  526,  526,  527,  527,  527,  527,  527,
03545     0,    0,    0,  527,  534,  534,  534,  534,  540,  540,
03546     540,  540,  540,  541,  541,  541,  541,  549,  549,  549,
03547     549,  527,  528,  528,  528,    0,    0,  528,    0,  528,
03548     528,  528,  528,  528,  528,  529,  529,  529,    0,    0,
03549 
03550     529,    0,  529,  529,  529,  529,  529,  529,  535,  535,
03551     535,    0,    0,  535,    0,    0,    0,  535,  535,  535,
03552     535,  536,  536,  536,    0,    0,  536,    0,  536,  536,
03553     536,  536,  536,  536,  537,  537,  537,    0,    0,  537,
03554     0,  537,  537,  537,  537,  537,  537,  538,  538,  538,
03555     0,    0,  538,    0,    0,  538,  538,  538,  538,  538,
03556     0,    0,    0,  538,  550,  550,  550,  550,  553,  553,
03557     553,  553,  551,  551,  551,  551,  551,    0,    0,    0,
03558     551,  538,  539,  539,  539,    0,    0,  539,    0,  539,
03559     539,  539,  539,  539,  539,  542,  542,  542,  551,    0,
03560 
03561     542,    0,    0,  542,  542,  542,  542,  542,    0,    0,
03562     0,  542,  552,  552,  552,  552,  552,  561,  561,  561,
03563     561,  567,  567,  567,  567,  567,    0,    0,    0,  542,
03564     543,  543,  543,    0,    0,  543,    0,  543,  543,  543,
03565     543,  543,  543,  554,  554,  554,    0,    0,  554,    0,
03566     0,  554,  554,  554,  554,  554,    0,    0,    0,  554,
03567     560,  560,  560,    0,    0,  560,  568,  568,  568,  568,
03568     576,  576,  576,  576,    0,    0,  560,  554,  555,  555,
03569     555,    0,    0,  555,    0,  555,  555,  555,  555,  555,
03570     555,  556,  556,  556,  560,    0,  556,    0,  556,  556,
03571 
03572     556,  556,  556,  556,  562,  562,  562,    0,    0,  562,
03573     0,    0,    0,  562,  562,  562,  562,  563,  563,  563,
03574     0,    0,  563,    0,  563,  563,  563,  563,  563,  563,
03575     564,  564,  564,    0,    0,  564,    0,  564,  564,  564,
03576     564,  564,  564,  565,  565,  565,    0,    0,  565,    0,
03577     0,  565,  565,  565,  565,  565,    0,    0,    0,  565,
03578     575,  575,  575,    0,    0,  575,  577,  577,  577,  577,
03579     579,  579,  579,  579,    0,    0,  575,  565,  566,  566,
03580     566,    0,    0,  566,    0,  566,  566,  566,  566,  566,
03581     566,  569,  569,  569,  575,    0,  569,    0,    0,  569,
03582 
03583     569,  569,  569,  569,    0,    0,    0,  569,  580,  580,
03584     580,  580,  584,  584,  584,  584,  584,  585,  585,  585,
03585     585,  593,  593,  593,  593,  569,  570,  570,  570,    0,
03586     0,  570,    0,  570,  570,  570,  570,  570,  570,  578,
03587     578,  578,    0,    0,  578,    0,    0,    0,  578,  578,
03588     578,  578,    0,    0,    0,  578,  599,  599,  599,  599,
03589     599,    0,    0,    0,  586,  586,  586,  586,  586,    0,
03590     0,    0,  586,  578,  581,  581,  581,    0,    0,  581,
03591     0,  581,  581,  581,  581,  581,  581,  582,  582,  582,
03592     586,    0,  582,    0,  582,  582,  582,  582,  582,  582,
03593 
03594     587,  587,  587,    0,    0,  587,    0,  587,  587,  587,
03595     587,  587,  587,  588,  588,  588,    0,    0,  588,    0,
03596     588,  588,  588,  588,  588,  588,  594,  594,  594,    0,
03597     0,  594,    0,    0,    0,  594,  594,  594,  594,  595,
03598     595,  595,    0,    0,  595,    0,  595,  595,  595,  595,
03599     595,  595,  596,  596,  596,    0,    0,  596,    0,  596,
03600     596,  596,  596,  596,  596,  597,  597,  597,    0,    0,
03601     597,    0,    0,  597,  597,  597,  597,  597,    0,    0,
03602     0,  597,  600,  600,  600,  600,  608,  608,  608,  608,
03603     609,  609,  609,  609,  691,  691,  691,  691,    0,  597,
03604 
03605     598,  598,  598,    0,    0,  598,    0,  598,  598,  598,
03606     598,  598,  598,  601,  601,  601,    0,    0,  601,    0,
03607     0,  601,  601,  601,  601,  601,  611,  611,  611,  601,
03608     0,  611,    0,    0,    0,  610,  610,  610,  610,  610,
03609     937,  937,  937,  610,    0,  937,    0,  601,  602,  602,
03610     602,    0,  937,  602,  611,  602,  602,  602,  602,  602,
03611     602,  610,  616,  616,  616,  616,    0,  617,  617,  616,
03612     617,  617,  617,  617,  622,  622,    0,  622,  622,  622,
03613     622,  692,  692,  692,  692,    0,    0,  616,  618,  618,
03614     618,    0,    0,  618,  618,  618,  618,  618,  618,  618,
03615 
03616     618,  619,  619,  619,    0,    0,  619,    0,  619,  619,
03617     619,  619,  619,  619,    0,  627,  627,  619,  627,  627,
03618     627,  627,  639,  639,    0,  639,  639,  639,  639,  699,
03619     699,  699,  699,    0,    0,  619,  620,  620,  620,    0,
03620     0,  620,  620,  620,  620,  620,  620,  620,  620,  621,
03621     621,  621,    0,    0,  621,    0,    0,    0,  621,  621,
03622     621,  621,    0,  644,  644,  621,  644,  644,  644,  644,
03623     704,  704,  704,  704,  704,  643,  643,  643,  643,    0,
03624     0,    0,  643,  621,  623,  623,  623,    0,    0,  623,
03625     623,  623,  623,  623,  623,  623,  623,  624,  624,  624,
03626 
03627     643,    0,  624,    0,    0,    0,  624,  624,  624,  624,
03628     0,  649,  649,  624,  649,  649,  649,  649,  705,  705,
03629     705,  705,    0,  651,  651,  651,  651,    0,    0,    0,
03630     651,  624,  625,  625,  625,    0,    0,  625,    0,  625,
03631     625,  625,  625,  625,  625,  626,  626,  626,  651,    0,
03632     626,    0,  626,  626,  626,  626,  626,  626,  628,  628,
03633     628,    0,    0,  628,    0,  628,  628,  628,  628,  628,
03634     628,  629,  629,  629,    0,    0,  629,    0,  629,  629,
03635     629,  629,  629,  629,  630,  630,  630,    0,    0,  630,
03636     0,  630,  630,  630,  630,  630,  630,  631,  631,  631,
03637 
03638     0,    0,  631,  631,  631,  631,  631,  631,  631,  631,
03639     632,  632,  632,    0,    0,  632,    0,  632,  632,  632,
03640     632,  632,  632,    0,  652,  652,  632,  652,  652,  652,
03641     652,  657,  657,    0,  657,  657,  657,  657,  713,  713,
03642     713,  713,    0,    0,  632,  633,  633,  633,    0,    0,
03643     633,    0,  633,  633,  633,  633,  633,  633,  634,  634,
03644     634,    0,    0,  634,    0,  634,  634,  634,  634,  634,
03645     634,  635,  635,  635,    0,    0,  635,    0,  635,  635,
03646     635,  635,  635,  635,  636,  636,  636,    0,    0,  636,
03647     636,  636,  636,  636,  636,  636,  636,  637,  637,  637,
03648 
03649     0,    0,  637,    0,    0,    0,  637,  637,  637,  637,
03650     0,  662,  662,  637,  662,  662,  662,  662,  674,  674,
03651     0,  674,  674,  674,  674,  718,  718,  718,  718,  718,
03652     0,  637,  638,  638,  638,    0,    0,  638,    0,  638,
03653     638,  638,  638,  638,  638,  640,  640,  640,    0,    0,
03654     640,    0,  640,  640,  640,  640,  640,  640,  641,  641,
03655     641,    0,    0,  641,    0,  641,  641,  641,  641,  641,
03656     641,  642,  642,  642,    0,    0,  642,  642,  642,  642,
03657     642,  642,  642,  642,  645,  645,  645,    0,    0,  645,
03658     645,  645,  645,  645,  645,  645,  645,  646,  646,  646,
03659 
03660     0,    0,  646,    0,  646,  646,  646,  646,  646,  646,
03661     0,  679,  679,  646,  679,  679,  679,  679,  719,  719,
03662     719,  719,    0,  678,  678,  678,  678,    0,    0,    0,
03663     678,  646,  647,  647,  647,    0,    0,  647,  647,  647,
03664     647,  647,  647,  647,  647,  648,  648,  648,  678,    0,
03665     648,    0,    0,    0,  648,  648,  648,  648,    0,  684,
03666     684,  648,  684,  684,  684,  684,  727,  727,  727,  727,
03667     706,  706,  706,  706,  706,    0,    0,    0,  706,  648,
03668     650,  650,  650,    0,    0,  650,  650,  650,  650,  650,
03669     650,  650,  650,  653,  653,  653,  706,    0,  653,  653,
03670 
03671     653,  653,  653,  653,  653,  653,  654,  654,  654,    0,
03672     0,  654,    0,  654,  654,  654,  654,  654,  654,    0,
03673     0,    0,  654,  698,  698,  698,    0,    0,  698,  728,
03674     728,  728,  728,  734,  734,  734,  734,  734,    0,  698,
03675     654,  655,  655,  655,    0,    0,  655,  655,  655,  655,
03676     655,  655,  655,  655,  656,  656,  656,  698,    0,  656,
03677     0,    0,    0,  656,  656,  656,  656,    0,    0,    0,
03678     656,  735,  735,  735,  735,  743,  743,  743,  743,  729,
03679     729,  729,  729,  729,    0,    0,    0,  729,  656,  658,
03680     658,  658,    0,    0,  658,  658,  658,  658,  658,  658,
03681 
03682     658,  658,  659,  659,  659,  729,    0,  659,    0,    0,
03683     0,  659,  659,  659,  659,    0,    0,    0,  659,  744,
03684     744,  744,  744,  746,  746,  746,  746,  745,  745,  745,
03685     745,  745,    0,    0,    0,  745,  659,  660,  660,  660,
03686     0,    0,  660,    0,  660,  660,  660,  660,  660,  660,
03687     661,  661,  661,  745,    0,  661,    0,  661,  661,  661,
03688     661,  661,  661,  663,  663,  663,    0,    0,  663,    0,
03689     663,  663,  663,  663,  663,  663,  664,  664,  664,    0,
03690     0,  664,    0,  664,  664,  664,  664,  664,  664,  665,
03691     665,  665,    0,    0,  665,    0,  665,  665,  665,  665,
03692 
03693     665,  665,  666,  666,  666,    0,    0,  666,  666,  666,
03694     666,  666,  666,  666,  666,  667,  667,  667,    0,    0,
03695     667,    0,  667,  667,  667,  667,  667,  667,    0,    0,
03696     0,  667,  751,  751,  751,  751,  752,  752,  752,  752,
03697     753,  753,  753,  753,  753,    0,    0,    0,  753,  667,
03698     668,  668,  668,    0,    0,  668,    0,  668,  668,  668,
03699     668,  668,  668,  669,  669,  669,  753,    0,  669,    0,
03700     669,  669,  669,  669,  669,  669,  670,  670,  670,    0,
03701     0,  670,    0,  670,  670,  670,  670,  670,  670,  671,
03702     671,  671,    0,    0,  671,  671,  671,  671,  671,  671,
03703 
03704     671,  671,  672,  672,  672,    0,    0,  672,    0,    0,
03705     0,  672,  672,  672,  672,    0,    0,    0,  672,  754,
03706     754,  754,  754,  755,  755,  755,  755,  762,  762,  762,
03707     762,  767,  767,  767,  767,    0,  672,  673,  673,  673,
03708     0,    0,  673,    0,  673,  673,  673,  673,  673,  673,
03709     675,  675,  675,    0,    0,  675,    0,  675,  675,  675,
03710     675,  675,  675,  676,  676,  676,    0,    0,  676,    0,
03711     676,  676,  676,  676,  676,  676,  677,  677,  677,    0,
03712     0,  677,  677,  677,  677,  677,  677,  677,  677,  680,
03713     680,  680,    0,    0,  680,  680,  680,  680,  680,  680,
03714 
03715     680,  680,  681,  681,  681,    0,    0,  681,    0,  681,
03716     681,  681,  681,  681,  681,    0,    0,    0,  681,  761,
03717     761,  761,    0,    0,  761,  768,  768,  768,  768,  775,
03718     775,  775,  775,    0,    0,  761,  681,  682,  682,  682,
03719     0,    0,  682,  682,  682,  682,  682,  682,  682,  682,
03720     683,  683,  683,  761,    0,  683,    0,    0,    0,  683,
03721     683,  683,  683,    0,    0,    0,  683,  774,  774,  774,
03722     0,    0,  774,  780,  780,  780,  780,  780,  781,  781,
03723     781,  781,    0,  774,  683,  685,  685,  685,    0,    0,
03724     685,  685,  685,  685,  685,  685,  685,  685,  693,  693,
03725 
03726     693,  774,    0,  693,    0,  693,  693,  693,  693,  693,
03727     693,  694,  694,  694,    0,    0,  694,    0,  694,  694,
03728     694,  694,  694,  694,  696,  696,  696,    0,    0,  696,
03729     0,  696,  696,  696,  696,  696,  696,  697,  697,  697,
03730     0,    0,  697,    0,  697,  697,  697,  697,  697,  697,
03731     700,  700,  700,    0,    0,  700,    0,    0,    0,  700,
03732     700,  700,  700,  701,  701,  701,    0,    0,  701,    0,
03733     701,  701,  701,  701,  701,  701,  702,  702,  702,    0,
03734     0,  702,    0,  702,  702,  702,  702,  702,  702,  707,
03735     707,  707,    0,    0,  707,    0,  707,  707,  707,  707,
03736 
03737     707,  707,  708,  708,  708,    0,    0,  708,    0,  708,
03738     708,  708,  708,  708,  708,  714,  714,  714,    0,    0,
03739     714,    0,    0,    0,  714,  714,  714,  714,  715,  715,
03740     715,    0,    0,  715,    0,  715,  715,  715,  715,  715,
03741     715,  716,  716,  716,    0,    0,  716,    0,  716,  716,
03742     716,  716,  716,  716,  717,  717,  717,    0,    0,  717,
03743     0,    0,  717,  717,  717,  717,  717,    0,    0,    0,
03744     717,  789,  789,  789,  789,    0,  782,  782,  782,  782,
03745     782,  938,  938,  938,  782,    0,  938,    0,  717,  720,
03746     720,  720,    0,    0,  720,    0,    0,  720,  720,  720,
03747 
03748     720,  720,  782,    0,    0,  720,  794,  794,  794,  794,
03749     794,  795,  795,  795,  795,  803,  803,  803,  803,  804,
03750     804,  804,  804,  720,  721,  721,  721,    0,    0,  721,
03751     0,  721,  721,  721,  721,  721,  721,  722,  722,  722,
03752     0,    0,  722,    0,  722,  722,  722,  722,  722,  722,
03753     730,  730,  730,    0,    0,  730,    0,  730,  730,  730,
03754     730,  730,  730,  731,  731,  731,    0,    0,  731,    0,
03755     731,  731,  731,  731,  731,  731,  732,  732,  732,    0,
03756     0,  732,    0,    0,  732,  732,  732,  732,  732,    0,
03757     0,    0,  732,  810,  810,  810,  810,  810,    0,    0,
03758 
03759     0,  805,  805,  805,  805,  805,    0,    0,    0,  805,
03760     732,  733,  733,  733,    0,    0,  733,    0,  733,  733,
03761     733,  733,  733,  733,  736,  736,  736,  805,    0,  736,
03762     0,    0,  736,  736,  736,  736,  736,    0,    0,    0,
03763     736,  811,  811,  811,  811,  819,  819,  819,  819,  820,
03764     820,  820,  820,  822,  822,  822,  822,    0,  736,  737,
03765     737,  737,    0,    0,  737,    0,  737,  737,  737,  737,
03766     737,  737,  747,  747,  747,    0,    0,  747,    0,    0,
03767     0,  747,  747,  747,  747,  748,  748,  748,    0,    0,
03768     748,    0,  748,  748,  748,  748,  748,  748,  749,  749,
03769 
03770     749,    0,    0,  749,    0,  749,  749,  749,  749,  749,
03771     749,  750,  750,  750,    0,    0,  750,    0,    0,  750,
03772     750,  750,  750,  750,    0,    0,    0,  750,  827,  827,
03773     827,  827,  828,  828,  828,  828,  821,  821,  821,  821,
03774     821,    0,    0,    0,  821,  750,  756,  756,  756,    0,
03775     0,  756,    0,  756,  756,  756,  756,  756,  756,  757,
03776     757,  757,  821,    0,  757,    0,  757,  757,  757,  757,
03777     757,  757,  759,  759,  759,    0,    0,  759,    0,  759,
03778     759,  759,  759,  759,  759,  760,  760,  760,    0,    0,
03779     760,    0,  760,  760,  760,  760,  760,  760,  763,  763,
03780 
03781     763,    0,    0,  763,    0,    0,    0,  763,  763,  763,
03782     763,  764,  764,  764,    0,    0,  764,    0,  764,  764,
03783     764,  764,  764,  764,  765,  765,  765,    0,    0,  765,
03784     0,  765,  765,  765,  765,  765,  765,  769,  769,  769,
03785     0,    0,  769,    0,  769,  769,  769,  769,  769,  769,
03786     770,  770,  770,    0,    0,  770,    0,  770,  770,  770,
03787     770,  770,  770,  772,  772,  772,    0,    0,  772,    0,
03788     772,  772,  772,  772,  772,  772,  773,  773,  773,    0,
03789     0,  773,    0,  773,  773,  773,  773,  773,  773,  776,
03790     776,  776,    0,    0,  776,    0,    0,    0,  776,  776,
03791 
03792     776,  776,  777,  777,  777,    0,    0,  777,    0,  777,
03793     777,  777,  777,  777,  777,  778,  778,  778,    0,    0,
03794     778,    0,  778,  778,  778,  778,  778,  778,  783,  783,
03795     783,    0,    0,  783,    0,  783,  783,  783,  783,  783,
03796     783,  784,  784,  784,    0,    0,  784,    0,  784,  784,
03797     784,  784,  784,  784,  790,  790,  790,    0,    0,  790,
03798     0,    0,    0,  790,  790,  790,  790,  791,  791,  791,
03799     0,    0,  791,    0,  791,  791,  791,  791,  791,  791,
03800     792,  792,  792,    0,    0,  792,    0,  792,  792,  792,
03801     792,  792,  792,  793,  793,  793,    0,    0,  793,    0,
03802 
03803     0,  793,  793,  793,  793,  793,    0,    0,    0,  793,
03804     830,  830,  830,  830,    0,  829,  829,  829,  829,  829,
03805     939,  939,  939,  829,    0,  939,    0,  793,  796,  796,
03806     796,    0,    0,  796,    0,    0,  796,  796,  796,  796,
03807     796,  829,    0,    0,  796,  831,  831,  831,  831,  838,
03808     838,  838,  838,  843,  843,  843,    0,    0,  843,    0,
03809     0,  843,  796,  797,  797,  797,    0,    0,  797,    0,
03810     797,  797,  797,  797,  797,  797,  798,  798,  798,    0,
03811     0,  798,    0,  798,  798,  798,  798,  798,  798,  806,
03812     806,  806,    0,    0,  806,    0,  806,  806,  806,  806,
03813 
03814     806,  806,  807,  807,  807,    0,    0,  807,    0,  807,
03815     807,  807,  807,  807,  807,  808,  808,  808,    0,    0,
03816     808,    0,    0,  808,  808,  808,  808,  808,    0,    0,
03817     0,  808,  837,  837,  837,  848,  848,  837,  848,  848,
03818     848,  848,  865,  865,  865,  865,  865,    0,  837,  808,
03819     809,  809,  809,    0,    0,  809,    0,  809,  809,  809,
03820     809,  809,  809,  812,  812,  812,  837,    0,  812,    0,
03821     0,  812,  812,  812,  812,  812,    0,  853,  853,  812,
03822     853,  853,  853,  853,  867,  867,  867,  867,  867,  847,
03823     847,  847,  847,    0,    0,    0,  847,  812,  813,  813,
03824 
03825     813,    0,    0,  813,    0,  813,  813,  813,  813,  813,
03826     813,  823,  823,  823,  847,    0,  823,    0,    0,    0,
03827     823,  823,  823,  823,  824,  824,  824,    0,    0,  824,
03828     0,  824,  824,  824,  824,  824,  824,  825,  825,  825,
03829     0,    0,  825,    0,  825,  825,  825,  825,  825,  825,
03830     826,  826,  826,    0,    0,  826,    0,    0,  826,  826,
03831     826,  826,  826,    0,  858,  858,  826,  858,  858,  858,
03832     858,  870,  870,  870,  870,  870,  862,  862,  862,  862,
03833     0,    0,    0,  862,  826,  832,  832,  832,    0,    0,
03834     832,    0,  832,  832,  832,  832,  832,  832,  833,  833,
03835 
03836     833,  862,    0,  833,    0,  833,  833,  833,  833,  833,
03837     833,  835,  835,  835,    0,    0,  835,    0,  835,  835,
03838     835,  835,  835,  835,  836,  836,  836,    0,    0,  836,
03839     0,  836,  836,  836,  836,  836,  836,  839,  839,  839,
03840     0,    0,  839,    0,    0,    0,  839,  839,  839,  839,
03841     840,  840,  840,    0,    0,  840,    0,  840,  840,  840,
03842     840,  840,  840,  841,  841,  841,    0,    0,  841,    0,
03843     841,  841,  841,  841,  841,  841,  849,  849,  849,    0,
03844     0,  849,  849,  849,  849,  849,  849,  849,  849,  850,
03845     850,  850,    0,    0,  850,    0,  850,  850,  850,  850,
03846 
03847     850,  850,    0,  863,  863,  850,  863,  863,  863,  863,
03848     864,  864,    0,  864,  864,  864,  864,  872,  872,  872,
03849     872,  872,    0,  850,  851,  851,  851,    0,    0,  851,
03850     851,  851,  851,  851,  851,  851,  851,  852,  852,  852,
03851     0,    0,  852,    0,    0,    0,  852,  852,  852,  852,
03852     0,  866,  866,  852,  866,  866,  866,  866,  868,  868,
03853     0,  868,  868,  868,  868,  875,  875,  875,  875,  875,
03854     0,  852,  854,  854,  854,    0,    0,  854,  854,  854,
03855     854,  854,  854,  854,  854,  855,  855,  855,    0,    0,
03856     855,    0,  855,  855,  855,  855,  855,  855,    0,  869,
03857 
03858     869,  855,  869,  869,  869,  869,  871,  871,    0,  871,
03859     871,  871,  871,  880,  880,  880,  880,    0,    0,  855,
03860     856,  856,  856,    0,    0,  856,  856,  856,  856,  856,
03861     856,  856,  856,  857,  857,  857,    0,    0,  857,    0,
03862     0,    0,  857,  857,  857,  857,    0,  873,  873,  857,
03863     873,  873,  873,  873,  874,  874,    0,  874,  874,  874,
03864     874,  881,  881,  881,  881,    0,    0,  857,  859,  859,
03865     859,    0,    0,  859,  859,  859,  859,  859,  859,  859,
03866     859,  860,  860,  860,    0,    0,  860,    0,  860,  860,
03867     860,  860,  860,  860,    0,  876,  876,  860,  876,  876,
03868 
03869     876,  876,  877,  877,  877,    0,    0,  877,  940,  940,
03870     940,  877,    0,  940,    0,  860,  861,  861,  861,    0,
03871     0,  861,  861,  861,  861,  861,  861,  861,  861,  882,
03872     882,  882,    0,    0,  882,    0,  882,  882,  882,  882,
03873     882,  882,  887,  887,  887,    0,    0,  887,  887,  887,
03874     888,  888,  888,  888,  896,  896,  896,  896,  887,  904,
03875     904,  904,  904,  905,  905,  905,  905,  906,  906,  906,
03876     906,  907,  907,  907,  907,    0,  887,  889,  889,  889,
03877     0,    0,  889,    0,    0,    0,  889,  889,  889,  889,
03878     890,  890,  890,    0,    0,  890,    0,  890,  890,  890,
03879 
03880     890,  890,  890,  895,  895,  895,    0,    0,  895,  895,
03881     895,  908,  908,  908,  908,    0,    0,    0,  908,  895,
03882     909,  909,  909,  909,  910,  910,  910,  910,  912,  912,
03883     912,  912,  914,  914,  914,  914,  908,  895,  897,  897,
03884     897,    0,    0,  897,    0,    0,    0,  897,  897,  897,
03885     897,  898,  898,  898,    0,    0,  898,    0,  898,  898,
03886     898,  898,  898,  898,  903,  903,  903,    0,    0,  903,
03887     903,  903,    0,  911,  911,  911,  911,  911,    0,    0,
03888     903,  911,  915,  915,  915,  915,    0,    0,  916,  916,
03889     916,  916,  936,  936,  936,  916,    0,  936,  903,  911,
03890 
03891     913,  913,  913,    0,    0,  913,    0,    0,    0,  913,
03892     913,  913,  913,  916,  917,  917,  917,  917,  918,  918,
03893     918,  918,  919,  919,  919,  919,  919,  936,    0,    0,
03894     919,  920,  920,  920,  920,  921,  921,  921,  921,  922,
03895     922,  922,  922,  923,  923,  923,  923,    0,  919,  924,
03896     924,  924,  924,    0,    0,    0,  924,  925,  925,  925,
03897     925,  926,  926,  926,  926,  927,  927,  927,  927,  927,
03898     931,  931,  931,  927,  924,  931,  934,  934,  934,    0,
03899     941,  934,  941,    0,    0,  941,    0,  942,  942,  942,
03900     0,  927,  942,  943,  944,  943,  944,    0,  943,  944,
03901 
03902     945,  946,  945,  946,    0,  945,  946,  947,    0,  947,
03903     0,    0,  947,  931,    0,    0,    0,    0,  934,  949,
03904     949,  949,  949,  949,  949,  949,  949,  950,  950,  950,
03905     950,  950,  950,  950,  950,  951,  951,  951,  951,  951,
03906     951,  951,  951,  952,  952,  952,  952,  952,  952,  952,
03907     952,  953,  953,  953,  953,  953,  953,  953,  953,  954,
03908     0,    0,  954,  955,    0,    0,  955,    0,  955,  955,
03909     955,  956,  956,  956,  956,  956,  956,  956,  956,  957,
03910     0,    0,  957,    0,  957,  957,  958,  958,  958,  958,
03911     958,  958,  958,  958,  959,  959,    0,  959,    0,  959,
03912 
03913     959,  959,  960,  960,  960,  960,  960,  960,  960,  960,
03914     961,  961,    0,  961,  961,  961,  961,  961,  962,  962,
03915     962,  962,  962,  962,  962,  962,  963,  963,  963,  963,
03916     963,  963,  963,  963,  964,  964,    0,    0,  964,  964,
03917     966,  966,  966,  966,  966,  966,  966,  966,  967,  967,
03918     967,  967,  967,  967,  967,  967,  968,  968,  968,  968,
03919     968,  968,  968,  968,  969,  969,  969,  969,  969,  969,
03920     969,  969,  971,  971,  971,  971,  971,  971,  971,  971,
03921     972,  972,  972,  972,  972,  972,  972,  972,  973,  973,
03922     973,  973,  973,  973,  973,  973,  974,  974,    0,  974,
03923 
03924     0,  974,  974,  974,  975,  975,  975,  975,  975,  975,
03925     975,  975,  977,  977,    0,  977,  977,  977,  977,  977,
03926     978,  978,  978,  978,  978,  978,  978,  978,  979,    0,
03927     0,  979,  980,  980,  980,  980,  980,  980,  980,  980,
03928     981,  981,  981,  981,  981,  981,  981,  981,  982,  982,
03929     0,    0,  982,  982,  984,  984,  984,  984,  984,  984,
03930     984,  984,  986,  986,  986,  986,  986,  986,  986,  986,
03931     987,  987,  987,  987,  987,  987,  987,  987,  989,  989,
03932     989,  989,  989,  989,  989,  989,  990,  990,  990,  990,
03933     990,  990,  990,  990,  991,  991,  991,  991,  991,  991,
03934 
03935     991,  991,  992,  992,  992,  992,  992,  992,  992,  992,
03936     993,  993,  993,  993,  993,  993,  993,  993,  994,  994,
03937     994,  994,  994,  994,  994,  994,  995,  995,  995,  995,
03938     995,  995,  995,  995,  996,  996,  996,  996,  996,  996,
03939     996,  996,  997,  997,  997,  997,  997,  997,  997,  997,
03940     998,  998,  998,  998,  998,  998,  998,  998,  999,  999,
03941     999,  999,  999,  999,  999,  999, 1000, 1000, 1000, 1000,
03942     1000, 1000, 1000, 1000, 1001, 1001, 1001, 1001, 1001, 1001,
03943     1001, 1001, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002,
03944     1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1004, 1004,
03945 
03946     1004, 1004, 1004, 1004, 1004, 1004, 1005, 1005, 1005, 1005,
03947     1005, 1005, 1005, 1005, 1006,    0,    0, 1006, 1007, 1007,
03948     1007, 1007, 1007, 1007, 1007, 1007, 1008, 1008, 1008, 1008,
03949     1008, 1008, 1008, 1008, 1009, 1009, 1009, 1009, 1009, 1009,
03950     1009, 1009, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011,
03951     1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1013, 1013,
03952     1013, 1013, 1013, 1013, 1013, 1013, 1014, 1014, 1014, 1014,
03953     1014, 1014, 1014, 1014, 1015, 1015, 1015, 1015, 1015, 1015,
03954     1015, 1015, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016,
03955     1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1018, 1018,
03956 
03957     1018, 1018, 1018, 1018, 1018, 1018, 1019, 1019, 1019, 1019,
03958     1019, 1019, 1019, 1019, 1020, 1020, 1020, 1020, 1020, 1020,
03959     1020, 1020, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021,
03960     1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1023, 1023,
03961     1023, 1023, 1023, 1023, 1023, 1023, 1024, 1024, 1024, 1024,
03962     1024, 1024, 1024, 1024, 1025, 1025, 1025, 1025, 1025, 1025,
03963     1025, 1025, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026,
03964     1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1028, 1028,
03965     1028, 1028, 1028, 1028, 1028, 1028, 1029,    0,    0, 1029,
03966     1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1031, 1031,
03967 
03968     1031, 1031, 1031, 1031, 1031, 1031, 1032, 1032, 1032, 1032,
03969     1032, 1032, 1032, 1032, 1033, 1033, 1033, 1033, 1033, 1033,
03970     1033, 1033, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034,
03971     1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1036, 1036,
03972     1036, 1036, 1036, 1036, 1036, 1036, 1037, 1037, 1037, 1037,
03973     1037, 1037, 1037, 1037, 1038, 1038, 1038, 1038, 1038, 1038,
03974     1038, 1038, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039,
03975     1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1041, 1041,
03976     1041, 1041, 1041, 1041, 1041, 1041, 1042, 1042, 1042, 1042,
03977     1042, 1042, 1042, 1042, 1043, 1043, 1043, 1043, 1043, 1043,
03978 
03979     1043, 1043, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044,
03980     1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1046, 1046,
03981     1046, 1046, 1046, 1046, 1046, 1046, 1047, 1047, 1047, 1047,
03982     1047, 1047, 1047, 1047, 1048, 1048, 1048, 1048, 1048, 1048,
03983     1048, 1048, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049,
03984     1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1051, 1051,
03985     1051, 1051, 1051, 1051, 1051, 1051, 1052, 1052, 1052, 1052,
03986     1052, 1052, 1052, 1052, 1053, 1053, 1053, 1053, 1053, 1053,
03987     1053, 1053, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054,
03988     1055,    0,    0, 1055, 1056, 1056, 1056, 1056, 1056, 1056,
03989 
03990     1056, 1056, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057,
03991     1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1059, 1059,
03992     1059, 1059, 1059, 1059, 1059, 1059, 1060, 1060, 1060, 1060,
03993     1060, 1060, 1060, 1060, 1061, 1061, 1061, 1061, 1061, 1061,
03994     1061, 1061, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062,
03995     1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1064, 1064,
03996     1064, 1064, 1064, 1064, 1064, 1064, 1065, 1065, 1065, 1065,
03997     1065, 1065, 1065, 1065, 1066, 1066, 1066, 1066, 1066, 1066,
03998     1066, 1066, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067,
03999     1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1069, 1069,
04000 
04001     1069, 1069, 1069, 1069, 1069, 1069, 1070, 1070, 1070, 1070,
04002     1070, 1070, 1070, 1070, 1071, 1071, 1071, 1071, 1071, 1071,
04003     1071, 1071, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072,
04004     1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1074, 1074,
04005     1074, 1074, 1074, 1074, 1074, 1074, 1075, 1075, 1075, 1075,
04006     1075, 1075, 1075, 1075, 1076, 1076, 1076, 1076, 1076, 1076,
04007     1076, 1076, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077,
04008     1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1079, 1079,
04009     1079, 1079, 1079, 1079, 1079, 1079, 1080, 1080, 1080, 1080,
04010     1080, 1080, 1080, 1080, 1081,    0,    0, 1081, 1082, 1082,
04011 
04012     1082, 1082, 1082, 1082, 1082, 1082, 1083, 1083, 1083, 1083,
04013     1083, 1083, 1083, 1083, 1084, 1084, 1084, 1084, 1084, 1084,
04014     1084, 1084, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085,
04015     1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1087, 1087,
04016     1087, 1087, 1087, 1087, 1087, 1087, 1088, 1088, 1088, 1088,
04017     1088, 1088, 1088, 1088, 1089, 1089,    0, 1089, 1089, 1089,
04018     1089, 1089,  948,  948,  948,  948,  948,  948,  948,  948,
04019     948,  948,  948,  948,  948,  948,  948,  948,  948,  948,
04020     948,  948,  948,  948,  948,  948,  948,  948,  948,  948,
04021     948,  948,  948,  948,  948,  948,  948,  948,  948,  948,
04022 
04023     948,  948,  948,  948,  948,  948,  948,  948,  948,  948
04024 } ;
04025 
04026 //static yy_state_type yy_last_accepting_state;
04027 //static char *yy_last_accepting_cpos;
04028 
04029 //extern int yy_flex_debug;
04030 //int yy_flex_debug = 1;
04031 
04032 static const short int yy_rule_linenum[49] =
04033 {   0,
04034     122,  127,  128,  129,  130,  131,  132,  133,  134,  135,
04035     136,  137,  138,  141,  145,  149,  157,  160,  164,  169,
04036     177,  178,  180,  184,  195,  199,  205,  206,  211,  220,
04037     234,  235,  240,  249,  260,  263,  264,  266,  270,  274,
04038     279,  281,  282,  289,  295,  302,  305,  309
04039 } ;
04040 
04041 /* The intent behind this definition is that it'll catch
04042  * any uses of REJECT which flex missed.
04043  */
04044 #define REJECT reject_used_but_not_detected
04045 #define yymore() yymore_used_but_not_detected
04046 #define YY_MORE_ADJ 0
04047 //char *yytext;
04048 /**************************************************
04049  * VRML 2.0 Parser
04050  * Copyright (C) 1996 Silicon Graphics, Inc.
04051  *
04052  * Author(s)    : Gavin Bell
04053  *                Daniel Woods (first port)
04054  **************************************************
04055  */
04056 //#include "tokens.h"
04057 #include <string.h>
04058 
04059 // used to reset the lexer input after initialization of VRML nodes
04060 //static void (*theyyInput)(char *, int &, int);
04061 
04062 // We define the YY_INPUT so we an change the input source later
04063 #define YY_INPUT(buf, result, max_size) (*theyyInput)(buf, result, max_size,this);
04064 
04065 /* Current line number */
04066 //int currentLineNumber = 1;
04067 //void yyResetLineNumber() { currentLineNumber = 1; }
04068 
04069 //extern void yyerror(const char *);
04070 
04071         /* The YACC parser sets this to a token to direct the lexer */
04072     /* in cases where just syntax isn't enough: */
04073 //int expectToken = 0;
04074 
04075 /* True when parsing a multiple-valued field: */
04076 //static int parsing_mf = 0;
04077 
04078 /* These are used when parsing SFImage fields: */
04079 //static int sfImageIntsParsed = 0;
04080 //static int sfImageIntsExpected = 0;
04081 
04082 #ifdef __cplusplus
04083 //extern "C"
04084 #endif
04085 int vtkVRMLYaccData::yywrap() { BEGIN INITIAL; return 1; }
04086 
04087 /* Normal state:  parsing nodes.  The initial start state is used */
04088 /* only to recognize the VRML header. */
04089 /* Start tokens for all of the field types, */
04090 /* except for MFNode and SFNode, which are almost completely handled */
04091 /* by the parser: */
04092 /* Big hairy expression for floating point numbers: */
04093 /* Ints are decimal or hex (0x##): */
04094 /* Whitespace.  Using this pattern can screw up currentLineNumber, */
04095 /* so it is only used wherever it is really convenient and it is */
04096 /* extremely unlikely that the user will put in a carriage return */
04097 /* (example: between the floats in an SFVec3f) */
04098 /* And the same pattern without the newline */
04099 /* Legal characters to start an identifier */
04100 /* Legal other characters in an identifier */
04101 
04102 /* Macros after this point can all be overridden by user definitions in
04103  * section 1.
04104  */
04105 
04106 #ifdef YY_MALLOC_DECL
04107 YY_MALLOC_DECL
04108 #else
04109 #if __STDC__
04110 #ifndef __cplusplus
04111 #include <stdlib.h>
04112 #endif
04113 #else
04114 /* Just try to get by without declaring the routines.  This will fail
04115  * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
04116  * or sizeof(void*) != sizeof(int).
04117  */
04118 #endif
04119 #endif
04120 
04121 /* Amount of stuff to slurp up with each read. */
04122 #ifndef YY_READ_BUF_SIZE
04123 #define YY_READ_BUF_SIZE 8192
04124 #endif
04125 
04126 /* Copy whatever the last rule matched to the standard output. */
04127 
04128 #ifndef ECHO
04129 /* This used to be an fputs(), but since the string might contain NUL's,
04130  * we now use fwrite().
04131  */
04132 #define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
04133 #endif
04134 
04135 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
04136  * is returned in "result".
04137  */
04138 #ifndef YY_INPUT
04139 #define YY_INPUT(buf,result,max_size) \
04140         if ( yy_current_buffer->yy_is_interactive ) \
04141                 { \
04142                 int c = getc( yyin ); \
04143                 result = c == EOF ? 0 : 1; \
04144                 buf[0] = (char) c; \
04145                 } \
04146         else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \
04147                   && ferror( yyin ) ) \
04148                 YY_FATAL_ERROR( "input in flex scanner failed" );
04149 #endif
04150 
04151 /* No semi-colon after return; correct usage is to write "yyterminate();" -
04152  * we don't want an extra ';' after the "return" because that will cause
04153  * some compilers to complain about unreachable statements.
04154  */
04155 #ifndef yyterminate
04156 #define yyterminate() return YY_NULL
04157 #endif
04158 
04159 /* Number of entries by which start-condition stack grows. */
04160 #ifndef YY_START_STACK_INCR
04161 #define YY_START_STACK_INCR 25
04162 #endif
04163 
04164 /* Report a fatal error. */
04165 #ifndef YY_FATAL_ERROR
04166 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
04167 #endif
04168 
04169 /* Default declaration of generated scanner - a define so the user can
04170  * easily add parameters.
04171  */
04172 #ifndef YY_DECL
04173 #define YY_DECL int yylex ( vtkVRMLImporter* self )
04174 #endif
04175 
04176 /* Code executed at the beginning of each rule, after yytext and yyleng
04177  * have been set up.
04178  */
04179 #ifndef YY_USER_ACTION
04180 #define YY_USER_ACTION
04181 #endif
04182 
04183 /* Code executed at the end of each rule. */
04184 #ifndef YY_BREAK
04185 #define YY_BREAK break;
04186 #endif
04187 
04188 
04189 int vtkVRMLYaccData::yylex ( vtkVRMLImporter* self )
04190 {
04191   yy_state_type yy_current_state;
04192   char *yy_cp, *yy_bp;
04193   int yy_act;
04194 
04195 
04196 
04197 
04198   /* Switch into a new start state if the parser */
04199   /* just told us that we've read a field name */
04200   /* and should expect a field value (or IS) */
04201   if (expectToken != 0) {
04202   if (yy_flex_debug)
04203     fprintf(stderr,"LEX--> Start State %d\n", expectToken);
04204 
04205   /*
04206    * Annoying.  This big switch is necessary because
04207    * LEX wants to assign particular numbers to start
04208    * tokens, and YACC wants to define all the tokens
04209    * used, too.  Sigh.
04210    */
04211   switch(expectToken) {
04212   case SFBOOL: BEGIN SFB; break;
04213   case SFCOLOR: BEGIN SFC; break;
04214   case SFFLOAT: BEGIN SFF; break;
04215   case SFIMAGE: BEGIN SFIMG; break;
04216   case SFINT32: BEGIN SFI; break;
04217   case SFROTATION: BEGIN SFR; break;
04218   case SFSTRING: BEGIN SFS; break;
04219   case SFTIME: BEGIN SFT; break;
04220   case SFVEC2F: BEGIN SFV2; break;
04221   case SFVEC3F: BEGIN SFV3; break;
04222   case MFCOLOR: BEGIN MFC; break;
04223   case MFFLOAT: BEGIN MFF; break;
04224   case MFINT32: BEGIN MFI; break;
04225   case MFROTATION: BEGIN MFR; break;
04226   case MFSTRING: BEGIN MFS; break;
04227   case MFVEC2F: BEGIN MFV2; break;
04228   case MFVEC3F: BEGIN MFV3; break;
04229 
04230     /* SFNode and MFNode are special.  Here the lexer just returns */
04231     /* "marker tokens" so the parser knows what type of field is */
04232     /* being parsed; unlike the other fields, parsing of SFNode/MFNode */
04233     /* field happens in the parser. */
04234   case MFNODE: expectToken = 0; return MFNODE;
04235   case SFNODE: expectToken = 0; return SFNODE;
04236 
04237   default: yyerror("ACK: Bad expectToken"); break;
04238   }
04239   }
04240 
04241 
04242   /* This is more complicated than they really need to be because */
04243   /* I was ambitious and made the whitespace-matching rule aggressive */
04244 
04245   if ( yy_init )
04246     {
04247 #ifdef YY_USER_INIT
04248     YY_USER_INIT;
04249 #endif
04250 
04251     if ( ! yy_start )
04252       yy_start = 1;   /* first start state */
04253 
04254     if ( ! yyin )
04255       yyin = stdin;
04256 
04257     if ( ! yyout )
04258       yyout = stdout;
04259 
04260     if ( yy_current_buffer )
04261       yy_init_buffer( yy_current_buffer, yyin );
04262     else
04263       yy_current_buffer =
04264         yy_create_buffer( yyin, YY_BUF_SIZE );
04265 
04266     yy_load_buffer_state();
04267 
04268     yy_init = 0;
04269     }
04270 
04271   while ( 1 )             /* loops until end-of-file is reached */
04272     {
04273     yy_cp = yy_c_buf_p;
04274 
04275     /* Support of yytext. */
04276     *yy_cp = yy_hold_char;
04277 
04278     /* yy_bp points to the position in yy_ch_buf of the start of
04279      * the current run.
04280      */
04281     yy_bp = yy_cp;
04282 
04283     yy_current_state = yy_start;
04284       yy_match:
04285     do
04286       {
04287       YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
04288       if ( yy_accept[yy_current_state] )
04289         {
04290         yy_last_accepting_state = yy_current_state;
04291         yy_last_accepting_cpos = yy_cp;
04292         }
04293       while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
04294         {
04295         yy_current_state = (int) yy_def[yy_current_state];
04296         if ( yy_current_state >= 949 )
04297           yy_c = yy_meta[(unsigned int) yy_c];
04298         }
04299       yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
04300       ++yy_cp;
04301       }
04302     while ( yy_base[yy_current_state] != 7663 );
04303 
04304       yy_find_action:
04305     yy_act = yy_accept[yy_current_state];
04306 
04307     YY_DO_BEFORE_ACTION;
04308 
04309 
04310       do_action:      /* This label is used only to access EOF actions. */
04311 
04312     if ( yy_flex_debug )
04313       {
04314       if ( yy_act == 0 )
04315         fprintf( stderr, "--scanner backing up\n" );
04316       else if ( yy_act < 49 )
04317         fprintf( stderr, "--accepting rule at line %d (\"%s\")\n",
04318                  yy_rule_linenum[yy_act], yytext );
04319       else if ( yy_act == 49 )
04320         fprintf( stderr, "--accepting default rule (\"%s\")\n",
04321                  yytext );
04322       else if ( yy_act == 50 )
04323         fprintf( stderr, "--(end of buffer or a NUL)\n" );
04324       else
04325         fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
04326       }
04327 
04328     switch ( yy_act )
04329       { /* beginning of action switch */
04330       case 0: /* must back up */
04331         /* undo the effects of YY_DO_BEFORE_ACTION */
04332         *yy_cp = yy_hold_char;
04333         yy_cp = yy_last_accepting_cpos;
04334         yy_current_state = yy_last_accepting_state;
04335         goto yy_find_action;
04336 
04337       case 1:
04338         YY_USER_ACTION
04339           { BEGIN NODE; }
04340         YY_BREAK
04341           /* The lexer is in the NODE state when parsing nodes, either */
04342           /* top-level nodes in the .wrl file, in a prototype implementation, */
04343           /* or when parsing the contents of SFNode or MFNode fields. */
04344           case 2:
04345             YY_USER_ACTION
04346           { return PROTO; }
04347       case 3:
04348         YY_USER_ACTION
04349           { return EXTERNPROTO; }
04350       case 4:
04351         YY_USER_ACTION
04352           { return DEF; }
04353       case 5:
04354         YY_USER_ACTION
04355           { return USE; }
04356       case 6:
04357         YY_USER_ACTION
04358           { return TO; }
04359       case 7:
04360         YY_USER_ACTION
04361           { return IS; }
04362       case 8:
04363         YY_USER_ACTION
04364           { return ROUTE; }
04365       case 9:
04366         YY_USER_ACTION
04367           { return SFN_NULL; }
04368       case 10:
04369         YY_USER_ACTION
04370           { return EVENTIN; }
04371       case 11:
04372         YY_USER_ACTION
04373           { return EVENTOUT; }
04374       case 12:
04375         YY_USER_ACTION
04376           { return FIELD; }
04377       case 13:
04378         YY_USER_ACTION
04379           { return EXPOSEDFIELD; }
04380         /* Legal identifiers: */
04381       case 14:
04382         YY_USER_ACTION
04383           {
04384           yylval.string = vtkVRMLAllocator::StrDup(yytext);
04385           return IDENTIFIER; }
04386         /* All fields may have an IS declaration: */
04387       case 15:
04388         YY_USER_ACTION
04389           { BEGIN NODE;
04390           expectToken = 0;
04391           yyless(0);
04392           }
04393         YY_BREAK
04394       case 16:
04395             YY_USER_ACTION
04396           { BEGIN NODE;
04397           expectToken = 0;
04398           yyless(0); /* put back the IS */
04399           }
04400         YY_BREAK
04401           /* All MF field types other than MFNode are completely parsed here */
04402           /* in the lexer, and one token is returned to the parser.  They all */
04403           /* share the same rules for open and closing brackets: */
04404       case 17:
04405             YY_USER_ACTION
04406           { if (parsing_mf) yyerror("Double [");
04407           parsing_mf = 1;
04408           yylval.vec2f = self->FloatArrayNew();
04409           yylval.vec2f->SetNumberOfComponents(2);
04410           }
04411         YY_BREAK
04412       case 18:
04413             YY_USER_ACTION
04414           { if (parsing_mf) yyerror("Double [");
04415           parsing_mf = 1;
04416           yylval.mfint32 = self->IdTypeArrayNew();
04417           }
04418         YY_BREAK
04419       case 19:
04420             YY_USER_ACTION
04421           { if (parsing_mf) yyerror("Double [");
04422           parsing_mf = 1;
04423           yylval.vec3f = self->PointsNew();
04424           }
04425         YY_BREAK
04426       case 20:
04427             YY_USER_ACTION
04428           { if (!parsing_mf) yyerror("Unmatched ]");
04429           int tokenFieldType = expectToken;
04430           BEGIN NODE;
04431           parsing_mf = 0;
04432           expectToken = 0;
04433           return tokenFieldType;
04434           }
04435       case 21:
04436         YY_USER_ACTION
04437           { BEGIN NODE; expectToken = 0; yylval.sfint = 1; return SFBOOL; }
04438       case 22:
04439         YY_USER_ACTION
04440           { BEGIN NODE; expectToken = 0; yylval.sfint = 0; return SFBOOL; }
04441       case 23:
04442         YY_USER_ACTION
04443           { BEGIN NODE; expectToken = 0;
04444           yylval.sfint = atoi(yytext);
04445           return SFINT32;
04446           }
04447       case 24:
04448         YY_USER_ACTION
04449           { if (parsing_mf) {
04450           int num;
04451           num = atoi(yytext);
04452           yylval.mfint32->InsertNextValue(num);
04453           }
04454           else {
04455           BEGIN NODE; expectToken = 0; return MFINT32;
04456           }
04457           }
04458         YY_BREAK
04459           /* All the floating-point types are pretty similar: */
04460           case 25:
04461             YY_USER_ACTION
04462           { BEGIN NODE; expectToken = 0; float num;
04463           sscanf(yytext, "%f", &num);
04464           yylval.sffloat = num;
04465           return SFFLOAT; }
04466       case 26:
04467         YY_USER_ACTION
04468           { if (parsing_mf) ; /* Add to array... */
04469           else {
04470           /* No open bracket means a single value: */
04471           BEGIN NODE; expectToken = 0; return MFFLOAT;
04472           }
04473           }
04474         YY_BREAK
04475           case 27:
04476             YY_USER_ACTION
04477           { BEGIN NODE; expectToken = 0; return SFVEC2F; }
04478       case 28:
04479         YY_USER_ACTION
04480         {
04481         if (parsing_mf)
04482           {
04483           // .. add to array...
04484           float num[2];
04485           num[0] = atof(strtok(yytext, " "));
04486           num[1] = atof(strtok(NULL, " "));
04487           // equivalent to: sscanf(yytext, "%f %f", &num[0], &num[1]);
04488           yylval.vec2f->InsertNextTuple(num);
04489           }
04490         else
04491           {
04492           BEGIN NODE; expectToken = 0;
04493           return MFVEC2F;
04494           }
04495         }
04496          YY_BREAK
04497       case 29:
04498             YY_USER_ACTION
04499           {   BEGIN NODE; expectToken = 0;
04500           float num[3];
04501           yylval.vec3f = self->PointsNew();
04502           num[0] = atof(strtok(yytext, " "));
04503           num[1] = atof(strtok(NULL, " "));
04504           num[2] = atof(strtok(NULL, " "));
04505           //sscanf(yytext, "%f %f %f", &num[0], &num[1], &num[2]);
04506           yylval.vec3f->InsertPoint(0, num);
04507           return SFVEC3F; }
04508       case 30:
04509         YY_USER_ACTION
04510           { if (parsing_mf) { /*  .. add to array... */
04511           float num[3];
04512           num[0] = atof(strtok(yytext, " "));
04513           num[1] = atof(strtok(NULL, " "));
04514           num[2] = atof(strtok(NULL, " "));
04515           //sscanf(yytext, "%f %f %f", &num[0], &num[1], &num[2]);
04516           yylval.vec3f->InsertNextPoint(num);
04517           //return MFVEC3F;
04518           }
04519           else {
04520           BEGIN NODE; expectToken = 0;
04521           return MFVEC3F;
04522           }
04523           }
04524         YY_BREAK
04525       case 31:
04526             YY_USER_ACTION
04527           { BEGIN NODE; expectToken = 0; return SFROTATION; }
04528       case 32:
04529         YY_USER_ACTION
04530           { if (parsing_mf) ; /* .. add to array... */
04531           else {
04532           BEGIN NODE; expectToken = 0; return MFROTATION;
04533           }
04534           }
04535         YY_BREAK
04536       case 33:
04537             YY_USER_ACTION
04538           { BEGIN NODE; expectToken = 0;
04539           float num[3];
04540           yylval.vec3f = self->PointsNew();
04541           num[0] = atof(strtok(yytext, " "));
04542           num[1] = atof(strtok(NULL, " "));
04543           num[2] = atof(strtok(NULL, " "));
04544           //sscanf(yytext, "%f %f %f", &num[0], &num[1], &num[2]);
04545           yylval.vec3f->InsertPoint(0, num);
04546           return SFCOLOR; }
04547       case 34:
04548         YY_USER_ACTION
04549           { if (parsing_mf) { /*  .. add to array... */
04550           float num[3];
04551           num[0] = atof(strtok(yytext, " "));
04552           num[1] = atof(strtok(NULL, " "));
04553           num[2] = atof(strtok(NULL, " "));
04554           yylval.vec3f->InsertNextPoint(num);
04555           }
04556           else {
04557           BEGIN NODE; expectToken = 0; return MFCOLOR;
04558           }
04559           }
04560         YY_BREAK
04561       case 35:
04562             YY_USER_ACTION
04563           { BEGIN NODE; expectToken = 0; return SFTIME; }
04564         /* SFString/MFString */
04565       case 36:
04566         YY_USER_ACTION
04567           { BEGIN IN_SFS; }
04568         YY_BREAK
04569           case 37:
04570             YY_USER_ACTION
04571           { BEGIN IN_MFS; }
04572         YY_BREAK
04573           /* Anything besides open-quote (or whitespace) is an error: */
04574       case 38:
04575             YY_USER_ACTION
04576           { yyerror("String missing open-quote");
04577           BEGIN NODE; expectToken = 0; return SFSTRING;
04578           }
04579         /* Expect open-quote, open-bracket, or whitespace: */
04580       case 39:
04581         YY_USER_ACTION
04582           { yyerror("String missing open-quote");
04583           BEGIN NODE; expectToken = 0; return MFSTRING;
04584           }
04585         /* Backslashed-quotes are OK: */
04586       case 40:
04587         YY_USER_ACTION
04588           ;
04589         YY_BREAK
04590           /* Gobble up anything besides quotes and newlines. */
04591           /* Newlines are legal in strings, but we exclude them here so */
04592           /* that line number are counted correctly by the catch-all newline */
04593           /* rule that applies to everything. */
04594       case 41:
04595             YY_USER_ACTION
04596           ;
04597         YY_BREAK
04598           /* Quote ends the string: */
04599       case 42:
04600             YY_USER_ACTION
04601           { BEGIN NODE; expectToken = 0; return SFSTRING; }
04602       case 43:
04603         YY_USER_ACTION
04604           { if (parsing_mf) BEGIN MFS; /* ... add to array ... */
04605           else {
04606           BEGIN NODE; expectToken = 0; return MFSTRING;
04607           }
04608           }
04609         YY_BREAK
04610           /* SFImage: width height numComponents then width*height integers: */
04611       case 44:
04612             YY_USER_ACTION
04613           { int w, h;
04614           sscanf(yytext, "%d %d", &w, &h);
04615           sfImageIntsExpected = 1+w*h;
04616           sfImageIntsParsed = 0;
04617           BEGIN IN_SFIMG;
04618           }
04619         YY_BREAK
04620       case 45:
04621             YY_USER_ACTION
04622           { ++sfImageIntsParsed;
04623           if (sfImageIntsParsed == sfImageIntsExpected) {
04624           BEGIN NODE; expectToken = 0; return SFIMAGE;
04625           }
04626           }
04627         YY_BREAK
04628           /* Whitespace and catch-all rules apply to all start states: */
04629       case 46:
04630             YY_USER_ACTION
04631           ;
04632         YY_BREAK
04633           /* This is also whitespace, but we'll keep track of line number */
04634           /* to report in errors: */
04635       case 47:
04636             YY_USER_ACTION
04637           { ++currentLineNumber; }
04638         YY_BREAK
04639           /* This catch-all rule catches anything not covered by any of */
04640           /* the above: */
04641           case 48:
04642             YY_USER_ACTION
04643           { return yytext[0]; }
04644       case 49:
04645         YY_USER_ACTION
04646           YY_FATAL_ERROR( "flex scanner jammed" );
04647         YY_BREAK
04648       case YY_STATE_EOF(INITIAL):
04649       case YY_STATE_EOF(NODE):
04650       case YY_STATE_EOF(SFB):
04651       case YY_STATE_EOF(SFC):
04652       case YY_STATE_EOF(SFF):
04653       case YY_STATE_EOF(SFIMG):
04654       case YY_STATE_EOF(SFI):
04655       case YY_STATE_EOF(SFR):
04656       case YY_STATE_EOF(SFS):
04657       case YY_STATE_EOF(SFT):
04658       case YY_STATE_EOF(SFV2):
04659       case YY_STATE_EOF(SFV3):
04660       case YY_STATE_EOF(MFC):
04661       case YY_STATE_EOF(MFF):
04662       case YY_STATE_EOF(MFI):
04663       case YY_STATE_EOF(MFR):
04664       case YY_STATE_EOF(MFS):
04665       case YY_STATE_EOF(MFV2):
04666       case YY_STATE_EOF(MFV3):
04667       case YY_STATE_EOF(IN_SFS):
04668       case YY_STATE_EOF(IN_MFS):
04669       case YY_STATE_EOF(IN_SFIMG):
04670         yyterminate();
04671 
04672       case YY_END_OF_BUFFER:
04673       {
04674       /* Amount of text matched not including the EOB char. */
04675       int yy_amount_of_matched_text = yy_cp - yytext_ptr - 1;
04676 
04677       /* Undo the effects of YY_DO_BEFORE_ACTION. */
04678       *yy_cp = yy_hold_char;
04679 
04680       if ( yy_current_buffer->yy_buffer_status == yy_buffer_state::YY_BUFFER_NEW )
04681         {
04682         /* We're scanning a new file or input source.  It's
04683          * possible that this happened because the user
04684          * just pointed yyin at a new source and called
04685          * yylex().  If so, then we have to assure
04686          * consistency between yy_current_buffer and our
04687          * globals.  Here is the right place to do so, because
04688          * this is the first action (other than possibly a
04689          * back-up) that will match for the new input source.
04690          */
04691         yy_n_chars = yy_current_buffer->yy_n_chars;
04692         yy_current_buffer->yy_input_file = yyin;
04693         yy_current_buffer->yy_buffer_status = yy_buffer_state::YY_BUFFER_NORMAL;
04694         }
04695 
04696       /* Note that here we test for yy_c_buf_p "<=" to the position
04697        * of the first EOB in the buffer, since yy_c_buf_p will
04698        * already have been incremented past the NUL character
04699        * (since all states make transitions on EOB to the
04700        * end-of-buffer state).  Contrast this with the test
04701        * in input().
04702        */
04703       if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
04704         { /* This was really a NUL. */
04705         yy_state_type yy_next_state;
04706 
04707         yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
04708 
04709         yy_current_state = yy_get_previous_state();
04710 
04711         /* Okay, we're now positioned to make the NUL
04712          * transition.  We couldn't have
04713          * yy_get_previous_state() go ahead and do it
04714          * for us because it doesn't know how to deal
04715          * with the possibility of jamming (and we don't
04716          * want to build jamming into it because then it
04717          * will run more slowly).
04718          */
04719 
04720         yy_next_state = yy_try_NUL_trans( yy_current_state );
04721 
04722         yy_bp = yytext_ptr + YY_MORE_ADJ;
04723 
04724         if ( yy_next_state )
04725           {
04726                                 /* Consume the NUL. */
04727           yy_cp = ++yy_c_buf_p;
04728           yy_current_state = yy_next_state;
04729           goto yy_match;
04730           }
04731 
04732         else
04733           {
04734           yy_cp = yy_c_buf_p;
04735           goto yy_find_action;
04736           }
04737         }
04738 
04739       else switch ( yy_get_next_buffer() )
04740         {
04741         case EOB_ACT_END_OF_FILE:
04742         {
04743         yy_did_buffer_switch_on_eof = 0;
04744 
04745         if ( yywrap() )
04746           {
04747           /* Note: because we've taken care in
04748            * yy_get_next_buffer() to have set up
04749            * yytext, we can now set up
04750            * yy_c_buf_p so that if some total
04751            * hoser (like flex itself) wants to
04752            * call the scanner after we return the
04753            * YY_NULL, it'll still work - another
04754            * YY_NULL will get returned.
04755            */
04756           yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
04757 
04758           yy_act = YY_STATE_EOF(YY_START);
04759           goto do_action;
04760           }
04761 
04762         else
04763           {
04764           if ( ! yy_did_buffer_switch_on_eof )
04765             YY_NEW_FILE;
04766           }
04767         break;
04768         }
04769 
04770         case EOB_ACT_CONTINUE_SCAN:
04771           yy_c_buf_p =
04772             yytext_ptr + yy_amount_of_matched_text;
04773 
04774           yy_current_state = yy_get_previous_state();
04775 
04776           yy_cp = yy_c_buf_p;
04777           yy_bp = yytext_ptr + YY_MORE_ADJ;
04778           goto yy_match;
04779 
04780         case EOB_ACT_LAST_MATCH:
04781           yy_c_buf_p =
04782             &yy_current_buffer->yy_ch_buf[yy_n_chars];
04783 
04784           yy_current_state = yy_get_previous_state();
04785 
04786           yy_cp = yy_c_buf_p;
04787           yy_bp = yytext_ptr + YY_MORE_ADJ;
04788           goto yy_find_action;
04789         }
04790       break;
04791       }
04792 
04793       default:
04794         YY_FATAL_ERROR(
04795           "fatal flex scanner internal error--no action found" );
04796       } /* end of action switch */
04797     } /* end of scanning one token */
04798 } /* end of yylex */
04799 
04800 
04801 /* yy_get_next_buffer - try to read in a new buffer
04802  *
04803  * Returns a code representing an action:
04804  *      EOB_ACT_LAST_MATCH -
04805  *      EOB_ACT_CONTINUE_SCAN - continue scanning from current position
04806  *      EOB_ACT_END_OF_FILE - end of file
04807  */
04808 
04809 int vtkVRMLYaccData::yy_get_next_buffer()
04810 {
04811   char *dest = yy_current_buffer->yy_ch_buf;
04812   char *source = yytext_ptr - 1; /* copy prev. char, too */
04813   int number_to_move, i;
04814   int ret_val;
04815 
04816   if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
04817     YY_FATAL_ERROR(
04818       "fatal flex scanner internal error--end of buffer missed" );
04819 
04820   if ( yy_current_buffer->yy_fill_buffer == 0 )
04821     { /* Don't try to fill the buffer, so this is an EOF. */
04822     if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
04823       {
04824       /* We matched a singled characater, the EOB, so
04825        * treat this as a final EOF.
04826        */
04827       return EOB_ACT_END_OF_FILE;
04828       }
04829 
04830     else
04831       {
04832       /* We matched some text prior to the EOB, first
04833        * process it.
04834        */
04835       return EOB_ACT_LAST_MATCH;
04836       }
04837     }
04838 
04839   /* Try to read more data. */
04840 
04841   /* First move last chars to start of buffer. */
04842   number_to_move = yy_c_buf_p - yytext_ptr;
04843 
04844   for ( i = 0; i < number_to_move; ++i )
04845     *(dest++) = *(source++);
04846 
04847   if ( yy_current_buffer->yy_buffer_status == yy_buffer_state::YY_BUFFER_EOF_PENDING )
04848     /* don't do the read, it's not guaranteed to return an EOF,
04849      * just force an EOF
04850      */
04851     yy_n_chars = 0;
04852 
04853   else
04854     {
04855     int num_to_read =
04856       yy_current_buffer->yy_buf_size - number_to_move - 1;
04857 
04858     while ( num_to_read <= 0 )
04859       { /* Not enough room in the buffer - grow it. */
04860 #ifdef YY_USES_REJECT
04861       YY_FATAL_ERROR(
04862         "input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
04863 #else
04864 
04865       /* just a shorter name for the current buffer */
04866       YY_BUFFER_STATE b = yy_current_buffer;
04867 
04868       int yy_c_buf_p_offset = yy_c_buf_p - b->yy_ch_buf;
04869 
04870       b->yy_buf_size *= 2;
04871       b->yy_ch_buf = (char *)
04872         yy_flex_realloc( (void *) b->yy_ch_buf,
04873                          b->yy_buf_size );
04874 
04875       if ( ! b->yy_ch_buf )
04876         YY_FATAL_ERROR(
04877           "fatal error - scanner input buffer overflow" );
04878 
04879       yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
04880 
04881       num_to_read = yy_current_buffer->yy_buf_size -
04882         number_to_move - 1;
04883 #endif
04884       }
04885 
04886     if ( num_to_read > YY_READ_BUF_SIZE )
04887       num_to_read = YY_READ_BUF_SIZE;
04888 
04889     /* Read in more data. */
04890     YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
04891               yy_n_chars, num_to_read );
04892     }
04893 
04894   if ( yy_n_chars == 0 )
04895     {
04896     if ( number_to_move - YY_MORE_ADJ == 1 )
04897       {
04898       ret_val = EOB_ACT_END_OF_FILE;
04899       yyrestart( yyin );
04900       }
04901 
04902     else
04903       {
04904       ret_val = EOB_ACT_LAST_MATCH;
04905       yy_current_buffer->yy_buffer_status =
04906         yy_buffer_state::YY_BUFFER_EOF_PENDING;
04907       }
04908     }
04909 
04910   else
04911     ret_val = EOB_ACT_CONTINUE_SCAN;
04912 
04913   yy_n_chars += number_to_move;
04914   yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
04915   yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
04916 
04917   /* yytext begins at the second character in yy_ch_buf; the first
04918    * character is the one which preceded it before reading in the latest
04919    * buffer; it needs to be kept around in case it's a newline, so
04920    * yy_get_previous_state() will have with '^' rules active.
04921    */
04922 
04923   yytext_ptr = &yy_current_buffer->yy_ch_buf[1];
04924 
04925   return ret_val;
04926 }
04927 
04928 
04929 /* yy_get_previous_state - get the state just before the EOB char was reached */
04930 
04931 vtkVRMLYaccData::yy_state_type vtkVRMLYaccData::yy_get_previous_state()
04932 {
04933   yy_state_type yy_current_state;
04934   char *yy_cp;
04935 
04936   yy_current_state = yy_start;
04937 
04938   for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
04939     {
04940     YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
04941     if ( yy_accept[yy_current_state] )
04942       {
04943       yy_last_accepting_state = yy_current_state;
04944       yy_last_accepting_cpos = yy_cp;
04945       }
04946     while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
04947       {
04948       yy_current_state = (int) yy_def[yy_current_state];
04949       if ( yy_current_state >= 949 )
04950         yy_c = yy_meta[(unsigned int) yy_c];
04951       }
04952     yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
04953     }
04954 
04955   return yy_current_state;
04956 }
04957 
04958 
04959 /* yy_try_NUL_trans - try to make a transition on the NUL character
04960  *
04961  * synopsis
04962  *      next_state = yy_try_NUL_trans( current_state );
04963  */
04964 
04965 vtkVRMLYaccData::yy_state_type vtkVRMLYaccData::yy_try_NUL_trans( yy_state_type yy_current_state )
04966 {
04967   int yy_is_jam;
04968   char *yy_cp = yy_c_buf_p;
04969 
04970   YY_CHAR yy_c = 1;
04971   if ( yy_accept[yy_current_state] )
04972     {
04973     yy_last_accepting_state = yy_current_state;
04974     yy_last_accepting_cpos = yy_cp;
04975     }
04976   while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
04977     {
04978     yy_current_state = (int) yy_def[yy_current_state];
04979     if ( yy_current_state >= 949 )
04980       yy_c = yy_meta[(unsigned int) yy_c];
04981     }
04982   yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
04983   yy_is_jam = (yy_current_state == 948);
04984 
04985   return yy_is_jam ? 0 : yy_current_state;
04986 }
04987 
04988 
04989 
04990 void vtkVRMLYaccData::yyrestart( FILE *input_file )
04991 {
04992   if ( ! yy_current_buffer )
04993     yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
04994 
04995   yy_init_buffer( yy_current_buffer, input_file );
04996   yy_load_buffer_state();
04997 }
04998 
04999 
05000 void vtkVRMLYaccData::yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
05001 {
05002   if ( yy_current_buffer == new_buffer )
05003     return;
05004 
05005   if ( yy_current_buffer )
05006     {
05007     /* Flush out information for old buffer. */
05008     *yy_c_buf_p = yy_hold_char;
05009     yy_current_buffer->yy_buf_pos = yy_c_buf_p;
05010     yy_current_buffer->yy_n_chars = yy_n_chars;
05011     }
05012 
05013   yy_current_buffer = new_buffer;
05014   yy_load_buffer_state();
05015 
05016   /* We don't actually know whether we did this switch during
05017    * EOF (yywrap()) processing, but the only time this flag
05018    * is looked at is after yywrap() is called, so it's safe
05019    * to go ahead and always set it.
05020    */
05021   yy_did_buffer_switch_on_eof = 1;
05022 }
05023 
05024 
05025 void vtkVRMLYaccData::yy_load_buffer_state( void )
05026 {
05027   yy_n_chars = yy_current_buffer->yy_n_chars;
05028   yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
05029   yyin = yy_current_buffer->yy_input_file;
05030   yy_hold_char = *yy_c_buf_p;
05031 }
05032 
05033 
05034 vtkVRMLYaccData::YY_BUFFER_STATE vtkVRMLYaccData::yy_create_buffer( FILE *file, int size )
05035 {
05036   YY_BUFFER_STATE b;
05037 
05038   b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
05039 
05040   if ( ! b )
05041     YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
05042 
05043   b->yy_buf_size = size;
05044 
05045   /* yy_ch_buf has to be 2 characters longer than the size given because
05046    * we need to put in 2 end-of-buffer characters.
05047    */
05048   b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
05049 
05050   if ( ! b->yy_ch_buf )
05051     YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
05052 
05053   yy_init_buffer( b, file );
05054 
05055   return b;
05056 }
05057 
05058 
05059 void vtkVRMLYaccData::yy_delete_buffer( YY_BUFFER_STATE b )
05060 {
05061   if ( b == yy_current_buffer )
05062     yy_current_buffer = (YY_BUFFER_STATE) 0;
05063 
05064   yy_flex_free( (void *) b->yy_ch_buf );
05065   yy_flex_free( (void *) b );
05066 }
05067 
05068 
05069 void vtkVRMLYaccData::yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
05070 {
05071   b->yy_input_file = file;
05072 
05073   /* We put in the '\n' and start reading from [1] so that an
05074    * initial match-at-newline will be true.
05075    */
05076 
05077   b->yy_ch_buf[0] = '\n';
05078   b->yy_n_chars = 1;
05079 
05080   /* We always need two end-of-buffer characters.  The first causes
05081    * a transition to the end-of-buffer state.  The second causes
05082    * a jam in that state.
05083    */
05084   b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
05085   b->yy_ch_buf[2] = YY_END_OF_BUFFER_CHAR;
05086 
05087   b->yy_buf_pos = &b->yy_ch_buf[1];
05088 
05089   b->yy_is_interactive = file ? isatty( fileno(file) ) : 0;
05090 
05091   b->yy_fill_buffer = 1;
05092 
05093   b->yy_buffer_status = yy_buffer_state::YY_BUFFER_NEW;
05094 }
05095 
05096 
05097 void vtkVRMLYaccData::yy_fatal_error( const char msg[] )
05098 {
05099   (void) fprintf( stderr, "%s\n", msg );
05100   exit( 1 );
05101 }
05102 
05103 
05104 
05105 /* Redefine yyless() so it works in section 3 code. */
05106 
05107 #undef yyless
05108 #define yyless(n) \
05109         do \
05110                 { \
05111                 /* Undo effects of setting up yytext. */ \
05112                 yytext[yyleng] = yy_hold_char; \
05113                 yy_c_buf_p = yytext + n - YY_MORE_ADJ; \
05114                 yy_hold_char = *yy_c_buf_p; \
05115                 *yy_c_buf_p = '\0'; \
05116                 yyleng = n; \
05117                 } \
05118         while ( 0 )
05119 
05120 
05121 /* Internal utility routines. */
05122 
05123 #ifndef yytext_ptr
05124 #ifdef YY_USE_PROTOS
05125 static void yy_flex_strncpy( char *s1, const char *s2, int n )
05126 #else
05127   static void yy_flex_strncpy( s1, s2, n )
05128   char *s1;
05129 const char *s2;
05130 int n;
05131 #endif
05132 {
05133   int i;
05134   for ( i = 0; i < n; ++i )
05135     s1[i] = s2[i];
05136 }
05137 #endif
05138 
05139 
05140 void *vtkVRMLYaccData::yy_flex_alloc( unsigned int size )
05141 {
05142   return (void *) malloc( size );
05143 }
05144 
05145 void *vtkVRMLYaccData::yy_flex_realloc( void *ptr, unsigned int size )
05146 {
05147   return (void *) realloc( ptr, size );
05148 }
05149 
05150 void vtkVRMLYaccData::yy_flex_free( void *ptr )
05151 {
05152   free( ptr );
05153 }
05154 // End of Auto-generated Lexer Code
05155 
05156 
05157 // Used by the lex input to get characters. Needed to read in memory structure
05158 
05159 void vtkVRMLYaccData::memyyInput(char *buf, int &result, int max_size,
05160                                        vtkVRMLYaccData* self) {
05161 
05162   result = static_cast<int>(
05163     strlen(strncpy(buf, standardNodes[self->memyyInput_i], max_size)));
05164   self->memyyInput_j = result - static_cast<int>(
05165     strlen(standardNodes[self->memyyInput_i]));
05166   if ( self->memyyInput_j == 0 )
05167     {
05168     self->memyyInput_i++;
05169     }
05170 }
05171 
05172 // Needed to reset the lex input routine to default.
05173 void vtkVRMLYaccData::defyyInput(char *buf, int &result, int max_size,
05174                                        vtkVRMLYaccData* self) {
05175   if ( self->yy_current_buffer->yy_is_interactive )
05176     {
05177     int c = getc( self->yyin );
05178     result = c == EOF ? 0 : 1;
05179     buf[0] = (char) c;
05180     }
05181   else if( ((result = static_cast<int>(fread( buf, 1, max_size, self->yyin ))) == 0)
05182             && ferror( self->yyin ) )
05183     {
05184     self->yy_fatal_error( "input in flex scanner failed" );
05185     }
05186 }
05187 
05188 
05189 #endif
05190 // VTK-HeaderTest-Exclude: vtkVRMLImporter_Yacc.h