VTK
vtkVRMLImporter_Yacc.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkVRMLInternal_Yacc.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
19 #ifndef vtkVRMLImporter_Yacc_h
20 #define vtkVRMLImporter_Yacc_h
21 
22 
23 #include "vtkFloatArray.h"
24 #include "vtkIdTypeArray.h"
25 #include "vtkPoints.h"
26 #include "vtkVRML.h"
27 #include "vtkVRMLImporter.h"
28 
29 #include <cassert>
30 #include <cstdio>
31 #include <cstring>
32 
33 //
34 // The VrmlNodeType class is responsible for storing information about node
35 // or prototype types.
36 //
37 
38 // used to hold the VRML DEF names and assoc vtkObjects
40 public:
41  vtkVRMLUseStruct( char *n, vtkObject *o) { defName = n; defObject = o; }
42  char *defName;
44 
45  void* operator new(size_t n)
46  {
47  return vtkVRMLAllocator::AllocateMemory(n);
48  }
49 
50  void operator delete(void *vtkNotUsed(ptr)) {}
51 };
52 
53 
54 
55 class VrmlNodeType {
56 public:
57  // Constructor. Takes name of new type (e.g. "Transform" or "Box")
58  // Copies the string given as name.
59  VrmlNodeType(const char *nm);
60 
61  // Destructor exists mainly to deallocate storage for name
62  ~VrmlNodeType();
63 
64  // Routines for adding/getting eventIns/Outs/fields
65  void addEventIn(const char *name, int type);
66  void addEventOut(const char *name, int type);
67  void addField(const char *name, int type);
68  void addExposedField(const char *name, int type);
69 
70  int hasEventIn(const char *name) const;
71  int hasEventOut(const char *name) const;
72  int hasField(const char *name) const;
73  int hasExposedField(const char *name) const;
74 
75  const char *getName() const { return name; }
76 
77  void* operator new(size_t n)
78  {
79  return vtkVRMLAllocator::AllocateMemory(n);
80  }
81 
82  void operator delete(void *vtkNotUsed(ptr)) {}
83 
84  struct NameTypeRec {
85  char *name;
86  int type;
87 
88  void* operator new(size_t n)
89  {
90  return vtkVRMLAllocator::AllocateMemory(n);
91  }
92 
93  void operator delete(void *vtkNotUsed(ptr)) {}
94 
95  };
96 
97  // This is used to keep track of which field in which type of node is being
98  // parsed. Field are nested (nodes are contained inside MFNode/SFNode fields)
99  // so a stack of these is needed:
100  struct FieldRec
101  {
103  const char *fieldName;
104  };
105 
106 private:
107  void add(vtkVRMLVectorType<NameTypeRec*> &,const char *,int);
108  int has(const vtkVRMLVectorType<NameTypeRec*> &,const char *) const;
109 
110  char *name;
111 
112  vtkVRMLVectorType<NameTypeRec*> eventIns;
113  vtkVRMLVectorType<NameTypeRec*> eventOuts;
114  vtkVRMLVectorType<NameTypeRec*> fields;
115 };
116 
118 {
119 public:
120  vtkVRMLYaccData();
122  typedef unsigned char YY_CHAR;
123  typedef int yy_state_type;
124 private:
125  vtkVRMLYaccData(const vtkVRMLYaccData&); // Not implemented
126  vtkVRMLYaccData& operator=(const vtkVRMLYaccData&); // Not implemented
127 public:
128  // Parser variables and functions:
129  // Currently-being-define proto. Prototypes may be nested, so a stack
130  // is needed:
131  vtkVRMLVectorType<VrmlNodeType*> *CurrentProtoStack;// = NULL;
132 
133  // Some helper routines defined below:
134  void beginProto(const char *);
135  void endProto();
136 
137  int addField(const char *type, const char *name);
138  int addEventIn(const char *type, const char *name);
139  int addEventOut(const char *type, const char *name);
140  int addExposedField(const char *type, const char *name);
141  int add(void (VrmlNodeType::*)(const char *, int), const char *,
142  const char *);
143  int fieldType(const char *type);
144  void inScript();
145  void expect(int type);
146 
147  void yyerror(const char *);
148  int yylex(vtkVRMLImporter* self);
149 
150  class FakeAlloca;
151 
152  typedef union {
153  char *string;
154 
155  /* Other types that will be needed by a true VRML implementation
156  * (but are not defined by this parser due to the complexity):
157  * Node *node;
158  * list<Node *> *nodeList;
159  */
160 
161  float sffloat;
165  int sfint;
166  } YYSTYPE;
167 
168 
169  typedef
170  struct yyltype
171  {
177  char *text;
178  }
179  yyltype;
180 
181 
182  int yychar; /* the lookahead symbol */
183  YYSTYPE yylval; /* the semantic value of the */
184  /* lookahead symbol */
185  yyltype yylloc; /* location data for the lookahead */
186  /* symbol */
187  int yynerrs; /* number of parse errors so far */
188  // Lexer variables and functions:
189  int yyleng;
190  FILE *yyin, *yyout;
191  int yywrap(void );
192 
194  {
196 
197  char *yy_ch_buf; /* input buffer */
198  char *yy_buf_pos; /* current position in input buffer */
199 
200  /* Size of input buffer in bytes, not including room for EOB
201  * characters.
202  */
204 
205  /* Number of characters read into yy_ch_buf, not including EOB
206  * characters.
207  */
209 
210  /* Whether this is an "interactive" input source; if so, and
211  * if we're using stdio for input, then we want to use getc()
212  * instead of fread(), to make sure we stop fetching input after
213  * each newline.
214  */
216 
217  /* Whether to try to fill the input buffer when we reach the
218  * end of it.
219  */
221 
225  /* When an EOF's been seen but there's still some text to process
226  * then we mark the buffer as YY_EOF_PENDING, to indicate that we
227  * shouldn't try reading from the input source any more. We might
228  * still have a bunch of tokens to match, though, because of
229  * possible backing-up.
230  *
231  * When we actually see the EOF, we change the status to "new"
232  * (via yyrestart()), so that the user can continue scanning by
233  * just pointing yyin at a new input file.
234  */
236  };
238 
239  };
241 
242  YY_BUFFER_STATE yy_current_buffer;// = 0;
243 
244  /* yy_hold_char holds the character lost when yytext is formed. */
246 
247  int yy_n_chars; /* number of characters read into yy_ch_buf */
248 
249 
250  /* Points to current character in buffer. */
251  char *yy_c_buf_p;// = (char *) 0;
252  int yy_init;// = 1; /* whether we need to initialize */
253  int yy_start;// = 0; /* start state number */
254 
255  /* Flag which is used to allow yywrap()'s to do buffer switches
256  * instead of setting up a fresh yyin. A bit of a hack ...
257  */
259 
260  void yyrestart ( FILE *input_file );
261  void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer );
262  void yy_load_buffer_state ( void );
263  YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size );
264  void yy_delete_buffer ( YY_BUFFER_STATE b );
265  void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file );
266 
267  void *yy_flex_alloc ( unsigned int );
268  void *yy_flex_realloc ( void *, unsigned int );
269  void yy_flex_free ( void * );
270 
271  char *yytext;
272 
273  yy_state_type yy_get_previous_state ( void );
274  yy_state_type yy_try_NUL_trans ( yy_state_type current_state );
275  int yy_get_next_buffer ( void );
276  void yy_fatal_error ( const char msg[] );
277 
278  yy_state_type yy_last_accepting_state;
280 
281  int yy_flex_debug;// = 1;
282 
283  // used to reset the lexer input after initialization of VRML nodes
284  void (*theyyInput)(char *, int &, int, vtkVRMLYaccData*);
285 
286 
287  /* Current line number */
288  int currentLineNumber;// = 1;
289  void yyResetLineNumber() { currentLineNumber = 1; }
290 
291  /* The YACC parser sets this to a token to direct the lexer */
292  /* in cases where just syntax isn't enough: */
293  int expectToken;// = 0;
294 
295  /* True when parsing a multiple-valued field: */
296  int parsing_mf;// = 0;
297 
298  /* These are used when parsing SFImage fields: */
299  int sfImageIntsParsed;// = 0;
301 
302  int yydebug; /* nonzero means print parse trace */
303  int yyparse(vtkVRMLImporter* self);
304 
305  static void memyyInput(char *buf, int &result, int max_size, vtkVRMLYaccData* self);
306  static void defyyInput(char *buf, int &result, int max_size, vtkVRMLYaccData* self);
307 
308  int memyyInput_i;// = 0;
309  int memyyInput_j;// = 0;
310 
311  // Used during the parsing
312  int creatingDEF;// = 0;
313  char *curDEFName;
314 
315  // Node types are stored in this data structure:
316  vtkVRMLVectorType<VrmlNodeType*>* typeList;
317  vtkVRMLVectorType<vtkVRMLUseStruct *>* useList;
318  vtkVRMLVectorType<VrmlNodeType::FieldRec*>* currentField;
319 
320  // Moved from VrmlNodeType when getting rid of static data
321  //
322  // Namespace management functions. PROTO definitions add node types
323  // to the namespace. PROTO implementations are a separate node
324  // namespace, and require that any nested PROTOs NOT be available
325  // outside the PROTO implementation.
326  // addToNameSpace will print an error to stderr if the given type
327  // is already defined.
329  void pushNameSpace();
330  void popNameSpace();
331 
332  // Find a node type, given its name. Returns NULL if type is not defined.
333  const VrmlNodeType *find(const char *nm);
334 
335 };
336 
337 //------------------------------------------------------------------------------------
338 //
339 // Implementation of the above begins here
340 //
341 
343 {
344  assert(nm != NULL);
345  name = static_cast<char*>(
346  vtkVRMLAllocator::AllocateMemory((strlen(nm)+1)*sizeof(char)));
347  strcpy(name, nm);
348 }
349 
351 {
352  // Free strings duplicated when fields/eventIns/eventOuts added:
353 
354  int i;
355  for (i = 0;i < eventIns.Count(); i++)
356  {
357  NameTypeRec *r = eventIns[i];
358 // free(r->name);
359  delete r;
360  }
361  for (i = 0;i < eventOuts.Count(); i++)
362  {
363  NameTypeRec *r = eventOuts[i];
364 // free(r->name);
365  delete r;
366  }
367  for (i = 0;i < fields.Count(); i++)
368  {
369  NameTypeRec *r = fields[i];
370 // free(r->name);
371  delete r;
372  }
373 }
374 void
375 VrmlNodeType::addEventIn(const char *nodeName, int type)
376 {
377  add(eventIns, nodeName, type);
378 };
379 void
380 VrmlNodeType::addEventOut(const char *nodeName, int type)
381 {
382  add(eventOuts, nodeName, type);
383 };
384 void
385 VrmlNodeType::addField(const char *nodeName, int type)
386 {
387  add(fields, nodeName, type);
388 };
389 void
390 VrmlNodeType::addExposedField(const char *nodeName, int type)
391 {
392  char tmp[1000];
393  add(fields, nodeName, type);
394  sprintf(tmp, "set_%s", nodeName);
395  add(eventIns, tmp, type);
396  sprintf(tmp, "%s_changed", nodeName);
397  add(eventOuts, tmp, type);
398 };
399 
400 void
401 VrmlNodeType::add(vtkVRMLVectorType<NameTypeRec*> &recs, const char *nodeName, int type)
402 {
403  NameTypeRec *r = new NameTypeRec;
404  r->name = vtkVRMLAllocator::StrDup(nodeName); //strdup(nodeName);
405  r->type = type;
406  recs += r;
407 }
408 
409 int
410 VrmlNodeType::hasEventIn(const char *nodeName) const
411 {
412  return has(eventIns, nodeName);
413 }
414 int
415 VrmlNodeType::hasEventOut(const char *nodeName) const
416 {
417  return has(eventOuts, nodeName);
418 }
419 int
420 VrmlNodeType::hasField(const char *nodeName) const
421 {
422  return has(fields, nodeName);
423 }
424 int
425 VrmlNodeType::hasExposedField(const char *nodeName) const
426 {
427  // Must have field "name", eventIn "set_name", and eventOut
428  // "name_changed", all with same type:
429  char tmp[1000];
430  int type;
431  if ( (type = has(fields, nodeName)) == 0) return 0;
432 
433  sprintf(tmp, "set_%s\n", nodeName);
434  if (type != has(eventIns, nodeName)) return 0;
435 
436  sprintf(tmp, "%s_changed", nodeName);
437  if (type != has(eventOuts, nodeName)) return 0;
438 
439  return type;
440 }
441 int
442 VrmlNodeType::has(const vtkVRMLVectorType<NameTypeRec*> &recs, const char *nodeName) const
443 {
444  for (int i = 0;i < recs.Count(); i++)
445  {
446  NameTypeRec *n = recs.Get(i);
447  if (strcmp(n->name, nodeName) == 0)
448  return n->type;
449  }
450  return 0;
451 }
452 
453 
454 
455 
456 //----------------------------------------------------------------------------
458 {
459  yy_current_buffer = NULL;
460  yy_c_buf_p = NULL;
461  yy_init = 1;
462  yy_start = 0;
463  yy_flex_debug = 1;
464  yyin = NULL;
465  yyout = NULL;
466  currentLineNumber = 1;
467  expectToken = 0;
468  parsing_mf = 0;
470  sfImageIntsParsed = 0;
471  memyyInput_i = 0;
472  memyyInput_j = 0;
473  creatingDEF = 0;
474  theyyInput = NULL;
475 
476  typeList = NULL;
477  useList = NULL;
478  currentField = NULL;
479 }
480 
481 //----------------------------------------------------------------------------
483 {
484  if (yy_current_buffer)
485  {
487  yy_current_buffer = NULL;
488  }
489 }
490 
491 
493 {
494  if (find(_type->getName()) != NULL)
495  {
496  cerr << "PROTO " << _type->getName() << " already defined\n";
497  return;
498  }
499  *typeList += _type;
500 }
501 
502 //
503 // One list is used to store all the node types. Nested namespaces are
504 // separated by NULL elements.
505 // This isn't terribly efficient, but it is nice and simple.
506 //
508 {
509  *typeList += (VrmlNodeType *) NULL;
510 }
511 
513 {
514  // Remove everything up to and including the next NULL marker:
515  for (int i = 0;i < typeList->Count(); i++)
516  {
517  VrmlNodeType *nodeType = typeList->Pop();
518 
519  if (nodeType == NULL)
520  {
521  break;
522  }
523  else
524  {
525  // NOTE: Instead of just deleting the VrmlNodeTypes, you will
526  // probably want to reference count or garbage collect them, since
527  // any nodes created as part of the PROTO implementation will
528  // probably point back to their VrmlNodeType structure.
529  delete nodeType;
530  }
531  }
532 }
533 
534 const VrmlNodeType* vtkVRMLYaccData::find(const char *_name)
535 {
536  // Look through the type stack:
537  for (int i = 0;i < typeList->Count(); i++)
538  {
539  const VrmlNodeType *nt = (*typeList)[i];
540  if (nt != NULL && strcmp(nt->getName(),_name) == 0)
541  {
542  return nt;
543  }
544  }
545  return NULL;
546 }
547 
548 
549 // Begin of Auto-generated Parser Code
550 
551 
552 /* A Bison parser, made from parser.y with Bison version GNU Bison version 1.24
553  */
554 
555 #define YYBISON 1 /* Identify Bison output. */
556 
557 #define IDENTIFIER 258
558 #define DEF 259
559 #define USE 260
560 #define PROTO 261
561 #define EXTERNPROTO 262
562 #define TO 263
563 #define IS 264
564 #define ROUTE 265
565 #define SFN_NULL 266
566 #define EVENTIN 267
567 #define EVENTOUT 268
568 #define FIELD 269
569 #define EXPOSEDFIELD 270
570 #define SFBOOL 271
571 #define SFCOLOR 272
572 #define SFFLOAT 273
573 #define SFIMAGE 274
574 #define SFINT32 275
575 #define SFNODE 276
576 #define SFROTATION 277
577 #define SFSTRING 278
578 #define SFTIME 279
579 #define SFVEC2F 280
580 #define SFVEC3F 281
581 #define MFCOLOR 282
582 #define MFFLOAT 283
583 #define MFINT32 284
584 #define MFROTATION 285
585 #define MFSTRING 286
586 #define MFVEC2F 287
587 #define MFVEC3F 288
588 #define MFNODE 289
589 
590 
591 
592 //
593 // Parser for VRML 2.0 files.
594 // This is a minimal parser that does NOT generate an in-memory scene graph.
595 //
596 
597 // The original parser was developed on a Windows 95 PC with
598 // Borland's C++ 5.0 development tools. This was then ported
599 // to a Windows 95 PC with Microsoft's MSDEV C++ 4.0 development
600 // tools. The port introduced the ifdef's for
601 // USING_BORLAND_CPP_5 : since this provides a "std namespace",
602 // TWO_ARGUMENTS_FOR_STL_STACK : STL is a moving target. The stack template
603 // class takes either one or two arguments.
604 
605 
606 #define YYDEBUG 1
607 
608 #include <stdlib.h>
609 
610 
611 
612 
613 // This is used when the parser knows what kind of token it expects
614 // to get next-- used when parsing field values (whose types are declared
615 // and read by the parser) and at certain other places:
616 //extern int expectToken;
617 
618 // Current line number (set by lexer)
619 //extern int currentLineNumber;
620 
621 // Some helper routines defined below:
622 //static void beginProto(const char *);
623 //static void endProto();
624 
625 //static int addField(const char *type, const char *name);
626 //static int addEventIn(const char *type, const char *name);
627 //static int addEventOut(const char *type, const char *name);
628 //static int addExposedField(const char *type, const char *name);
629 //static int add(void (VrmlNodeType::*)(const char *, int), const char *,
630 // const char *);
631 //static int fieldType(const char *type);
632 //static void inScript();
633 //static void expect(int type);
634 
635 //void yyerror(const char *);
636 //int yylex(vtkVRMLImporter* self);
637 
638 
639 
640 #ifndef YYLTYPE
641 
642 #define YYLTYPE yyltype
643 #endif
644 
645 #define YYFINAL 128
646 #define YYFLAG -32768
647 #define YYNTBASE 40
648 
649 #define YYTRANSLATE(x) ((unsigned)(x) <= 289 ? yytranslate[x] : 68)
650 
651 static const char yytranslate[] = { 0,
652  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
653  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
654  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
655  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
656  2, 2, 2, 2, 2, 39, 2, 2, 2, 2,
657  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
658  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
659  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
660  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
661  35, 2, 36, 2, 2, 2, 2, 2, 2, 2,
662  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
663  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
664  2, 2, 37, 2, 38, 2, 2, 2, 2, 2,
665  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
666  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
667  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
668  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
669  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
670  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
671  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
672  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
673  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
674  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
675  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
676  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
677  2, 2, 2, 2, 2, 1, 2, 3, 4, 5,
678  6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
679  16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
680  26, 27, 28, 29, 30, 31, 32, 33, 34
681 };
682 
683 #if YYDEBUG != 0
684 static const short yyprhs[] = { 0,
685  0, 2, 3, 6, 8, 10, 12, 14, 15, 16,
686  22, 25, 27, 29, 30, 40, 41, 42, 51, 52,
687  55, 59, 63, 64, 70, 71, 77, 78, 81, 85,
688  89, 93, 97, 106, 107, 113, 114, 117, 118, 122,
689  124, 126, 130, 134, 135, 141, 147, 153, 155, 157,
690  159, 161, 163, 165, 167, 169, 171, 173, 175, 177,
691  179, 181, 183, 185, 187, 190, 193, 196, 199, 203,
692  205, 206
693 };
694 
695 static const short yyrhs[] = { 41,
696  0, 0, 41, 42, 0, 43, 0, 46, 0, 58,
697  0, 59, 0, 0, 0, 4, 44, 3, 45, 59,
698  0, 5, 3, 0, 47, 0, 49, 0, 0, 6,
699  3, 48, 35, 52, 36, 37, 41, 38, 0, 0,
700  0, 7, 3, 50, 35, 56, 36, 51, 65, 0,
701  0, 52, 53, 0, 12, 3, 3, 0, 13, 3,
702  3, 0, 0, 14, 3, 3, 54, 65, 0, 0,
703  15, 3, 3, 55, 65, 0, 0, 56, 57, 0,
704  12, 3, 3, 0, 13, 3, 3, 0, 14, 3,
705  3, 0, 15, 3, 3, 0, 10, 3, 39, 3,
706  8, 3, 39, 3, 0, 0, 3, 60, 37, 61,
707  38, 0, 0, 61, 62, 0, 0, 3, 63, 65,
708  0, 58, 0, 46, 0, 12, 3, 3, 0, 13,
709  3, 3, 0, 0, 14, 3, 3, 64, 65, 0,
710  12, 3, 3, 9, 3, 0, 13, 3, 3, 9,
711  3, 0, 16, 0, 17, 0, 27, 0, 18, 0,
712  28, 0, 19, 0, 20, 0, 29, 0, 22, 0,
713  30, 0, 23, 0, 31, 0, 24, 0, 25, 0,
714  32, 0, 26, 0, 33, 0, 21, 43, 0, 21,
715  11, 0, 34, 66, 0, 9, 3, 0, 35, 67,
716  36, 0, 43, 0, 0, 67, 43, 0
717 };
718 
719 #endif
720 
721 #if YYDEBUG != 0
722 static const short yyrline[] = { 0,
723  106, 109, 111, 114, 116, 117, 120, 122, 123, 124,
724  125, 128, 130, 133, 135, 139, 141, 143, 145, 147,
725  150, 153, 155, 157, 158, 160, 163, 165, 168, 171,
726  173, 175, 179, 184, 186, 189, 191, 194, 196, 197,
727  198, 201, 202, 203, 206, 207, 209, 213, 215, 216,
728  217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
729  227, 228, 229, 230, 232, 233, 234, 235, 238, 240,
730  243, 245
731 };
732 
733 static const char * const yytname[] = { "$","error","$undefined.","IDENTIFIER",
734  "DEF","USE","PROTO","EXTERNPROTO","TO","IS","ROUTE","SFN_NULL","EVENTIN","EVENTOUT",
735  "FIELD","EXPOSEDFIELD","SFBOOL","SFCOLOR","SFFLOAT","SFIMAGE","SFINT32","SFNODE",
736  "SFROTATION","SFSTRING","SFTIME","SFVEC2F","SFVEC3F","MFCOLOR","MFFLOAT","MFINT32",
737  "MFROTATION","MFSTRING","MFVEC2F","MFVEC3F","MFNODE","'['","']'","'{'","'}'",
738  "'.'","vrmlscene","declarations","declaration","nodeDeclaration","@1","@2","protoDeclaration",
739  "proto","@3","externproto","@4","@5","interfaceDeclarations","interfaceDeclaration",
740  "@6","@7","externInterfaceDeclarations","externInterfaceDeclaration","routeDeclaration",
741  "node","@8","nodeGuts","nodeGut","@9","@10","fieldValue","mfnodeValue","nodes",
742  ""
743 };
744 #endif
745 
746 static const short yyr1[] = { 0,
747  40, 41, 41, 42, 42, 42, 43, 44, 45, 43,
748  43, 46, 46, 48, 47, 50, 51, 49, 52, 52,
749  53, 53, 54, 53, 55, 53, 56, 56, 57, 57,
750  57, 57, 58, 60, 59, 61, 61, 63, 62, 62,
751  62, 62, 62, 64, 62, 62, 62, 65, 65, 65,
752  65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
753  65, 65, 65, 65, 65, 65, 65, 65, 66, 66,
754  67, 67
755 };
756 
757 static const short yyr2[] = { 0,
758  1, 0, 2, 1, 1, 1, 1, 0, 0, 5,
759  2, 1, 1, 0, 9, 0, 0, 8, 0, 2,
760  3, 3, 0, 5, 0, 5, 0, 2, 3, 3,
761  3, 3, 8, 0, 5, 0, 2, 0, 3, 1,
762  1, 3, 3, 0, 5, 5, 5, 1, 1, 1,
763  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
764  1, 1, 1, 1, 2, 2, 2, 2, 3, 1,
765  0, 2
766 };
767 
768 static const short yydefact[] = { 2,
769  1, 34, 8, 0, 0, 0, 0, 3, 4, 5,
770  12, 13, 6, 7, 0, 0, 11, 14, 16, 0,
771  36, 9, 0, 0, 0, 0, 0, 19, 27, 0,
772  38, 0, 0, 0, 35, 41, 40, 37, 10, 0,
773  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
774  0, 20, 0, 0, 0, 0, 17, 28, 0, 0,
775  48, 49, 51, 53, 54, 0, 56, 58, 60, 61,
776  63, 50, 52, 55, 57, 59, 62, 64, 0, 39,
777  42, 43, 44, 0, 0, 0, 0, 2, 0, 0,
778  0, 0, 0, 0, 68, 66, 65, 71, 70, 67,
779  0, 0, 0, 21, 22, 23, 25, 0, 29, 30,
780  31, 32, 18, 33, 0, 46, 47, 45, 0, 0,
781  15, 69, 72, 24, 26, 0, 0, 0
782 };
783 
784 static const short yydefgoto[] = { 126,
785  1, 8, 9, 16, 27, 10, 11, 23, 12, 24,
786  93, 40, 52, 119, 120, 41, 58, 13, 14, 15,
787  26, 38, 43, 103, 80, 100, 115
788 };
789 
790 static const short yypact[] = {-32768,
791  79,-32768,-32768, -1, 0, 3, 4,-32768,-32768,-32768,
792  -32768,-32768,-32768,-32768, -28, 11,-32768,-32768,-32768, -18,
793  -32768,-32768, -6, 5, 32, -2, 38,-32768,-32768, 35,
794  -32768, 39, 41, 45,-32768,-32768,-32768,-32768,-32768, 19,
795  66, 48, 43, 50, 51, 54, 84, 85, 87, 88,
796  55,-32768, 90, 91, 92, 93,-32768,-32768, 58, 95,
797  -32768,-32768,-32768,-32768,-32768, 34,-32768,-32768,-32768,-32768,
798  -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 23,-32768,
799  94, 96,-32768, 97, 98, 101, 103,-32768, 104, 105,
800  106, 107, 43, 108,-32768,-32768,-32768,-32768,-32768,-32768,
801  109, 110, 43,-32768,-32768,-32768,-32768, 12,-32768,-32768,
802  -32768,-32768,-32768,-32768, 20,-32768,-32768,-32768, 43, 43,
803  -32768,-32768,-32768,-32768,-32768, 99, 114,-32768
804 };
805 
806 static const short yypgoto[] = {-32768,
807  27,-32768, -66,-32768,-32768, 100,-32768,-32768,-32768,-32768,
808  -32768,-32768,-32768,-32768,-32768,-32768,-32768, 102, 89,-32768,
809  -32768,-32768,-32768,-32768, -73,-32768,-32768
810 };
811 
812 
813 #define YYLAST 128
814 
815 
816 static const short yytable[] = { 97,
817  31, 17, 18, 5, 6, 19, 20, 7, 21, 32,
818  33, 34, 99, 22, 2, 3, 4, 5, 6, 113,
819  25, 7, 2, 3, 4, 2, 3, 4, 28, 118,
820  47, 48, 49, 50, 30, 35, 2, 3, 4, 29,
821  2, 44, 42, 45, 96, 124, 125, 46, 123, 121,
822  59, 60, 81, 82, 51, 122, 83, 98, 61, 62,
823  63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
824  73, 74, 75, 76, 77, 78, 79, 53, 54, 55,
825  56, 2, 3, 4, 5, 6, 84, 85, 7, 86,
826  87, 88, 89, 90, 91, 92, 94, 95, 127, 104,
827  105, 57, 101, 106, 102, 107, 109, 110, 111, 112,
828  114, 116, 117, 128, 108, 39, 0, 0, 0, 0,
829  0, 0, 0, 0, 0, 36, 0, 37
830 };
831 
832 static const short yycheck[] = { 66,
833  3, 3, 3, 6, 7, 3, 3, 10, 37, 12,
834  13, 14, 79, 3, 3, 4, 5, 6, 7, 93,
835  39, 10, 3, 4, 5, 3, 4, 5, 35, 103,
836  12, 13, 14, 15, 3, 38, 3, 4, 5, 35,
837  3, 3, 8, 3, 11, 119, 120, 3, 115, 38,
838  3, 9, 3, 3, 36, 36, 3, 35, 16, 17,
839  18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
840  28, 29, 30, 31, 32, 33, 34, 12, 13, 14,
841  15, 3, 4, 5, 6, 7, 3, 3, 10, 3,
842  3, 37, 3, 3, 3, 3, 39, 3, 0, 3,
843  3, 36, 9, 3, 9, 3, 3, 3, 3, 3,
844  3, 3, 3, 0, 88, 27, -1, -1, -1, -1,
845  -1, -1, -1, -1, -1, 26, -1, 26
846 };
847 /* -*-C-*- Note some compilers choke on comments on `#line' lines. */
848 
849 
850 /* Skeleton output parser for bison,
851  Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
852 
853  This program is free software; you can redistribute it and/or modify
854  it under the terms of the GNU General Public License as published by
855  the Free Software Foundation; either version 2, or (at your option)
856  any later version.
857 
858  This program is distributed in the hope that it will be useful,
859  but WITHOUT ANY WARRANTY; without even the implied warranty of
860  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
861  GNU General Public License for more details.
862 
863  You should have received a copy of the GNU General Public License
864  along with this program; if not, write to the Free Software
865  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
866 
867 /* As a special exception, when this file is copied by Bison into a
868  Bison output file, you may use that output file without restriction.
869  This special exception was added by the Free Software Foundation
870  in version 1.24 of Bison. */
871 
872 //extern int yylex(vtkVRMLImporter* self);
873 //extern void yyerror();
874 
875 #include <list>
876 //
877 // This file was originally generated from a yacc grammar source
878 // file, but subsequently it has been locally modified to suit
879 // VTK's needs. The use of alloca -- part of the original parser
880 // boilerplate became problematic because the confusing
881 // preprocessor #defines with respect to alloca were causing
882 // compile problems with newer versions of CLang.
883 //
884 // This class replaces alloca with a malloc-based allocator that
885 // cleans up after itself when the FakeAlloca object goes out of
886 // scope. Whatever performance penalty this incurs is minor and
887 // would only be noticeably if a very large, deeply nested VRML
888 // file was imported; in the real world, I think alloca was very
889 // rarely called here.
890 
892 {
893 public:
894  typedef std::list<void *> list_type;
896  {
897  for(list_type::iterator it = this->m_allocs.begin();
898  it != this->m_allocs.end(); ++it)
899  {
900  free(*it);
901  }
902  }
903  void *Allocate(size_t size)
904  {
905  void *rval = malloc(size);
906  m_allocs.push_back(rval);
907  return rval;
908  }
909 private:
910  list_type m_allocs;
911 };
912 /* This is the parser code that is written into each bison parser
913  when the %semantic_parser declaration is not specified in the grammar.
914  It was written by Richard Stallman by simplifying the hairy parser
915  used when %semantic_parser is specified. */
916 
917 /* Note: there must be only one dollar sign in this file.
918  It is replaced by the list of actions, each action
919  as one case of the switch. */
920 
921 #define yyerrok (yyerrstatus = 0)
922 #define yyclearin (yychar = YYEMPTY)
923 #define YYEMPTY -2
924 #define YYEOF 0
925 #define YYACCEPT return(0)
926 #define YYABORT return(1)
927 #define YYERROR goto yyerrlab1
928 /* Like YYERROR except do call yyerror.
929  This remains here temporarily to ease the
930  transition to the new meaning of YYERROR, for GCC.
931  Once GCC version 2 has supplanted version 1, this can go. */
932 #define YYFAIL goto yyerrlab
933 #define YYRECOVERING() (!!yyerrstatus)
934 #define YYBACKUP(token, value) \
935 do \
936  if (yychar == YYEMPTY && yylen == 1) \
937  { yychar = (token), yylval = (value); \
938  yychar1 = YYTRANSLATE (yychar); \
939  YYPOPSTACK; \
940  goto yybackup; \
941  } \
942  else \
943  { yyerror ("syntax error: cannot back up"); YYERROR; } \
944 while (0)
945 
946 #define YYTERROR 1
947 #define YYERRCODE 256
948 
949 
950 /* YYINITDEPTH indicates the initial size of the parser's stacks */
951 
952 #ifndef YYINITDEPTH
953 #define YYINITDEPTH 200
954 #endif
955 
956 /* YYMAXDEPTH is the maximum size the stacks can grow to
957  (effective only if the built-in stack extension method is used). */
958 
959 #if defined(YYMAXDEPTH) && (YYMAXDEPTH == 0)
960 #undef YYMAXDEPTH
961 #endif
962 
963 #ifndef YYMAXDEPTH
964 #define YYMAXDEPTH 10000
965 #endif
966 
967 static void
968 __yy_memcpy (char *from, char *to, int count)
969 {
970  char *f = from;
971  char *t = to;
972  int i = count;
973 
974  while (i-- > 0)
975  *t++ = *f++;
976 }
977 
978 
980 {
981  FakeAlloca yyallocator;
982  int yystate;
983  int yyn;
984  short *yyssp;
985  YYSTYPE *yyvsp;
986  int yyerrstatus; /* number of tokens to shift before error messages enabled */
987  int yychar1 = 0; /* lookahead token as an internal (translated) token number */
988 
989  short yyssa[YYINITDEPTH]; /* the state stack */
990  YYSTYPE yyvsa[YYINITDEPTH]; /* the semantic value stack */
991 
992  short *yyss = yyssa; /* refer to the stacks thru separate pointers */
993  YYSTYPE *yyvs = yyvsa; /* to allow yyoverflow to reallocate them elsewhere */
994 
995 #ifdef YYLSP_NEEDED
996  YYLTYPE yylsa[YYINITDEPTH]; /* the location stack */
997  YYLTYPE *yyls = yylsa;
998  YYLTYPE *yylsp;
999 
1000 #define YYPOPSTACK (yyvsp--, yyssp--, yylsp--)
1001 #else
1002 #define YYPOPSTACK (yyvsp--, yyssp--)
1003 #endif
1004 
1005  int yystacksize = YYINITDEPTH;
1006 
1007 #ifdef YYPURE
1008  int yychar;
1009  YYSTYPE yylval;
1010  int yynerrs;
1011 #ifdef YYLSP_NEEDED
1012  YYLTYPE yylloc;
1013 #endif
1014 #endif
1015 
1016  YYSTYPE yyval; /* the variable used to return */
1017  /* semantic values from the action */
1018  /* routines */
1019 
1020  int yylen;
1021 
1022 #if YYDEBUG != 0
1023  if (yydebug)
1024  fprintf(stderr, "Starting parse\n");
1025 #endif
1026 
1027  yystate = 0;
1028  yyerrstatus = 0;
1029  yynerrs = 0;
1030  yychar = YYEMPTY; /* Cause a token to be read. */
1031 
1032  /* Initialize stack pointers.
1033  Waste one element of value and location stack
1034  so that they stay on the same level as the state stack.
1035  The wasted elements are never initialized. */
1036 
1037  yyssp = yyss - 1;
1038  yyvsp = yyvs;
1039 #ifdef YYLSP_NEEDED
1040  yylsp = yyls;
1041 #endif
1042 
1043  /* Push a new state, which is found in yystate . */
1044  /* In all cases, when you get here, the value and location stacks
1045  have just been pushed. so pushing a state here evens the stacks. */
1046  yynewstate:
1047 
1048  *++yyssp = yystate;
1049 
1050  if (yyssp >= yyss + yystacksize - 1)
1051  {
1052  /* Give user a chance to reallocate the stack */
1053  /* Use copies of these so that the &'s don't force the real ones into memory. */
1054  YYSTYPE *yyvs1 = yyvs;
1055  short *yyss1 = yyss;
1056 #ifdef YYLSP_NEEDED
1057  YYLTYPE *yyls1 = yyls;
1058 #endif
1059 
1060  /* Get the current used size of the three stacks, in elements. */
1061  int size = yyssp - yyss + 1;
1062 
1063 #ifdef yyoverflow
1064  /* Each stack pointer address is followed by the size of
1065  the data in use in that stack, in bytes. */
1066 #ifdef YYLSP_NEEDED
1067  /* This used to be a conditional around just the two extra args,
1068  but that might be undefined if yyoverflow is a macro. */
1069  yyoverflow("parser stack overflow",
1070  &yyss1, size * sizeof (*yyssp),
1071  &yyvs1, size * sizeof (*yyvsp),
1072  &yyls1, size * sizeof (*yylsp),
1073  &yystacksize);
1074 #else
1075  yyoverflow("parser stack overflow",
1076  &yyss1, size * sizeof (*yyssp),
1077  &yyvs1, size * sizeof (*yyvsp),
1078  &yystacksize);
1079 #endif
1080 
1081  yyss = yyss1; yyvs = yyvs1;
1082 #ifdef YYLSP_NEEDED
1083  yyls = yyls1;
1084 #endif
1085 #else /* no yyoverflow */
1086  /* Extend the stack our own way. */
1087  if (yystacksize >= YYMAXDEPTH)
1088  {
1089  yyerror("parser stack overflow");
1090  return 2;
1091  }
1092  yystacksize *= 2;
1093  if (yystacksize > YYMAXDEPTH)
1094  yystacksize = YYMAXDEPTH;
1095  yyss = (short *) yyallocator.Allocate (yystacksize * sizeof (*yyssp));
1096  __yy_memcpy ((char *)yyss1, (char *)yyss, size * sizeof (*yyssp));
1097  yyvs = (YYSTYPE *) yyallocator.Allocate (yystacksize * sizeof (*yyvsp));
1098  __yy_memcpy ((char *)yyvs1, (char *)yyvs, size * sizeof (*yyvsp));
1099 #ifdef YYLSP_NEEDED
1100  yyls = (YYLTYPE *) yyallocator.Allocate (yystacksize * sizeof (*yylsp));
1101  __yy_memcpy ((char *)yyls1, (char *)yyls, size * sizeof (*yylsp));
1102 #endif
1103 #endif /* no yyoverflow */
1104 
1105  yyssp = yyss + size - 1;
1106  yyvsp = yyvs + size - 1;
1107 #ifdef YYLSP_NEEDED
1108  yylsp = yyls + size - 1;
1109 #endif
1110 
1111 #if YYDEBUG != 0
1112  if (yydebug)
1113  fprintf(stderr, "Stack size increased to %d\n", yystacksize);
1114 #endif
1115 
1116  if (yyssp >= yyss + yystacksize - 1)
1117  YYABORT;
1118  }
1119 
1120 #if YYDEBUG != 0
1121  if (yydebug)
1122  fprintf(stderr, "Entering state %d\n", yystate);
1123 #endif
1124 
1125  goto yybackup;
1126  yybackup:
1127 
1128  /* Do appropriate processing given the current state. */
1129  /* Read a lookahead token if we need one and don't already have one. */
1130  /* yyresume: */
1131 
1132  /* First try to decide what to do without reference to lookahead token. */
1133 
1134  yyn = yypact[yystate];
1135  if (yyn == YYFLAG)
1136  goto yydefault;
1137 
1138  /* Not known => get a lookahead token if don't already have one. */
1139 
1140  /* yychar is either YYEMPTY or YYEOF
1141  or a valid token in external form. */
1142 
1143  if (yychar == YYEMPTY)
1144  {
1145 #if YYDEBUG != 0
1146  if (yydebug)
1147  fprintf(stderr, "Reading a token: ");
1148 #endif
1149  yychar = yylex(self);
1150  }
1151 
1152  /* Convert token to internal form (in yychar1) for indexing tables with */
1153 
1154  if (yychar <= 0) /* This means end of input. */
1155  {
1156  yychar1 = 0;
1157  yychar = YYEOF; /* Don't call YYLEX any more */
1158 
1159 #if YYDEBUG != 0
1160  if (yydebug)
1161  fprintf(stderr, "Now at end of input.\n");
1162 #endif
1163  }
1164  else
1165  {
1166  yychar1 = YYTRANSLATE(yychar);
1167 
1168 #if YYDEBUG != 0
1169  if (yydebug)
1170  {
1171  fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
1172  /* Give the individual parser a way to print the precise meaning
1173  of a token, for further debugging info. */
1174 #ifdef YYPRINT
1175  YYPRINT (stderr, yychar, yylval);
1176 #endif
1177  fprintf (stderr, ")\n");
1178  }
1179 #endif
1180  }
1181 
1182  yyn += yychar1;
1183  if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
1184  goto yydefault;
1185 
1186  yyn = yytable[yyn];
1187 
1188  /* yyn is what to do for this token type in this state.
1189  Negative => reduce, -yyn is rule number.
1190  Positive => shift, yyn is new state.
1191  New state is final state => don't bother to shift,
1192  just return success.
1193  0, or most negative number => error. */
1194 
1195  if (yyn < 0)
1196  {
1197  if (yyn == YYFLAG)
1198  goto yyerrlab;
1199  yyn = -yyn;
1200  goto yyreduce;
1201  }
1202  else if (yyn == 0)
1203  goto yyerrlab;
1204 
1205  if (yyn == YYFINAL)
1206  YYACCEPT;
1207 
1208  /* Shift the lookahead token. */
1209 
1210 #if YYDEBUG != 0
1211  if (yydebug)
1212  fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
1213 #endif
1214 
1215  /* Discard the token being shifted unless it is eof. */
1216  if (yychar != YYEOF)
1217  yychar = YYEMPTY;
1218 
1219  *++yyvsp = yylval;
1220 #ifdef YYLSP_NEEDED
1221  *++yylsp = yylloc;
1222 #endif
1223 
1224  /* count tokens shifted since error; after three, turn off error status. */
1225  if (yyerrstatus) yyerrstatus--;
1226 
1227  yystate = yyn;
1228  goto yynewstate;
1229 
1230  /* Do the default action for the current state. */
1231  yydefault:
1232 
1233  yyn = yydefact[yystate];
1234  if (yyn == 0)
1235  goto yyerrlab;
1236 
1237  /* Do a reduction. yyn is the number of a rule to reduce with. */
1238  yyreduce:
1239  yylen = yyr2[yyn];
1240  if (yylen > 0)
1241  yyval = yyvsp[1-yylen]; /* implement default value of the action */
1242  else
1243  yyval.sfint = 0;
1244 
1245 #if YYDEBUG != 0
1246  if (yydebug)
1247  {
1248  int i;
1249 
1250  fprintf (stderr, "Reducing via rule %d (line %d), ",
1251  yyn, yyrline[yyn]);
1252 
1253  /* Print the symbols being reduced, and their result. */
1254  for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)
1255  fprintf (stderr, "%s ", yytname[yyrhs[i]]);
1256  fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
1257  }
1258 #endif
1259 
1260 
1261  // Note: several free() methods are commented out due to the use of
1262  // vtkVRMLAllocator.
1263  switch (yyn) {
1264 
1265  case 8:
1266  { creatingDEF = 1; ;
1267  break;}
1268  case 9:
1269  { curDEFName = yyvsp[0].string; ;
1270  break;}
1271  case 10:
1272  { creatingDEF = 0; ;
1273  break;}
1274  case 11:
1275  { self->useNode(yyvsp[0].string);//free(yyvsp[0].string); ;
1276  break;}
1277  case 14:
1278  { beginProto(yyvsp[0].string); ;
1279  break;}
1280  case 15:
1281  { endProto(); //free(yyvsp[-7].string);;
1282  break;}
1283  case 16:
1284  { beginProto(yyvsp[0].string); ;
1285  break;}
1286  case 17:
1287  { expect(MFSTRING); ;
1288  break;}
1289  case 18:
1290  { endProto(); //free(yyvsp[-6].string); ;
1291  break;}
1292  case 21:
1293  { addEventIn(yyvsp[-1].string, yyvsp[0].string);
1294  //free(yyvsp[-1].string); free(yyvsp[0].string); ;
1295  break;}
1296  case 22:
1297  { addEventOut(yyvsp[-1].string, yyvsp[0].string);
1298  //free(yyvsp[-1].string); free(yyvsp[0].string); ;
1299  break;}
1300  case 23:
1301  { int type = addField(yyvsp[-1].string, yyvsp[0].string);
1302  expect(type); ;
1303  break;}
1304  case 24:
1305  { //free(yyvsp[-3].string); free(yyvsp[-2].string); ;
1306  break;}
1307  case 25:
1308  { int type = addExposedField(yyvsp[-1].string, yyvsp[0].string);
1309  expect(type); ;
1310  break;}
1311  case 26:
1312  { //free(yyvsp[-3].string); free(yyvsp[-2].string); ;
1313  break;}
1314  case 29:
1315  { addEventIn(yyvsp[-1].string, yyvsp[0].string);
1316  //free(yyvsp[-1].string); free(yyvsp[0].string); ;
1317  break;}
1318  case 30:
1319  { addEventOut(yyvsp[-1].string, yyvsp[0].string);
1320  //free(yyvsp[-1].string); free(yyvsp[0].string); ;
1321  break;}
1322  case 31:
1323  { addField(yyvsp[-1].string, yyvsp[0].string);
1324  //free(yyvsp[-1].string); free(yyvsp[0].string); ;
1325  break;}
1326  case 32:
1327  { addExposedField(yyvsp[-1].string, yyvsp[0].string);
1328  //free(yyvsp[-1].string); free(yyvsp[0].string); ;
1329  break;}
1330  case 33:
1331  { //free(yyvsp[-6].string); free(yyvsp[-4].string); free(yyvsp[-2].string); free(yyvsp[0].string); ;
1332  break;}
1333  case 34:
1334  { self->enterNode(yyvsp[0].string); ;
1335  break;}
1336  case 35:
1337  { self->exitNode(); //free(yyvsp[-4].string);;
1338  break;}
1339  case 38:
1340  { self->enterField(yyvsp[0].string); ;
1341  break;}
1342  case 39:
1343  { self->exitField(); //free(yyvsp[-2].string); ;
1344  break;}
1345  case 42:
1346  { inScript(); //free(yyvsp[-1].string); free(yyvsp[0].string); ;
1347  break;}
1348  case 43:
1349  { inScript(); //free(yyvsp[-1].string); free(yyvsp[0].string); ;
1350  break;}
1351  case 44:
1352  { inScript();
1353  int type = fieldType(yyvsp[-1].string);
1354  expect(type); ;
1355  break;}
1356  case 45:
1357  { //free(yyvsp[-3].string); free(yyvsp[-2].string); ;
1358  break;}
1359  case 46:
1360  { inScript(); //free(yyvsp[-3].string); free(yyvsp[-2].string); free(yyvsp[0].string); ;
1361  break;}
1362  case 47:
1363  { inScript(); //free(yyvsp[-3].string); free(yyvsp[-2].string); free(yyvsp[0].string); ;
1364  break;}
1365  case 49:
1366  {;
1367  break;}
1368  case 50:
1369  { break;}
1370  case 55:
1371  { break;}
1372  case 63:
1373  { ;
1374  break;}
1375  case 64:
1376  { break;}
1377  case 68:
1378  { //free(yyvsp[0].string); ;
1379  break;}
1380  }
1381  /* the action file gets copied in in place of this dollarsign */
1382 
1383 
1384  yyvsp -= yylen;
1385  yyssp -= yylen;
1386 #ifdef YYLSP_NEEDED
1387  yylsp -= yylen;
1388 #endif
1389 
1390 #if YYDEBUG != 0
1391  if (yydebug)
1392  {
1393  short *ssp1 = yyss - 1;
1394  fprintf (stderr, "state stack now");
1395  while (ssp1 != yyssp)
1396  fprintf (stderr, " %d", *++ssp1);
1397  fprintf (stderr, "\n");
1398  }
1399 #endif
1400 
1401  *++yyvsp = yyval;
1402 
1403 #ifdef YYLSP_NEEDED
1404  yylsp++;
1405  if (yylen == 0)
1406  {
1407  yylsp->first_line = yylloc.first_line;
1408  yylsp->first_column = yylloc.first_column;
1409  yylsp->last_line = (yylsp-1)->last_line;
1410  yylsp->last_column = (yylsp-1)->last_column;
1411  yylsp->text = 0;
1412  }
1413  else
1414  {
1415  yylsp->last_line = (yylsp+yylen-1)->last_line;
1416  yylsp->last_column = (yylsp+yylen-1)->last_column;
1417  }
1418 #endif
1419 
1420  /* Now "shift" the result of the reduction.
1421  Determine what state that goes to,
1422  based on the state we popped back to
1423  and the rule number reduced by. */
1424 
1425  yyn = yyr1[yyn];
1426 
1427  yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
1428  if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
1429  yystate = yytable[yystate];
1430  else
1431  yystate = yydefgoto[yyn - YYNTBASE];
1432 
1433  goto yynewstate;
1434 
1435  yyerrlab: /* here on detecting error */
1436 
1437  if (! yyerrstatus)
1438  /* If not already recovering from an error, report this error. */
1439  {
1440  ++yynerrs;
1441 
1442 #ifdef YYERROR_VERBOSE
1443  yyn = yypact[yystate];
1444 
1445  if (yyn > YYFLAG && yyn < YYLAST)
1446  {
1447  int size = 0;
1448  char *msg;
1449  int x, count;
1450 
1451  count = 0;
1452  /* Start X at -yyn if nec to avoid negative indexes in yycheck. */
1453  for (x = (yyn < 0 ? -yyn : 0);
1454  x < (sizeof(yytname) / sizeof(char *)); x++)
1455  if (yycheck[x + yyn] == x)
1456  size += strlen(yytname[x]) + 15, count++;
1457  msg = (char *) malloc(size + 15);
1458  if (msg != 0)
1459  {
1460  strcpy(msg, "parse error");
1461 
1462  if (count < 5)
1463  {
1464  count = 0;
1465  for (x = (yyn < 0 ? -yyn : 0);
1466  x < (sizeof(yytname) / sizeof(char *)); x++)
1467  if (yycheck[x + yyn] == x)
1468  {
1469  strcat(msg, count == 0 ? ", expecting `" : " or `");
1470  strcat(msg, yytname[x]);
1471  strcat(msg, "'");
1472  count++;
1473  }
1474  }
1475  yyerror(msg);
1476  free(msg);
1477  }
1478  else
1479  yyerror ("parse error; also virtual memory exceeded");
1480  }
1481  else
1482 #endif /* YYERROR_VERBOSE */
1483  yyerror("parse error");
1484  }
1485 
1486  goto yyerrlab1;
1487  yyerrlab1: /* here on error raised explicitly by an action */
1488 
1489  if (yyerrstatus == 3)
1490  {
1491  /* if just tried and failed to reuse lookahead token after an error, discard it. */
1492 
1493  /* return failure if at end of input */
1494  if (yychar == YYEOF)
1495  YYABORT;
1496 
1497 #if YYDEBUG != 0
1498  if (yydebug)
1499  fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);
1500 #endif
1501 
1502  yychar = YYEMPTY;
1503  }
1504 
1505  /* Else will try to reuse lookahead token
1506  after shifting the error token. */
1507 
1508  yyerrstatus = 3; /* Each real token shifted decrements this */
1509 
1510  goto yyerrhandle;
1511 
1512  yyerrdefault: /* current state does not do anything special for the error token. */
1513 
1514 #if 0
1515  /* This is wrong; only states that explicitly want error tokens
1516  should shift them. */
1517  yyn = yydefact[yystate]; /* If its default is to accept any token, ok. Otherwise pop it.*/
1518  if (yyn) goto yydefault;
1519 #endif
1520 
1521  yyerrpop: /* pop the current state because it cannot handle the error token */
1522 
1523  if (yyssp == yyss) YYABORT;
1524  yyvsp--;
1525  yystate = *--yyssp;
1526 #ifdef YYLSP_NEEDED
1527  yylsp--;
1528 #endif
1529 
1530 #if YYDEBUG != 0
1531  if (yydebug)
1532  {
1533  short *ssp1 = yyss - 1;
1534  fprintf (stderr, "Error: state stack now");
1535  while (ssp1 != yyssp)
1536  fprintf (stderr, " %d", *++ssp1);
1537  fprintf (stderr, "\n");
1538  }
1539 #endif
1540 
1541  yyerrhandle:
1542 
1543  yyn = yypact[yystate];
1544  if (yyn == YYFLAG)
1545  goto yyerrdefault;
1546 
1547  yyn += YYTERROR;
1548  if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
1549  goto yyerrdefault;
1550 
1551  yyn = yytable[yyn];
1552  if (yyn < 0)
1553  {
1554  if (yyn == YYFLAG)
1555  goto yyerrpop;
1556  yyn = -yyn;
1557  goto yyreduce;
1558  }
1559  else if (yyn == 0)
1560  goto yyerrpop;
1561 
1562  if (yyn == YYFINAL)
1563  YYACCEPT;
1564 
1565 #if YYDEBUG != 0
1566  if (yydebug)
1567  fprintf(stderr, "Shifting error token, ");
1568 #endif
1569 
1570  *++yyvsp = yylval;
1571 #ifdef YYLSP_NEEDED
1572  *++yylsp = yylloc;
1573 #endif
1574 
1575  yystate = yyn;
1576  goto yynewstate;
1577 }
1578 
1579 
1580 void vtkVRMLYaccData::yyerror(const char *msg)
1581 {
1582  cerr << "Error near line " << currentLineNumber << ": " << msg << "\n";
1583  expect(0);
1584 }
1585 
1586 void vtkVRMLYaccData::beginProto(const char *protoName)
1587 {
1588  // Any protos in the implementation are in a local namespace:
1589  pushNameSpace();
1590 
1591  VrmlNodeType *t = new VrmlNodeType(protoName);
1592  *CurrentProtoStack += t;
1593 }
1594 
1596 {
1597  // Make any protos defined in implementation unavailable:
1598  popNameSpace();
1599 
1600  // Add this proto definition:
1601  if (CurrentProtoStack->Count() == 0)
1602  {
1603  cerr << "Error: Empty PROTO stack!\n";
1604  }
1605  else
1606  {
1607  VrmlNodeType *t = CurrentProtoStack->Top();
1608  CurrentProtoStack->Pop();
1609  addToNameSpace(t);
1610  }
1611 }
1612 
1613 int vtkVRMLYaccData::addField(const char *type, const char *name)
1614 {
1615  return add(&VrmlNodeType::addField, type, name);
1616 }
1617 
1618 int vtkVRMLYaccData::addEventIn(const char *type, const char *name)
1619 {
1620  return add(&VrmlNodeType::addEventIn, type, name);
1621 }
1622 int vtkVRMLYaccData::addEventOut(const char *type, const char *name)
1623 {
1624  return add(&VrmlNodeType::addEventOut, type, name);
1625 }
1626 int vtkVRMLYaccData::addExposedField(const char *type, const char *name)
1627 {
1628  return add(&VrmlNodeType::addExposedField, type, name);
1629 }
1630 
1631 int vtkVRMLYaccData::add(void (VrmlNodeType::*func)(const char *, int),
1632  const char *typeString, const char *name)
1633 {
1634  int type = fieldType(typeString);
1635 
1636  if (type == 0)
1637  {
1638  cerr << "Error: invalid field type: " << type << "\n";
1639  }
1640 
1641  // Need to add support for Script nodes:
1642  // if (inScript) ... ???
1643 
1644  if (CurrentProtoStack->Count() == 0)
1645  {
1646  cerr << "Error: declaration outside of prototype\n";
1647  return 0;
1648  }
1649  VrmlNodeType *t = CurrentProtoStack->Top();
1650  (t->*func)(name, type);
1651 
1652  return type;
1653 }
1654 
1656 {
1657  if (strcmp(type, "SFBool") == 0) return SFBOOL;
1658  if (strcmp(type, "SFColor") == 0) return SFCOLOR;
1659  if (strcmp(type, "SFFloat") == 0) return SFFLOAT;
1660  if (strcmp(type, "SFImage") == 0) return SFIMAGE;
1661  if (strcmp(type, "SFInt32") == 0) return SFINT32;
1662  if (strcmp(type, "SFNode") == 0) return SFNODE;
1663  if (strcmp(type, "SFRotation") == 0) return SFROTATION;
1664  if (strcmp(type, "SFString") == 0) return SFSTRING;
1665  if (strcmp(type, "SFTime") == 0) return SFTIME;
1666  if (strcmp(type, "SFVec2f") == 0) return SFVEC2F;
1667  if (strcmp(type, "SFVec3f") == 0) return SFVEC3F;
1668  if (strcmp(type, "MFColor") == 0) return MFCOLOR;
1669  if (strcmp(type, "MFFloat") == 0) return MFFLOAT;
1670  if (strcmp(type, "MFInt32") == 0) return MFINT32;
1671  if (strcmp(type, "MFNode") == 0) return MFNODE;
1672  if (strcmp(type, "MFRotation") == 0) return MFROTATION;
1673  if (strcmp(type, "MFString") == 0) return MFSTRING;
1674  if (strcmp(type, "MFVec2f") == 0) return MFVEC2F;
1675  if (strcmp(type, "MFVec3f") == 0) return MFVEC3F;
1676 
1677  cerr << "Illegal field type: " << type << "\n";
1678 
1679  return 0;
1680 }
1681 
1683 {
1684  VrmlNodeType::FieldRec *fr = currentField->Top();
1685  if (fr->nodeType == NULL ||
1686  strcmp(fr->nodeType->getName(), "Script") != 0)
1687  {
1688  yyerror("interface declaration outside of Script or prototype");
1689  }
1690 }
1691 
1692 
1694 {
1695  expectToken = type;
1696 }
1697 
1698 // End of Auto-generated Parser Code
1699 // Begin of Auto-generated Lexer Code
1700 
1701 /* A lexical scanner generated by flex */
1702 
1703 
1704 #define FLEX_SCANNER
1705 
1706 #ifdef WIN32
1707 #include <io.h>
1708 #else
1709 #include <unistd.h>
1710 #endif
1711 
1712 /* Use prototypes in function declarations. */
1713 #define YY_USE_PROTOS
1714 #define YY_PROTO(proto) proto
1715 
1716 /* Returned upon end-of-file. */
1717 #define YY_NULL 0
1718 
1719 /* Promotes a possibly negative, possibly signed char to an unsigned
1720  * integer for use as an array index. If the signed char is negative,
1721  * we want to instead treat it as an 8-bit unsigned char, hence the
1722  * double cast.
1723  */
1724 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
1725 
1726 /* Enter a start condition. This macro really ought to take a parameter,
1727  * but we do it the disgusting crufty way forced on us by the ()-less
1728  * definition of BEGIN.
1729  */
1730 #define BEGIN yy_start = 1 + 2 *
1731 
1732 /* Translate the current start state into a value that can be later handed
1733  * to BEGIN to return to the state.
1734  */
1735 #define YY_START ((yy_start - 1) / 2)
1736 
1737 /* Action number for EOF rule of a given start state. */
1738 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
1739 
1740 /* Special action meaning "start processing a new file". Now included
1741  * only for backward compatibility with previous versions of flex.
1742  */
1743 #define YY_NEW_FILE yyrestart( yyin )
1744 
1745 #define YY_END_OF_BUFFER_CHAR 0
1746 
1747 /* Size of default input buffer. */
1748 #define YY_BUF_SIZE 16384
1749 
1750 //typedef struct yy_buffer_state *YY_BUFFER_STATE;
1751 
1752 //extern int yyleng;
1753 //extern FILE *yyin, *yyout;
1754 
1755 #ifdef __cplusplus
1756 extern "C" {
1757 #endif
1758  //extern int yywrap YY_PROTO(( void ));
1759 #ifdef __cplusplus
1760 }
1761 #endif
1762 
1763 #define EOB_ACT_CONTINUE_SCAN 0
1764 #define EOB_ACT_END_OF_FILE 1
1765 #define EOB_ACT_LAST_MATCH 2
1766 
1767 /* The funky do-while in the following #define is used to turn the definition
1768  * int a single C statement (which needs a semi-colon terminator). This
1769  * avoids problems with code like:
1770  *
1771  * if ( condition_holds )
1772  * yyless( 5 );
1773  * else
1774  * do_something_else();
1775  *
1776  * Prior to using the do-while the compiler would get upset at the
1777  * "else" because it interpreted the "if" statement as being all
1778  * done when it reached the ';' after the yyless() call.
1779  */
1780 
1781 /* Return all but the first 'n' matched characters back to the input stream. */
1782 
1783 #define yyless(n) \
1784  do \
1785  { \
1786  /* Undo effects of setting up yytext. */ \
1787  *yy_cp = yy_hold_char; \
1788  yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
1789  YY_DO_BEFORE_ACTION; /* set up yytext again */ \
1790  } \
1791  while ( 0 )
1792 
1793 
1794 //struct yy_buffer_state
1795 //{
1796 // FILE *yy_input_file;
1797 
1798 // char *yy_ch_buf; /* input buffer */
1799 // char *yy_buf_pos; /* current position in input buffer */
1800 
1801  /* Size of input buffer in bytes, not including room for EOB
1802  * characters.
1803  */
1804 // int yy_buf_size;
1805 
1806  /* Number of characters read into yy_ch_buf, not including EOB
1807  * characters.
1808  */
1809 // int yy_n_chars;
1810 
1811  /* Whether this is an "interactive" input source; if so, and
1812  * if we're using stdio for input, then we want to use getc()
1813  * instead of fread(), to make sure we stop fetching input after
1814  * each newline.
1815  */
1816 // int yy_is_interactive;
1817 
1818  /* Whether to try to fill the input buffer when we reach the
1819  * end of it.
1820  */
1821 // int yy_fill_buffer;
1822 
1823 // int yy_buffer_status;
1824 //#define YY_BUFFER_NEW 0
1825 //#define YY_BUFFER_NORMAL 1
1826  /* When an EOF's been seen but there's still some text to process
1827  * then we mark the buffer as YY_EOF_PENDING, to indicate that we
1828  * shouldn't try reading from the input source any more. We might
1829  * still have a bunch of tokens to match, though, because of
1830  * possible backing-up.
1831  *
1832  * When we actually see the EOF, we change the status to "new"
1833  * (via yyrestart()), so that the user can continue scanning by
1834  * just pointing yyin at a new input file.
1835  */
1836 //#define YY_BUFFER_EOF_PENDING 2
1837 //};
1838 
1839 //static YY_BUFFER_STATE yy_current_buffer = 0;
1840 
1841 /* We provide macros for accessing buffer states in case in the
1842  * future we want to put the buffer states in a more general
1843  * "scanner state".
1844  */
1845 #define YY_CURRENT_BUFFER yy_current_buffer
1846 
1847 
1848 /* yy_hold_char holds the character lost when yytext is formed. */
1849 //static char yy_hold_char;
1850 
1851 //static int yy_n_chars; /* number of characters read into yy_ch_buf */
1852 
1853 
1854 //int yyleng;
1855 
1856 /* Points to current character in buffer. */
1857 //static char *yy_c_buf_p = (char *) 0;
1858 //static int yy_init = 1; /* whether we need to initialize */
1859 //static int yy_start = 0; /* start state number */
1860 
1861 /* Flag which is used to allow yywrap()'s to do buffer switches
1862  * instead of setting up a fresh yyin. A bit of a hack ...
1863  */
1864 //static int yy_did_buffer_switch_on_eof;
1865 
1866 //void yyrestart YY_PROTO(( FILE *input_file ));
1867 //void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
1868 //void yy_load_buffer_state YY_PROTO(( void ));
1869 //YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
1870 //void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
1871 //void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
1872 
1873 //static void *yy_flex_alloc YY_PROTO(( unsigned int ));
1874 //static void *yy_flex_realloc YY_PROTO(( void *, unsigned int ));
1875 //static void yy_flex_free YY_PROTO(( void * ));
1876 
1877 #define yy_new_buffer yy_create_buffer
1878 
1879 #define INITIAL 0
1880 #define NODE 1
1881 #define SFB 2
1882 #define SFC 3
1883 #define SFF 4
1884 #define SFIMG 5
1885 #define SFI 6
1886 #define SFR 7
1887 #define SFS 8
1888 #define SFT 9
1889 #define SFV2 10
1890 #define SFV3 11
1891 #define MFC 12
1892 #define MFF 13
1893 #define MFI 14
1894 #define MFR 15
1895 #define MFS 16
1896 #define MFV2 17
1897 #define MFV3 18
1898 #define IN_SFS 19
1899 #define IN_MFS 20
1900 #define IN_SFIMG 21
1901 
1902 #define FLEX_DEBUG
1903 //FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
1904 //extern char *yytext;
1905 #define yytext_ptr yytext
1906 
1907 #ifndef yytext_ptr
1908 //static void yy_flex_strncpy YY_PROTO(( char *, const char *, int ));
1909 #endif
1910 
1911 //static yy_state_type yy_get_previous_state YY_PROTO(( void ));
1912 //static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
1913 //static int yy_get_next_buffer YY_PROTO(( void ));
1914 //static void yy_fatal_error YY_PROTO(( const char msg[] ));
1915 
1916 /* Done after the current pattern has been matched and before the
1917  * corresponding action - sets up yytext.
1918  */
1919 #define YY_DO_BEFORE_ACTION \
1920  yytext_ptr = yy_bp; \
1921  yyleng = yy_cp - yy_bp; \
1922  yy_hold_char = *yy_cp; \
1923  *yy_cp = '\0'; \
1924  yy_c_buf_p = yy_cp;
1925 
1926 #define YY_END_OF_BUFFER 50
1927 static const short int yy_accept[949] =
1928 { 0,
1929  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1930  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1931  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1932  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1933  0, 0, 0, 0, 50, 48, 46, 47, 46, 14,
1934  46, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1935  14, 48, 48, 48, 48, 48, 48, 48, 48, 25,
1936  48, 48, 48, 48, 23, 23, 48, 48, 48, 38,
1937  36, 38, 38, 48, 48, 35, 48, 48, 48, 48,
1938  48, 48, 48, 48, 48, 48, 19, 20, 48, 48,
1939 
1940  26, 17, 48, 24, 24, 18, 48, 48, 48, 39,
1941  37, 39, 39, 48, 48, 48, 48, 48, 48, 41,
1942  41, 42, 41, 41, 43, 48, 45, 45, 46, 47,
1943  46, 47, 47, 46, 46, 46, 46, 14, 14, 14,
1944  7, 14, 14, 14, 6, 14, 14, 14, 14, 0,
1945  15, 0, 0, 0, 0, 0, 0, 0, 0, 25,
1946  25, 0, 0, 0, 0, 0, 23, 23, 0, 0,
1947  0, 0, 0, 0, 38, 38, 38, 15, 0, 35,
1948  35, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1949  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1950 
1951  16, 0, 26, 26, 0, 24, 24, 0, 0, 0,
1952  0, 0, 0, 39, 39, 39, 16, 0, 0, 0,
1953  0, 0, 0, 0, 0, 0, 0, 0, 0, 41,
1954  41, 41, 41, 41, 41, 40, 45, 45, 47, 47,
1955  47, 46, 4, 14, 14, 14, 14, 5, 14, 14,
1956  14, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1957  0, 0, 0, 0, 0, 25, 0, 44, 44, 0,
1958  0, 0, 0, 44, 44, 0, 23, 0, 0, 0,
1959  0, 0, 0, 0, 0, 0, 0, 0, 0, 35,
1960  0, 0, 27, 0, 0, 0, 0, 0, 27, 0,
1961 
1962  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1963  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1964  0, 0, 0, 0, 26, 24, 0, 0, 0, 0,
1965  0, 0, 0, 0, 0, 0, 0, 0, 0, 28,
1966  0, 0, 0, 0, 0, 28, 0, 0, 0, 0,
1967  0, 0, 0, 0, 0, 0, 0, 0, 0, 45,
1968  46, 14, 9, 14, 14, 14, 14, 14, 0, 21,
1969  0, 0, 0, 0, 0, 0, 0, 0, 44, 44,
1970  0, 0, 0, 0, 0, 0, 0, 0, 27, 0,
1971  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1972 
1973  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1974  0, 0, 0, 0, 0, 28, 0, 0, 0, 0,
1975  0, 0, 0, 0, 0, 0, 46, 14, 2, 8,
1976  14, 14, 12, 22, 0, 0, 33, 0, 0, 0,
1977  0, 0, 33, 0, 0, 0, 0, 33, 0, 0,
1978  0, 33, 0, 0, 0, 0, 0, 33, 0, 0,
1979  0, 44, 44, 44, 44, 0, 0, 0, 0, 0,
1980  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1981  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1982  0, 0, 0, 27, 0, 0, 27, 0, 0, 29,
1983 
1984  0, 0, 0, 0, 0, 29, 0, 0, 0, 0,
1985  29, 0, 0, 0, 29, 0, 0, 0, 0, 0,
1986  29, 0, 0, 0, 0, 0, 34, 0, 0, 0,
1987  0, 0, 34, 0, 0, 0, 0, 34, 0, 0,
1988  0, 34, 0, 0, 0, 0, 0, 34, 0, 0,
1989  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1990  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1991  0, 0, 0, 0, 0, 0, 0, 0, 0, 28,
1992  0, 0, 28, 0, 0, 30, 0, 0, 0, 0,
1993  0, 30, 0, 0, 0, 0, 30, 0, 0, 0,
1994 
1995  30, 0, 0, 0, 0, 0, 30, 0, 0, 0,
1996  46, 14, 14, 14, 14, 33, 0, 0, 33, 0,
1997  33, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1998  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1999  0, 0, 29, 0, 0, 29, 0, 29, 0, 0,
2000  34, 0, 0, 34, 0, 34, 0, 0, 0, 0,
2001  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2002  0, 0, 0, 0, 0, 0, 0, 30, 0, 0,
2003  30, 0, 30, 0, 0, 46, 14, 10, 14, 14,
2004  0, 33, 0, 0, 33, 0, 0, 33, 0, 33,
2005 
2006  0, 0, 33, 0, 0, 31, 0, 0, 0, 0,
2007  0, 31, 0, 0, 0, 0, 31, 0, 0, 31,
2008  0, 0, 0, 0, 0, 31, 0, 0, 0, 0,
2009  0, 31, 0, 0, 0, 31, 0, 0, 0, 0,
2010  0, 31, 0, 0, 0, 0, 0, 0, 0, 31,
2011  0, 0, 0, 0, 29, 0, 0, 29, 0, 0,
2012  29, 0, 29, 0, 0, 29, 0, 34, 0, 0,
2013  34, 0, 0, 34, 0, 34, 0, 0, 34, 0,
2014  0, 32, 0, 0, 0, 0, 0, 32, 0, 0,
2015  0, 0, 32, 0, 0, 32, 0, 0, 0, 0,
2016 
2017  0, 32, 0, 0, 0, 0, 0, 32, 0, 0,
2018  0, 32, 0, 0, 0, 0, 0, 32, 0, 0,
2019  0, 0, 0, 0, 0, 32, 0, 0, 0, 0,
2020  30, 0, 0, 30, 0, 0, 30, 0, 30, 0,
2021  0, 30, 46, 14, 11, 14, 31, 0, 0, 31,
2022  0, 31, 0, 0, 31, 0, 31, 0, 0, 31,
2023  0, 32, 0, 0, 32, 0, 32, 0, 0, 32,
2024  0, 32, 0, 0, 32, 0, 46, 14, 14, 0,
2025  31, 0, 0, 31, 0, 0, 31, 0, 31, 0,
2026  0, 31, 0, 0, 31, 0, 31, 0, 0, 31,
2027 
2028  0, 0, 31, 0, 32, 0, 0, 32, 0, 0,
2029  32, 0, 32, 0, 0, 32, 0, 0, 32, 0,
2030  32, 0, 0, 32, 0, 0, 32, 46, 14, 14,
2031  46, 3, 14, 46, 13, 46, 46, 46, 46, 46,
2032  1, 46, 1, 1, 1, 1, 1, 0
2033 } ;
2034 
2035 static const int yy_ec[256] =
2036 { 0,
2037  1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
2038  1, 1, 2, 1, 1, 1, 1, 1, 1, 1,
2039  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2040  1, 4, 5, 6, 7, 5, 5, 5, 1, 5,
2041  5, 5, 8, 2, 9, 10, 5, 11, 12, 13,
2042  12, 12, 12, 12, 12, 14, 12, 5, 5, 5,
2043  5, 5, 5, 5, 15, 16, 16, 17, 18, 19,
2044  5, 5, 20, 5, 5, 21, 22, 23, 24, 25,
2045  5, 26, 27, 28, 29, 30, 5, 31, 5, 5,
2046  32, 33, 34, 5, 5, 5, 16, 16, 16, 35,
2047 
2048  36, 37, 5, 5, 38, 5, 5, 39, 5, 40,
2049  41, 42, 5, 5, 43, 44, 45, 46, 5, 47,
2050  5, 5, 1, 5, 1, 5, 5, 5, 5, 5,
2051  5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
2052  5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
2053  5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
2054  5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
2055  5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
2056  5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
2057  5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
2058 
2059  5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
2060  5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
2061  5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
2062  5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
2063  5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
2064  5, 5, 5, 5, 5
2065 } ;
2066 
2067 static const int yy_meta[48] =
2068 { 0,
2069  1, 2, 3, 2, 4, 5, 6, 4, 4, 1,
2070  7, 7, 7, 7, 7, 7, 7, 7, 7, 4,
2071  4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
2072  4, 8, 1, 8, 7, 7, 7, 4, 4, 4,
2073  4, 4, 4, 4, 4, 4, 4
2074 } ;
2075 
2076 static const short int yy_base[1090] =
2077 { 0,
2078  0, 6, 13, 0, 59, 65, 92, 0, 104, 110,
2079  116, 122, 128, 134, 140, 146, 159, 165, 164, 177,
2080  183, 189, 195, 201, 207, 233, 259, 285, 311, 337,
2081  363, 389, 422, 455, 481, 507, 533, 559, 222, 228,
2082  256, 274, 324, 350, 787, 7663, 73, 79, 280, 0,
2083  247, 768, 753, 751, 745, 726, 725, 719, 715, 18,
2084  685, 702, 687, 682, 78, 96, 592, 170, 289, 368,
2085  300, 627, 51, 315, 380, 328, 342, 354, 673, 0,
2086  7663, 410, 677, 420, 376, 427, 436, 394, 708, 454,
2087  458, 743, 466, 470, 778, 676, 7663, 7663, 486, 491,
2088 
2089  496, 7663, 511, 517, 522, 7663, 544, 538, 813, 0,
2090  7663, 579, 665, 549, 563, 848, 604, 576, 883, 0,
2091  605, 7663, 617, 672, 7663, 631, 635, 639, 652, 302,
2092  658, 665, 666, 686, 692, 698, 725, 0, 652, 636,
2093  0, 636, 613, 607, 0, 617, 597, 590, 591, 605,
2094  7663, 596, 722, 0, 727, 918, 931, 751, 755, 792,
2095  759, 821, 0, 944, 957, 805, 786, 0, 825, 0,
2096  830, 970, 983, 856, 0, 869, 875, 0, 834, 900,
2097  987, 891, 895, 0, 996, 1022, 1035, 1003, 1007, 0,
2098  1040, 1053, 1066, 1073, 1077, 0, 1082, 1095, 1108, 1115,
2099 
2100  7663, 1119, 1124, 1132, 1140, 1144, 0, 1150, 0, 1159,
2101  1172, 1185, 1192, 0, 1205, 1211, 0, 1208, 0, 1213,
2102  1244, 1257, 1220, 1261, 1274, 1283, 1309, 1322, 1290, 0,
2103  1335, 1341, 1347, 1353, 1359, 7663, 1294, 0, 1234, 1365,
2104  1366, 1372, 0, 604, 580, 572, 569, 0, 552, 537,
2105  501, 511, 519, 1370, 1374, 1393, 1428, 1441, 0, 0,
2106  0, 1410, 1378, 1454, 1407, 1411, 1458, 1462, 1466, 1508,
2107  1521, 1534, 1547, 1560, 191, 1479, 0, 1477, 1483, 1606,
2108  1641, 1654, 0, 0, 0, 1575, 1487, 1667, 1491, 1572,
2109  1584, 1576, 1623, 1680, 0, 0, 0, 0, 230, 1588,
2110 
2111  1693, 1615, 1592, 1706, 1741, 0, 0, 0, 0, 1723,
2112  1720, 1758, 1725, 1762, 1775, 1810, 0, 0, 0, 0,
2113  1792, 1789, 1827, 1793, 1831, 0, 1836, 1840, 1853, 1888,
2114  0, 0, 0, 0, 1870, 1867, 1905, 1872, 1909, 1914,
2115  1949, 0, 0, 0, 0, 238, 1922, 1962, 1927, 1931,
2116  1975, 2010, 0, 0, 0, 0, 1992, 1935, 2027, 0,
2117  2040, 500, 0, 488, 493, 444, 443, 450, 456, 7663,
2118  1990, 2060, 2073, 2037, 2086, 2099, 2112, 2044, 0, 2116,
2119  1995, 2162, 2175, 2128, 2188, 2201, 2214, 2227, 2132, 2146,
2120  2240, 2253, 2288, 2301, 2261, 2314, 2327, 2340, 2353, 2366,
2121 
2122  2401, 2414, 2268, 2427, 2440, 2453, 2466, 2479, 2514, 2527,
2123  2374, 2540, 2553, 2566, 2579, 2383, 2487, 2592, 2605, 2640,
2124  2653, 2494, 2666, 2679, 2692, 2705, 2281, 437, 0, 0,
2125  50, 386, 0, 7663, 2379, 2498, 2622, 2718, 2731, 0,
2126  0, 0, 239, 2613, 2744, 2757, 2770, 2783, 2818, 2792,
2127  2617, 2831, 2866, 0, 0, 0, 0, 272, 2796, 2800,
2128  2845, 0, 2881, 205, 285, 2840, 2804, 2927, 2962, 2975,
2129  0, 0, 0, 2944, 2941, 2988, 3001, 3014, 3027, 3062,
2130  2946, 3035, 3075, 3110, 0, 0, 0, 0, 3092, 3039,
2131  3043, 3127, 3047, 3089, 3162, 3175, 400, 3094, 3135, 3144,
2132 
2133  3188, 3201, 0, 0, 0, 417, 3139, 3214, 3227, 3240,
2134  3253, 3288, 3262, 3266, 3301, 3336, 0, 0, 0, 0,
2135  437, 3270, 3274, 3315, 3310, 3341, 3346, 3381, 3394, 0,
2136  0, 0, 548, 3354, 3407, 3420, 3433, 3446, 3481, 3359,
2137  3363, 3494, 3529, 0, 0, 0, 0, 562, 3367, 3454,
2138  3463, 3503, 3458, 3542, 3577, 3590, 0, 0, 0, 3559,
2139  3507, 3603, 3616, 3629, 3642, 3677, 3512, 3556, 3690, 3725,
2140  0, 0, 0, 0, 3659, 3560, 3656, 3738, 3660, 3698,
2141  3773, 3786, 645, 3703, 3707, 3755, 3799, 3812, 0, 0,
2142  0, 661, 3711, 3825, 3838, 3851, 3864, 3899, 3747, 3872,
2143 
2144  3912, 3947, 0, 0, 0, 0, 680, 3876, 3880, 3926,
2145  3925, 390, 370, 351, 323, 3952, 3960, 3987, 4000, 4035,
2146  4048, 3967, 4083, 4096, 4131, 4144, 4008, 4157, 4170, 4183,
2147  4196, 4209, 4244, 4257, 4270, 4283, 4296, 4331, 4015, 4344,
2148  4357, 4370, 4065, 4056, 4383, 4396, 4431, 4444, 4104, 4479,
2149  4113, 4217, 4492, 4505, 4540, 4553, 4224, 4588, 4601, 4636,
2150  4649, 4304, 4662, 4675, 4688, 4701, 4714, 4749, 4762, 4775,
2151  4788, 4801, 4836, 4311, 4849, 4862, 4875, 4413, 4404, 4888,
2152  4901, 4936, 4949, 4452, 4984, 2858, 304, 0, 274, 296,
2153  3884, 3971, 4997, 5010, 688, 5023, 5036, 4522, 4019, 5049,
2154 
2155  5062, 5075, 689, 4061, 4108, 4461, 5088, 5101, 0, 0,
2156  0, 695, 4228, 5114, 5127, 5140, 5153, 4316, 4408, 5188,
2157  5223, 5236, 0, 0, 0, 712, 4456, 4519, 4570, 5249,
2158  5262, 5275, 5310, 4524, 4561, 5323, 5358, 0, 0, 0,
2159  0, 740, 4565, 4609, 4618, 4613, 5371, 5384, 5397, 5410,
2160  4722, 4726, 4731, 4809, 4813, 5445, 5458, 757, 5471, 5484,
2161  4918, 4817, 5497, 5510, 5523, 765, 4821, 4915, 5536, 5549,
2162  838, 5562, 5575, 4966, 4919, 5588, 5601, 5614, 862, 4964,
2163  4968, 5167, 5627, 5640, 0, 0, 0, 931, 5161, 5653,
2164  5666, 5679, 5692, 5197, 5201, 5727, 5762, 5775, 0, 0,
2165 
2166  0, 986, 5205, 5209, 5292, 5788, 5801, 5814, 5849, 5284,
2167  5331, 5862, 5897, 0, 0, 0, 0, 1022, 5335, 5339,
2168  5427, 5343, 5910, 5923, 5936, 5949, 5418, 5422, 5706, 5700,
2169  5735, 5984, 5997, 1023, 6010, 6023, 5831, 5739, 6036, 6049,
2170  6062, 1025, 5752, 268, 0, 250, 5879, 5828, 6075, 6088,
2171  6123, 6136, 5870, 6171, 6184, 6219, 6232, 5957, 6267, 6280,
2172  6315, 5966, 6096, 6103, 5833, 6144, 5875, 6151, 6192, 5962,
2173  6199, 6108, 6240, 6247, 6156, 6288, 6301, 236, 204, 6203,
2174  6251, 6328, 0, 1065, 3, 277, 6341, 6340, 6376, 6389,
2175  0, 1123, 376, 411, 6402, 6344, 6437, 6450, 0, 1129,
2176 
2177  435, 443, 6463, 6349, 6353, 6357, 6361, 6401, 6410, 6414,
2178  6464, 6418, 6499, 6422, 6472, 6478, 6504, 6508, 6513, 6521,
2179  6525, 6529, 6533, 6539, 6547, 6551, 6556, 3328, 213, 194,
2180  6569, 0, 188, 6575, 0, 6491, 3939, 5180, 5719, 6307,
2181  6579, 6586, 6592, 6593, 6599, 6600, 6606, 7663, 6619, 6627,
2182  6635, 6643, 6651, 6656, 6663, 6671, 6679, 6686, 6694, 6702,
2183  6710, 6718, 6726, 6733, 163, 6740, 6748, 6756, 6764, 157,
2184  6772, 6780, 6788, 6796, 6804, 104, 6812, 6820, 6825, 6832,
2185  6840, 6847, 93, 6854, 90, 6862, 6870, 66, 6878, 6886,
2186  6894, 6902, 6910, 6918, 6926, 6934, 6942, 6950, 6958, 6966,
2187 
2188  6974, 6982, 6990, 6998, 7006, 7011, 7018, 7026, 7034, 64,
2189  7042, 7050, 7058, 7066, 7074, 7082, 7090, 7098, 7106, 7114,
2190  7122, 7130, 7138, 7146, 7154, 7162, 7170, 7178, 7183, 7190,
2191  7198, 7206, 7214, 7222, 7230, 7238, 7246, 7254, 7262, 7270,
2192  7278, 7286, 7294, 7302, 7310, 7318, 7326, 7334, 7342, 7350,
2193  7358, 7366, 7374, 7382, 7387, 7394, 7402, 7410, 7418, 7426,
2194  7434, 7442, 7450, 7458, 7466, 7474, 7482, 7490, 7498, 7506,
2195  7514, 7522, 7530, 7538, 7546, 7554, 7562, 7570, 7578, 7586,
2196  7591, 7598, 7606, 7614, 7622, 7630, 7638, 7646, 7654
2197 } ;
2198 
2199 static const short int yy_def[1090] =
2200 { 0,
2201  949, 949, 948, 3, 949, 949, 949, 7, 7, 7,
2202  7, 7, 7, 7, 7, 7, 950, 950, 7, 7,
2203  7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
2204  7, 7, 951, 951, 7, 7, 7, 7, 952, 952,
2205  952, 952, 7, 7, 948, 948, 948, 948, 953, 954,
2206  953, 954, 954, 954, 954, 954, 954, 954, 954, 954,
2207  954, 948, 948, 948, 948, 948, 948, 948, 948, 948,
2208  948, 948, 72, 948, 948, 948, 948, 948, 948, 955,
2209  948, 956, 955, 948, 948, 948, 948, 948, 948, 948,
2210  948, 948, 948, 948, 948, 948, 948, 948, 948, 948,
2211 
2212  948, 948, 948, 948, 948, 948, 948, 948, 948, 957,
2213  948, 958, 957, 948, 948, 948, 948, 948, 948, 959,
2214  959, 948, 960, 959, 948, 948, 948, 948, 948, 948,
2215  953, 948, 961, 953, 953, 953, 953, 954, 954, 954,
2216  954, 954, 954, 954, 954, 954, 954, 954, 954, 948,
2217  948, 948, 948, 67, 67, 948, 962, 948, 948, 948,
2218  948, 948, 73, 948, 963, 964, 948, 965, 948, 79,
2219  79, 948, 966, 948, 955, 956, 956, 955, 948, 948,
2220  948, 948, 948, 89, 89, 948, 967, 948, 948, 92,
2221  92, 948, 968, 948, 948, 95, 95, 948, 969, 948,
2222 
2223  948, 948, 948, 948, 948, 948, 970, 948, 109, 109,
2224  948, 971, 948, 957, 958, 958, 957, 948, 116, 116,
2225  948, 972, 948, 948, 948, 225, 948, 973, 948, 974,
2226  974, 975, 975, 975, 975, 948, 948, 976, 977, 977,
2227  977, 978, 979, 979, 979, 979, 979, 979, 979, 979,
2228  979, 948, 948, 948, 948, 948, 980, 980, 258, 258,
2229  258, 258, 948, 948, 948, 948, 948, 948, 948, 981,
2230  981, 981, 981, 981, 274, 982, 983, 948, 948, 948,
2231  984, 984, 282, 282, 282, 282, 948, 948, 948, 948,
2232  948, 948, 948, 967, 294, 294, 294, 294, 294, 948,
2233 
2234  948, 948, 948, 948, 968, 305, 305, 305, 305, 305,
2235  948, 948, 948, 948, 948, 969, 316, 316, 316, 316,
2236  316, 948, 948, 948, 948, 985, 948, 948, 948, 971,
2237  330, 330, 330, 330, 330, 948, 948, 948, 948, 948,
2238  972, 341, 341, 341, 341, 341, 948, 948, 948, 948,
2239  948, 973, 352, 352, 352, 352, 352, 948, 948, 976,
2240  978, 979, 979, 979, 979, 979, 979, 979, 948, 948,
2241  256, 948, 986, 948, 258, 948, 987, 258, 988, 274,
2242  280, 948, 989, 948, 282, 948, 990, 385, 948, 948,
2243  991, 948, 948, 992, 948, 993, 948, 994, 993, 948,
2244 
2245  948, 995, 948, 996, 948, 997, 996, 948, 948, 998,
2246  948, 999, 948, 1000, 999, 948, 948, 1001, 948, 948,
2247  1002, 948, 1003, 948, 1004, 1003, 1005, 1006, 1006, 1006,
2248  1006, 1006, 1006, 948, 948, 948, 948, 1007, 1007, 439,
2249  439, 439, 439, 948, 948, 1008, 1008, 447, 1009, 948,
2250  948, 948, 1009, 453, 453, 453, 453, 453, 447, 447,
2251  448, 1010, 948, 463, 463, 948, 948, 948, 1011, 1011,
2252  470, 470, 470, 470, 948, 948, 1012, 1012, 478, 1013,
2253  948, 948, 948, 1013, 484, 484, 484, 484, 484, 478,
2254  478, 478, 948, 948, 1014, 1014, 496, 948, 948, 948,
2255 
2256  1015, 1015, 502, 502, 502, 502, 948, 948, 1016, 1016,
2257  510, 1017, 948, 948, 948, 1017, 516, 516, 516, 516,
2258  516, 510, 510, 511, 948, 948, 948, 1018, 1018, 529,
2259  529, 529, 529, 948, 948, 1019, 1019, 537, 1020, 948,
2260  948, 948, 1020, 543, 543, 543, 543, 543, 537, 537,
2261  538, 948, 948, 948, 1021, 1021, 556, 556, 556, 556,
2262  948, 948, 1022, 1022, 564, 1023, 948, 948, 948, 1023,
2263  570, 570, 570, 570, 570, 564, 564, 564, 948, 948,
2264  1024, 1024, 582, 948, 948, 948, 1025, 1025, 588, 588,
2265  588, 588, 948, 948, 1026, 1026, 596, 1027, 948, 948,
2266 
2267  948, 1027, 602, 602, 602, 602, 602, 596, 596, 597,
2268  1028, 1029, 1029, 1029, 1029, 948, 948, 1030, 1031, 1031,
2269  948, 948, 1032, 948, 948, 1033, 948, 1034, 948, 1035,
2270  1034, 1036, 1036, 948, 1037, 1036, 948, 1035, 948, 1038,
2271  1037, 1038, 948, 948, 1039, 1040, 1040, 948, 948, 1041,
2272  948, 948, 1042, 1043, 1043, 948, 948, 1044, 948, 948,
2273  1045, 948, 1046, 948, 1047, 1046, 1048, 1048, 948, 1049,
2274  1048, 948, 1047, 948, 1050, 1049, 1050, 948, 948, 1051,
2275  1052, 1052, 948, 948, 1053, 1054, 1055, 1055, 1055, 1055,
2276  948, 948, 1056, 1056, 694, 1057, 1057, 697, 948, 948,
2277 
2278  1058, 1058, 702, 948, 948, 948, 1059, 1059, 708, 708,
2279  708, 708, 948, 948, 1060, 1060, 716, 948, 948, 948,
2280  1061, 1061, 722, 722, 722, 722, 716, 716, 717, 1062,
2281  1062, 731, 1063, 948, 948, 948, 1063, 737, 737, 737,
2282  737, 737, 731, 731, 732, 948, 948, 1064, 1064, 749,
2283  749, 749, 750, 948, 948, 1065, 1065, 757, 1066, 1066,
2284  760, 948, 948, 1067, 1067, 765, 948, 948, 1068, 1068,
2285  770, 1069, 1069, 773, 948, 948, 1070, 1070, 778, 948,
2286  948, 948, 1071, 1071, 784, 784, 784, 784, 948, 948,
2287  1072, 1072, 792, 948, 948, 948, 1073, 1073, 798, 798,
2288 
2289  798, 798, 792, 792, 793, 1074, 1074, 807, 1075, 948,
2290  948, 948, 1075, 813, 813, 813, 813, 813, 807, 807,
2291  808, 948, 948, 1076, 1076, 825, 825, 825, 826, 948,
2292  948, 1077, 1077, 833, 1078, 1078, 836, 948, 948, 1079,
2293  1079, 841, 1080, 1081, 1081, 1081, 948, 948, 1082, 1083,
2294  1083, 948, 948, 1084, 1085, 1085, 948, 948, 1086, 1087,
2295  1087, 948, 948, 784, 793, 792, 796, 948, 798, 808,
2296  807, 812, 948, 813, 826, 825, 1080, 1081, 1081, 948,
2297  948, 1082, 882, 882, 851, 851, 851, 948, 948, 1084,
2298  890, 890, 856, 856, 856, 948, 948, 1086, 898, 898,
2299 
2300  861, 861, 861, 948, 948, 784, 784, 784, 792, 792,
2301  793, 948, 948, 798, 798, 798, 807, 807, 808, 948,
2302  823, 813, 813, 813, 825, 825, 826, 1080, 1081, 1081,
2303  1080, 1081, 1081, 1080, 1081, 1080, 1080, 1088, 1088, 1088,
2304  948, 1088, 948, 1089, 1089, 1089, 1089, 0, 948, 948,
2305  948, 948, 948, 948, 948, 948, 948, 948, 948, 948,
2306  948, 948, 948, 948, 948, 948, 948, 948, 948, 948,
2307  948, 948, 948, 948, 948, 948, 948, 948, 948, 948,
2308  948, 948, 948, 948, 948, 948, 948, 948, 948, 948,
2309  948, 948, 948, 948, 948, 948, 948, 948, 948, 948,
2310 
2311  948, 948, 948, 948, 948, 948, 948, 948, 948, 948,
2312  948, 948, 948, 948, 948, 948, 948, 948, 948, 948,
2313  948, 948, 948, 948, 948, 948, 948, 948, 948, 948,
2314  948, 948, 948, 948, 948, 948, 948, 948, 948, 948,
2315  948, 948, 948, 948, 948, 948, 948, 948, 948, 948,
2316  948, 948, 948, 948, 948, 948, 948, 948, 948, 948,
2317  948, 948, 948, 948, 948, 948, 948, 948, 948, 948,
2318  948, 948, 948, 948, 948, 948, 948, 948, 948, 948,
2319  948, 948, 948, 948, 948, 948, 948, 948, 948
2320 } ;
2321 
2322 static const short int yy_nxt[7711] =
2323 { 0,
2324  948, 47, 48, 47, 948, 948, 49, 47, 48, 47,
2325  469, 472, 49, 46, 47, 48, 47, 50, 46, 51,
2326  46, 46, 46, 46, 46, 46, 46, 50, 50, 52,
2327  53, 50, 54, 50, 50, 55, 50, 56, 57, 50,
2328  58, 59, 50, 50, 46, 46, 46, 50, 60, 61,
2329  50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
2330  47, 48, 47, 147, 148, 51, 47, 48, 47, 613,
2331  462, 51, 462, 614, 129, 130, 129, 62, 63, 131,
2332  132, 948, 132, 62, 63, 133, 64, 153, 154, 154,
2333  154, 154, 64, 47, 48, 47, 326, 948, 51, 277,
2334 
2335  65, 66, 67, 67, 67, 67, 155, 155, 155, 155,
2336  360, 63, 68, 69, 70, 70, 70, 70, 68, 69,
2337  70, 70, 70, 70, 71, 46, 72, 73, 73, 73,
2338  71, 46, 72, 73, 73, 73, 74, 46, 75, 76,
2339  76, 76, 74, 46, 75, 76, 76, 76, 77, 78,
2340  79, 79, 79, 79, 77, 78, 79, 79, 79, 79,
2341  47, 48, 47, 326, 81, 82, 47, 48, 47, 277,
2342  81, 82, 84, 85, 86, 86, 86, 86, 83, 159,
2343  160, 160, 160, 160, 83, 84, 85, 86, 86, 86,
2344  86, 87, 88, 89, 89, 89, 89, 87, 88, 89,
2345 
2346  89, 89, 89, 90, 91, 92, 92, 92, 92, 90,
2347  91, 92, 92, 92, 92, 93, 94, 95, 95, 95,
2348  95, 270, 935, 121, 48, 121, 96, 122, 123, 121,
2349  48, 121, 933, 122, 123, 270, 932, 270, 97, 930,
2350  98, 93, 94, 95, 95, 95, 95, 391, 135, 130,
2351  135, 270, 96, 136, 124, 418, 618, 121, 48, 121,
2352  124, 125, 123, 929, 97, 391, 98, 99, 100, 101,
2353  101, 101, 101, 418, 618, 121, 48, 121, 96, 125,
2354  123, 135, 130, 135, 469, 472, 136, 879, 124, 623,
2355  102, 878, 98, 99, 100, 101, 101, 101, 101, 161,
2356 
2357  161, 161, 161, 132, 96, 132, 124, 623, 133, 137,
2358  163, 163, 163, 163, 846, 270, 102, 845, 98, 103,
2359  46, 104, 105, 105, 105, 167, 167, 167, 167, 844,
2360  96, 270, 126, 46, 127, 128, 128, 128, 167, 167,
2361  167, 167, 106, 46, 98, 103, 46, 104, 105, 105,
2362  105, 169, 170, 170, 170, 170, 96, 690, 126, 46,
2363  127, 128, 128, 128, 171, 171, 171, 171, 106, 46,
2364  98, 107, 108, 109, 109, 109, 109, 159, 160, 160,
2365  160, 160, 96, 281, 284, 162, 181, 181, 181, 181,
2366  167, 167, 167, 167, 102, 689, 98, 107, 108, 109,
2367 
2368  109, 109, 109, 162, 185, 185, 185, 185, 96, 688,
2369  168, 135, 130, 135, 687, 134, 177, 391, 281, 284,
2370  102, 615, 98, 47, 48, 47, 168, 111, 112, 179,
2371  180, 180, 180, 180, 645, 391, 179, 180, 180, 180,
2372  180, 113, 484, 487, 182, 183, 184, 184, 184, 184,
2373  484, 487, 645, 102, 650, 98, 47, 48, 47, 612,
2374  111, 112, 182, 189, 190, 190, 190, 190, 191, 191,
2375  191, 191, 650, 434, 113, 195, 196, 196, 196, 196,
2376  197, 197, 197, 197, 433, 432, 102, 431, 98, 114,
2377  115, 116, 116, 116, 116, 202, 203, 203, 203, 203,
2378 
2379  96, 204, 204, 204, 204, 202, 203, 203, 203, 203,
2380  430, 429, 102, 205, 98, 114, 115, 116, 116, 116,
2381  116, 206, 206, 206, 206, 428, 96, 206, 206, 206,
2382  206, 205, 206, 206, 206, 206, 370, 369, 102, 368,
2383  98, 117, 118, 119, 119, 119, 119, 207, 210, 210,
2384  210, 210, 96, 208, 209, 209, 209, 209, 218, 219,
2385  219, 219, 219, 207, 97, 653, 98, 117, 118, 119,
2386  119, 119, 119, 220, 220, 220, 220, 367, 96, 658,
2387  135, 130, 135, 653, 134, 216, 226, 226, 226, 226,
2388  97, 366, 98, 156, 156, 156, 365, 658, 157, 364,
2389 
2390  363, 153, 154, 154, 154, 154, 231, 130, 231, 158,
2391  134, 232, 134, 224, 225, 225, 225, 225, 234, 130,
2392  234, 362, 134, 235, 253, 252, 251, 158, 164, 164,
2393  164, 250, 249, 165, 248, 247, 246, 163, 163, 163,
2394  163, 237, 237, 237, 237, 237, 237, 237, 237, 237,
2395  237, 237, 237, 129, 130, 129, 245, 166, 131, 135,
2396  130, 135, 418, 244, 136, 238, 132, 240, 132, 240,
2397  243, 133, 241, 166, 172, 172, 172, 236, 680, 173,
2398  418, 238, 169, 170, 170, 170, 170, 135, 130, 135,
2399  174, 217, 136, 135, 130, 135, 680, 685, 136, 135,
2400 
2401  130, 135, 201, 178, 136, 618, 623, 152, 174, 186,
2402  186, 186, 849, 151, 187, 685, 150, 183, 184, 184,
2403  184, 184, 149, 618, 623, 188, 135, 130, 135, 854,
2404  849, 136, 155, 155, 155, 155, 948, 155, 155, 155,
2405  155, 146, 145, 188, 192, 192, 192, 854, 144, 193,
2406  242, 143, 189, 190, 190, 190, 190, 859, 263, 263,
2407  194, 264, 264, 264, 264, 161, 161, 161, 161, 161,
2408  161, 161, 161, 142, 645, 859, 162, 141, 194, 198,
2409  198, 198, 650, 140, 199, 139, 948, 195, 196, 196,
2410  196, 196, 645, 948, 162, 200, 167, 167, 167, 167,
2411 
2412  650, 159, 160, 160, 160, 160, 164, 164, 164, 162,
2413  948, 165, 948, 200, 211, 211, 211, 948, 948, 212,
2414  948, 948, 208, 209, 209, 209, 209, 162, 265, 265,
2415  213, 266, 266, 266, 266, 171, 171, 171, 171, 948,
2416  171, 171, 171, 171, 181, 181, 181, 181, 213, 221,
2417  221, 221, 948, 948, 222, 653, 948, 218, 219, 219,
2418  219, 219, 948, 287, 287, 223, 288, 288, 288, 288,
2419  135, 130, 135, 653, 134, 177, 135, 130, 135, 658,
2420  134, 177, 948, 223, 227, 227, 227, 948, 948, 228,
2421  948, 948, 224, 225, 225, 225, 225, 658, 289, 289,
2422 
2423  229, 290, 290, 290, 290, 185, 185, 185, 185, 179,
2424  180, 180, 180, 180, 948, 948, 948, 182, 229, 156,
2425  156, 156, 948, 948, 157, 948, 254, 255, 256, 256,
2426  256, 256, 258, 156, 258, 182, 948, 259, 948, 260,
2427  261, 262, 262, 262, 262, 164, 164, 164, 864, 948,
2428  165, 948, 267, 948, 268, 269, 269, 269, 271, 164,
2429  271, 948, 948, 272, 948, 273, 864, 274, 275, 275,
2430  275, 172, 172, 172, 948, 948, 173, 948, 278, 279,
2431  280, 280, 280, 280, 282, 172, 282, 948, 948, 283,
2432  948, 284, 285, 286, 286, 286, 286, 181, 181, 181,
2433 
2434  181, 948, 948, 869, 182, 948, 185, 185, 185, 185,
2435  300, 300, 948, 301, 301, 301, 301, 191, 191, 191,
2436  191, 869, 182, 186, 186, 186, 948, 948, 187, 948,
2437  291, 292, 293, 293, 293, 293, 295, 186, 295, 874,
2438  680, 296, 685, 297, 298, 299, 299, 299, 299, 948,
2439  191, 191, 191, 191, 192, 192, 192, 874, 680, 193,
2440  685, 302, 303, 304, 304, 304, 304, 306, 192, 306,
2441  948, 948, 307, 948, 308, 309, 310, 310, 310, 310,
2442  311, 311, 849, 312, 312, 312, 312, 197, 197, 197,
2443  197, 948, 197, 197, 197, 197, 198, 198, 198, 948,
2444 
2445  849, 199, 948, 313, 314, 315, 315, 315, 315, 317,
2446  198, 317, 948, 948, 318, 948, 319, 320, 321, 321,
2447  321, 321, 322, 322, 948, 323, 323, 323, 323, 204,
2448  204, 204, 204, 202, 203, 203, 203, 203, 948, 948,
2449  854, 205, 204, 204, 204, 204, 859, 324, 324, 205,
2450  325, 325, 325, 325, 206, 206, 206, 206, 854, 205,
2451  210, 210, 210, 210, 859, 948, 948, 205, 948, 210,
2452  210, 210, 210, 211, 211, 211, 948, 948, 212, 948,
2453  327, 328, 329, 329, 329, 329, 331, 211, 331, 948,
2454  948, 332, 948, 333, 334, 335, 335, 335, 335, 336,
2455 
2456  336, 948, 337, 337, 337, 337, 135, 130, 135, 948,
2457  134, 216, 135, 130, 135, 948, 134, 216, 220, 220,
2458  220, 220, 948, 220, 220, 220, 220, 347, 347, 948,
2459  348, 348, 348, 348, 948, 240, 134, 240, 134, 948,
2460  241, 948, 134, 948, 134, 221, 221, 221, 948, 948,
2461  222, 948, 338, 339, 340, 340, 340, 340, 342, 221,
2462  342, 948, 948, 343, 948, 344, 345, 346, 346, 346,
2463  346, 226, 226, 226, 226, 227, 227, 227, 948, 948,
2464  228, 948, 948, 224, 225, 225, 225, 225, 948, 948,
2465  948, 229, 948, 226, 226, 226, 226, 358, 358, 948,
2466 
2467  359, 359, 359, 359, 237, 237, 237, 237, 948, 229,
2468  227, 227, 227, 948, 948, 228, 948, 349, 350, 351,
2469  351, 351, 351, 353, 227, 353, 948, 948, 354, 948,
2470  355, 356, 357, 357, 357, 357, 231, 130, 231, 948,
2471  948, 232, 234, 130, 234, 948, 134, 235, 234, 130,
2472  234, 948, 134, 235, 234, 130, 234, 948, 134, 235,
2473  234, 130, 234, 948, 134, 235, 240, 240, 240, 240,
2474  948, 241, 241, 135, 130, 135, 948, 948, 136, 255,
2475  256, 256, 256, 256, 371, 371, 371, 371, 264, 264,
2476  264, 264, 948, 361, 372, 372, 372, 948, 948, 373,
2477 
2478  948, 948, 255, 256, 256, 256, 256, 948, 948, 948,
2479  374, 375, 376, 375, 948, 948, 377, 266, 266, 266,
2480  266, 266, 266, 266, 266, 948, 948, 378, 374, 258,
2481  156, 258, 948, 948, 259, 948, 260, 261, 262, 262,
2482  262, 262, 258, 156, 258, 378, 948, 259, 948, 260,
2483  261, 262, 262, 262, 262, 156, 156, 156, 948, 948,
2484  157, 948, 948, 948, 264, 264, 264, 264, 269, 269,
2485  269, 269, 269, 269, 269, 269, 269, 269, 269, 269,
2486  164, 164, 164, 948, 948, 165, 279, 280, 280, 280,
2487  280, 948, 379, 381, 381, 381, 381, 288, 288, 288,
2488 
2489  288, 290, 290, 290, 290, 948, 948, 948, 379, 271,
2490  164, 271, 948, 948, 272, 948, 273, 948, 274, 275,
2491  275, 275, 271, 164, 271, 948, 948, 272, 948, 273,
2492  948, 274, 275, 275, 275, 271, 164, 271, 948, 948,
2493  272, 948, 273, 948, 274, 275, 275, 275, 271, 164,
2494  271, 948, 948, 272, 948, 273, 948, 274, 275, 275,
2495  275, 271, 164, 271, 948, 948, 272, 948, 273, 948,
2496  274, 275, 275, 275, 948, 948, 385, 386, 385, 948,
2497  948, 387, 290, 290, 290, 290, 389, 389, 389, 389,
2498  380, 948, 388, 292, 293, 293, 293, 293, 301, 301,
2499 
2500  301, 301, 392, 392, 392, 392, 380, 382, 382, 382,
2501  388, 948, 383, 948, 948, 279, 280, 280, 280, 280,
2502  948, 948, 948, 384, 303, 304, 304, 304, 304, 948,
2503  948, 948, 292, 293, 293, 293, 293, 948, 948, 948,
2504  390, 384, 282, 172, 282, 948, 948, 283, 948, 284,
2505  285, 286, 286, 286, 286, 282, 172, 282, 390, 948,
2506  283, 948, 284, 285, 286, 286, 286, 286, 172, 172,
2507  172, 948, 948, 173, 948, 948, 948, 288, 288, 288,
2508  288, 295, 186, 295, 948, 948, 296, 948, 297, 298,
2509  299, 299, 299, 299, 186, 186, 186, 948, 948, 187,
2510 
2511  948, 948, 948, 301, 301, 301, 301, 393, 393, 393,
2512  948, 948, 394, 948, 948, 303, 304, 304, 304, 304,
2513  948, 948, 948, 395, 396, 397, 396, 948, 948, 398,
2514  312, 312, 312, 312, 314, 315, 315, 315, 315, 948,
2515  399, 395, 306, 192, 306, 948, 948, 307, 948, 308,
2516  309, 310, 310, 310, 310, 948, 948, 948, 399, 192,
2517  192, 192, 948, 948, 193, 948, 948, 948, 312, 312,
2518  312, 312, 400, 400, 400, 400, 401, 401, 401, 948,
2519  948, 402, 948, 948, 314, 315, 315, 315, 315, 948,
2520  948, 948, 403, 404, 405, 404, 948, 948, 406, 323,
2521 
2522  323, 323, 323, 325, 325, 325, 325, 948, 948, 407,
2523  403, 317, 198, 317, 948, 948, 318, 948, 319, 320,
2524  321, 321, 321, 321, 948, 948, 948, 407, 198, 198,
2525  198, 948, 948, 199, 948, 948, 948, 323, 323, 323,
2526  323, 325, 325, 325, 325, 328, 329, 329, 329, 329,
2527  408, 408, 408, 408, 409, 409, 409, 948, 948, 410,
2528  948, 948, 328, 329, 329, 329, 329, 948, 948, 948,
2529  411, 412, 413, 412, 948, 948, 414, 337, 337, 337,
2530  337, 339, 340, 340, 340, 340, 948, 415, 411, 331,
2531  211, 331, 948, 948, 332, 948, 333, 334, 335, 335,
2532 
2533  335, 335, 948, 948, 948, 415, 211, 211, 211, 948,
2534  948, 212, 948, 948, 948, 337, 337, 337, 337, 416,
2535  416, 416, 416, 339, 340, 340, 340, 340, 948, 948,
2536  948, 417, 348, 348, 348, 348, 350, 351, 351, 351,
2537  351, 419, 419, 419, 419, 359, 359, 359, 359, 417,
2538  342, 221, 342, 948, 948, 343, 948, 344, 345, 346,
2539  346, 346, 346, 221, 221, 221, 948, 948, 222, 948,
2540  948, 948, 348, 348, 348, 348, 420, 420, 420, 948,
2541  948, 421, 948, 948, 350, 351, 351, 351, 351, 948,
2542  948, 948, 422, 423, 424, 423, 948, 948, 425, 948,
2543 
2544  371, 371, 371, 371, 948, 381, 381, 381, 381, 426,
2545  422, 353, 227, 353, 948, 948, 354, 948, 355, 356,
2546  357, 357, 357, 357, 948, 948, 948, 426, 227, 227,
2547  227, 948, 948, 228, 948, 948, 948, 359, 359, 359,
2548  359, 135, 130, 135, 444, 444, 136, 445, 445, 445,
2549  445, 459, 460, 948, 461, 461, 461, 461, 948, 948,
2550  427, 372, 372, 372, 948, 948, 373, 948, 435, 436,
2551  437, 437, 437, 437, 439, 372, 439, 948, 948, 440,
2552  948, 441, 442, 443, 443, 443, 443, 375, 376, 375,
2553  948, 948, 377, 948, 446, 447, 448, 448, 448, 448,
2554 
2555  376, 376, 376, 948, 948, 449, 948, 450, 451, 452,
2556  452, 452, 452, 454, 376, 454, 948, 948, 455, 948,
2557  456, 457, 458, 458, 458, 458, 463, 464, 464, 464,
2558  465, 465, 465, 465, 465, 475, 475, 948, 476, 476,
2559  476, 476, 389, 389, 389, 389, 270, 948, 948, 390,
2560  465, 465, 465, 493, 493, 948, 494, 494, 494, 494,
2561  948, 948, 270, 382, 382, 382, 948, 390, 383, 948,
2562  466, 467, 468, 468, 468, 468, 470, 382, 470, 948,
2563  948, 471, 948, 472, 473, 474, 474, 474, 474, 385,
2564  386, 385, 948, 948, 387, 948, 477, 478, 479, 479,
2565 
2566  479, 479, 386, 386, 386, 948, 948, 480, 948, 481,
2567  482, 483, 483, 483, 483, 485, 386, 485, 948, 948,
2568  486, 948, 487, 488, 489, 489, 489, 489, 282, 172,
2569  282, 948, 948, 283, 490, 491, 285, 492, 492, 492,
2570  492, 295, 186, 295, 948, 948, 296, 495, 496, 298,
2571  497, 497, 497, 497, 393, 393, 393, 948, 948, 394,
2572  948, 948, 948, 392, 392, 392, 392, 948, 507, 507,
2573  395, 508, 508, 508, 508, 534, 534, 948, 535, 535,
2574  535, 535, 135, 130, 611, 948, 948, 136, 395, 393,
2575  393, 393, 948, 948, 394, 948, 498, 499, 500, 500,
2576 
2577  500, 500, 502, 393, 502, 948, 948, 503, 948, 504,
2578  505, 506, 506, 506, 506, 396, 397, 396, 948, 948,
2579  398, 948, 509, 510, 511, 511, 511, 511, 397, 397,
2580  397, 948, 948, 512, 948, 513, 514, 515, 515, 515,
2581  515, 517, 397, 517, 948, 948, 518, 948, 519, 520,
2582  521, 521, 521, 521, 306, 192, 306, 948, 948, 307,
2583  522, 523, 309, 524, 524, 524, 524, 401, 401, 401,
2584  948, 948, 402, 948, 948, 948, 400, 400, 400, 400,
2585  948, 561, 561, 403, 562, 562, 562, 562, 436, 437,
2586  437, 437, 437, 416, 416, 416, 416, 948, 948, 948,
2587 
2588  417, 403, 401, 401, 401, 948, 948, 402, 948, 525,
2589  526, 527, 527, 527, 527, 529, 401, 529, 417, 948,
2590  530, 948, 531, 532, 533, 533, 533, 533, 404, 405,
2591  404, 948, 948, 406, 948, 536, 537, 538, 538, 538,
2592  538, 405, 405, 405, 948, 948, 539, 948, 540, 541,
2593  542, 542, 542, 542, 544, 405, 544, 948, 948, 545,
2594  948, 546, 547, 548, 548, 548, 548, 317, 198, 317,
2595  948, 948, 318, 549, 550, 320, 551, 551, 551, 551,
2596  409, 409, 409, 948, 948, 410, 948, 948, 948, 408,
2597  408, 408, 408, 948, 579, 579, 411, 580, 580, 580,
2598 
2599  580, 593, 593, 948, 594, 594, 594, 594, 616, 616,
2600  616, 616, 948, 948, 411, 409, 409, 409, 948, 948,
2601  410, 948, 552, 553, 554, 554, 554, 554, 556, 409,
2602  556, 948, 948, 557, 948, 558, 559, 560, 560, 560,
2603  560, 412, 413, 412, 948, 948, 414, 948, 563, 564,
2604  565, 565, 565, 565, 413, 413, 413, 948, 948, 566,
2605  948, 567, 568, 569, 569, 569, 569, 571, 413, 571,
2606  948, 948, 572, 948, 573, 574, 575, 575, 575, 575,
2607  331, 211, 331, 948, 948, 332, 576, 577, 334, 578,
2608  578, 578, 578, 342, 221, 342, 948, 948, 343, 581,
2609 
2610  582, 345, 583, 583, 583, 583, 420, 420, 420, 948,
2611  948, 421, 948, 948, 948, 419, 419, 419, 419, 948,
2612  948, 948, 422, 445, 445, 445, 445, 621, 621, 621,
2613  621, 436, 437, 437, 437, 437, 948, 948, 948, 617,
2614  422, 420, 420, 420, 948, 948, 421, 948, 584, 585,
2615  586, 586, 586, 586, 588, 420, 588, 617, 948, 589,
2616  948, 590, 591, 592, 592, 592, 592, 423, 424, 423,
2617  948, 948, 425, 948, 595, 596, 597, 597, 597, 597,
2618  424, 424, 424, 948, 948, 598, 948, 599, 600, 601,
2619  601, 601, 601, 603, 424, 603, 948, 948, 604, 948,
2620 
2621  605, 606, 607, 607, 607, 607, 353, 227, 353, 948,
2622  948, 354, 608, 609, 356, 610, 610, 610, 610, 439,
2623  372, 439, 948, 948, 440, 948, 441, 442, 443, 443,
2624  443, 443, 439, 372, 439, 948, 948, 440, 948, 441,
2625  442, 443, 443, 443, 443, 372, 372, 372, 948, 948,
2626  373, 948, 948, 948, 445, 445, 445, 445, 258, 156,
2627  258, 948, 948, 259, 948, 260, 447, 448, 448, 448,
2628  448, 258, 156, 258, 948, 948, 259, 948, 260, 261,
2629  619, 619, 619, 619, 375, 376, 375, 948, 948, 377,
2630  948, 948, 447, 448, 448, 448, 448, 948, 948, 948,
2631 
2632  620, 451, 452, 452, 452, 452, 461, 461, 461, 461,
2633  461, 461, 461, 461, 624, 624, 624, 624, 620, 454,
2634  376, 454, 948, 948, 455, 948, 456, 457, 458, 458,
2635  458, 458, 372, 372, 372, 948, 948, 373, 948, 948,
2636  451, 452, 452, 452, 452, 948, 948, 948, 622, 467,
2637  468, 468, 468, 468, 261, 461, 461, 461, 461, 135,
2638  130, 135, 378, 948, 136, 948, 622, 454, 376, 454,
2639  843, 948, 455, 948, 456, 457, 458, 458, 458, 458,
2640  378, 270, 271, 164, 271, 270, 270, 272, 270, 273,
2641  270, 463, 464, 464, 464, 465, 465, 465, 465, 465,
2642 
2643  270, 270, 270, 270, 270, 270, 270, 270, 270, 270,
2644  270, 380, 270, 270, 270, 465, 465, 465, 270, 270,
2645  270, 270, 270, 270, 270, 270, 270, 380, 625, 625,
2646  625, 948, 948, 626, 948, 948, 467, 468, 468, 468,
2647  468, 948, 948, 948, 627, 628, 629, 628, 948, 948,
2648  630, 476, 476, 476, 476, 482, 483, 483, 483, 483,
2649  948, 631, 627, 470, 382, 470, 948, 948, 471, 948,
2650  472, 473, 474, 474, 474, 474, 470, 382, 470, 631,
2651  948, 471, 948, 472, 473, 474, 474, 474, 474, 382,
2652  382, 382, 948, 948, 383, 948, 948, 948, 476, 476,
2653 
2654  476, 476, 282, 172, 282, 948, 948, 283, 948, 284,
2655  478, 479, 479, 479, 479, 282, 172, 282, 948, 948,
2656  283, 948, 284, 285, 632, 632, 632, 632, 633, 634,
2657  633, 948, 948, 635, 948, 948, 478, 479, 479, 479,
2658  479, 948, 948, 948, 636, 637, 637, 637, 637, 492,
2659  492, 492, 492, 492, 492, 492, 492, 494, 494, 494,
2660  494, 948, 636, 485, 386, 485, 948, 948, 486, 948,
2661  487, 488, 489, 489, 489, 489, 629, 629, 629, 948,
2662  948, 638, 948, 948, 482, 483, 483, 483, 483, 948,
2663  948, 948, 639, 640, 634, 640, 948, 948, 641, 494,
2664 
2665  494, 494, 494, 499, 500, 500, 500, 500, 948, 642,
2666  639, 485, 386, 485, 948, 948, 486, 948, 487, 488,
2667  489, 489, 489, 489, 948, 948, 948, 642, 385, 386,
2668  385, 948, 948, 387, 948, 948, 948, 492, 492, 492,
2669  492, 948, 948, 948, 388, 643, 643, 643, 643, 508,
2670  508, 508, 508, 499, 500, 500, 500, 500, 948, 948,
2671  948, 644, 388, 295, 186, 295, 948, 948, 296, 948,
2672  297, 298, 497, 497, 497, 497, 295, 186, 295, 644,
2673  948, 296, 948, 297, 298, 497, 497, 497, 497, 502,
2674  393, 502, 948, 948, 503, 948, 504, 505, 506, 506,
2675 
2676  506, 506, 502, 393, 502, 948, 948, 503, 948, 504,
2677  505, 506, 506, 506, 506, 393, 393, 393, 948, 948,
2678  394, 948, 948, 948, 508, 508, 508, 508, 306, 192,
2679  306, 948, 948, 307, 948, 308, 510, 511, 511, 511,
2680  511, 306, 192, 306, 948, 948, 307, 948, 308, 309,
2681  646, 646, 646, 646, 396, 397, 396, 948, 948, 398,
2682  948, 948, 510, 511, 511, 511, 511, 948, 948, 948,
2683  647, 514, 515, 515, 515, 515, 648, 648, 648, 648,
2684  524, 524, 524, 524, 524, 524, 524, 524, 647, 517,
2685  397, 517, 948, 948, 518, 948, 519, 520, 521, 521,
2686 
2687  521, 521, 393, 393, 393, 948, 948, 394, 948, 948,
2688  514, 515, 515, 515, 515, 948, 948, 948, 649, 526,
2689  527, 527, 527, 527, 309, 524, 524, 524, 524, 135,
2690  130, 931, 399, 948, 136, 948, 649, 517, 397, 517,
2691  948, 948, 518, 948, 519, 520, 521, 521, 521, 521,
2692  399, 651, 651, 651, 651, 526, 527, 527, 527, 527,
2693  948, 948, 948, 652, 535, 535, 535, 535, 541, 542,
2694  542, 542, 542, 656, 656, 656, 656, 551, 551, 551,
2695  551, 652, 529, 401, 529, 948, 948, 530, 948, 531,
2696  532, 533, 533, 533, 533, 529, 401, 529, 948, 948,
2697 
2698  530, 948, 531, 532, 533, 533, 533, 533, 401, 401,
2699  401, 948, 948, 402, 948, 948, 948, 535, 535, 535,
2700  535, 317, 198, 317, 948, 948, 318, 948, 319, 537,
2701  538, 538, 538, 538, 317, 198, 317, 948, 948, 318,
2702  948, 319, 320, 654, 654, 654, 654, 404, 405, 404,
2703  948, 948, 406, 948, 948, 537, 538, 538, 538, 538,
2704  948, 948, 948, 655, 551, 551, 551, 551, 659, 659,
2705  659, 659, 320, 551, 551, 551, 551, 948, 948, 948,
2706  407, 655, 544, 405, 544, 948, 948, 545, 948, 546,
2707  547, 548, 548, 548, 548, 401, 401, 401, 407, 948,
2708 
2709  402, 948, 948, 541, 542, 542, 542, 542, 948, 948,
2710  948, 657, 553, 554, 554, 554, 554, 562, 562, 562,
2711  562, 568, 569, 569, 569, 569, 948, 948, 948, 657,
2712  544, 405, 544, 948, 948, 545, 948, 546, 547, 548,
2713  548, 548, 548, 660, 660, 660, 948, 948, 661, 948,
2714  948, 553, 554, 554, 554, 554, 948, 948, 948, 662,
2715  663, 664, 663, 948, 948, 665, 672, 672, 672, 672,
2716  578, 578, 578, 578, 948, 948, 666, 662, 556, 409,
2717  556, 948, 948, 557, 948, 558, 559, 560, 560, 560,
2718  560, 556, 409, 556, 666, 948, 557, 948, 558, 559,
2719 
2720  560, 560, 560, 560, 409, 409, 409, 948, 948, 410,
2721  948, 948, 948, 562, 562, 562, 562, 331, 211, 331,
2722  948, 948, 332, 948, 333, 564, 565, 565, 565, 565,
2723  331, 211, 331, 948, 948, 332, 948, 333, 334, 667,
2724  667, 667, 667, 668, 669, 668, 948, 948, 670, 948,
2725  948, 564, 565, 565, 565, 565, 948, 948, 948, 671,
2726  675, 669, 675, 948, 948, 676, 578, 578, 578, 578,
2727  580, 580, 580, 580, 948, 948, 677, 671, 571, 413,
2728  571, 948, 948, 572, 948, 573, 574, 575, 575, 575,
2729  575, 664, 664, 664, 677, 948, 673, 948, 948, 568,
2730 
2731  569, 569, 569, 569, 948, 948, 948, 674, 580, 580,
2732  580, 580, 585, 586, 586, 586, 586, 678, 678, 678,
2733  678, 594, 594, 594, 594, 674, 571, 413, 571, 948,
2734  948, 572, 948, 573, 574, 575, 575, 575, 575, 412,
2735  413, 412, 948, 948, 414, 948, 948, 948, 578, 578,
2736  578, 578, 948, 948, 948, 415, 600, 601, 601, 601,
2737  601, 948, 948, 948, 585, 586, 586, 586, 586, 948,
2738  948, 948, 679, 415, 342, 221, 342, 948, 948, 343,
2739  948, 344, 345, 583, 583, 583, 583, 342, 221, 342,
2740  679, 948, 343, 948, 344, 345, 583, 583, 583, 583,
2741 
2742  588, 420, 588, 948, 948, 589, 948, 590, 591, 592,
2743  592, 592, 592, 588, 420, 588, 948, 948, 589, 948,
2744  590, 591, 592, 592, 592, 592, 420, 420, 420, 948,
2745  948, 421, 948, 948, 948, 594, 594, 594, 594, 353,
2746  227, 353, 948, 948, 354, 948, 355, 596, 597, 597,
2747  597, 597, 353, 227, 353, 948, 948, 354, 948, 355,
2748  356, 681, 681, 681, 681, 423, 424, 423, 948, 948,
2749  425, 948, 948, 596, 597, 597, 597, 597, 948, 948,
2750  948, 682, 683, 683, 683, 683, 610, 610, 610, 610,
2751  610, 610, 610, 610, 692, 692, 692, 692, 948, 682,
2752 
2753  603, 424, 603, 948, 948, 604, 948, 605, 606, 607,
2754  607, 607, 607, 420, 420, 420, 948, 948, 421, 948,
2755  948, 600, 601, 601, 601, 601, 135, 130, 135, 684,
2756  948, 136, 948, 948, 948, 356, 610, 610, 610, 610,
2757  135, 130, 135, 426, 948, 136, 948, 684, 603, 424,
2758  603, 948, 938, 604, 686, 605, 606, 607, 607, 607,
2759  607, 426, 616, 616, 616, 616, 948, 691, 691, 617,
2760  692, 692, 692, 692, 699, 699, 948, 700, 700, 700,
2761  700, 692, 692, 692, 692, 948, 948, 617, 439, 372,
2762  439, 948, 948, 440, 693, 694, 442, 695, 695, 695,
2763 
2764  695, 375, 376, 375, 948, 948, 377, 948, 260, 261,
2765  619, 619, 619, 619, 948, 713, 713, 620, 714, 714,
2766  714, 714, 746, 746, 948, 747, 747, 747, 747, 700,
2767  700, 700, 700, 948, 948, 620, 258, 156, 258, 948,
2768  948, 259, 696, 697, 261, 698, 698, 698, 698, 372,
2769  372, 372, 948, 948, 373, 948, 948, 948, 621, 621,
2770  621, 621, 948, 754, 754, 622, 755, 755, 755, 755,
2771  705, 706, 706, 706, 706, 643, 643, 643, 643, 948,
2772  948, 948, 644, 622, 454, 376, 454, 948, 948, 455,
2773  701, 702, 457, 703, 703, 703, 703, 625, 625, 625,
2774 
2775  644, 948, 626, 948, 948, 948, 624, 624, 624, 624,
2776  948, 762, 762, 627, 763, 763, 763, 763, 847, 847,
2777  847, 847, 948, 651, 651, 651, 651, 948, 948, 948,
2778  652, 627, 625, 625, 625, 948, 948, 626, 948, 704,
2779  705, 706, 706, 706, 706, 708, 625, 708, 652, 948,
2780  709, 948, 710, 711, 712, 712, 712, 712, 628, 629,
2781  628, 948, 948, 630, 948, 715, 716, 717, 717, 717,
2782  717, 629, 629, 629, 948, 948, 638, 948, 718, 719,
2783  720, 720, 720, 720, 722, 629, 722, 948, 948, 723,
2784  948, 724, 725, 726, 726, 726, 726, 470, 382, 470,
2785 
2786  948, 948, 471, 727, 728, 473, 729, 729, 729, 729,
2787  633, 634, 633, 948, 948, 635, 948, 284, 285, 632,
2788  632, 632, 632, 948, 767, 767, 636, 768, 768, 768,
2789  768, 775, 775, 948, 776, 776, 776, 776, 714, 714,
2790  714, 714, 948, 948, 636, 633, 634, 633, 948, 948,
2791  635, 948, 730, 731, 732, 732, 732, 732, 634, 634,
2792  634, 948, 948, 733, 948, 734, 735, 736, 736, 736,
2793  736, 738, 634, 738, 948, 948, 739, 948, 740, 741,
2794  742, 742, 742, 742, 282, 172, 282, 948, 948, 283,
2795  743, 744, 285, 745, 745, 745, 745, 629, 629, 629,
2796 
2797  948, 948, 638, 948, 948, 948, 637, 637, 637, 637,
2798  948, 789, 789, 639, 790, 790, 790, 790, 822, 822,
2799  948, 823, 823, 823, 823, 719, 720, 720, 720, 720,
2800  948, 639, 722, 629, 722, 948, 948, 723, 948, 724,
2801  725, 726, 726, 726, 726, 640, 634, 640, 948, 948,
2802  641, 948, 748, 749, 750, 750, 750, 750, 738, 634,
2803  738, 948, 948, 739, 948, 740, 741, 742, 742, 742,
2804  742, 485, 386, 485, 948, 948, 486, 751, 752, 488,
2805  753, 753, 753, 753, 502, 393, 502, 948, 948, 503,
2806  756, 757, 505, 758, 758, 758, 758, 396, 397, 396,
2807 
2808  948, 948, 398, 948, 308, 309, 646, 646, 646, 646,
2809  948, 830, 830, 647, 831, 831, 831, 831, 852, 852,
2810  852, 852, 948, 678, 678, 678, 678, 948, 948, 948,
2811  679, 647, 306, 192, 306, 948, 948, 307, 759, 760,
2812  309, 761, 761, 761, 761, 393, 393, 393, 679, 948,
2813  394, 948, 948, 948, 648, 648, 648, 648, 948, 838,
2814  838, 649, 839, 839, 839, 839, 729, 729, 729, 729,
2815  705, 706, 706, 706, 706, 948, 948, 948, 848, 649,
2816  517, 397, 517, 948, 948, 518, 764, 765, 520, 766,
2817  766, 766, 766, 529, 401, 529, 848, 948, 530, 769,
2818 
2819  770, 532, 771, 771, 771, 771, 404, 405, 404, 948,
2820  948, 406, 948, 319, 320, 654, 654, 654, 654, 948,
2821  948, 948, 655, 375, 376, 375, 948, 948, 377, 729,
2822  729, 729, 729, 735, 736, 736, 736, 736, 948, 378,
2823  655, 317, 198, 317, 948, 948, 318, 772, 773, 320,
2824  774, 774, 774, 774, 401, 401, 401, 378, 948, 402,
2825  948, 948, 948, 656, 656, 656, 656, 948, 948, 948,
2826  657, 857, 857, 857, 857, 745, 745, 745, 745, 473,
2827  729, 729, 729, 729, 948, 948, 948, 631, 657, 544,
2828  405, 544, 948, 948, 545, 777, 778, 547, 779, 779,
2829 
2830  779, 779, 660, 660, 660, 631, 948, 661, 948, 948,
2831  948, 659, 659, 659, 659, 948, 948, 948, 662, 745,
2832  745, 745, 745, 747, 747, 747, 747, 285, 745, 745,
2833  745, 745, 948, 948, 948, 388, 662, 660, 660, 660,
2834  948, 948, 661, 948, 780, 781, 782, 782, 782, 782,
2835  784, 660, 784, 388, 948, 785, 948, 786, 787, 788,
2836  788, 788, 788, 663, 664, 663, 948, 948, 665, 948,
2837  791, 792, 793, 793, 793, 793, 664, 664, 664, 948,
2838  948, 673, 948, 794, 795, 796, 796, 796, 796, 798,
2839  664, 798, 948, 948, 799, 948, 800, 801, 802, 802,
2840 
2841  802, 802, 556, 409, 556, 948, 948, 557, 803, 804,
2842  559, 805, 805, 805, 805, 668, 669, 668, 948, 948,
2843  670, 948, 333, 334, 667, 667, 667, 667, 948, 948,
2844  948, 671, 753, 753, 753, 753, 753, 753, 753, 753,
2845  488, 753, 753, 753, 753, 948, 948, 948, 642, 671,
2846  668, 669, 668, 948, 948, 670, 948, 806, 807, 808,
2847  808, 808, 808, 669, 669, 669, 642, 948, 809, 948,
2848  810, 811, 812, 812, 812, 812, 814, 669, 814, 948,
2849  948, 815, 948, 816, 817, 818, 818, 818, 818, 331,
2850  211, 331, 948, 948, 332, 819, 820, 334, 821, 821,
2851 
2852  821, 821, 664, 664, 664, 948, 948, 673, 948, 948,
2853  948, 672, 672, 672, 672, 948, 948, 948, 674, 755,
2854  755, 755, 755, 755, 755, 755, 755, 763, 763, 763,
2855  763, 768, 768, 768, 768, 948, 674, 798, 664, 798,
2856  948, 948, 799, 948, 800, 801, 802, 802, 802, 802,
2857  675, 669, 675, 948, 948, 676, 948, 824, 825, 826,
2858  826, 826, 826, 814, 669, 814, 948, 948, 815, 948,
2859  816, 817, 818, 818, 818, 818, 571, 413, 571, 948,
2860  948, 572, 827, 828, 574, 829, 829, 829, 829, 588,
2861  420, 588, 948, 948, 589, 832, 833, 591, 834, 834,
2862 
2863  834, 834, 423, 424, 423, 948, 948, 425, 948, 355,
2864  356, 681, 681, 681, 681, 948, 948, 948, 682, 396,
2865  397, 396, 948, 948, 398, 768, 768, 768, 768, 776,
2866  776, 776, 776, 948, 948, 399, 682, 353, 227, 353,
2867  948, 948, 354, 835, 836, 356, 837, 837, 837, 837,
2868  420, 420, 420, 399, 948, 421, 948, 948, 948, 683,
2869  683, 683, 683, 948, 948, 948, 684, 404, 405, 404,
2870  948, 948, 406, 781, 782, 782, 782, 782, 862, 862,
2871  862, 862, 948, 407, 684, 603, 424, 603, 948, 948,
2872  604, 840, 841, 606, 842, 842, 842, 842, 439, 372,
2873 
2874  439, 407, 948, 440, 948, 441, 442, 695, 695, 695,
2875  695, 439, 372, 439, 948, 948, 440, 948, 441, 442,
2876  695, 695, 695, 695, 258, 156, 258, 948, 948, 259,
2877  948, 260, 261, 698, 698, 698, 698, 258, 156, 258,
2878  948, 948, 259, 948, 260, 261, 698, 698, 698, 698,
2879  372, 372, 372, 948, 948, 373, 948, 948, 948, 700,
2880  700, 700, 700, 454, 376, 454, 948, 948, 455, 948,
2881  456, 457, 703, 703, 703, 703, 454, 376, 454, 948,
2882  948, 455, 948, 456, 457, 703, 703, 703, 703, 708,
2883  625, 708, 948, 948, 709, 948, 710, 711, 712, 712,
2884 
2885  712, 712, 708, 625, 708, 948, 948, 709, 948, 710,
2886  711, 712, 712, 712, 712, 625, 625, 625, 948, 948,
2887  626, 948, 948, 948, 714, 714, 714, 714, 470, 382,
2888  470, 948, 948, 471, 948, 472, 716, 717, 717, 717,
2889  717, 470, 382, 470, 948, 948, 471, 948, 472, 473,
2890  850, 850, 850, 850, 628, 629, 628, 948, 948, 630,
2891  948, 948, 716, 717, 717, 717, 717, 948, 948, 948,
2892  851, 790, 790, 790, 790, 948, 781, 782, 782, 782,
2893  782, 940, 941, 940, 863, 948, 942, 948, 851, 625,
2894  625, 625, 948, 948, 626, 948, 948, 719, 720, 720,
2895 
2896  720, 720, 863, 948, 948, 853, 795, 796, 796, 796,
2897  796, 867, 867, 867, 867, 805, 805, 805, 805, 805,
2898  805, 805, 805, 853, 722, 629, 722, 948, 948, 723,
2899  948, 724, 725, 726, 726, 726, 726, 722, 629, 722,
2900  948, 948, 723, 948, 724, 725, 726, 726, 726, 726,
2901  282, 172, 282, 948, 948, 283, 948, 284, 731, 732,
2902  732, 732, 732, 282, 172, 282, 948, 948, 283, 948,
2903  284, 285, 855, 855, 855, 855, 633, 634, 633, 948,
2904  948, 635, 948, 948, 731, 732, 732, 732, 732, 948,
2905  948, 948, 856, 811, 812, 812, 812, 812, 948, 948,
2906 
2907  948, 559, 805, 805, 805, 805, 948, 948, 948, 666,
2908  856, 738, 634, 738, 948, 948, 739, 948, 740, 741,
2909  742, 742, 742, 742, 629, 629, 629, 666, 948, 638,
2910  948, 948, 735, 736, 736, 736, 736, 948, 948, 948,
2911  858, 872, 872, 872, 872, 821, 821, 821, 821, 821,
2912  821, 821, 821, 823, 823, 823, 823, 948, 858, 738,
2913  634, 738, 948, 948, 739, 948, 740, 741, 742, 742,
2914  742, 742, 629, 629, 629, 948, 948, 638, 948, 948,
2915  948, 747, 747, 747, 747, 485, 386, 485, 948, 948,
2916  486, 948, 487, 749, 750, 750, 750, 750, 485, 386,
2917 
2918  485, 948, 948, 486, 948, 487, 488, 860, 860, 860,
2919  860, 640, 634, 640, 948, 948, 641, 948, 948, 749,
2920  750, 750, 750, 750, 948, 948, 948, 861, 829, 829,
2921  829, 829, 829, 829, 829, 829, 334, 821, 821, 821,
2922  821, 948, 948, 948, 415, 861, 502, 393, 502, 948,
2923  948, 503, 948, 504, 505, 758, 758, 758, 758, 502,
2924  393, 502, 415, 948, 503, 948, 504, 505, 758, 758,
2925  758, 758, 306, 192, 306, 948, 948, 307, 948, 308,
2926  309, 761, 761, 761, 761, 306, 192, 306, 948, 948,
2927  307, 948, 308, 309, 761, 761, 761, 761, 393, 393,
2928 
2929  393, 948, 948, 394, 948, 948, 948, 763, 763, 763,
2930  763, 517, 397, 517, 948, 948, 518, 948, 519, 520,
2931  766, 766, 766, 766, 517, 397, 517, 948, 948, 518,
2932  948, 519, 520, 766, 766, 766, 766, 529, 401, 529,
2933  948, 948, 530, 948, 531, 532, 771, 771, 771, 771,
2934  529, 401, 529, 948, 948, 530, 948, 531, 532, 771,
2935  771, 771, 771, 317, 198, 317, 948, 948, 318, 948,
2936  319, 320, 774, 774, 774, 774, 317, 198, 317, 948,
2937  948, 318, 948, 319, 320, 774, 774, 774, 774, 401,
2938  401, 401, 948, 948, 402, 948, 948, 948, 776, 776,
2939 
2940  776, 776, 544, 405, 544, 948, 948, 545, 948, 546,
2941  547, 779, 779, 779, 779, 544, 405, 544, 948, 948,
2942  545, 948, 546, 547, 779, 779, 779, 779, 784, 660,
2943  784, 948, 948, 785, 948, 786, 787, 788, 788, 788,
2944  788, 784, 660, 784, 948, 948, 785, 948, 786, 787,
2945  788, 788, 788, 788, 660, 660, 660, 948, 948, 661,
2946  948, 948, 948, 790, 790, 790, 790, 556, 409, 556,
2947  948, 948, 557, 948, 558, 792, 793, 793, 793, 793,
2948  556, 409, 556, 948, 948, 557, 948, 558, 559, 865,
2949  865, 865, 865, 663, 664, 663, 948, 948, 665, 948,
2950 
2951  948, 792, 793, 793, 793, 793, 948, 948, 948, 866,
2952  831, 831, 831, 831, 948, 574, 829, 829, 829, 829,
2953  940, 941, 940, 677, 948, 942, 948, 866, 660, 660,
2954  660, 948, 948, 661, 948, 948, 795, 796, 796, 796,
2955  796, 677, 948, 948, 868, 831, 831, 831, 831, 839,
2956  839, 839, 839, 135, 130, 135, 948, 948, 136, 948,
2957  948, 877, 868, 798, 664, 798, 948, 948, 799, 948,
2958  800, 801, 802, 802, 802, 802, 798, 664, 798, 948,
2959  948, 799, 948, 800, 801, 802, 802, 802, 802, 331,
2960  211, 331, 948, 948, 332, 948, 333, 807, 808, 808,
2961 
2962  808, 808, 331, 211, 331, 948, 948, 332, 948, 333,
2963  334, 870, 870, 870, 870, 668, 669, 668, 948, 948,
2964  670, 948, 948, 807, 808, 808, 808, 808, 948, 948,
2965  948, 871, 423, 424, 423, 880, 880, 425, 881, 881,
2966  881, 881, 559, 865, 865, 865, 865, 948, 426, 871,
2967  814, 669, 814, 948, 948, 815, 948, 816, 817, 818,
2968  818, 818, 818, 664, 664, 664, 426, 948, 673, 948,
2969  948, 811, 812, 812, 812, 812, 948, 888, 888, 873,
2970  889, 889, 889, 889, 948, 867, 867, 867, 867, 847,
2971  847, 847, 847, 948, 948, 948, 848, 873, 814, 669,
2972 
2973  814, 948, 948, 815, 948, 816, 817, 818, 818, 818,
2974  818, 664, 664, 664, 848, 948, 673, 948, 948, 948,
2975  823, 823, 823, 823, 571, 413, 571, 948, 948, 572,
2976  948, 573, 825, 826, 826, 826, 826, 571, 413, 571,
2977  948, 948, 572, 948, 573, 574, 875, 875, 875, 875,
2978  675, 669, 675, 948, 948, 676, 948, 948, 825, 826,
2979  826, 826, 826, 948, 896, 896, 876, 897, 897, 897,
2980  897, 334, 870, 870, 870, 870, 862, 862, 862, 862,
2981  948, 948, 948, 863, 876, 588, 420, 588, 948, 948,
2982  589, 948, 590, 591, 834, 834, 834, 834, 588, 420,
2983 
2984  588, 863, 948, 589, 948, 590, 591, 834, 834, 834,
2985  834, 353, 227, 353, 948, 948, 354, 948, 355, 356,
2986  837, 837, 837, 837, 353, 227, 353, 948, 948, 354,
2987  948, 355, 356, 837, 837, 837, 837, 420, 420, 420,
2988  948, 948, 421, 948, 948, 948, 839, 839, 839, 839,
2989  603, 424, 603, 948, 948, 604, 948, 605, 606, 842,
2990  842, 842, 842, 603, 424, 603, 948, 948, 604, 948,
2991  605, 606, 842, 842, 842, 842, 708, 625, 708, 948,
2992  948, 709, 882, 883, 711, 884, 884, 884, 884, 628,
2993  629, 628, 948, 948, 630, 948, 472, 473, 850, 850,
2994 
2995  850, 850, 948, 904, 904, 851, 905, 905, 905, 905,
2996  906, 907, 948, 908, 908, 908, 908, 948, 872, 872,
2997  872, 872, 948, 851, 470, 382, 470, 948, 948, 471,
2998  885, 886, 473, 887, 887, 887, 887, 625, 625, 625,
2999  948, 948, 626, 948, 948, 948, 852, 852, 852, 852,
3000  948, 909, 910, 853, 911, 911, 911, 911, 912, 912,
3001  948, 913, 913, 913, 913, 574, 875, 875, 875, 875,
3002  948, 853, 722, 629, 722, 948, 948, 723, 890, 891,
3003  725, 892, 892, 892, 892, 633, 634, 633, 948, 948,
3004  635, 948, 284, 285, 855, 855, 855, 855, 948, 914,
3005 
3006  915, 856, 916, 916, 916, 916, 917, 918, 948, 919,
3007  919, 919, 919, 881, 881, 881, 881, 948, 948, 856,
3008  282, 172, 282, 948, 948, 283, 893, 894, 285, 895,
3009  895, 895, 895, 629, 629, 629, 948, 948, 638, 948,
3010  948, 948, 857, 857, 857, 857, 948, 920, 920, 858,
3011  921, 921, 921, 921, 922, 923, 948, 924, 924, 924,
3012  924, 881, 881, 881, 881, 948, 948, 858, 738, 634,
3013  738, 948, 948, 739, 898, 899, 741, 900, 900, 900,
3014  900, 640, 634, 640, 948, 948, 641, 948, 487, 488,
3015  860, 860, 860, 860, 948, 925, 926, 861, 927, 927,
3016 
3017  927, 927, 135, 130, 135, 948, 948, 136, 940, 941,
3018  940, 928, 948, 942, 948, 861, 485, 386, 485, 948,
3019  948, 486, 901, 902, 488, 903, 903, 903, 903, 708,
3020  625, 708, 948, 948, 709, 948, 710, 711, 884, 884,
3021  884, 884, 628, 629, 628, 948, 948, 630, 469, 472,
3022  889, 889, 889, 889, 897, 897, 897, 897, 631, 905,
3023  905, 905, 905, 905, 905, 905, 905, 908, 908, 908,
3024  908, 908, 908, 908, 908, 948, 631, 625, 625, 625,
3025  948, 948, 626, 948, 948, 948, 889, 889, 889, 889,
3026  722, 629, 722, 948, 948, 723, 948, 724, 725, 892,
3027 
3028  892, 892, 892, 633, 634, 633, 948, 948, 635, 281,
3029  284, 908, 908, 908, 908, 948, 948, 948, 864, 388,
3030  911, 911, 911, 911, 911, 911, 911, 911, 913, 913,
3031  913, 913, 916, 916, 916, 916, 864, 388, 629, 629,
3032  629, 948, 948, 638, 948, 948, 948, 897, 897, 897,
3033  897, 738, 634, 738, 948, 948, 739, 948, 740, 741,
3034  900, 900, 900, 900, 640, 634, 640, 948, 948, 641,
3035  484, 487, 948, 559, 911, 911, 911, 911, 948, 948,
3036  642, 666, 916, 916, 916, 916, 948, 948, 916, 916,
3037  916, 916, 135, 130, 135, 869, 948, 136, 642, 666,
3038 
3039  660, 660, 660, 948, 948, 661, 948, 948, 948, 913,
3040  913, 913, 913, 869, 919, 919, 919, 919, 919, 919,
3041  919, 919, 334, 919, 919, 919, 919, 937, 948, 948,
3042  415, 921, 921, 921, 921, 921, 921, 921, 921, 924,
3043  924, 924, 924, 924, 924, 924, 924, 948, 415, 924,
3044  924, 924, 924, 948, 948, 948, 874, 927, 927, 927,
3045  927, 927, 927, 927, 927, 574, 927, 927, 927, 927,
3046  135, 130, 135, 677, 874, 136, 135, 130, 135, 948,
3047  943, 136, 943, 948, 948, 944, 948, 940, 941, 940,
3048  948, 677, 942, 943, 946, 943, 946, 948, 944, 947,
3049 
3050  946, 946, 946, 946, 948, 947, 947, 946, 948, 946,
3051  948, 948, 947, 934, 948, 948, 948, 948, 936, 46,
3052  46, 46, 46, 46, 46, 46, 46, 80, 80, 80,
3053  80, 80, 80, 80, 80, 110, 110, 110, 110, 110,
3054  110, 110, 110, 120, 120, 120, 120, 120, 120, 120,
3055  120, 134, 134, 134, 134, 134, 134, 134, 134, 138,
3056  948, 948, 138, 175, 948, 948, 175, 948, 175, 175,
3057  175, 176, 176, 176, 176, 176, 176, 176, 176, 214,
3058  948, 948, 214, 948, 214, 214, 215, 215, 215, 215,
3059  215, 215, 215, 215, 230, 230, 948, 230, 948, 230,
3060 
3061  230, 230, 233, 233, 233, 233, 233, 233, 233, 233,
3062  239, 239, 948, 239, 239, 239, 239, 239, 257, 257,
3063  257, 257, 257, 257, 257, 257, 270, 270, 270, 270,
3064  270, 270, 270, 270, 276, 276, 948, 948, 276, 276,
3065  281, 281, 281, 281, 281, 281, 281, 281, 294, 294,
3066  294, 294, 294, 294, 294, 294, 305, 305, 305, 305,
3067  305, 305, 305, 305, 316, 316, 316, 316, 316, 316,
3068  316, 316, 330, 330, 330, 330, 330, 330, 330, 330,
3069  341, 341, 341, 341, 341, 341, 341, 341, 352, 352,
3070  352, 352, 352, 352, 352, 352, 230, 230, 948, 230,
3071 
3072  948, 230, 230, 230, 233, 233, 233, 233, 233, 233,
3073  233, 233, 239, 239, 948, 239, 239, 239, 239, 239,
3074  134, 134, 134, 134, 134, 134, 134, 134, 138, 948,
3075  948, 138, 257, 257, 257, 257, 257, 257, 257, 257,
3076  270, 270, 270, 270, 270, 270, 270, 270, 276, 276,
3077  948, 948, 276, 276, 281, 281, 281, 281, 281, 281,
3078  281, 281, 438, 438, 438, 438, 438, 438, 438, 438,
3079  453, 453, 453, 453, 453, 453, 453, 453, 469, 469,
3080  469, 469, 469, 469, 469, 469, 484, 484, 484, 484,
3081  484, 484, 484, 484, 294, 294, 294, 294, 294, 294,
3082 
3083  294, 294, 501, 501, 501, 501, 501, 501, 501, 501,
3084  305, 305, 305, 305, 305, 305, 305, 305, 516, 516,
3085  516, 516, 516, 516, 516, 516, 528, 528, 528, 528,
3086  528, 528, 528, 528, 316, 316, 316, 316, 316, 316,
3087  316, 316, 543, 543, 543, 543, 543, 543, 543, 543,
3088  555, 555, 555, 555, 555, 555, 555, 555, 330, 330,
3089  330, 330, 330, 330, 330, 330, 570, 570, 570, 570,
3090  570, 570, 570, 570, 341, 341, 341, 341, 341, 341,
3091  341, 341, 587, 587, 587, 587, 587, 587, 587, 587,
3092  352, 352, 352, 352, 352, 352, 352, 352, 602, 602,
3093 
3094  602, 602, 602, 602, 602, 602, 134, 134, 134, 134,
3095  134, 134, 134, 134, 138, 948, 948, 138, 438, 438,
3096  438, 438, 438, 438, 438, 438, 257, 257, 257, 257,
3097  257, 257, 257, 257, 453, 453, 453, 453, 453, 453,
3098  453, 453, 469, 469, 469, 469, 469, 469, 469, 469,
3099  281, 281, 281, 281, 281, 281, 281, 281, 484, 484,
3100  484, 484, 484, 484, 484, 484, 294, 294, 294, 294,
3101  294, 294, 294, 294, 501, 501, 501, 501, 501, 501,
3102  501, 501, 305, 305, 305, 305, 305, 305, 305, 305,
3103  516, 516, 516, 516, 516, 516, 516, 516, 528, 528,
3104 
3105  528, 528, 528, 528, 528, 528, 316, 316, 316, 316,
3106  316, 316, 316, 316, 543, 543, 543, 543, 543, 543,
3107  543, 543, 555, 555, 555, 555, 555, 555, 555, 555,
3108  330, 330, 330, 330, 330, 330, 330, 330, 570, 570,
3109  570, 570, 570, 570, 570, 570, 341, 341, 341, 341,
3110  341, 341, 341, 341, 587, 587, 587, 587, 587, 587,
3111  587, 587, 352, 352, 352, 352, 352, 352, 352, 352,
3112  602, 602, 602, 602, 602, 602, 602, 602, 134, 134,
3113  134, 134, 134, 134, 134, 134, 138, 948, 948, 138,
3114  438, 438, 438, 438, 438, 438, 438, 438, 257, 257,
3115 
3116  257, 257, 257, 257, 257, 257, 453, 453, 453, 453,
3117  453, 453, 453, 453, 707, 707, 707, 707, 707, 707,
3118  707, 707, 469, 469, 469, 469, 469, 469, 469, 469,
3119  721, 721, 721, 721, 721, 721, 721, 721, 281, 281,
3120  281, 281, 281, 281, 281, 281, 737, 737, 737, 737,
3121  737, 737, 737, 737, 484, 484, 484, 484, 484, 484,
3122  484, 484, 501, 501, 501, 501, 501, 501, 501, 501,
3123  305, 305, 305, 305, 305, 305, 305, 305, 516, 516,
3124  516, 516, 516, 516, 516, 516, 528, 528, 528, 528,
3125  528, 528, 528, 528, 316, 316, 316, 316, 316, 316,
3126 
3127  316, 316, 543, 543, 543, 543, 543, 543, 543, 543,
3128  783, 783, 783, 783, 783, 783, 783, 783, 555, 555,
3129  555, 555, 555, 555, 555, 555, 797, 797, 797, 797,
3130  797, 797, 797, 797, 330, 330, 330, 330, 330, 330,
3131  330, 330, 813, 813, 813, 813, 813, 813, 813, 813,
3132  570, 570, 570, 570, 570, 570, 570, 570, 587, 587,
3133  587, 587, 587, 587, 587, 587, 352, 352, 352, 352,
3134  352, 352, 352, 352, 602, 602, 602, 602, 602, 602,
3135  602, 602, 134, 134, 134, 134, 134, 134, 134, 134,
3136  138, 948, 948, 138, 438, 438, 438, 438, 438, 438,
3137 
3138  438, 438, 257, 257, 257, 257, 257, 257, 257, 257,
3139  453, 453, 453, 453, 453, 453, 453, 453, 707, 707,
3140  707, 707, 707, 707, 707, 707, 469, 469, 469, 469,
3141  469, 469, 469, 469, 721, 721, 721, 721, 721, 721,
3142  721, 721, 281, 281, 281, 281, 281, 281, 281, 281,
3143  737, 737, 737, 737, 737, 737, 737, 737, 484, 484,
3144  484, 484, 484, 484, 484, 484, 501, 501, 501, 501,
3145  501, 501, 501, 501, 305, 305, 305, 305, 305, 305,
3146  305, 305, 516, 516, 516, 516, 516, 516, 516, 516,
3147  528, 528, 528, 528, 528, 528, 528, 528, 316, 316,
3148 
3149  316, 316, 316, 316, 316, 316, 543, 543, 543, 543,
3150  543, 543, 543, 543, 783, 783, 783, 783, 783, 783,
3151  783, 783, 555, 555, 555, 555, 555, 555, 555, 555,
3152  797, 797, 797, 797, 797, 797, 797, 797, 330, 330,
3153  330, 330, 330, 330, 330, 330, 813, 813, 813, 813,
3154  813, 813, 813, 813, 570, 570, 570, 570, 570, 570,
3155  570, 570, 587, 587, 587, 587, 587, 587, 587, 587,
3156  352, 352, 352, 352, 352, 352, 352, 352, 602, 602,
3157  602, 602, 602, 602, 602, 602, 134, 134, 134, 134,
3158  134, 134, 134, 134, 138, 948, 948, 138, 707, 707,
3159 
3160  707, 707, 707, 707, 707, 707, 469, 469, 469, 469,
3161  469, 469, 469, 469, 721, 721, 721, 721, 721, 721,
3162  721, 721, 281, 281, 281, 281, 281, 281, 281, 281,
3163  737, 737, 737, 737, 737, 737, 737, 737, 484, 484,
3164  484, 484, 484, 484, 484, 484, 939, 939, 939, 939,
3165  939, 939, 939, 939, 945, 945, 948, 945, 945, 945,
3166  945, 945, 45, 948, 948, 948, 948, 948, 948, 948,
3167  948, 948, 948, 948, 948, 948, 948, 948, 948, 948,
3168  948, 948, 948, 948, 948, 948, 948, 948, 948, 948,
3169  948, 948, 948, 948, 948, 948, 948, 948, 948, 948,
3170 
3171  948, 948, 948, 948, 948, 948, 948, 948, 948, 948
3172 } ;
3173 
3174 static const short int yy_chk[7711] =
3175 { 0,
3176  0, 1, 1, 1, 0, 0, 1, 2, 2, 2,
3177  885, 885, 2, 3, 3, 3, 3, 3, 3, 3,
3178  3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3179  3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3180  3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3181  3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3182  5, 5, 5, 60, 60, 5, 6, 6, 6, 431,
3183  1010, 6, 988, 431, 47, 47, 47, 5, 5, 47,
3184  48, 73, 48, 6, 6, 48, 5, 65, 65, 65,
3185  65, 65, 6, 7, 7, 7, 985, 73, 7, 983,
3186 
3187  7, 7, 7, 7, 7, 7, 66, 66, 66, 66,
3188  976, 7, 9, 9, 9, 9, 9, 9, 10, 10,
3189  10, 10, 10, 10, 11, 11, 11, 11, 11, 11,
3190  12, 12, 12, 12, 12, 12, 13, 13, 13, 13,
3191  13, 13, 14, 14, 14, 14, 14, 14, 15, 15,
3192  15, 15, 15, 15, 16, 16, 16, 16, 16, 16,
3193  17, 17, 17, 970, 17, 17, 18, 18, 18, 965,
3194  18, 18, 19, 19, 19, 19, 19, 19, 17, 68,
3195  68, 68, 68, 68, 18, 20, 20, 20, 20, 20,
3196  20, 21, 21, 21, 21, 21, 21, 22, 22, 22,
3197 
3198  22, 22, 22, 23, 23, 23, 23, 23, 23, 24,
3199  24, 24, 24, 24, 24, 25, 25, 25, 25, 25,
3200  25, 275, 933, 39, 39, 39, 25, 39, 39, 40,
3201  40, 40, 930, 40, 40, 464, 929, 275, 25, 879,
3202  25, 26, 26, 26, 26, 26, 26, 299, 51, 51,
3203  51, 464, 26, 51, 39, 346, 443, 41, 41, 41,
3204  40, 41, 41, 878, 26, 299, 26, 27, 27, 27,
3205  27, 27, 27, 346, 443, 42, 42, 42, 27, 42,
3206  42, 49, 49, 49, 886, 886, 49, 846, 41, 458,
3207  27, 844, 27, 28, 28, 28, 28, 28, 28, 69,
3208 
3209  69, 69, 69, 130, 28, 130, 42, 458, 130, 49,
3210  71, 71, 71, 71, 690, 465, 28, 689, 28, 29,
3211  29, 29, 29, 29, 29, 74, 74, 74, 74, 687,
3212  29, 465, 43, 43, 43, 43, 43, 43, 76, 76,
3213  76, 76, 29, 43, 29, 30, 30, 30, 30, 30,
3214  30, 77, 77, 77, 77, 77, 30, 615, 44, 44,
3215  44, 44, 44, 44, 78, 78, 78, 78, 30, 44,
3216  30, 31, 31, 31, 31, 31, 31, 70, 70, 70,
3217  70, 70, 31, 893, 893, 70, 85, 85, 85, 85,
3218  75, 75, 75, 75, 31, 614, 31, 32, 32, 32,
3219 
3220  32, 32, 32, 70, 88, 88, 88, 88, 32, 613,
3221  75, 82, 82, 82, 612, 82, 82, 497, 894, 894,
3222  32, 432, 32, 33, 33, 33, 75, 33, 33, 84,
3223  84, 84, 84, 84, 506, 497, 86, 86, 86, 86,
3224  86, 33, 901, 901, 86, 87, 87, 87, 87, 87,
3225  902, 902, 506, 33, 521, 33, 34, 34, 34, 428,
3226  34, 34, 86, 90, 90, 90, 90, 90, 91, 91,
3227  91, 91, 521, 369, 34, 93, 93, 93, 93, 93,
3228  94, 94, 94, 94, 368, 367, 34, 366, 34, 35,
3229  35, 35, 35, 35, 35, 99, 99, 99, 99, 99,
3230 
3231  35, 100, 100, 100, 100, 101, 101, 101, 101, 101,
3232  365, 364, 35, 101, 35, 36, 36, 36, 36, 36,
3233  36, 103, 103, 103, 103, 362, 36, 104, 104, 104,
3234  104, 101, 105, 105, 105, 105, 253, 252, 36, 251,
3235  36, 37, 37, 37, 37, 37, 37, 104, 108, 108,
3236  108, 108, 37, 107, 107, 107, 107, 107, 114, 114,
3237  114, 114, 114, 104, 37, 533, 37, 38, 38, 38,
3238  38, 38, 38, 115, 115, 115, 115, 250, 38, 548,
3239  112, 112, 112, 533, 112, 112, 118, 118, 118, 118,
3240  38, 249, 38, 67, 67, 67, 247, 548, 67, 246,
3241 
3242  245, 67, 67, 67, 67, 67, 121, 121, 121, 67,
3243  112, 121, 112, 117, 117, 117, 117, 117, 123, 123,
3244  123, 244, 123, 123, 152, 150, 149, 67, 72, 72,
3245  72, 148, 147, 72, 146, 144, 143, 72, 72, 72,
3246  72, 126, 126, 126, 126, 127, 127, 127, 127, 128,
3247  128, 128, 128, 129, 129, 129, 142, 72, 129, 131,
3248  131, 131, 583, 140, 131, 127, 132, 133, 132, 133,
3249  139, 132, 133, 72, 79, 79, 79, 124, 592, 79,
3250  583, 127, 79, 79, 79, 79, 79, 134, 134, 134,
3251  79, 113, 134, 135, 135, 135, 592, 607, 135, 136,
3252 
3253  136, 136, 96, 83, 136, 695, 703, 64, 79, 89,
3254  89, 89, 712, 63, 89, 607, 62, 89, 89, 89,
3255  89, 89, 61, 695, 703, 89, 137, 137, 137, 726,
3256  712, 137, 153, 153, 153, 153, 155, 155, 155, 155,
3257  155, 59, 58, 89, 92, 92, 92, 726, 57, 92,
3258  137, 56, 92, 92, 92, 92, 92, 742, 158, 158,
3259  92, 158, 158, 158, 158, 159, 159, 159, 159, 161,
3260  161, 161, 161, 55, 758, 742, 161, 54, 92, 95,
3261  95, 95, 766, 53, 95, 52, 45, 95, 95, 95,
3262  95, 95, 758, 0, 161, 95, 167, 167, 167, 167,
3263 
3264  766, 160, 160, 160, 160, 160, 166, 166, 166, 160,
3265  0, 166, 0, 95, 109, 109, 109, 0, 0, 109,
3266  0, 0, 109, 109, 109, 109, 109, 160, 162, 162,
3267  109, 162, 162, 162, 162, 169, 169, 169, 169, 171,
3268  171, 171, 171, 171, 179, 179, 179, 179, 109, 116,
3269  116, 116, 0, 0, 116, 771, 0, 116, 116, 116,
3270  116, 116, 0, 174, 174, 116, 174, 174, 174, 174,
3271  176, 176, 176, 771, 176, 176, 177, 177, 177, 779,
3272  177, 177, 0, 116, 119, 119, 119, 0, 0, 119,
3273  0, 0, 119, 119, 119, 119, 119, 779, 182, 182,
3274 
3275  119, 182, 182, 182, 182, 183, 183, 183, 183, 180,
3276  180, 180, 180, 180, 0, 0, 0, 180, 119, 156,
3277  156, 156, 0, 0, 156, 0, 156, 156, 156, 156,
3278  156, 156, 157, 157, 157, 180, 0, 157, 0, 157,
3279  157, 157, 157, 157, 157, 164, 164, 164, 788, 0,
3280  164, 0, 164, 0, 164, 164, 164, 164, 165, 165,
3281  165, 0, 0, 165, 0, 165, 788, 165, 165, 165,
3282  165, 172, 172, 172, 0, 0, 172, 0, 172, 172,
3283  172, 172, 172, 172, 173, 173, 173, 0, 0, 173,
3284  0, 173, 173, 173, 173, 173, 173, 181, 181, 181,
3285 
3286  181, 0, 0, 802, 181, 185, 185, 185, 185, 185,
3287  188, 188, 0, 188, 188, 188, 188, 189, 189, 189,
3288  189, 802, 181, 186, 186, 186, 0, 0, 186, 0,
3289  186, 186, 186, 186, 186, 186, 187, 187, 187, 818,
3290  834, 187, 842, 187, 187, 187, 187, 187, 187, 191,
3291  191, 191, 191, 191, 192, 192, 192, 818, 834, 192,
3292  842, 192, 192, 192, 192, 192, 192, 193, 193, 193,
3293  0, 0, 193, 0, 193, 193, 193, 193, 193, 193,
3294  194, 194, 884, 194, 194, 194, 194, 195, 195, 195,
3295  195, 197, 197, 197, 197, 197, 198, 198, 198, 0,
3296 
3297  884, 198, 0, 198, 198, 198, 198, 198, 198, 199,
3298  199, 199, 0, 0, 199, 0, 199, 199, 199, 199,
3299  199, 199, 200, 200, 0, 200, 200, 200, 200, 202,
3300  202, 202, 202, 203, 203, 203, 203, 203, 0, 0,
3301  892, 203, 204, 204, 204, 204, 900, 205, 205, 204,
3302  205, 205, 205, 205, 206, 206, 206, 206, 892, 203,
3303  208, 208, 208, 208, 900, 0, 0, 204, 210, 210,
3304  210, 210, 210, 211, 211, 211, 0, 0, 211, 0,
3305  211, 211, 211, 211, 211, 211, 212, 212, 212, 0,
3306  0, 212, 0, 212, 212, 212, 212, 212, 212, 213,
3307 
3308  213, 0, 213, 213, 213, 213, 215, 215, 215, 0,
3309  215, 215, 216, 216, 216, 0, 216, 216, 218, 218,
3310  218, 218, 220, 220, 220, 220, 220, 223, 223, 0,
3311  223, 223, 223, 223, 0, 239, 215, 239, 215, 0,
3312  239, 0, 216, 0, 216, 221, 221, 221, 0, 0,
3313  221, 0, 221, 221, 221, 221, 221, 221, 222, 222,
3314  222, 0, 0, 222, 0, 222, 222, 222, 222, 222,
3315  222, 224, 224, 224, 224, 225, 225, 225, 0, 0,
3316  225, 0, 0, 225, 225, 225, 225, 225, 0, 0,
3317  0, 225, 226, 226, 226, 226, 226, 229, 229, 0,
3318 
3319  229, 229, 229, 229, 237, 237, 237, 237, 0, 225,
3320  227, 227, 227, 0, 0, 227, 0, 227, 227, 227,
3321  227, 227, 227, 228, 228, 228, 0, 0, 228, 0,
3322  228, 228, 228, 228, 228, 228, 231, 231, 231, 0,
3323  0, 231, 232, 232, 232, 0, 232, 232, 233, 233,
3324  233, 0, 233, 233, 234, 234, 234, 0, 234, 234,
3325  235, 235, 235, 0, 235, 235, 240, 241, 240, 241,
3326  0, 240, 241, 242, 242, 242, 0, 0, 242, 254,
3327  254, 254, 254, 254, 255, 255, 255, 255, 263, 263,
3328  263, 263, 0, 242, 256, 256, 256, 0, 0, 256,
3329 
3330  0, 0, 256, 256, 256, 256, 256, 0, 0, 0,
3331  256, 262, 262, 262, 0, 0, 262, 265, 265, 265,
3332  265, 266, 266, 266, 266, 0, 0, 262, 256, 257,
3333  257, 257, 0, 0, 257, 0, 257, 257, 257, 257,
3334  257, 257, 258, 258, 258, 262, 0, 258, 0, 258,
3335  258, 258, 258, 258, 258, 264, 264, 264, 0, 0,
3336  264, 0, 0, 0, 264, 264, 264, 264, 267, 267,
3337  267, 267, 268, 268, 268, 268, 269, 269, 269, 269,
3338  276, 276, 276, 0, 0, 276, 278, 278, 278, 278,
3339  278, 0, 268, 279, 279, 279, 279, 287, 287, 287,
3340 
3341  287, 289, 289, 289, 289, 0, 0, 0, 268, 270,
3342  270, 270, 0, 0, 270, 0, 270, 0, 270, 270,
3343  270, 270, 271, 271, 271, 0, 0, 271, 0, 271,
3344  0, 271, 271, 271, 271, 272, 272, 272, 0, 0,
3345  272, 0, 272, 0, 272, 272, 272, 272, 273, 273,
3346  273, 0, 0, 273, 0, 273, 0, 273, 273, 273,
3347  273, 274, 274, 274, 0, 0, 274, 0, 274, 0,
3348  274, 274, 274, 274, 0, 0, 286, 286, 286, 0,
3349  0, 286, 290, 290, 290, 290, 292, 292, 292, 292,
3350  274, 0, 286, 291, 291, 291, 291, 291, 300, 300,
3351 
3352  300, 300, 303, 303, 303, 303, 274, 280, 280, 280,
3353  286, 0, 280, 0, 0, 280, 280, 280, 280, 280,
3354  0, 0, 0, 280, 302, 302, 302, 302, 302, 0,
3355  0, 0, 293, 293, 293, 293, 293, 0, 0, 0,
3356  293, 280, 281, 281, 281, 0, 0, 281, 0, 281,
3357  281, 281, 281, 281, 281, 282, 282, 282, 293, 0,
3358  282, 0, 282, 282, 282, 282, 282, 282, 288, 288,
3359  288, 0, 0, 288, 0, 0, 0, 288, 288, 288,
3360  288, 294, 294, 294, 0, 0, 294, 0, 294, 294,
3361  294, 294, 294, 294, 301, 301, 301, 0, 0, 301,
3362 
3363  0, 0, 0, 301, 301, 301, 301, 304, 304, 304,
3364  0, 0, 304, 0, 0, 304, 304, 304, 304, 304,
3365  0, 0, 0, 304, 310, 310, 310, 0, 0, 310,
3366  311, 311, 311, 311, 313, 313, 313, 313, 313, 0,
3367  310, 304, 305, 305, 305, 0, 0, 305, 0, 305,
3368  305, 305, 305, 305, 305, 0, 0, 0, 310, 312,
3369  312, 312, 0, 0, 312, 0, 0, 0, 312, 312,
3370  312, 312, 314, 314, 314, 314, 315, 315, 315, 0,
3371  0, 315, 0, 0, 315, 315, 315, 315, 315, 0,
3372  0, 0, 315, 321, 321, 321, 0, 0, 321, 322,
3373 
3374  322, 322, 322, 324, 324, 324, 324, 0, 0, 321,
3375  315, 316, 316, 316, 0, 0, 316, 0, 316, 316,
3376  316, 316, 316, 316, 0, 0, 0, 321, 323, 323,
3377  323, 0, 0, 323, 0, 0, 0, 323, 323, 323,
3378  323, 325, 325, 325, 325, 327, 327, 327, 327, 327,
3379  328, 328, 328, 328, 329, 329, 329, 0, 0, 329,
3380  0, 0, 329, 329, 329, 329, 329, 0, 0, 0,
3381  329, 335, 335, 335, 0, 0, 335, 336, 336, 336,
3382  336, 338, 338, 338, 338, 338, 0, 335, 329, 330,
3383  330, 330, 0, 0, 330, 0, 330, 330, 330, 330,
3384 
3385  330, 330, 0, 0, 0, 335, 337, 337, 337, 0,
3386  0, 337, 0, 0, 0, 337, 337, 337, 337, 339,
3387  339, 339, 339, 340, 340, 340, 340, 340, 0, 0,
3388  0, 340, 347, 347, 347, 347, 349, 349, 349, 349,
3389  349, 350, 350, 350, 350, 358, 358, 358, 358, 340,
3390  341, 341, 341, 0, 0, 341, 0, 341, 341, 341,
3391  341, 341, 341, 348, 348, 348, 0, 0, 348, 0,
3392  0, 0, 348, 348, 348, 348, 351, 351, 351, 0,
3393  0, 351, 0, 0, 351, 351, 351, 351, 351, 0,
3394  0, 0, 351, 357, 357, 357, 0, 0, 357, 371,
3395 
3396  371, 371, 371, 371, 381, 381, 381, 381, 381, 357,
3397  351, 352, 352, 352, 0, 0, 352, 0, 352, 352,
3398  352, 352, 352, 352, 0, 0, 0, 357, 359, 359,
3399  359, 0, 0, 359, 0, 0, 0, 359, 359, 359,
3400  359, 361, 361, 361, 374, 374, 361, 374, 374, 374,
3401  374, 378, 378, 0, 378, 378, 378, 378, 0, 0,
3402  361, 372, 372, 372, 0, 0, 372, 0, 372, 372,
3403  372, 372, 372, 372, 373, 373, 373, 0, 0, 373,
3404  0, 373, 373, 373, 373, 373, 373, 375, 375, 375,
3405  0, 0, 375, 0, 375, 375, 375, 375, 375, 375,
3406 
3407  376, 376, 376, 0, 0, 376, 0, 376, 376, 376,
3408  376, 376, 376, 377, 377, 377, 0, 0, 377, 0,
3409  377, 377, 377, 377, 377, 377, 380, 380, 380, 380,
3410  380, 380, 380, 380, 380, 384, 384, 0, 384, 384,
3411  384, 384, 389, 389, 389, 389, 380, 0, 0, 389,
3412  380, 380, 380, 390, 390, 0, 390, 390, 390, 390,
3413  0, 0, 380, 382, 382, 382, 0, 389, 382, 0,
3414  382, 382, 382, 382, 382, 382, 383, 383, 383, 0,
3415  0, 383, 0, 383, 383, 383, 383, 383, 383, 385,
3416  385, 385, 0, 0, 385, 0, 385, 385, 385, 385,
3417 
3418  385, 385, 386, 386, 386, 0, 0, 386, 0, 386,
3419  386, 386, 386, 386, 386, 387, 387, 387, 0, 0,
3420  387, 0, 387, 387, 387, 387, 387, 387, 388, 388,
3421  388, 0, 0, 388, 388, 388, 388, 388, 388, 388,
3422  388, 391, 391, 391, 0, 0, 391, 391, 391, 391,
3423  391, 391, 391, 391, 392, 392, 392, 0, 0, 392,
3424  0, 0, 0, 392, 392, 392, 392, 0, 395, 395,
3425  392, 395, 395, 395, 395, 403, 403, 0, 403, 403,
3426  403, 403, 427, 427, 427, 0, 0, 427, 392, 393,
3427  393, 393, 0, 0, 393, 0, 393, 393, 393, 393,
3428 
3429  393, 393, 394, 394, 394, 0, 0, 394, 0, 394,
3430  394, 394, 394, 394, 394, 396, 396, 396, 0, 0,
3431  396, 0, 396, 396, 396, 396, 396, 396, 397, 397,
3432  397, 0, 0, 397, 0, 397, 397, 397, 397, 397,
3433  397, 398, 398, 398, 0, 0, 398, 0, 398, 398,
3434  398, 398, 398, 398, 399, 399, 399, 0, 0, 399,
3435  399, 399, 399, 399, 399, 399, 399, 400, 400, 400,
3436  0, 0, 400, 0, 0, 0, 400, 400, 400, 400,
3437  0, 411, 411, 400, 411, 411, 411, 411, 435, 435,
3438  435, 435, 435, 416, 416, 416, 416, 0, 0, 0,
3439 
3440  416, 400, 401, 401, 401, 0, 0, 401, 0, 401,
3441  401, 401, 401, 401, 401, 402, 402, 402, 416, 0,
3442  402, 0, 402, 402, 402, 402, 402, 402, 404, 404,
3443  404, 0, 0, 404, 0, 404, 404, 404, 404, 404,
3444  404, 405, 405, 405, 0, 0, 405, 0, 405, 405,
3445  405, 405, 405, 405, 406, 406, 406, 0, 0, 406,
3446  0, 406, 406, 406, 406, 406, 406, 407, 407, 407,
3447  0, 0, 407, 407, 407, 407, 407, 407, 407, 407,
3448  408, 408, 408, 0, 0, 408, 0, 0, 0, 408,
3449  408, 408, 408, 0, 417, 417, 408, 417, 417, 417,
3450 
3451  417, 422, 422, 0, 422, 422, 422, 422, 436, 436,
3452  436, 436, 0, 0, 408, 409, 409, 409, 0, 0,
3453  409, 0, 409, 409, 409, 409, 409, 409, 410, 410,
3454  410, 0, 0, 410, 0, 410, 410, 410, 410, 410,
3455  410, 412, 412, 412, 0, 0, 412, 0, 412, 412,
3456  412, 412, 412, 412, 413, 413, 413, 0, 0, 413,
3457  0, 413, 413, 413, 413, 413, 413, 414, 414, 414,
3458  0, 0, 414, 0, 414, 414, 414, 414, 414, 414,
3459  415, 415, 415, 0, 0, 415, 415, 415, 415, 415,
3460  415, 415, 415, 418, 418, 418, 0, 0, 418, 418,
3461 
3462  418, 418, 418, 418, 418, 418, 419, 419, 419, 0,
3463  0, 419, 0, 0, 0, 419, 419, 419, 419, 0,
3464  0, 0, 419, 444, 444, 444, 444, 451, 451, 451,
3465  451, 437, 437, 437, 437, 437, 0, 0, 0, 437,
3466  419, 420, 420, 420, 0, 0, 420, 0, 420, 420,
3467  420, 420, 420, 420, 421, 421, 421, 437, 0, 421,
3468  0, 421, 421, 421, 421, 421, 421, 423, 423, 423,
3469  0, 0, 423, 0, 423, 423, 423, 423, 423, 423,
3470  424, 424, 424, 0, 0, 424, 0, 424, 424, 424,
3471  424, 424, 424, 425, 425, 425, 0, 0, 425, 0,
3472 
3473  425, 425, 425, 425, 425, 425, 426, 426, 426, 0,
3474  0, 426, 426, 426, 426, 426, 426, 426, 426, 438,
3475  438, 438, 0, 0, 438, 0, 438, 438, 438, 438,
3476  438, 438, 439, 439, 439, 0, 0, 439, 0, 439,
3477  439, 439, 439, 439, 439, 445, 445, 445, 0, 0,
3478  445, 0, 0, 0, 445, 445, 445, 445, 446, 446,
3479  446, 0, 0, 446, 0, 446, 446, 446, 446, 446,
3480  446, 447, 447, 447, 0, 0, 447, 0, 447, 447,
3481  447, 447, 447, 447, 448, 448, 448, 0, 0, 448,
3482  0, 0, 448, 448, 448, 448, 448, 0, 0, 0,
3483 
3484  448, 450, 450, 450, 450, 450, 459, 459, 459, 459,
3485  460, 460, 460, 460, 467, 467, 467, 467, 448, 449,
3486  449, 449, 0, 0, 449, 0, 449, 449, 449, 449,
3487  449, 449, 452, 452, 452, 0, 0, 452, 0, 0,
3488  452, 452, 452, 452, 452, 0, 0, 0, 452, 466,
3489  466, 466, 466, 466, 461, 461, 461, 461, 461, 686,
3490  686, 686, 461, 0, 686, 0, 452, 453, 453, 453,
3491  686, 0, 453, 0, 453, 453, 453, 453, 453, 453,
3492  461, 463, 463, 463, 463, 463, 463, 463, 463, 463,
3493  463, 463, 463, 463, 463, 463, 463, 463, 463, 463,
3494 
3495  463, 463, 463, 463, 463, 463, 463, 463, 463, 463,
3496  463, 463, 463, 463, 463, 463, 463, 463, 463, 463,
3497  463, 463, 463, 463, 463, 463, 463, 463, 468, 468,
3498  468, 0, 0, 468, 0, 0, 468, 468, 468, 468,
3499  468, 0, 0, 0, 468, 474, 474, 474, 0, 0,
3500  474, 475, 475, 475, 475, 481, 481, 481, 481, 481,
3501  0, 474, 468, 469, 469, 469, 0, 0, 469, 0,
3502  469, 469, 469, 469, 469, 469, 470, 470, 470, 474,
3503  0, 470, 0, 470, 470, 470, 470, 470, 470, 476,
3504  476, 476, 0, 0, 476, 0, 0, 0, 476, 476,
3505 
3506  476, 476, 477, 477, 477, 0, 0, 477, 0, 477,
3507  477, 477, 477, 477, 477, 478, 478, 478, 0, 0,
3508  478, 0, 478, 478, 478, 478, 478, 478, 479, 479,
3509  479, 0, 0, 479, 0, 0, 479, 479, 479, 479,
3510  479, 0, 0, 0, 479, 482, 482, 482, 482, 490,
3511  490, 490, 490, 491, 491, 491, 491, 493, 493, 493,
3512  493, 0, 479, 480, 480, 480, 0, 0, 480, 0,
3513  480, 480, 480, 480, 480, 480, 483, 483, 483, 0,
3514  0, 483, 0, 0, 483, 483, 483, 483, 483, 0,
3515  0, 0, 483, 489, 489, 489, 0, 0, 489, 494,
3516 
3517  494, 494, 494, 498, 498, 498, 498, 498, 0, 489,
3518  483, 484, 484, 484, 0, 0, 484, 0, 484, 484,
3519  484, 484, 484, 484, 0, 0, 0, 489, 492, 492,
3520  492, 0, 0, 492, 0, 0, 0, 492, 492, 492,
3521  492, 0, 0, 0, 492, 499, 499, 499, 499, 507,
3522  507, 507, 507, 500, 500, 500, 500, 500, 0, 0,
3523  0, 500, 492, 495, 495, 495, 0, 0, 495, 0,
3524  495, 495, 495, 495, 495, 495, 496, 496, 496, 500,
3525  0, 496, 0, 496, 496, 496, 496, 496, 496, 501,
3526  501, 501, 0, 0, 501, 0, 501, 501, 501, 501,
3527 
3528  501, 501, 502, 502, 502, 0, 0, 502, 0, 502,
3529  502, 502, 502, 502, 502, 508, 508, 508, 0, 0,
3530  508, 0, 0, 0, 508, 508, 508, 508, 509, 509,
3531  509, 0, 0, 509, 0, 509, 509, 509, 509, 509,
3532  509, 510, 510, 510, 0, 0, 510, 0, 510, 510,
3533  510, 510, 510, 510, 511, 511, 511, 0, 0, 511,
3534  0, 0, 511, 511, 511, 511, 511, 0, 0, 0,
3535  511, 513, 513, 513, 513, 513, 514, 514, 514, 514,
3536  522, 522, 522, 522, 523, 523, 523, 523, 511, 512,
3537  512, 512, 0, 0, 512, 0, 512, 512, 512, 512,
3538 
3539  512, 512, 515, 515, 515, 0, 0, 515, 0, 0,
3540  515, 515, 515, 515, 515, 0, 0, 0, 515, 525,
3541  525, 525, 525, 525, 524, 524, 524, 524, 524, 928,
3542  928, 928, 524, 0, 928, 0, 515, 516, 516, 516,
3543  0, 0, 516, 0, 516, 516, 516, 516, 516, 516,
3544  524, 526, 526, 526, 526, 527, 527, 527, 527, 527,
3545  0, 0, 0, 527, 534, 534, 534, 534, 540, 540,
3546  540, 540, 540, 541, 541, 541, 541, 549, 549, 549,
3547  549, 527, 528, 528, 528, 0, 0, 528, 0, 528,
3548  528, 528, 528, 528, 528, 529, 529, 529, 0, 0,
3549 
3550  529, 0, 529, 529, 529, 529, 529, 529, 535, 535,
3551  535, 0, 0, 535, 0, 0, 0, 535, 535, 535,
3552  535, 536, 536, 536, 0, 0, 536, 0, 536, 536,
3553  536, 536, 536, 536, 537, 537, 537, 0, 0, 537,
3554  0, 537, 537, 537, 537, 537, 537, 538, 538, 538,
3555  0, 0, 538, 0, 0, 538, 538, 538, 538, 538,
3556  0, 0, 0, 538, 550, 550, 550, 550, 553, 553,
3557  553, 553, 551, 551, 551, 551, 551, 0, 0, 0,
3558  551, 538, 539, 539, 539, 0, 0, 539, 0, 539,
3559  539, 539, 539, 539, 539, 542, 542, 542, 551, 0,
3560 
3561  542, 0, 0, 542, 542, 542, 542, 542, 0, 0,
3562  0, 542, 552, 552, 552, 552, 552, 561, 561, 561,
3563  561, 567, 567, 567, 567, 567, 0, 0, 0, 542,
3564  543, 543, 543, 0, 0, 543, 0, 543, 543, 543,
3565  543, 543, 543, 554, 554, 554, 0, 0, 554, 0,
3566  0, 554, 554, 554, 554, 554, 0, 0, 0, 554,
3567  560, 560, 560, 0, 0, 560, 568, 568, 568, 568,
3568  576, 576, 576, 576, 0, 0, 560, 554, 555, 555,
3569  555, 0, 0, 555, 0, 555, 555, 555, 555, 555,
3570  555, 556, 556, 556, 560, 0, 556, 0, 556, 556,
3571 
3572  556, 556, 556, 556, 562, 562, 562, 0, 0, 562,
3573  0, 0, 0, 562, 562, 562, 562, 563, 563, 563,
3574  0, 0, 563, 0, 563, 563, 563, 563, 563, 563,
3575  564, 564, 564, 0, 0, 564, 0, 564, 564, 564,
3576  564, 564, 564, 565, 565, 565, 0, 0, 565, 0,
3577  0, 565, 565, 565, 565, 565, 0, 0, 0, 565,
3578  575, 575, 575, 0, 0, 575, 577, 577, 577, 577,
3579  579, 579, 579, 579, 0, 0, 575, 565, 566, 566,
3580  566, 0, 0, 566, 0, 566, 566, 566, 566, 566,
3581  566, 569, 569, 569, 575, 0, 569, 0, 0, 569,
3582 
3583  569, 569, 569, 569, 0, 0, 0, 569, 580, 580,
3584  580, 580, 584, 584, 584, 584, 584, 585, 585, 585,
3585  585, 593, 593, 593, 593, 569, 570, 570, 570, 0,
3586  0, 570, 0, 570, 570, 570, 570, 570, 570, 578,
3587  578, 578, 0, 0, 578, 0, 0, 0, 578, 578,
3588  578, 578, 0, 0, 0, 578, 599, 599, 599, 599,
3589  599, 0, 0, 0, 586, 586, 586, 586, 586, 0,
3590  0, 0, 586, 578, 581, 581, 581, 0, 0, 581,
3591  0, 581, 581, 581, 581, 581, 581, 582, 582, 582,
3592  586, 0, 582, 0, 582, 582, 582, 582, 582, 582,
3593 
3594  587, 587, 587, 0, 0, 587, 0, 587, 587, 587,
3595  587, 587, 587, 588, 588, 588, 0, 0, 588, 0,
3596  588, 588, 588, 588, 588, 588, 594, 594, 594, 0,
3597  0, 594, 0, 0, 0, 594, 594, 594, 594, 595,
3598  595, 595, 0, 0, 595, 0, 595, 595, 595, 595,
3599  595, 595, 596, 596, 596, 0, 0, 596, 0, 596,
3600  596, 596, 596, 596, 596, 597, 597, 597, 0, 0,
3601  597, 0, 0, 597, 597, 597, 597, 597, 0, 0,
3602  0, 597, 600, 600, 600, 600, 608, 608, 608, 608,
3603  609, 609, 609, 609, 691, 691, 691, 691, 0, 597,
3604 
3605  598, 598, 598, 0, 0, 598, 0, 598, 598, 598,
3606  598, 598, 598, 601, 601, 601, 0, 0, 601, 0,
3607  0, 601, 601, 601, 601, 601, 611, 611, 611, 601,
3608  0, 611, 0, 0, 0, 610, 610, 610, 610, 610,
3609  937, 937, 937, 610, 0, 937, 0, 601, 602, 602,
3610  602, 0, 937, 602, 611, 602, 602, 602, 602, 602,
3611  602, 610, 616, 616, 616, 616, 0, 617, 617, 616,
3612  617, 617, 617, 617, 622, 622, 0, 622, 622, 622,
3613  622, 692, 692, 692, 692, 0, 0, 616, 618, 618,
3614  618, 0, 0, 618, 618, 618, 618, 618, 618, 618,
3615 
3616  618, 619, 619, 619, 0, 0, 619, 0, 619, 619,
3617  619, 619, 619, 619, 0, 627, 627, 619, 627, 627,
3618  627, 627, 639, 639, 0, 639, 639, 639, 639, 699,
3619  699, 699, 699, 0, 0, 619, 620, 620, 620, 0,
3620  0, 620, 620, 620, 620, 620, 620, 620, 620, 621,
3621  621, 621, 0, 0, 621, 0, 0, 0, 621, 621,
3622  621, 621, 0, 644, 644, 621, 644, 644, 644, 644,
3623  704, 704, 704, 704, 704, 643, 643, 643, 643, 0,
3624  0, 0, 643, 621, 623, 623, 623, 0, 0, 623,
3625  623, 623, 623, 623, 623, 623, 623, 624, 624, 624,
3626 
3627  643, 0, 624, 0, 0, 0, 624, 624, 624, 624,
3628  0, 649, 649, 624, 649, 649, 649, 649, 705, 705,
3629  705, 705, 0, 651, 651, 651, 651, 0, 0, 0,
3630  651, 624, 625, 625, 625, 0, 0, 625, 0, 625,
3631  625, 625, 625, 625, 625, 626, 626, 626, 651, 0,
3632  626, 0, 626, 626, 626, 626, 626, 626, 628, 628,
3633  628, 0, 0, 628, 0, 628, 628, 628, 628, 628,
3634  628, 629, 629, 629, 0, 0, 629, 0, 629, 629,
3635  629, 629, 629, 629, 630, 630, 630, 0, 0, 630,
3636  0, 630, 630, 630, 630, 630, 630, 631, 631, 631,
3637 
3638  0, 0, 631, 631, 631, 631, 631, 631, 631, 631,
3639  632, 632, 632, 0, 0, 632, 0, 632, 632, 632,
3640  632, 632, 632, 0, 652, 652, 632, 652, 652, 652,
3641  652, 657, 657, 0, 657, 657, 657, 657, 713, 713,
3642  713, 713, 0, 0, 632, 633, 633, 633, 0, 0,
3643  633, 0, 633, 633, 633, 633, 633, 633, 634, 634,
3644  634, 0, 0, 634, 0, 634, 634, 634, 634, 634,
3645  634, 635, 635, 635, 0, 0, 635, 0, 635, 635,
3646  635, 635, 635, 635, 636, 636, 636, 0, 0, 636,
3647  636, 636, 636, 636, 636, 636, 636, 637, 637, 637,
3648 
3649  0, 0, 637, 0, 0, 0, 637, 637, 637, 637,
3650  0, 662, 662, 637, 662, 662, 662, 662, 674, 674,
3651  0, 674, 674, 674, 674, 718, 718, 718, 718, 718,
3652  0, 637, 638, 638, 638, 0, 0, 638, 0, 638,
3653  638, 638, 638, 638, 638, 640, 640, 640, 0, 0,
3654  640, 0, 640, 640, 640, 640, 640, 640, 641, 641,
3655  641, 0, 0, 641, 0, 641, 641, 641, 641, 641,
3656  641, 642, 642, 642, 0, 0, 642, 642, 642, 642,
3657  642, 642, 642, 642, 645, 645, 645, 0, 0, 645,
3658  645, 645, 645, 645, 645, 645, 645, 646, 646, 646,
3659 
3660  0, 0, 646, 0, 646, 646, 646, 646, 646, 646,
3661  0, 679, 679, 646, 679, 679, 679, 679, 719, 719,
3662  719, 719, 0, 678, 678, 678, 678, 0, 0, 0,
3663  678, 646, 647, 647, 647, 0, 0, 647, 647, 647,
3664  647, 647, 647, 647, 647, 648, 648, 648, 678, 0,
3665  648, 0, 0, 0, 648, 648, 648, 648, 0, 684,
3666  684, 648, 684, 684, 684, 684, 727, 727, 727, 727,
3667  706, 706, 706, 706, 706, 0, 0, 0, 706, 648,
3668  650, 650, 650, 0, 0, 650, 650, 650, 650, 650,
3669  650, 650, 650, 653, 653, 653, 706, 0, 653, 653,
3670 
3671  653, 653, 653, 653, 653, 653, 654, 654, 654, 0,
3672  0, 654, 0, 654, 654, 654, 654, 654, 654, 0,
3673  0, 0, 654, 698, 698, 698, 0, 0, 698, 728,
3674  728, 728, 728, 734, 734, 734, 734, 734, 0, 698,
3675  654, 655, 655, 655, 0, 0, 655, 655, 655, 655,
3676  655, 655, 655, 655, 656, 656, 656, 698, 0, 656,
3677  0, 0, 0, 656, 656, 656, 656, 0, 0, 0,
3678  656, 735, 735, 735, 735, 743, 743, 743, 743, 729,
3679  729, 729, 729, 729, 0, 0, 0, 729, 656, 658,
3680  658, 658, 0, 0, 658, 658, 658, 658, 658, 658,
3681 
3682  658, 658, 659, 659, 659, 729, 0, 659, 0, 0,
3683  0, 659, 659, 659, 659, 0, 0, 0, 659, 744,
3684  744, 744, 744, 746, 746, 746, 746, 745, 745, 745,
3685  745, 745, 0, 0, 0, 745, 659, 660, 660, 660,
3686  0, 0, 660, 0, 660, 660, 660, 660, 660, 660,
3687  661, 661, 661, 745, 0, 661, 0, 661, 661, 661,
3688  661, 661, 661, 663, 663, 663, 0, 0, 663, 0,
3689  663, 663, 663, 663, 663, 663, 664, 664, 664, 0,
3690  0, 664, 0, 664, 664, 664, 664, 664, 664, 665,
3691  665, 665, 0, 0, 665, 0, 665, 665, 665, 665,
3692 
3693  665, 665, 666, 666, 666, 0, 0, 666, 666, 666,
3694  666, 666, 666, 666, 666, 667, 667, 667, 0, 0,
3695  667, 0, 667, 667, 667, 667, 667, 667, 0, 0,
3696  0, 667, 751, 751, 751, 751, 752, 752, 752, 752,
3697  753, 753, 753, 753, 753, 0, 0, 0, 753, 667,
3698  668, 668, 668, 0, 0, 668, 0, 668, 668, 668,
3699  668, 668, 668, 669, 669, 669, 753, 0, 669, 0,
3700  669, 669, 669, 669, 669, 669, 670, 670, 670, 0,
3701  0, 670, 0, 670, 670, 670, 670, 670, 670, 671,
3702  671, 671, 0, 0, 671, 671, 671, 671, 671, 671,
3703 
3704  671, 671, 672, 672, 672, 0, 0, 672, 0, 0,
3705  0, 672, 672, 672, 672, 0, 0, 0, 672, 754,
3706  754, 754, 754, 755, 755, 755, 755, 762, 762, 762,
3707  762, 767, 767, 767, 767, 0, 672, 673, 673, 673,
3708  0, 0, 673, 0, 673, 673, 673, 673, 673, 673,
3709  675, 675, 675, 0, 0, 675, 0, 675, 675, 675,
3710  675, 675, 675, 676, 676, 676, 0, 0, 676, 0,
3711  676, 676, 676, 676, 676, 676, 677, 677, 677, 0,
3712  0, 677, 677, 677, 677, 677, 677, 677, 677, 680,
3713  680, 680, 0, 0, 680, 680, 680, 680, 680, 680,
3714 
3715  680, 680, 681, 681, 681, 0, 0, 681, 0, 681,
3716  681, 681, 681, 681, 681, 0, 0, 0, 681, 761,
3717  761, 761, 0, 0, 761, 768, 768, 768, 768, 775,
3718  775, 775, 775, 0, 0, 761, 681, 682, 682, 682,
3719  0, 0, 682, 682, 682, 682, 682, 682, 682, 682,
3720  683, 683, 683, 761, 0, 683, 0, 0, 0, 683,
3721  683, 683, 683, 0, 0, 0, 683, 774, 774, 774,
3722  0, 0, 774, 780, 780, 780, 780, 780, 781, 781,
3723  781, 781, 0, 774, 683, 685, 685, 685, 0, 0,
3724  685, 685, 685, 685, 685, 685, 685, 685, 693, 693,
3725 
3726  693, 774, 0, 693, 0, 693, 693, 693, 693, 693,
3727  693, 694, 694, 694, 0, 0, 694, 0, 694, 694,
3728  694, 694, 694, 694, 696, 696, 696, 0, 0, 696,
3729  0, 696, 696, 696, 696, 696, 696, 697, 697, 697,
3730  0, 0, 697, 0, 697, 697, 697, 697, 697, 697,
3731  700, 700, 700, 0, 0, 700, 0, 0, 0, 700,
3732  700, 700, 700, 701, 701, 701, 0, 0, 701, 0,
3733  701, 701, 701, 701, 701, 701, 702, 702, 702, 0,
3734  0, 702, 0, 702, 702, 702, 702, 702, 702, 707,
3735  707, 707, 0, 0, 707, 0, 707, 707, 707, 707,
3736 
3737  707, 707, 708, 708, 708, 0, 0, 708, 0, 708,
3738  708, 708, 708, 708, 708, 714, 714, 714, 0, 0,
3739  714, 0, 0, 0, 714, 714, 714, 714, 715, 715,
3740  715, 0, 0, 715, 0, 715, 715, 715, 715, 715,
3741  715, 716, 716, 716, 0, 0, 716, 0, 716, 716,
3742  716, 716, 716, 716, 717, 717, 717, 0, 0, 717,
3743  0, 0, 717, 717, 717, 717, 717, 0, 0, 0,
3744  717, 789, 789, 789, 789, 0, 782, 782, 782, 782,
3745  782, 938, 938, 938, 782, 0, 938, 0, 717, 720,
3746  720, 720, 0, 0, 720, 0, 0, 720, 720, 720,
3747 
3748  720, 720, 782, 0, 0, 720, 794, 794, 794, 794,
3749  794, 795, 795, 795, 795, 803, 803, 803, 803, 804,
3750  804, 804, 804, 720, 721, 721, 721, 0, 0, 721,
3751  0, 721, 721, 721, 721, 721, 721, 722, 722, 722,
3752  0, 0, 722, 0, 722, 722, 722, 722, 722, 722,
3753  730, 730, 730, 0, 0, 730, 0, 730, 730, 730,
3754  730, 730, 730, 731, 731, 731, 0, 0, 731, 0,
3755  731, 731, 731, 731, 731, 731, 732, 732, 732, 0,
3756  0, 732, 0, 0, 732, 732, 732, 732, 732, 0,
3757  0, 0, 732, 810, 810, 810, 810, 810, 0, 0,
3758 
3759  0, 805, 805, 805, 805, 805, 0, 0, 0, 805,
3760  732, 733, 733, 733, 0, 0, 733, 0, 733, 733,
3761  733, 733, 733, 733, 736, 736, 736, 805, 0, 736,
3762  0, 0, 736, 736, 736, 736, 736, 0, 0, 0,
3763  736, 811, 811, 811, 811, 819, 819, 819, 819, 820,
3764  820, 820, 820, 822, 822, 822, 822, 0, 736, 737,
3765  737, 737, 0, 0, 737, 0, 737, 737, 737, 737,
3766  737, 737, 747, 747, 747, 0, 0, 747, 0, 0,
3767  0, 747, 747, 747, 747, 748, 748, 748, 0, 0,
3768  748, 0, 748, 748, 748, 748, 748, 748, 749, 749,
3769 
3770  749, 0, 0, 749, 0, 749, 749, 749, 749, 749,
3771  749, 750, 750, 750, 0, 0, 750, 0, 0, 750,
3772  750, 750, 750, 750, 0, 0, 0, 750, 827, 827,
3773  827, 827, 828, 828, 828, 828, 821, 821, 821, 821,
3774  821, 0, 0, 0, 821, 750, 756, 756, 756, 0,
3775  0, 756, 0, 756, 756, 756, 756, 756, 756, 757,
3776  757, 757, 821, 0, 757, 0, 757, 757, 757, 757,
3777  757, 757, 759, 759, 759, 0, 0, 759, 0, 759,
3778  759, 759, 759, 759, 759, 760, 760, 760, 0, 0,
3779  760, 0, 760, 760, 760, 760, 760, 760, 763, 763,
3780 
3781  763, 0, 0, 763, 0, 0, 0, 763, 763, 763,
3782  763, 764, 764, 764, 0, 0, 764, 0, 764, 764,
3783  764, 764, 764, 764, 765, 765, 765, 0, 0, 765,
3784  0, 765, 765, 765, 765, 765, 765, 769, 769, 769,
3785  0, 0, 769, 0, 769, 769, 769, 769, 769, 769,
3786  770, 770, 770, 0, 0, 770, 0, 770, 770, 770,
3787  770, 770, 770, 772, 772, 772, 0, 0, 772, 0,
3788  772, 772, 772, 772, 772, 772, 773, 773, 773, 0,
3789  0, 773, 0, 773, 773, 773, 773, 773, 773, 776,
3790  776, 776, 0, 0, 776, 0, 0, 0, 776, 776,
3791 
3792  776, 776, 777, 777, 777, 0, 0, 777, 0, 777,
3793  777, 777, 777, 777, 777, 778, 778, 778, 0, 0,
3794  778, 0, 778, 778, 778, 778, 778, 778, 783, 783,
3795  783, 0, 0, 783, 0, 783, 783, 783, 783, 783,
3796  783, 784, 784, 784, 0, 0, 784, 0, 784, 784,
3797  784, 784, 784, 784, 790, 790, 790, 0, 0, 790,
3798  0, 0, 0, 790, 790, 790, 790, 791, 791, 791,
3799  0, 0, 791, 0, 791, 791, 791, 791, 791, 791,
3800  792, 792, 792, 0, 0, 792, 0, 792, 792, 792,
3801  792, 792, 792, 793, 793, 793, 0, 0, 793, 0,
3802 
3803  0, 793, 793, 793, 793, 793, 0, 0, 0, 793,
3804  830, 830, 830, 830, 0, 829, 829, 829, 829, 829,
3805  939, 939, 939, 829, 0, 939, 0, 793, 796, 796,
3806  796, 0, 0, 796, 0, 0, 796, 796, 796, 796,
3807  796, 829, 0, 0, 796, 831, 831, 831, 831, 838,
3808  838, 838, 838, 843, 843, 843, 0, 0, 843, 0,
3809  0, 843, 796, 797, 797, 797, 0, 0, 797, 0,
3810  797, 797, 797, 797, 797, 797, 798, 798, 798, 0,
3811  0, 798, 0, 798, 798, 798, 798, 798, 798, 806,
3812  806, 806, 0, 0, 806, 0, 806, 806, 806, 806,
3813 
3814  806, 806, 807, 807, 807, 0, 0, 807, 0, 807,
3815  807, 807, 807, 807, 807, 808, 808, 808, 0, 0,
3816  808, 0, 0, 808, 808, 808, 808, 808, 0, 0,
3817  0, 808, 837, 837, 837, 848, 848, 837, 848, 848,
3818  848, 848, 865, 865, 865, 865, 865, 0, 837, 808,
3819  809, 809, 809, 0, 0, 809, 0, 809, 809, 809,
3820  809, 809, 809, 812, 812, 812, 837, 0, 812, 0,
3821  0, 812, 812, 812, 812, 812, 0, 853, 853, 812,
3822  853, 853, 853, 853, 867, 867, 867, 867, 867, 847,
3823  847, 847, 847, 0, 0, 0, 847, 812, 813, 813,
3824 
3825  813, 0, 0, 813, 0, 813, 813, 813, 813, 813,
3826  813, 823, 823, 823, 847, 0, 823, 0, 0, 0,
3827  823, 823, 823, 823, 824, 824, 824, 0, 0, 824,
3828  0, 824, 824, 824, 824, 824, 824, 825, 825, 825,
3829  0, 0, 825, 0, 825, 825, 825, 825, 825, 825,
3830  826, 826, 826, 0, 0, 826, 0, 0, 826, 826,
3831  826, 826, 826, 0, 858, 858, 826, 858, 858, 858,
3832  858, 870, 870, 870, 870, 870, 862, 862, 862, 862,
3833  0, 0, 0, 862, 826, 832, 832, 832, 0, 0,
3834  832, 0, 832, 832, 832, 832, 832, 832, 833, 833,
3835 
3836  833, 862, 0, 833, 0, 833, 833, 833, 833, 833,
3837  833, 835, 835, 835, 0, 0, 835, 0, 835, 835,
3838  835, 835, 835, 835, 836, 836, 836, 0, 0, 836,
3839  0, 836, 836, 836, 836, 836, 836, 839, 839, 839,
3840  0, 0, 839, 0, 0, 0, 839, 839, 839, 839,
3841  840, 840, 840, 0, 0, 840, 0, 840, 840, 840,
3842  840, 840, 840, 841, 841, 841, 0, 0, 841, 0,
3843  841, 841, 841, 841, 841, 841, 849, 849, 849, 0,
3844  0, 849, 849, 849, 849, 849, 849, 849, 849, 850,
3845  850, 850, 0, 0, 850, 0, 850, 850, 850, 850,
3846 
3847  850, 850, 0, 863, 863, 850, 863, 863, 863, 863,
3848  864, 864, 0, 864, 864, 864, 864, 872, 872, 872,
3849  872, 872, 0, 850, 851, 851, 851, 0, 0, 851,
3850  851, 851, 851, 851, 851, 851, 851, 852, 852, 852,
3851  0, 0, 852, 0, 0, 0, 852, 852, 852, 852,
3852  0, 866, 866, 852, 866, 866, 866, 866, 868, 868,
3853  0, 868, 868, 868, 868, 875, 875, 875, 875, 875,
3854  0, 852, 854, 854, 854, 0, 0, 854, 854, 854,
3855  854, 854, 854, 854, 854, 855, 855, 855, 0, 0,
3856  855, 0, 855, 855, 855, 855, 855, 855, 0, 869,
3857 
3858  869, 855, 869, 869, 869, 869, 871, 871, 0, 871,
3859  871, 871, 871, 880, 880, 880, 880, 0, 0, 855,
3860  856, 856, 856, 0, 0, 856, 856, 856, 856, 856,
3861  856, 856, 856, 857, 857, 857, 0, 0, 857, 0,
3862  0, 0, 857, 857, 857, 857, 0, 873, 873, 857,
3863  873, 873, 873, 873, 874, 874, 0, 874, 874, 874,
3864  874, 881, 881, 881, 881, 0, 0, 857, 859, 859,
3865  859, 0, 0, 859, 859, 859, 859, 859, 859, 859,
3866  859, 860, 860, 860, 0, 0, 860, 0, 860, 860,
3867  860, 860, 860, 860, 0, 876, 876, 860, 876, 876,
3868 
3869  876, 876, 877, 877, 877, 0, 0, 877, 940, 940,
3870  940, 877, 0, 940, 0, 860, 861, 861, 861, 0,
3871  0, 861, 861, 861, 861, 861, 861, 861, 861, 882,
3872  882, 882, 0, 0, 882, 0, 882, 882, 882, 882,
3873  882, 882, 887, 887, 887, 0, 0, 887, 887, 887,
3874  888, 888, 888, 888, 896, 896, 896, 896, 887, 904,
3875  904, 904, 904, 905, 905, 905, 905, 906, 906, 906,
3876  906, 907, 907, 907, 907, 0, 887, 889, 889, 889,
3877  0, 0, 889, 0, 0, 0, 889, 889, 889, 889,
3878  890, 890, 890, 0, 0, 890, 0, 890, 890, 890,
3879 
3880  890, 890, 890, 895, 895, 895, 0, 0, 895, 895,
3881  895, 908, 908, 908, 908, 0, 0, 0, 908, 895,
3882  909, 909, 909, 909, 910, 910, 910, 910, 912, 912,
3883  912, 912, 914, 914, 914, 914, 908, 895, 897, 897,
3884  897, 0, 0, 897, 0, 0, 0, 897, 897, 897,
3885  897, 898, 898, 898, 0, 0, 898, 0, 898, 898,
3886  898, 898, 898, 898, 903, 903, 903, 0, 0, 903,
3887  903, 903, 0, 911, 911, 911, 911, 911, 0, 0,
3888  903, 911, 915, 915, 915, 915, 0, 0, 916, 916,
3889  916, 916, 936, 936, 936, 916, 0, 936, 903, 911,
3890 
3891  913, 913, 913, 0, 0, 913, 0, 0, 0, 913,
3892  913, 913, 913, 916, 917, 917, 917, 917, 918, 918,
3893  918, 918, 919, 919, 919, 919, 919, 936, 0, 0,
3894  919, 920, 920, 920, 920, 921, 921, 921, 921, 922,
3895  922, 922, 922, 923, 923, 923, 923, 0, 919, 924,
3896  924, 924, 924, 0, 0, 0, 924, 925, 925, 925,
3897  925, 926, 926, 926, 926, 927, 927, 927, 927, 927,
3898  931, 931, 931, 927, 924, 931, 934, 934, 934, 0,
3899  941, 934, 941, 0, 0, 941, 0, 942, 942, 942,
3900  0, 927, 942, 943, 944, 943, 944, 0, 943, 944,
3901 
3902  945, 946, 945, 946, 0, 945, 946, 947, 0, 947,
3903  0, 0, 947, 931, 0, 0, 0, 0, 934, 949,
3904  949, 949, 949, 949, 949, 949, 949, 950, 950, 950,
3905  950, 950, 950, 950, 950, 951, 951, 951, 951, 951,
3906  951, 951, 951, 952, 952, 952, 952, 952, 952, 952,
3907  952, 953, 953, 953, 953, 953, 953, 953, 953, 954,
3908  0, 0, 954, 955, 0, 0, 955, 0, 955, 955,
3909  955, 956, 956, 956, 956, 956, 956, 956, 956, 957,
3910  0, 0, 957, 0, 957, 957, 958, 958, 958, 958,
3911  958, 958, 958, 958, 959, 959, 0, 959, 0, 959,
3912 
3913  959, 959, 960, 960, 960, 960, 960, 960, 960, 960,
3914  961, 961, 0, 961, 961, 961, 961, 961, 962, 962,
3915  962, 962, 962, 962, 962, 962, 963, 963, 963, 963,
3916  963, 963, 963, 963, 964, 964, 0, 0, 964, 964,
3917  966, 966, 966, 966, 966, 966, 966, 966, 967, 967,
3918  967, 967, 967, 967, 967, 967, 968, 968, 968, 968,
3919  968, 968, 968, 968, 969, 969, 969, 969, 969, 969,
3920  969, 969, 971, 971, 971, 971, 971, 971, 971, 971,
3921  972, 972, 972, 972, 972, 972, 972, 972, 973, 973,
3922  973, 973, 973, 973, 973, 973, 974, 974, 0, 974,
3923 
3924  0, 974, 974, 974, 975, 975, 975, 975, 975, 975,
3925  975, 975, 977, 977, 0, 977, 977, 977, 977, 977,
3926  978, 978, 978, 978, 978, 978, 978, 978, 979, 0,
3927  0, 979, 980, 980, 980, 980, 980, 980, 980, 980,
3928  981, 981, 981, 981, 981, 981, 981, 981, 982, 982,
3929  0, 0, 982, 982, 984, 984, 984, 984, 984, 984,
3930  984, 984, 986, 986, 986, 986, 986, 986, 986, 986,
3931  987, 987, 987, 987, 987, 987, 987, 987, 989, 989,
3932  989, 989, 989, 989, 989, 989, 990, 990, 990, 990,
3933  990, 990, 990, 990, 991, 991, 991, 991, 991, 991,
3934 
3935  991, 991, 992, 992, 992, 992, 992, 992, 992, 992,
3936  993, 993, 993, 993, 993, 993, 993, 993, 994, 994,
3937  994, 994, 994, 994, 994, 994, 995, 995, 995, 995,
3938  995, 995, 995, 995, 996, 996, 996, 996, 996, 996,
3939  996, 996, 997, 997, 997, 997, 997, 997, 997, 997,
3940  998, 998, 998, 998, 998, 998, 998, 998, 999, 999,
3941  999, 999, 999, 999, 999, 999, 1000, 1000, 1000, 1000,
3942  1000, 1000, 1000, 1000, 1001, 1001, 1001, 1001, 1001, 1001,
3943  1001, 1001, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002,
3944  1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1004, 1004,
3945 
3946  1004, 1004, 1004, 1004, 1004, 1004, 1005, 1005, 1005, 1005,
3947  1005, 1005, 1005, 1005, 1006, 0, 0, 1006, 1007, 1007,
3948  1007, 1007, 1007, 1007, 1007, 1007, 1008, 1008, 1008, 1008,
3949  1008, 1008, 1008, 1008, 1009, 1009, 1009, 1009, 1009, 1009,
3950  1009, 1009, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011,
3951  1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1013, 1013,
3952  1013, 1013, 1013, 1013, 1013, 1013, 1014, 1014, 1014, 1014,
3953  1014, 1014, 1014, 1014, 1015, 1015, 1015, 1015, 1015, 1015,
3954  1015, 1015, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016,
3955  1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1018, 1018,
3956 
3957  1018, 1018, 1018, 1018, 1018, 1018, 1019, 1019, 1019, 1019,
3958  1019, 1019, 1019, 1019, 1020, 1020, 1020, 1020, 1020, 1020,
3959  1020, 1020, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021,
3960  1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1023, 1023,
3961  1023, 1023, 1023, 1023, 1023, 1023, 1024, 1024, 1024, 1024,
3962  1024, 1024, 1024, 1024, 1025, 1025, 1025, 1025, 1025, 1025,
3963  1025, 1025, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026,
3964  1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1028, 1028,
3965  1028, 1028, 1028, 1028, 1028, 1028, 1029, 0, 0, 1029,
3966  1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1031, 1031,
3967 
3968  1031, 1031, 1031, 1031, 1031, 1031, 1032, 1032, 1032, 1032,
3969  1032, 1032, 1032, 1032, 1033, 1033, 1033, 1033, 1033, 1033,
3970  1033, 1033, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034,
3971  1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1036, 1036,
3972  1036, 1036, 1036, 1036, 1036, 1036, 1037, 1037, 1037, 1037,
3973  1037, 1037, 1037, 1037, 1038, 1038, 1038, 1038, 1038, 1038,
3974  1038, 1038, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039,
3975  1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1041, 1041,
3976  1041, 1041, 1041, 1041, 1041, 1041, 1042, 1042, 1042, 1042,
3977  1042, 1042, 1042, 1042, 1043, 1043, 1043, 1043, 1043, 1043,
3978 
3979  1043, 1043, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044,
3980  1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1046, 1046,
3981  1046, 1046, 1046, 1046, 1046, 1046, 1047, 1047, 1047, 1047,
3982  1047, 1047, 1047, 1047, 1048, 1048, 1048, 1048, 1048, 1048,
3983  1048, 1048, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049,
3984  1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1051, 1051,
3985  1051, 1051, 1051, 1051, 1051, 1051, 1052, 1052, 1052, 1052,
3986  1052, 1052, 1052, 1052, 1053, 1053, 1053, 1053, 1053, 1053,
3987  1053, 1053, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054,
3988  1055, 0, 0, 1055, 1056, 1056, 1056, 1056, 1056, 1056,
3989 
3990  1056, 1056, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057,
3991  1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1059, 1059,
3992  1059, 1059, 1059, 1059, 1059, 1059, 1060, 1060, 1060, 1060,
3993  1060, 1060, 1060, 1060, 1061, 1061, 1061, 1061, 1061, 1061,
3994  1061, 1061, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062,
3995  1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1064, 1064,
3996  1064, 1064, 1064, 1064, 1064, 1064, 1065, 1065, 1065, 1065,
3997  1065, 1065, 1065, 1065, 1066, 1066, 1066, 1066, 1066, 1066,
3998  1066, 1066, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067,
3999  1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1069, 1069,
4000 
4001  1069, 1069, 1069, 1069, 1069, 1069, 1070, 1070, 1070, 1070,
4002  1070, 1070, 1070, 1070, 1071, 1071, 1071, 1071, 1071, 1071,
4003  1071, 1071, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072,
4004  1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1074, 1074,
4005  1074, 1074, 1074, 1074, 1074, 1074, 1075, 1075, 1075, 1075,
4006  1075, 1075, 1075, 1075, 1076, 1076, 1076, 1076, 1076, 1076,
4007  1076, 1076, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077,
4008  1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1079, 1079,
4009  1079, 1079, 1079, 1079, 1079, 1079, 1080, 1080, 1080, 1080,
4010  1080, 1080, 1080, 1080, 1081, 0, 0, 1081, 1082, 1082,
4011 
4012  1082, 1082, 1082, 1082, 1082, 1082, 1083, 1083, 1083, 1083,
4013  1083, 1083, 1083, 1083, 1084, 1084, 1084, 1084, 1084, 1084,
4014  1084, 1084, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085,
4015  1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1087, 1087,
4016  1087, 1087, 1087, 1087, 1087, 1087, 1088, 1088, 1088, 1088,
4017  1088, 1088, 1088, 1088, 1089, 1089, 0, 1089, 1089, 1089,
4018  1089, 1089, 948, 948, 948, 948, 948, 948, 948, 948,
4019  948, 948, 948, 948, 948, 948, 948, 948, 948, 948,
4020  948, 948, 948, 948, 948, 948, 948, 948, 948, 948,
4021  948, 948, 948, 948, 948, 948, 948, 948, 948, 948,
4022 
4023  948, 948, 948, 948, 948, 948, 948, 948, 948, 948
4024 } ;
4025 
4026 //static yy_state_type yy_last_accepting_state;
4027 //static char *yy_last_accepting_cpos;
4028 
4029 //extern int yy_flex_debug;
4030 //int yy_flex_debug = 1;
4031 
4032 static const short int yy_rule_linenum[49] =
4033 { 0,
4034  122, 127, 128, 129, 130, 131, 132, 133, 134, 135,
4035  136, 137, 138, 141, 145, 149, 157, 160, 164, 169,
4036  177, 178, 180, 184, 195, 199, 205, 206, 211, 220,
4037  234, 235, 240, 249, 260, 263, 264, 266, 270, 274,
4038  279, 281, 282, 289, 295, 302, 305, 309
4039 } ;
4040 
4041 /* The intent behind this definition is that it'll catch
4042  * any uses of REJECT which flex missed.
4043  */
4044 #define REJECT reject_used_but_not_detected
4045 #define yymore() yymore_used_but_not_detected
4046 #define YY_MORE_ADJ 0
4047 //char *yytext;
4048 /**************************************************
4049  * VRML 2.0 Parser
4050  * Copyright (C) 1996 Silicon Graphics, Inc.
4051  *
4052  * Author(s) : Gavin Bell
4053  * Daniel Woods (first port)
4054  **************************************************
4055  */
4056 //#include "tokens.h"
4057 #include <string.h>
4058 
4059 // used to reset the lexer input after initialization of VRML nodes
4060 //static void (*theyyInput)(char *, int &, int);
4061 
4062 // We define the YY_INPUT so we an change the input source later
4063 #define YY_INPUT(buf, result, max_size) (*theyyInput)(buf, result, max_size,this);
4064 
4065 /* Current line number */
4066 //int currentLineNumber = 1;
4067 //void yyResetLineNumber() { currentLineNumber = 1; }
4068 
4069 //extern void yyerror(const char *);
4070 
4071  /* The YACC parser sets this to a token to direct the lexer */
4072  /* in cases where just syntax isn't enough: */
4073 //int expectToken = 0;
4074 
4075 /* True when parsing a multiple-valued field: */
4076 //static int parsing_mf = 0;
4077 
4078 /* These are used when parsing SFImage fields: */
4079 //static int sfImageIntsParsed = 0;
4080 //static int sfImageIntsExpected = 0;
4081 
4082 #ifdef __cplusplus
4083 //extern "C"
4084 #endif
4086 
4087 /* Normal state: parsing nodes. The initial start state is used */
4088 /* only to recognize the VRML header. */
4089 /* Start tokens for all of the field types, */
4090 /* except for MFNode and SFNode, which are almost completely handled */
4091 /* by the parser: */
4092 /* Big hairy expression for floating point numbers: */
4093 /* Ints are decimal or hex (0x##): */
4094 /* Whitespace. Using this pattern can screw up currentLineNumber, */
4095 /* so it is only used wherever it is really convenient and it is */
4096 /* extremely unlikely that the user will put in a carriage return */
4097 /* (example: between the floats in an SFVec3f) */
4098 /* And the same pattern without the newline */
4099 /* Legal characters to start an identifier */
4100 /* Legal other characters in an identifier */
4101 
4102 /* Macros after this point can all be overridden by user definitions in
4103  * section 1.
4104  */
4105 
4106 #ifdef YY_MALLOC_DECL
4107 YY_MALLOC_DECL
4108 #else
4109 #if __STDC__
4110 #ifndef __cplusplus
4111 #include <stdlib.h>
4112 #endif
4113 #else
4114 /* Just try to get by without declaring the routines. This will fail
4115  * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
4116  * or sizeof(void*) != sizeof(int).
4117  */
4118 #endif
4119 #endif
4120 
4121 /* Amount of stuff to slurp up with each read. */
4122 #ifndef YY_READ_BUF_SIZE
4123 #define YY_READ_BUF_SIZE 8192
4124 #endif
4125 
4126 /* Copy whatever the last rule matched to the standard output. */
4127 
4128 #ifndef ECHO
4129 /* This used to be an fputs(), but since the string might contain NUL's,
4130  * we now use fwrite().
4131  */
4132 #define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
4133 #endif
4134 
4135 /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
4136  * is returned in "result".
4137  */
4138 #ifndef YY_INPUT
4139 #define YY_INPUT(buf,result,max_size) \
4140  if ( yy_current_buffer->yy_is_interactive ) \
4141  { \
4142  int c = getc( yyin ); \
4143  result = c == EOF ? 0 : 1; \
4144  buf[0] = (char) c; \
4145  } \
4146  else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \
4147  && ferror( yyin ) ) \
4148  YY_FATAL_ERROR( "input in flex scanner failed" );
4149 #endif
4150 
4151 /* No semi-colon after return; correct usage is to write "yyterminate();" -
4152  * we don't want an extra ';' after the "return" because that will cause
4153  * some compilers to complain about unreachable statements.
4154  */
4155 #ifndef yyterminate
4156 #define yyterminate() return YY_NULL
4157 #endif
4158 
4159 /* Number of entries by which start-condition stack grows. */
4160 #ifndef YY_START_STACK_INCR
4161 #define YY_START_STACK_INCR 25
4162 #endif
4163 
4164 /* Report a fatal error. */
4165 #ifndef YY_FATAL_ERROR
4166 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
4167 #endif
4168 
4169 /* Default declaration of generated scanner - a define so the user can
4170  * easily add parameters.
4171  */
4172 #ifndef YY_DECL
4173 #define YY_DECL int yylex ( vtkVRMLImporter* self )
4174 #endif
4175 
4176 /* Code executed at the beginning of each rule, after yytext and yyleng
4177  * have been set up.
4178  */
4179 #ifndef YY_USER_ACTION
4180 #define YY_USER_ACTION
4181 #endif
4182 
4183 /* Code executed at the end of each rule. */
4184 #ifndef YY_BREAK
4185 #define YY_BREAK break;
4186 #endif
4187 
4188 
4190 {
4191  yy_state_type yy_current_state;
4192  char *yy_cp, *yy_bp;
4193  int yy_act;
4194 
4195 
4196 
4197 
4198  /* Switch into a new start state if the parser */
4199  /* just told us that we've read a field name */
4200  /* and should expect a field value (or IS) */
4201  if (expectToken != 0) {
4202  if (yy_flex_debug)
4203  fprintf(stderr,"LEX--> Start State %d\n", expectToken);
4204 
4205  /*
4206  * Annoying. This big switch is necessary because
4207  * LEX wants to assign particular numbers to start
4208  * tokens, and YACC wants to define all the tokens
4209  * used, too. Sigh.
4210  */
4211  switch(expectToken) {
4212  case SFBOOL: BEGIN SFB; break;
4213  case SFCOLOR: BEGIN SFC; break;
4214  case SFFLOAT: BEGIN SFF; break;
4215  case SFIMAGE: BEGIN SFIMG; break;
4216  case SFINT32: BEGIN SFI; break;
4217  case SFROTATION: BEGIN SFR; break;
4218  case SFSTRING: BEGIN SFS; break;
4219  case SFTIME: BEGIN SFT; break;
4220  case SFVEC2F: BEGIN SFV2; break;
4221  case SFVEC3F: BEGIN SFV3; break;
4222  case MFCOLOR: BEGIN MFC; break;
4223  case MFFLOAT: BEGIN MFF; break;
4224  case MFINT32: BEGIN MFI; break;
4225  case MFROTATION: BEGIN MFR; break;
4226  case MFSTRING: BEGIN MFS; break;
4227  case MFVEC2F: BEGIN MFV2; break;
4228  case MFVEC3F: BEGIN MFV3; break;
4229 
4230  /* SFNode and MFNode are special. Here the lexer just returns */
4231  /* "marker tokens" so the parser knows what type of field is */
4232  /* being parsed; unlike the other fields, parsing of SFNode/MFNode */
4233  /* field happens in the parser. */
4234  case MFNODE: expectToken = 0; return MFNODE;
4235  case SFNODE: expectToken = 0; return SFNODE;
4236 
4237  default: yyerror("ACK: Bad expectToken"); break;
4238  }
4239  }
4240 
4241 
4242  /* This is more complicated than they really need to be because */
4243  /* I was ambitious and made the whitespace-matching rule aggressive */
4244 
4245  if ( yy_init )
4246  {
4247 #ifdef YY_USER_INIT
4248  YY_USER_INIT;
4249 #endif
4250 
4251  if ( ! yy_start )
4252  yy_start = 1; /* first start state */
4253 
4254  if ( ! yyin )
4255  yyin = stdin;
4256 
4257  if ( ! yyout )
4258  yyout = stdout;
4259 
4260  if ( yy_current_buffer )
4262  else
4265 
4267 
4268  yy_init = 0;
4269  }
4270 
4271  while ( 1 ) /* loops until end-of-file is reached */
4272  {
4273  yy_cp = yy_c_buf_p;
4274 
4275  /* Support of yytext. */
4276  *yy_cp = yy_hold_char;
4277 
4278  /* yy_bp points to the position in yy_ch_buf of the start of
4279  * the current run.
4280  */
4281  yy_bp = yy_cp;
4282 
4283  yy_current_state = yy_start;
4284  yy_match:
4285  do
4286  {
4287  YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
4288  if ( yy_accept[yy_current_state] )
4289  {
4290  yy_last_accepting_state = yy_current_state;
4291  yy_last_accepting_cpos = yy_cp;
4292  }
4293  while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
4294  {
4295  yy_current_state = (int) yy_def[yy_current_state];
4296  if ( yy_current_state >= 949 )
4297  yy_c = yy_meta[(unsigned int) yy_c];
4298  }
4299  yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
4300  ++yy_cp;
4301  }
4302  while ( yy_base[yy_current_state] != 7663 );
4303 
4304  yy_find_action:
4305  yy_act = yy_accept[yy_current_state];
4306 
4308 
4309 
4310  do_action: /* This label is used only to access EOF actions. */
4311 
4312  if ( yy_flex_debug )
4313  {
4314  if ( yy_act == 0 )
4315  fprintf( stderr, "--scanner backing up\n" );
4316  else if ( yy_act < 49 )
4317  fprintf( stderr, "--accepting rule at line %d (\"%s\")\n",
4318  yy_rule_linenum[yy_act], yytext );
4319  else if ( yy_act == 49 )
4320  fprintf( stderr, "--accepting default rule (\"%s\")\n",
4321  yytext );
4322  else if ( yy_act == 50 )
4323  fprintf( stderr, "--(end of buffer or a NUL)\n" );
4324  else
4325  fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
4326  }
4327 
4328  switch ( yy_act )
4329  { /* beginning of action switch */
4330  case 0: /* must back up */
4331  /* undo the effects of YY_DO_BEFORE_ACTION */
4332  *yy_cp = yy_hold_char;
4333  yy_cp = yy_last_accepting_cpos;
4334  yy_current_state = yy_last_accepting_state;
4335  goto yy_find_action;
4336 
4337  case 1:
4339  { BEGIN NODE; }
4340  YY_BREAK
4341  /* The lexer is in the NODE state when parsing nodes, either */
4342  /* top-level nodes in the .wrl file, in a prototype implementation, */
4343  /* or when parsing the contents of SFNode or MFNode fields. */
4344  case 2:
4346  { return PROTO; }
4347  case 3:
4349  { return EXTERNPROTO; }
4350  case 4:
4352  { return DEF; }
4353  case 5:
4355  { return USE; }
4356  case 6:
4358  { return TO; }
4359  case 7:
4361  { return IS; }
4362  case 8:
4364  { return ROUTE; }
4365  case 9:
4367  { return SFN_NULL; }
4368  case 10:
4370  { return EVENTIN; }
4371  case 11:
4373  { return EVENTOUT; }
4374  case 12:
4376  { return FIELD; }
4377  case 13:
4379  { return EXPOSEDFIELD; }
4380  /* Legal identifiers: */
4381  case 14:
4383  {
4384  yylval.string = vtkVRMLAllocator::StrDup(yytext);
4385  return IDENTIFIER; }
4386  /* All fields may have an IS declaration: */
4387  case 15:
4389  { BEGIN NODE;
4390  expectToken = 0;
4391  yyless(0);
4392  }
4393  YY_BREAK
4394  case 16:
4396  { BEGIN NODE;
4397  expectToken = 0;
4398  yyless(0); /* put back the IS */
4399  }
4400  YY_BREAK
4401  /* All MF field types other than MFNode are completely parsed here */
4402  /* in the lexer, and one token is returned to the parser. They all */
4403  /* share the same rules for open and closing brackets: */
4404  case 17:
4406  { if (parsing_mf) yyerror("Double [");
4407  parsing_mf = 1;
4408  yylval.vec2f = self->FloatArrayNew();
4410  }
4411  YY_BREAK
4412  case 18:
4414  { if (parsing_mf) yyerror("Double [");
4415  parsing_mf = 1;
4416  yylval.mfint32 = self->IdTypeArrayNew();
4417  }
4418  YY_BREAK
4419  case 19:
4421  { if (parsing_mf) yyerror("Double [");
4422  parsing_mf = 1;
4423  yylval.vec3f = self->PointsNew();
4424  }
4425  YY_BREAK
4426  case 20:
4428  { if (!parsing_mf) yyerror("Unmatched ]");
4429  int tokenFieldType = expectToken;
4430  BEGIN NODE;
4431  parsing_mf = 0;
4432  expectToken = 0;
4433  return tokenFieldType;
4434  }
4435  case 21:
4437  { BEGIN NODE; expectToken = 0; yylval.sfint = 1; return SFBOOL; }
4438  case 22:
4440  { BEGIN NODE; expectToken = 0; yylval.sfint = 0; return SFBOOL; }
4441  case 23:
4443  { BEGIN NODE; expectToken = 0;
4444  yylval.sfint = atoi(yytext);
4445  return SFINT32;
4446  }
4447  case 24:
4449  { if (parsing_mf) {
4450  int num;
4451  num = atoi(yytext);
4452  yylval.mfint32->InsertNextValue(num);
4453  }
4454  else {
4455  BEGIN NODE; expectToken = 0; return MFINT32;
4456  }
4457  }
4458  YY_BREAK
4459  /* All the floating-point types are pretty similar: */
4460  case 25:
4462  { BEGIN NODE; expectToken = 0; float num;
4463  sscanf(yytext, "%f", &num);
4464  yylval.sffloat = num;
4465  return SFFLOAT; }
4466  case 26:
4468  { if (parsing_mf) ; /* Add to array... */
4469  else {
4470  /* No open bracket means a single value: */
4471  BEGIN NODE; expectToken = 0; return MFFLOAT;
4472  }
4473  }
4474  YY_BREAK
4475  case 27:
4477  { BEGIN NODE; expectToken = 0; return SFVEC2F; }
4478  case 28:
4480  {
4481  if (parsing_mf)
4482  {
4483  // .. add to array...
4484  float num[2];
4485  num[0] = atof(strtok(yytext, " "));
4486  num[1] = atof(strtok(NULL, " "));
4487  // equivalent to: sscanf(yytext, "%f %f", &num[0], &num[1]);
4489  }
4490  else
4491  {
4492  BEGIN NODE; expectToken = 0;
4493  return MFVEC2F;
4494  }
4495  }
4496  YY_BREAK
4497  case 29:
4499  { BEGIN NODE; expectToken = 0;
4500  float num[3];
4501  yylval.vec3f = self->PointsNew();
4502  num[0] = atof(strtok(yytext, " "));
4503  num[1] = atof(strtok(NULL, " "));
4504  num[2] = atof(strtok(NULL, " "));
4505  //sscanf(yytext, "%f %f %f", &num[0], &num[1], &num[2]);
4506  yylval.vec3f->InsertPoint(0, num);
4507  return SFVEC3F; }
4508  case 30:
4510  { if (parsing_mf) { /* .. add to array... */
4511  float num[3];
4512  num[0] = atof(strtok(yytext, " "));
4513  num[1] = atof(strtok(NULL, " "));
4514  num[2] = atof(strtok(NULL, " "));
4515  //sscanf(yytext, "%f %f %f", &num[0], &num[1], &num[2]);
4517  //return MFVEC3F;
4518  }
4519  else {
4520  BEGIN NODE; expectToken = 0;
4521  return MFVEC3F;
4522  }
4523  }
4524  YY_BREAK
4525  case 31:
4527  { BEGIN NODE; expectToken = 0; return SFROTATION; }
4528  case 32:
4530  { if (parsing_mf) ; /* .. add to array... */
4531  else {
4532  BEGIN NODE; expectToken = 0; return MFROTATION;
4533  }
4534  }
4535  YY_BREAK
4536  case 33:
4538  { BEGIN NODE; expectToken = 0;
4539  float num[3];
4540  yylval.vec3f = self->PointsNew();
4541  num[0] = atof(strtok(yytext, " "));
4542  num[1] = atof(strtok(NULL, " "));
4543  num[2] = atof(strtok(NULL, " "));
4544  //sscanf(yytext, "%f %f %f", &num[0], &num[1], &num[2]);
4545  yylval.vec3f->InsertPoint(0, num);
4546  return SFCOLOR; }
4547  case 34:
4549  { if (parsing_mf) { /* .. add to array... */
4550  float num[3];
4551  num[0] = atof(strtok(yytext, " "));
4552  num[1] = atof(strtok(NULL, " "));
4553  num[2] = atof(strtok(NULL, " "));
4555  }
4556  else {
4557  BEGIN NODE; expectToken = 0; return MFCOLOR;
4558  }
4559  }
4560  YY_BREAK
4561  case 35:
4563  { BEGIN NODE; expectToken = 0; return SFTIME; }
4564  /* SFString/MFString */
4565  case 36:
4567  { BEGIN IN_SFS; }
4568  YY_BREAK
4569  case 37:
4571  { BEGIN IN_MFS; }
4572  YY_BREAK
4573  /* Anything besides open-quote (or whitespace) is an error: */
4574  case 38:
4576  { yyerror("String missing open-quote");
4577  BEGIN NODE; expectToken = 0; return SFSTRING;
4578  }
4579  /* Expect open-quote, open-bracket, or whitespace: */
4580  case 39:
4582  { yyerror("String missing open-quote");
4583  BEGIN NODE; expectToken = 0; return MFSTRING;
4584  }
4585  /* Backslashed-quotes are OK: */
4586  case 40:
4588  ;
4589  YY_BREAK
4590  /* Gobble up anything besides quotes and newlines. */
4591  /* Newlines are legal in strings, but we exclude them here so */
4592  /* that line number are counted correctly by the catch-all newline */
4593  /* rule that applies to everything. */
4594  case 41:
4596  ;
4597  YY_BREAK
4598  /* Quote ends the string: */
4599  case 42:
4601  { BEGIN NODE; expectToken = 0; return SFSTRING; }
4602  case 43:
4604  { if (parsing_mf) BEGIN MFS; /* ... add to array ... */
4605  else {
4606  BEGIN NODE; expectToken = 0; return MFSTRING;
4607  }
4608  }
4609  YY_BREAK
4610  /* SFImage: width height numComponents then width*height integers: */
4611  case 44:
4613  { int w, h;
4614  sscanf(yytext, "%d %d", &w, &h);
4615  sfImageIntsExpected = 1+w*h;
4616  sfImageIntsParsed = 0;
4617  BEGIN IN_SFIMG;
4618  }
4619  YY_BREAK
4620  case 45:
4622  { ++sfImageIntsParsed;
4624  BEGIN NODE; expectToken = 0; return SFIMAGE;
4625  }
4626  }
4627  YY_BREAK
4628  /* Whitespace and catch-all rules apply to all start states: */
4629  case 46:
4631  ;
4632  YY_BREAK
4633  /* This is also whitespace, but we'll keep track of line number */
4634  /* to report in errors: */
4635  case 47:
4637  { ++currentLineNumber; }
4638  YY_BREAK
4639  /* This catch-all rule catches anything not covered by any of */
4640  /* the above: */
4641  case 48:
4643  { return yytext[0]; }
4644  case 49:
4646  YY_FATAL_ERROR( "flex scanner jammed" );
4647  YY_BREAK
4648  case YY_STATE_EOF(INITIAL):
4649  case YY_STATE_EOF(NODE):
4650  case YY_STATE_EOF(SFB):
4651  case YY_STATE_EOF(SFC):
4652  case YY_STATE_EOF(SFF):
4653  case YY_STATE_EOF(SFIMG):
4654  case YY_STATE_EOF(SFI):
4655  case YY_STATE_EOF(SFR):
4656  case YY_STATE_EOF(SFS):
4657  case YY_STATE_EOF(SFT):
4658  case YY_STATE_EOF(SFV2):
4659  case YY_STATE_EOF(SFV3):
4660  case YY_STATE_EOF(MFC):
4661  case YY_STATE_EOF(MFF):
4662  case YY_STATE_EOF(MFI):
4663  case YY_STATE_EOF(MFR):
4664  case YY_STATE_EOF(MFS):
4665  case YY_STATE_EOF(MFV2):
4666  case YY_STATE_EOF(MFV3):
4667  case YY_STATE_EOF(IN_SFS):
4668  case YY_STATE_EOF(IN_MFS):
4669  case YY_STATE_EOF(IN_SFIMG):
4670  yyterminate();
4671 
4672  case YY_END_OF_BUFFER:
4673  {
4674  /* Amount of text matched not including the EOB char. */
4675  int yy_amount_of_matched_text = yy_cp - yytext_ptr - 1;
4676 
4677  /* Undo the effects of YY_DO_BEFORE_ACTION. */
4678  *yy_cp = yy_hold_char;
4679 
4681  {
4682  /* We're scanning a new file or input source. It's
4683  * possible that this happened because the user
4684  * just pointed yyin at a new source and called
4685  * yylex(). If so, then we have to assure
4686  * consistency between yy_current_buffer and our
4687  * globals. Here is the right place to do so, because
4688  * this is the first action (other than possibly a
4689  * back-up) that will match for the new input source.
4690  */
4694  }
4695 
4696  /* Note that here we test for yy_c_buf_p "<=" to the position
4697  * of the first EOB in the buffer, since yy_c_buf_p will
4698  * already have been incremented past the NUL character
4699  * (since all states make transitions on EOB to the
4700  * end-of-buffer state). Contrast this with the test
4701  * in input().
4702  */
4703  if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
4704  { /* This was really a NUL. */
4705  yy_state_type yy_next_state;
4706 
4707  yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
4708 
4709  yy_current_state = yy_get_previous_state();
4710 
4711  /* Okay, we're now positioned to make the NUL
4712  * transition. We couldn't have
4713  * yy_get_previous_state() go ahead and do it
4714  * for us because it doesn't know how to deal
4715  * with the possibility of jamming (and we don't
4716  * want to build jamming into it because then it
4717  * will run more slowly).
4718  */
4719 
4720  yy_next_state = yy_try_NUL_trans( yy_current_state );
4721 
4722  yy_bp = yytext_ptr + YY_MORE_ADJ;
4723 
4724  if ( yy_next_state )
4725  {
4726  /* Consume the NUL. */
4727  yy_cp = ++yy_c_buf_p;
4728  yy_current_state = yy_next_state;
4729  goto yy_match;
4730  }
4731 
4732  else
4733  {
4734  yy_cp = yy_c_buf_p;
4735  goto yy_find_action;
4736  }
4737  }
4738 
4739  else switch ( yy_get_next_buffer() )
4740  {
4741  case EOB_ACT_END_OF_FILE:
4742  {
4744 
4745  if ( yywrap() )
4746  {
4747  /* Note: because we've taken care in
4748  * yy_get_next_buffer() to have set up
4749  * yytext, we can now set up
4750  * yy_c_buf_p so that if some total
4751  * hoser (like flex itself) wants to
4752  * call the scanner after we return the
4753  * YY_NULL, it'll still work - another
4754  * YY_NULL will get returned.
4755  */
4756  yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
4757 
4758  yy_act = YY_STATE_EOF(YY_START);
4759  goto do_action;
4760  }
4761 
4762  else
4763  {
4765  YY_NEW_FILE;
4766  }
4767  break;
4768  }
4769 
4770  case EOB_ACT_CONTINUE_SCAN:
4771  yy_c_buf_p =
4772  yytext_ptr + yy_amount_of_matched_text;
4773 
4774  yy_current_state = yy_get_previous_state();
4775 
4776  yy_cp = yy_c_buf_p;
4777  yy_bp = yytext_ptr + YY_MORE_ADJ;
4778  goto yy_match;
4779 
4780  case EOB_ACT_LAST_MATCH:
4781  yy_c_buf_p =
4783 
4784  yy_current_state = yy_get_previous_state();
4785 
4786  yy_cp = yy_c_buf_p;
4787  yy_bp = yytext_ptr + YY_MORE_ADJ;
4788  goto yy_find_action;
4789  }
4790  break;
4791  }
4792 
4793  default:
4795  "fatal flex scanner internal error--no action found" );
4796  } /* end of action switch */
4797  } /* end of scanning one token */
4798 } /* end of yylex */
4799 
4800 
4801 /* yy_get_next_buffer - try to read in a new buffer
4802  *
4803  * Returns a code representing an action:
4804  * EOB_ACT_LAST_MATCH -
4805  * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
4806  * EOB_ACT_END_OF_FILE - end of file
4807  */
4808 
4810 {
4811  char *dest = yy_current_buffer->yy_ch_buf;
4812  char *source = yytext_ptr - 1; /* copy prev. char, too */
4813  int number_to_move, i;
4814  int ret_val;
4815 
4818  "fatal flex scanner internal error--end of buffer missed" );
4819 
4820  if ( yy_current_buffer->yy_fill_buffer == 0 )
4821  { /* Don't try to fill the buffer, so this is an EOF. */
4822  if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
4823  {
4824  /* We matched a singled characater, the EOB, so
4825  * treat this as a final EOF.
4826  */
4827  return EOB_ACT_END_OF_FILE;
4828  }
4829 
4830  else
4831  {
4832  /* We matched some text prior to the EOB, first
4833  * process it.
4834  */
4835  return EOB_ACT_LAST_MATCH;
4836  }
4837  }
4838 
4839  /* Try to read more data. */
4840 
4841  /* First move last chars to start of buffer. */
4842  number_to_move = yy_c_buf_p - yytext_ptr;
4843 
4844  for ( i = 0; i < number_to_move; ++i )
4845  *(dest++) = *(source++);
4846 
4848  /* don't do the read, it's not guaranteed to return an EOF,
4849  * just force an EOF
4850  */
4851  yy_n_chars = 0;
4852 
4853  else
4854  {
4855  int num_to_read =
4856  yy_current_buffer->yy_buf_size - number_to_move - 1;
4857 
4858  while ( num_to_read <= 0 )
4859  { /* Not enough room in the buffer - grow it. */
4860 #ifdef YY_USES_REJECT
4862  "input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
4863 #else
4864 
4865  /* just a shorter name for the current buffer */
4867 
4868  int yy_c_buf_p_offset = yy_c_buf_p - b->yy_ch_buf;
4869 
4870  b->yy_buf_size *= 2;
4871  b->yy_ch_buf = (char *)
4872  yy_flex_realloc( (void *) b->yy_ch_buf,
4873  b->yy_buf_size );
4874 
4875  if ( ! b->yy_ch_buf )
4877  "fatal error - scanner input buffer overflow" );
4878 
4879  yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
4880 
4881  num_to_read = yy_current_buffer->yy_buf_size -
4882  number_to_move - 1;
4883 #endif
4884  }
4885 
4886  if ( num_to_read > YY_READ_BUF_SIZE )
4887  num_to_read = YY_READ_BUF_SIZE;
4888 
4889  /* Read in more data. */
4890  YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
4891  yy_n_chars, num_to_read );
4892  }
4893 
4894  if ( yy_n_chars == 0 )
4895  {
4896  if ( number_to_move - YY_MORE_ADJ == 1 )
4897  {
4898  ret_val = EOB_ACT_END_OF_FILE;
4899  yyrestart( yyin );
4900  }
4901 
4902  else
4903  {
4904  ret_val = EOB_ACT_LAST_MATCH;
4907  }
4908  }
4909 
4910  else
4911  ret_val = EOB_ACT_CONTINUE_SCAN;
4912 
4913  yy_n_chars += number_to_move;
4916 
4917  /* yytext begins at the second character in yy_ch_buf; the first
4918  * character is the one which preceded it before reading in the latest
4919  * buffer; it needs to be kept around in case it's a newline, so
4920  * yy_get_previous_state() will have with '^' rules active.
4921  */
4922 
4923  yytext_ptr = &yy_current_buffer->yy_ch_buf[1];
4924 
4925  return ret_val;
4926 }
4927 
4928 
4929 /* yy_get_previous_state - get the state just before the EOB char was reached */
4930 
4932 {
4933  yy_state_type yy_current_state;
4934  char *yy_cp;
4935 
4936  yy_current_state = yy_start;
4937 
4938  for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
4939  {
4940  YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
4941  if ( yy_accept[yy_current_state] )
4942  {
4943  yy_last_accepting_state = yy_current_state;
4944  yy_last_accepting_cpos = yy_cp;
4945  }
4946  while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
4947  {
4948  yy_current_state = (int) yy_def[yy_current_state];
4949  if ( yy_current_state >= 949 )
4950  yy_c = yy_meta[(unsigned int) yy_c];
4951  }
4952  yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
4953  }
4954 
4955  return yy_current_state;
4956 }
4957 
4958 
4959 /* yy_try_NUL_trans - try to make a transition on the NUL character
4960  *
4961  * synopsis
4962  * next_state = yy_try_NUL_trans( current_state );
4963  */
4964 
4966 {
4967  int yy_is_jam;
4968  char *yy_cp = yy_c_buf_p;
4969 
4970  YY_CHAR yy_c = 1;
4971  if ( yy_accept[yy_current_state] )
4972  {
4973  yy_last_accepting_state = yy_current_state;
4974  yy_last_accepting_cpos = yy_cp;
4975  }
4976  while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
4977  {
4978  yy_current_state = (int) yy_def[yy_current_state];
4979  if ( yy_current_state >= 949 )
4980  yy_c = yy_meta[(unsigned int) yy_c];
4981  }
4982  yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
4983  yy_is_jam = (yy_current_state == 948);
4984 
4985  return yy_is_jam ? 0 : yy_current_state;
4986 }
4987 
4988 
4989 
4990 void vtkVRMLYaccData::yyrestart( FILE *input_file )
4991 {
4992  if ( ! yy_current_buffer )
4994 
4995  yy_init_buffer( yy_current_buffer, input_file );
4997 }
4998 
4999 
5001 {
5002  if ( yy_current_buffer == new_buffer )
5003  return;
5004 
5005  if ( yy_current_buffer )
5006  {
5007  /* Flush out information for old buffer. */
5011  }
5012 
5013  yy_current_buffer = new_buffer;
5015 
5016  /* We don't actually know whether we did this switch during
5017  * EOF (yywrap()) processing, but the only time this flag
5018  * is looked at is after yywrap() is called, so it's safe
5019  * to go ahead and always set it.
5020  */
5022 }
5023 
5024 
5026 {
5031 }
5032 
5033 
5035 {
5036  YY_BUFFER_STATE b;
5037 
5038  b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
5039 
5040  if ( ! b )
5041  YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
5042 
5043  b->yy_buf_size = size;
5044 
5045  /* yy_ch_buf has to be 2 characters longer than the size given because
5046  * we need to put in 2 end-of-buffer characters.
5047  */
5048  b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
5049 
5050  if ( ! b->yy_ch_buf )
5051  YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
5052 
5053  yy_init_buffer( b, file );
5054 
5055  return b;
5056 }
5057 
5058 
5060 {
5061  if ( b == yy_current_buffer )
5063 
5064  yy_flex_free( (void *) b->yy_ch_buf );
5065  yy_flex_free( (void *) b );
5066 }
5067 
5068 
5070 {
5071  b->yy_input_file = file;
5072 
5073  /* We put in the '\n' and start reading from [1] so that an
5074  * initial match-at-newline will be true.
5075  */
5076 
5077  b->yy_ch_buf[0] = '\n';
5078  b->yy_n_chars = 1;
5079 
5080  /* We always need two end-of-buffer characters. The first causes
5081  * a transition to the end-of-buffer state. The second causes
5082  * a jam in that state.
5083  */
5086 
5087  b->yy_buf_pos = &b->yy_ch_buf[1];
5088 
5089  b->yy_is_interactive = file ? isatty( fileno(file) ) : 0;
5090 
5091  b->yy_fill_buffer = 1;
5092 
5094 }
5095 
5096 
5097 void vtkVRMLYaccData::yy_fatal_error( const char msg[] )
5098 {
5099  (void) fprintf( stderr, "%s\n", msg );
5100  exit( 1 );
5101 }
5102 
5103 
5104 
5105 /* Redefine yyless() so it works in section 3 code. */
5106 
5107 #undef yyless
5108 #define yyless(n) \
5109  do \
5110  { \
5111  /* Undo effects of setting up yytext. */ \
5112  yytext[yyleng] = yy_hold_char; \
5113  yy_c_buf_p = yytext + n - YY_MORE_ADJ; \
5114  yy_hold_char = *yy_c_buf_p; \
5115  *yy_c_buf_p = '\0'; \
5116  yyleng = n; \
5117  } \
5118  while ( 0 )
5119 
5120 
5121 /* Internal utility routines. */
5122 
5123 #ifndef yytext_ptr
5124 #ifdef YY_USE_PROTOS
5125 static void yy_flex_strncpy( char *s1, const char *s2, int n )
5126 #else
5127  static void yy_flex_strncpy( s1, s2, n )
5128  char *s1;
5129 const char *s2;
5130 int n;
5131 #endif
5132 {
5133  int i;
5134  for ( i = 0; i < n; ++i )
5135  s1[i] = s2[i];
5136 }
5137 #endif
5138 
5139 
5141 {
5142  return (void *) malloc( size );
5143 }
5144 
5145 void *vtkVRMLYaccData::yy_flex_realloc( void *ptr, unsigned int size )
5146 {
5147  return (void *) realloc( ptr, size );
5148 }
5149 
5151 {
5152  free( ptr );
5153 }
5154 // End of Auto-generated Lexer Code
5155 
5156 
5157 // Used by the lex input to get characters. Needed to read in memory structure
5158 
5159 void vtkVRMLYaccData::memyyInput(char *buf, int &result, int max_size,
5160  vtkVRMLYaccData* self) {
5161 
5162  result = static_cast<int>(
5163  strlen(strncpy(buf, standardNodes[self->memyyInput_i], max_size)));
5164  self->memyyInput_j = result - static_cast<int>(
5165  strlen(standardNodes[self->memyyInput_i]));
5166  if ( self->memyyInput_j == 0 )
5167  {
5168  self->memyyInput_i++;
5169  }
5170 }
5171 
5172 // Needed to reset the lex input routine to default.
5173 void vtkVRMLYaccData::defyyInput(char *buf, int &result, int max_size,
5174  vtkVRMLYaccData* self) {
5175  if ( self->yy_current_buffer->yy_is_interactive )
5176  {
5177  int c = getc( self->yyin );
5178  result = c == EOF ? 0 : 1;
5179  buf[0] = (char) c;
5180  }
5181  else if( ((result = static_cast<int>(fread( buf, 1, max_size, self->yyin ))) == 0)
5182  && ferror( self->yyin ) )
5183  {
5184  self->yy_fatal_error( "input in flex scanner failed" );
5185  }
5186 }
5187 
5188 
5189 #endif
5190 // VTK-HeaderTest-Exclude: vtkVRMLImporter_Yacc.h
int addEventOut(const char *type, const char *name)
YY_BUFFER_STATE yy_create_buffer(FILE *file, int size)
#define MFI
void addExposedField(const char *name, int type)
yy_state_type yy_get_previous_state(void)
#define EXTERNPROTO
#define IDENTIFIER
abstract base class for most VTK objects
Definition: vtkObject.h:61
#define SFROTATION
#define YY_DO_BEFORE_ACTION
void * yy_flex_realloc(void *, unsigned int)
#define MFVEC2F
#define YYEMPTY
#define SFI
#define SFF
#define FIELD
#define BEGIN
yy_state_type yy_last_accepting_state
#define IN_SFS
YY_BUFFER_STATE yy_current_buffer
int hasExposedField(const char *name) const
#define YYTRANSLATE(x)
static const short yyr2[]
#define PROTO
#define MFSTRING
#define YY_INPUT(buf, result, max_size)
#define SFSTRING
static const short yyr1[]
#define NODE
#define SFNODE
dynamic, self-adjusting array of float
Definition: vtkFloatArray.h:45
#define SFIMG
int addEventIn(const char *type, const char *name)
#define MFVEC3F
static const short yytable[]
#define YYABORT
static const short int yy_rule_linenum[49]
#define MFCOLOR
#define EXPOSEDFIELD
int hasField(const char *name) const
#define YY_BUF_SIZE
static const short yyrhs[]
static const short int yy_def[1090]
vtkIdType InsertNextPoint(const float x[3])
Definition: vtkPoints.h:162
#define YY_USER_ACTION
#define YYLTYPE
void(* theyyInput)(char *, int &, int, vtkVRMLYaccData *)
void yy_load_buffer_state(void)
#define SFR
dynamic, self-adjusting array of vtkIdType
#define SFBOOL
static void __yy_memcpy(char *from, char *to, int count)
static void memyyInput(char *buf, int &result, int max_size, vtkVRMLYaccData *self)
#define YY_STATE_EOF(state)
#define MFS
#define YY_READ_BUF_SIZE
static const short yypgoto[]
void yyrestart(FILE *input_file)
#define YY_START
void yy_switch_to_buffer(YY_BUFFER_STATE new_buffer)
#define MFINT32
#define yytext_ptr
#define YY_SC_TO_UI(c)
#define EOB_ACT_END_OF_FILE
void InsertPoint(vtkIdType id, const float x[3])
Definition: vtkPoints.h:136
vtkVRMLVectorType< vtkVRMLUseStruct * > * useList
#define IN_MFS
#define YYACCEPT
static const short yycheck[]
static const char yytranslate[]
int yyparse(vtkVRMLImporter *self)
#define EOB_ACT_LAST_MATCH
static const short int yy_chk[7711]
vtkVRMLVectorType< VrmlNodeType::FieldRec * > * currentField
const char * getName() const
#define MFC
vtkVRMLVectorType< VrmlNodeType * > * CurrentProtoStack
#define YYLAST
#define SFINT32
void yyerror(const char *)
#define INITIAL
#define TO
#define IN_SFIMG
int hasEventOut(const char *name) const
#define yyterminate()
int add(void(VrmlNodeType::*)(const char *, int), const char *, const char *)
#define YY_MORE_ADJ
static const short yypact[]
static const short int yy_nxt[7711]
#define SFV2
YY_BUFFER_STATUS_STATE yy_buffer_status
#define MFF
void yy_delete_buffer(YY_BUFFER_STATE b)
const VrmlNodeType * find(const char *nm)
#define YYINITDEPTH
#define DEF
static const int yy_ec[256]
struct vtkVRMLYaccData::yyltype yyltype
void yy_fatal_error(const char msg[])
void addEventIn(const char *name, int type)
#define EVENTOUT
#define EOB_ACT_CONTINUE_SCAN
static const char *const yytname[]
void addToNameSpace(VrmlNodeType *)
#define ROUTE
static const short yydefact[]
#define MFR
#define SFCOLOR
int addExposedField(const char *type, const char *name)
#define SFB
static void defyyInput(char *buf, int &result, int max_size, vtkVRMLYaccData *self)
#define SFV3
#define SFC
static const short int yy_base[1090]
void * yy_flex_alloc(unsigned int)
virtual void SetNumberOfComponents(int)
boost::graph_traits< vtkGraph * >::vertex_descriptor source(boost::graph_traits< vtkGraph * >::edge_descriptor e, vtkGraph *)
#define YY_FATAL_ERROR(msg)
void addEventOut(const char *name, int type)
#define SFFLOAT
#define SFIMAGE
void beginProto(const char *)
#define YY_BREAK
const VrmlNodeType * nodeType
#define SFN_NULL
#define YYFLAG
#define YY_NEW_FILE
#define MFNODE
vtkVRMLUseStruct(char *n, vtkObject *o)
#define YYFINAL
static const short yyprhs[]
vtkVRMLVectorType< VrmlNodeType * > * typeList
#define YY_END_OF_BUFFER_CHAR
static const short int yy_accept[949]
#define USE
#define SFVEC2F
int addField(const char *type, const char *name)
#define SFTIME
static const short yydefgoto[]
void addField(const char *name, int type)
#define EVENTIN
#define SFT
#define MFFLOAT
#define SFS
#define MFROTATION
VrmlNodeType(const char *nm)
int fieldType(const char *type)
static const int yy_meta[48]
#define YYTERROR
#define YYNTBASE
imports VRML 2.0 files.
virtual vtkIdType InsertNextTuple(vtkIdType j, vtkAbstractArray *source)=0
#define YY_END_OF_BUFFER
#define MFV3
int yylex(vtkVRMLImporter *self)
void yy_init_buffer(YY_BUFFER_STATE b, FILE *file)
represent and manipulate 3D points
Definition: vtkPoints.h:38
#define YYEOF
static const short yyrline[]
#define YYMAXDEPTH
struct yy_buffer_state * YY_BUFFER_STATE
#define IS
#define MFV2
#define yyless(n)
#define SFVEC3F
int hasEventIn(const char *name) const
yy_state_type yy_try_NUL_trans(yy_state_type current_state)