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