Salome HOME
Synchronize adm files
[modules/paravis.git] / src / VTKWrapping / ParaView / vtkParse.tab.c
1 /* A Bison parser, made by GNU Bison 2.4.1.  */
2
3 /* Skeleton implementation for Bison GLR parsers in C
4
5       Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
6
7    This program is free software: you can redistribute it and/or modify
8    it under the terms of the GNU General Public License as published by
9    the Free Software Foundation, either version 3 of the License, or
10    (at your option) any later version.
11
12    This program is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15    GNU General Public License for more details.
16
17    You should have received a copy of the GNU General Public License
18    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
19
20 /* As a special exception, you may create a larger work that contains
21    part or all of the Bison parser skeleton and distribute that work
22    under terms of your choice, so long as that work isn't itself a
23    parser generator using the skeleton or a modified version thereof
24    as a parser skeleton.  Alternatively, if you modify or redistribute
25    the parser skeleton itself, you may (at your option) remove this
26    special exception, which will cause the skeleton and the resulting
27    Bison output files to be licensed under the GNU General Public
28    License without this special exception.
29
30    This special exception was added by the Free Software Foundation in
31    version 2.2 of Bison.  */
32
33 /* C GLR parser skeleton written by Paul Hilfinger.  */
34
35 /* Identify Bison output.  */
36 #define YYBISON 1
37
38 /* Bison version.  */
39 #define YYBISON_VERSION "2.4.1"
40
41 /* Skeleton name.  */
42 #define YYSKELETON_NAME "glr.c"
43
44 /* Pure parsers.  */
45 #define YYPURE 0
46
47 /* Using locations.  */
48 #define YYLSP_NEEDED 0
49
50
51
52
53 /* Copy the first part of user declarations.  */
54
55 /* Line 172 of glr.c  */
56 #line 15 "vtkParse.y"
57
58
59 /*
60
61 This file must be translated to C and modified to build everywhere.
62
63 Run yacc like this:
64
65   yacc -b vtkParse vtkParse.y
66
67 Modify vtkParse.tab.c:
68   - convert TABs to spaces (eight per tab)
69   - remove spaces from ends of lines, s/ *$//g
70   - replace all instances of "static inline" with "static".
71 */
72
73 /*
74 The purpose of this parser is to read C++ header files in order to
75 generate data structures that describe the C++ interface of a library,
76 one header file at a time.  As such, it is not a complete C++ parser.
77 It only parses what is relevant to the interface and skips the rest.
78
79 While the parser reads method definitions, type definitions, and
80 template definitions it generates a "signature" which is a string
81 that matches (apart from whitespace) the text that was parsed.
82
83 While parsing types, the parser creates an unsigned int that describes
84 the type as well as creating other data structures for arrays, function
85 pointers, etc.  The parser also creates a typeId string, which is either
86 a simple id that gives the class name or type name, or is "function" for
87 function pointer types, or "method" for method pointer types.
88 */
89
90 /*
91 Conformance Notes:
92
93 This parser was designed empirically and incrementally.  It has been
94 refactored to make it more similar to the C++ 1998 grammar, but there
95 are still many very significant differences.
96
97 The most significant difference between this parser and a "standard"
98 parser is that it only parses declarations in detail.  All other
99 statements and expressions are parsed as arbitrary sequences of symbols,
100 without any syntactic analysis.
101
102 The "unqualified_id" does not directly include "operator_function_id" or
103 "conversion_function_id" (e.g. ids like "operator=" or "operator int*").
104 Instead, these two id types are used to allow operator functions to be
105 handled by their own rules, rather than by the generic function rules.
106 These ids can only be used in function declarations and using declarations.
107
108 Types are handled quite differently from the C++ BNF.  These differences
109 represent a prolonged (and ultimately successful) attempt to empirically
110 create a yacc parser without any shift/reduce conflicts.  The rules for
111 types are organized according to the way that types are usually defined
112 in working code, rather than strictly according to C++ grammar.
113
114 The declaration specifier "typedef" can only appear at the beginning
115 of a declaration sequence.  There are also restrictions on where class
116 and enum specifiers can be used: you can declare a new struct within a
117 variable declaration, but not within a parameter declaration.
118
119 The lexer returns each of "(scope::*", "(*", "(a::b::*", etc. as single
120 tokens.  The C++ BNF, in contrast, would consider these to be a "("
121 followed by a "ptr_operator".  The lexer concatenates these tokens in
122 order to eliminate shift/reduce conflicts in the parser.  However, this
123 means that this parser will only recognize "scope::*" as valid if it is
124 preceded by "(", e.g. as part of a member function pointer specification.
125
126 An odd bit of C++ ambiguity is that y(x); can be interpreted variously
127 as declaration of variable "x" of type "y", as a function call if "y"
128 is the name of a function, or as a constructor if "y" is the name of
129 a class.  This parser always interprets this pattern as a constructor
130 declaration, because function calls are ignored by the parser, and
131 variable declarations of the form y(x); are exceedingly rare compared
132 to the more usual form y x; without parentheses.
133 */
134
135 #include <stdio.h>
136 #include <stdlib.h>
137 #include <string.h>
138 #define yyerror(a) print_parser_error(a, NULL, 0)
139 #define yywrap() 1
140
141 /* Make sure yacc-generated code knows we have included stdlib.h.  */
142 #ifndef _STDLIB_H
143 # define _STDLIB_H
144 #endif
145 #define YYINCLUDED_STDLIB_H
146
147 /* Borland and MSVC do not define __STDC__ properly. */
148 #if !defined(__STDC__)
149 # if defined(_MSC_VER) || defined(__BORLANDC__)
150 #  define __STDC__ 1
151 # endif
152 #endif
153
154 /* Disable warnings in generated code. */
155 #if defined(_MSC_VER)
156 # pragma warning (disable: 4127) /* conditional expression is constant */
157 # pragma warning (disable: 4244) /* conversion to smaller integer type */
158 #endif
159 #if defined(__BORLANDC__)
160 # pragma warn -8004 /* assigned a value that is never used */
161 # pragma warn -8008 /* conditional is always true */
162 # pragma warn -8066 /* unreachable code */
163 #endif
164
165 /* Map from the type anonymous_enumeration in vtkType.h to the
166    VTK wrapping type system number for the type. */
167
168 #include "vtkParse.h"
169 #include "vtkParsePreprocess.h"
170 #include "vtkParseData.h"
171 #include "vtkType.h"
172
173 static unsigned int vtkParseTypeMap[] =
174   {
175   VTK_PARSE_VOID,               /* VTK_VOID                0 */
176   0,                            /* VTK_BIT                 1 */
177   VTK_PARSE_CHAR,               /* VTK_CHAR                2 */
178   VTK_PARSE_UNSIGNED_CHAR,      /* VTK_UNSIGNED_CHAR       3 */
179   VTK_PARSE_SHORT,              /* VTK_SHORT               4 */
180   VTK_PARSE_UNSIGNED_SHORT,     /* VTK_UNSIGNED_SHORT      5 */
181   VTK_PARSE_INT,                /* VTK_INT                 6 */
182   VTK_PARSE_UNSIGNED_INT,       /* VTK_UNSIGNED_INT        7 */
183   VTK_PARSE_LONG,               /* VTK_LONG                8 */
184   VTK_PARSE_UNSIGNED_LONG,      /* VTK_UNSIGNED_LONG       9 */
185   VTK_PARSE_FLOAT,              /* VTK_FLOAT              10 */
186   VTK_PARSE_DOUBLE,             /* VTK_DOUBLE             11 */
187   VTK_PARSE_ID_TYPE,            /* VTK_ID_TYPE            12 */
188   VTK_PARSE_STRING,             /* VTK_STRING             13 */
189   0,                            /* VTK_OPAQUE             14 */
190   VTK_PARSE_SIGNED_CHAR,        /* VTK_SIGNED_CHAR        15 */
191   VTK_PARSE_LONG_LONG,          /* VTK_LONG_LONG          16 */
192   VTK_PARSE_UNSIGNED_LONG_LONG, /* VTK_UNSIGNED_LONG_LONG 17 */
193   VTK_PARSE___INT64,            /* VTK___INT64            18 */
194   VTK_PARSE_UNSIGNED___INT64,   /* VTK_UNSIGNED___INT64   19 */
195   0,                            /* VTK_VARIANT            20 */
196   0,                            /* VTK_OBJECT             21 */
197   VTK_PARSE_UNICODE_STRING      /* VTK_UNICODE_STRING     22 */
198   };
199
200 /* Define some constants to simplify references to the table lookup in
201    the primitive_type production rule code.  */
202 #define VTK_PARSE_INT8 vtkParseTypeMap[VTK_TYPE_INT8]
203 #define VTK_PARSE_UINT8 vtkParseTypeMap[VTK_TYPE_UINT8]
204 #define VTK_PARSE_INT16 vtkParseTypeMap[VTK_TYPE_INT16]
205 #define VTK_PARSE_UINT16 vtkParseTypeMap[VTK_TYPE_UINT16]
206 #define VTK_PARSE_INT32 vtkParseTypeMap[VTK_TYPE_INT32]
207 #define VTK_PARSE_UINT32 vtkParseTypeMap[VTK_TYPE_UINT32]
208 #define VTK_PARSE_INT64 vtkParseTypeMap[VTK_TYPE_INT64]
209 #define VTK_PARSE_UINT64 vtkParseTypeMap[VTK_TYPE_UINT64]
210 #define VTK_PARSE_FLOAT32 vtkParseTypeMap[VTK_TYPE_FLOAT32]
211 #define VTK_PARSE_FLOAT64 vtkParseTypeMap[VTK_TYPE_FLOAT64]
212
213 #define vtkParseDebug(s1, s2) \
214   if ( parseDebug ) { fprintf(stderr, "   %s %s\n", s1, s2); }
215
216 /* the tokenizer */
217 int yylex(void);
218
219 /* global variables */
220 FileInfo      *data = NULL;
221 int            parseDebug;
222
223 /* the "preprocessor" */
224 PreprocessInfo *preprocessor = NULL;
225
226 /* include dirs specified on the command line */
227 int            NumberOfIncludeDirectories= 0;
228 const char   **IncludeDirectories;
229
230 /* macros specified on the command line */
231 int            NumberOfDefinitions = 0;
232 const char   **Definitions;
233
234 /* options that can be set by the programs that use the parser */
235 int            IgnoreBTX = 0;
236 int            Recursive = 0;
237 const char    *CommandName = NULL;
238
239 /* various state variables */
240 NamespaceInfo *currentNamespace = NULL;
241 ClassInfo     *currentClass = NULL;
242 FunctionInfo  *currentFunction = NULL;
243 TemplateInfo  *currentTemplate = NULL;
244 const char    *currentEnumName = NULL;
245 const char    *currentEnumValue = NULL;
246 unsigned int   currentEnumType = 0;
247 parse_access_t access_level = VTK_ACCESS_PUBLIC;
248
249 /* functions from vtkParse.l */
250 void print_parser_error(const char *text, const char *cp, size_t n);
251
252 /* helper functions */
253 const char *type_class(unsigned int type, const char *classname);
254 void start_class(const char *classname, int is_struct_or_union);
255 void end_class();
256 void add_base_class(ClassInfo *cls, const char *name, int access_lev,
257                     unsigned int extra);
258 void output_friend_function(void);
259 void output_function(void);
260 void reject_function(void);
261 void set_return(FunctionInfo *func, unsigned int type,
262                 const char *typeclass, int count);
263 void add_parameter(FunctionInfo *func, unsigned int type,
264                    const char *classname, int count);
265 void add_template_parameter(unsigned int datatype,
266                             unsigned int extra, const char *funcSig);
267 void add_using(const char *name, int is_namespace);
268 void start_enum(const char *name, int is_scoped,
269                 unsigned int type, const char *basename);
270 void add_enum(const char *name, const char *value);
271 void end_enum();
272 unsigned int guess_constant_type(const char *value);
273 void add_constant(const char *name, const char *value,
274                   unsigned int type, const char *typeclass, int global);
275 const char *add_const_scope(const char *name);
276 void prepend_scope(char *cp, const char *arg);
277 unsigned int guess_id_type(const char *cp);
278 unsigned int add_indirection(unsigned int tval, unsigned int ptr);
279 unsigned int add_indirection_to_array(unsigned int ptr);
280 void handle_complex_type(ValueInfo *val, unsigned int datatype,
281                          unsigned int extra, const char *funcSig);
282 void handle_function_type(ValueInfo *param, const char *name,
283                           const char *funcSig);
284 void add_legacy_parameter(FunctionInfo *func, ValueInfo *param);
285
286 void outputSetVectorMacro(const char *var, unsigned int paramType,
287                           const char *typeText, int n);
288 void outputGetVectorMacro(const char *var, unsigned int paramType,
289                           const char *typeText, int n);
290
291
292 /*----------------------------------------------------------------
293  * String utility methods
294  *
295  * Strings are centrally allocated and are const, and they are not
296  * freed until the program exits.  If they need to be freed before
297  * then, vtkParse_FreeStringCache() can be called.
298  */
299
300 /* duplicate the first n bytes of a string and terminate */
301 static const char *vtkstrndup(const char *in, size_t n)
302 {
303   return vtkParse_CacheString(data->Strings, in, n);
304 }
305
306 /* duplicate a string */
307 static const char *vtkstrdup(const char *in)
308 {
309   if (in)
310     {
311     in = vtkParse_CacheString(data->Strings, in, strlen(in));
312     }
313
314   return in;
315 }
316
317 /* helper function for concatenating strings */
318 static const char *vtkstrncat(size_t n, const char **str)
319 {
320   char *cp;
321   size_t i;
322   size_t j[8];
323   size_t m = 0;
324
325   for (i = 0; i < n; i++)
326     {
327     j[i] = 0;
328     if (str[i])
329       {
330       j[i] = strlen(str[i]);
331       m += j[i];
332       }
333     }
334   cp = vtkParse_NewString(data->Strings, m);
335   m = 0;
336   for (i = 0; i < n; i++)
337     {
338     if (j[i])
339       {
340       strncpy(&cp[m], str[i], j[i]);
341       m += j[i];
342       }
343     }
344   cp[m] = '\0';
345
346   return cp;
347 }
348
349 /* concatenate strings */
350 static const char *vtkstrcat(const char *str1, const char *str2)
351 {
352   const char *cp[2];
353
354   cp[0] = str1;
355   cp[1] = str2;
356   return vtkstrncat(2, cp);
357 }
358
359 static const char *vtkstrcat3(const char *str1, const char *str2,
360                               const char *str3)
361 {
362   const char *cp[3];
363
364   cp[0] = str1;
365   cp[1] = str2;
366   cp[2] = str3;
367   return vtkstrncat(3, cp);
368 }
369
370 static const char *vtkstrcat4(const char *str1, const char *str2,
371                               const char *str3, const char *str4)
372 {
373   const char *cp[4];
374
375   cp[0] = str1;
376   cp[1] = str2;
377   cp[2] = str3;
378   cp[3] = str4;
379   return vtkstrncat(4, cp);
380 }
381
382 static const char *vtkstrcat5(const char *str1, const char *str2,
383                               const char *str3, const char *str4,
384                               const char *str5)
385 {
386   const char *cp[5];
387
388   cp[0] = str1;
389   cp[1] = str2;
390   cp[2] = str3;
391   cp[3] = str4;
392   cp[4] = str5;
393   return vtkstrncat(5, cp);
394 }
395
396 static const char *vtkstrcat7(const char *str1, const char *str2,
397                               const char *str3, const char *str4,
398                               const char *str5, const char *str6,
399                               const char *str7)
400 {
401   const char *cp[7];
402
403   cp[0] = str1;
404   cp[1] = str2;
405   cp[2] = str3;
406   cp[3] = str4;
407   cp[4] = str5;
408   cp[5] = str6;
409   cp[6] = str7;
410   return vtkstrncat(7, cp);
411 }
412
413 /*----------------------------------------------------------------
414  * Comments
415  */
416
417 /* "private" variables */
418 char          *commentText = NULL;
419 size_t         commentLength = 0;
420 size_t         commentAllocatedLength = 0;
421 int            commentState = 0;
422
423 const char *getComment()
424 {
425   if (commentState != 0)
426     {
427     return commentText;
428     }
429   return NULL;
430 }
431
432 void clearComment()
433 {
434   commentLength = 0;
435   if (commentText)
436     {
437     commentText[commentLength] = '\0';
438     }
439   commentState = 0;
440 }
441
442 void addCommentLine(const char *line, size_t n)
443 {
444   if (commentState <= 0)
445     {
446     clearComment();
447     return;
448     }
449
450   if (commentText == NULL)
451     {
452     commentAllocatedLength = n+80;
453     commentText = (char *)malloc(commentAllocatedLength);
454     commentLength = 0;
455     commentText[0] = '\0';
456     }
457   else if (commentLength + n + 2 > commentAllocatedLength)
458     {
459     commentAllocatedLength = commentAllocatedLength + commentLength + n + 2;
460     commentText = (char *)realloc(commentText, commentAllocatedLength);
461     }
462
463   if (n > 0)
464     {
465     memcpy(&commentText[commentLength], line, n);
466     }
467   commentLength += n;
468   commentText[commentLength++] = '\n';
469   commentText[commentLength] = '\0';
470 }
471
472 void closeComment()
473 {
474   switch (commentState)
475     {
476     case 1:
477       /* Make comment persist until a new comment starts */
478       commentState = -1;
479       break;
480     case 2:
481       data->Description = vtkstrdup(getComment());
482       clearComment();
483       break;
484     case 3:
485       data->SeeAlso = vtkstrdup(getComment());
486       clearComment();
487       break;
488     case 4:
489       data->Caveats = vtkstrdup(getComment());
490       clearComment();
491       break;
492     }
493 }
494
495 void closeOrClearComment()
496 {
497   if (commentState < 0)
498     {
499     clearComment();
500     }
501   else
502     {
503     closeComment();
504     }
505 }
506
507 void setCommentState(int state)
508 {
509   switch (state)
510     {
511     case 0:
512       closeComment();
513       break;
514     default:
515       closeComment();
516       clearComment();
517       break;
518     }
519
520   commentState = state;
521 }
522
523
524 /*----------------------------------------------------------------
525  * Macros
526  */
527
528 /* "private" variables */
529 const char *macroName = NULL;
530 int macroUsed = 0;
531 int macroEnded = 0;
532
533 const char *getMacro()
534 {
535   if (macroUsed == 0)
536     {
537     macroUsed = macroEnded;
538     return macroName;
539     }
540   return NULL;
541 }
542
543
544 /*----------------------------------------------------------------
545  * Namespaces
546  *
547  * operates on: currentNamespace
548  */
549
550 /* "private" variables */
551 NamespaceInfo *namespaceStack[10];
552 int namespaceDepth = 0;
553
554 /* enter a namespace */
555 void pushNamespace(const char *name)
556 {
557   int i;
558   NamespaceInfo *oldNamespace = currentNamespace;
559
560   for (i = 0; i < oldNamespace->NumberOfNamespaces; i++)
561     {
562     /* see if the namespace already exists */
563     if (strcmp(name, oldNamespace->Namespaces[i]->Name) == 0)
564       {
565       currentNamespace = oldNamespace->Namespaces[i];
566       }
567     }
568
569   /* create a new namespace */
570   if (i == oldNamespace->NumberOfNamespaces)
571     {
572     currentNamespace = (NamespaceInfo *)malloc(sizeof(NamespaceInfo));
573     vtkParse_InitNamespace(currentNamespace);
574     currentNamespace->Name = name;
575     vtkParse_AddNamespaceToNamespace(oldNamespace, currentNamespace);
576     }
577
578   namespaceStack[namespaceDepth++] = oldNamespace;
579 }
580
581 /* leave the namespace */
582 void popNamespace()
583 {
584   currentNamespace = namespaceStack[--namespaceDepth];
585 }
586
587
588 /*----------------------------------------------------------------
589  * Classes
590  *
591  * operates on: currentClass, access_level
592  */
593
594 /* "private" variables */
595 ClassInfo *classStack[10];
596 parse_access_t classAccessStack[10];
597 int classDepth = 0;
598
599 /* start an internal class definition */
600 void pushClass()
601 {
602   classAccessStack[classDepth] = access_level;
603   classStack[classDepth++] = currentClass;
604 }
605
606 /* leave the internal class */
607 void popClass()
608 {
609   currentClass = classStack[--classDepth];
610   access_level = classAccessStack[classDepth];
611 }
612
613
614 /*----------------------------------------------------------------
615  * Templates
616  *
617  * operates on: currentTemplate
618  */
619
620 /* "private" variables */
621 TemplateInfo *templateStack[10];
622 int templateDepth = 0;
623
624 /* begin a template */
625 void startTemplate()
626 {
627   currentTemplate = (TemplateInfo *)malloc(sizeof(TemplateInfo));
628   vtkParse_InitTemplate(currentTemplate);
629 }
630
631 /* clear a template, if set */
632 void clearTemplate()
633 {
634   if (currentTemplate)
635     {
636     free(currentTemplate);
637     }
638   currentTemplate = NULL;
639 }
640
641 /* push the template onto the stack, and start a new one */
642 void pushTemplate()
643 {
644   templateStack[templateDepth++] = currentTemplate;
645   startTemplate();
646 }
647
648 /* pop a template off the stack */
649 void popTemplate()
650 {
651   currentTemplate = templateStack[--templateDepth];
652 }
653
654 /*----------------------------------------------------------------
655  * Function signatures
656  *
657  * operates on: currentFunction
658  */
659
660 /* "private" variables */
661 int sigClosed = 0;
662 size_t sigMark[10];
663 size_t sigLength = 0;
664 size_t sigAllocatedLength = 0;
665 int sigMarkDepth = 0;
666 char *signature = NULL;
667
668 /* start a new signature */
669 void startSig()
670 {
671   signature = NULL;
672   sigLength = 0;
673   sigAllocatedLength = 0;
674   sigClosed = 0;
675   sigMarkDepth = 0;
676   sigMark[0] = 0;
677 }
678
679 /* get the signature */
680 const char *getSig()
681 {
682   return signature;
683 }
684
685 /* get the signature length */
686 size_t getSigLength()
687 {
688   return sigLength;
689 }
690
691 /* reset the sig to the specified length */
692 void resetSig(size_t n)
693 {
694   if (n < sigLength)
695     {
696     sigLength = n;
697     }
698 }
699
700 /* reallocate Signature if n chars cannot be appended */
701 void checkSigSize(size_t n)
702 {
703   const char *ccp;
704
705   if (sigAllocatedLength == 0)
706     {
707     sigLength = 0;
708     sigAllocatedLength = 80 + n;
709     signature = vtkParse_NewString(data->Strings, sigAllocatedLength);
710     signature[0] = '\0';
711     }
712   else if (sigLength + n > sigAllocatedLength)
713     {
714     sigAllocatedLength += sigLength + n;
715     ccp = signature;
716     signature = vtkParse_NewString(data->Strings, sigAllocatedLength);
717     strncpy(signature, ccp, sigLength);
718     signature[sigLength] = '\0';
719     }
720 }
721
722 /* close the signature, i.e. allow no more additions to it */
723 void closeSig()
724 {
725   sigClosed = 1;
726 }
727
728 /* re-open the signature */
729 void openSig()
730 {
731   sigClosed = 0;
732 }
733
734 /* insert text at the beginning of the signature */
735 void preSig(const char *arg)
736 {
737   if (!sigClosed)
738     {
739     size_t n = strlen(arg);
740     checkSigSize(n);
741     if (n > 0)
742       {
743       memmove(&signature[n], signature, sigLength);
744       strncpy(signature, arg, n);
745       sigLength += n;
746       }
747     signature[sigLength] = '\0';
748     }
749 }
750
751 /* append text to the end of the signature */
752 void postSig(const char *arg)
753 {
754   if (!sigClosed)
755     {
756     size_t n = strlen(arg);
757     checkSigSize(n);
758     if (n > 0)
759       {
760       strncpy(&signature[sigLength], arg, n);
761       sigLength += n;
762       }
763     signature[sigLength] = '\0';
764     }
765 }
766
767 /* set a mark in the signature for later operations */
768 void markSig()
769 {
770   sigMark[sigMarkDepth] = 0;
771   if (signature)
772     {
773     sigMark[sigMarkDepth] = sigLength;
774     }
775   sigMarkDepth++;
776 }
777
778 /* get the contents of the sig from the mark, and clear the mark */
779 const char *copySig()
780 {
781   const char *cp = NULL;
782   if (sigMarkDepth > 0)
783     {
784     sigMarkDepth--;
785     }
786   if (signature)
787     {
788     cp = &signature[sigMark[sigMarkDepth]];
789     }
790   return vtkstrdup(cp);
791 }
792
793 /* swap the signature text using the mark as the radix */
794 void swapSig()
795 {
796   if (sigMarkDepth > 0)
797     {
798     sigMarkDepth--;
799     }
800   if (signature && sigMark[sigMarkDepth] > 0)
801     {
802     size_t i, m, n, nn;
803     char c;
804     char *cp;
805     cp = signature;
806     n = sigLength;
807     m = sigMark[sigMarkDepth];
808     nn = m/2;
809     for (i = 0; i < nn; i++)
810       {
811       c = cp[i]; cp[i] = cp[m-i-1]; cp[m-i-1] = c;
812       }
813     nn = (n-m)/2;
814     for (i = 0; i < nn; i++)
815       {
816       c = cp[i+m]; cp[i+m] = cp[n-i-1]; cp[n-i-1] = c;
817       }
818     nn = n/2;
819     for (i = 0; i < nn; i++)
820       {
821       c = cp[i]; cp[i] = cp[n-i-1]; cp[n-i-1] = c;
822       }
823     }
824 }
825
826 /* chop the last space from the signature */
827 void chopSig(void)
828 {
829   if (signature)
830     {
831     size_t n = sigLength;
832     if (n > 0 && signature[n-1] == ' ')
833       {
834       signature[n-1] = '\0';
835       sigLength--;
836       }
837     }
838 }
839
840 /*----------------------------------------------------------------
841  * Subroutines for building a type
842  */
843
844 /* "private" variables */
845 unsigned int storedType;
846 unsigned int typeStack[10];
847 int typeDepth = 0;
848
849 /* save the type on the stack */
850 void pushType()
851 {
852   typeStack[typeDepth++] = storedType;
853 }
854
855 /* pop the type stack */
856 void popType()
857 {
858   storedType = typeStack[--typeDepth];
859 }
860
861 /* clear the storage type */
862 void clearType()
863 {
864   storedType = 0;
865 }
866
867 /* save the type */
868 void setTypeBase(unsigned int base)
869 {
870   storedType &= ~(unsigned int)(VTK_PARSE_BASE_TYPE);
871   storedType |= base;
872 }
873
874 /* set a type modifier bit */
875 void setTypeMod(unsigned int mod)
876 {
877   storedType |= mod;
878 }
879
880 /* modify the indirection (pointers, refs) in the storage type */
881 void setTypePtr(unsigned int ind)
882 {
883   storedType &= ~(unsigned int)(VTK_PARSE_INDIRECT | VTK_PARSE_RVALUE);
884   ind &= (VTK_PARSE_INDIRECT | VTK_PARSE_RVALUE);
885   storedType |= ind;
886 }
887
888 /* retrieve the storage type */
889 unsigned int getType()
890 {
891   return storedType;
892 }
893
894 /* combine two primitive type parts, e.g. "long int" */
895 unsigned int buildTypeBase(unsigned int a, unsigned int b)
896 {
897   unsigned int base = (a & VTK_PARSE_BASE_TYPE);
898   unsigned int basemod = (b & VTK_PARSE_BASE_TYPE);
899
900   switch (base)
901     {
902     case 0:
903       base = basemod;
904       break;
905     case VTK_PARSE_UNSIGNED_INT:
906       base = (basemod | VTK_PARSE_UNSIGNED);
907       break;
908     case VTK_PARSE_INT:
909       base = basemod;
910       if (base == VTK_PARSE_CHAR)
911         {
912         base = VTK_PARSE_SIGNED_CHAR;
913         }
914       break;
915     case VTK_PARSE_CHAR:
916       if (basemod == VTK_PARSE_INT)
917         {
918         base = VTK_PARSE_SIGNED_CHAR;
919         }
920       else if (basemod == VTK_PARSE_UNSIGNED_INT)
921         {
922         base = VTK_PARSE_UNSIGNED_CHAR;
923         }
924       break;
925     case VTK_PARSE_SHORT:
926       if (basemod == VTK_PARSE_UNSIGNED_INT)
927         {
928         base = VTK_PARSE_UNSIGNED_SHORT;
929         }
930       break;
931     case VTK_PARSE_LONG:
932       if (basemod == VTK_PARSE_UNSIGNED_INT)
933         {
934         base = VTK_PARSE_UNSIGNED_LONG;
935         }
936       else if (basemod == VTK_PARSE_LONG)
937         {
938         base = VTK_PARSE_LONG_LONG;
939         }
940       else if (basemod == VTK_PARSE_DOUBLE)
941         {
942         base = VTK_PARSE_LONG_DOUBLE;
943         }
944       break;
945     case VTK_PARSE_UNSIGNED_LONG:
946       if (basemod == VTK_PARSE_LONG)
947         {
948         base = VTK_PARSE_UNSIGNED_LONG_LONG;
949         }
950       break;
951     case VTK_PARSE_LONG_LONG:
952       if (basemod == VTK_PARSE_UNSIGNED_INT)
953         {
954         base = VTK_PARSE_UNSIGNED_LONG_LONG;
955         }
956       break;
957     case VTK_PARSE___INT64:
958       if (basemod == VTK_PARSE_UNSIGNED_INT)
959         {
960         base = VTK_PARSE_UNSIGNED___INT64;
961         }
962       break;
963     case VTK_PARSE_DOUBLE:
964       if (basemod == VTK_PARSE_LONG)
965         {
966         base = VTK_PARSE_LONG_DOUBLE;
967         }
968       break;
969     }
970
971   return ((a & ~(unsigned int)(VTK_PARSE_BASE_TYPE)) | base);
972 }
973
974
975 /*----------------------------------------------------------------
976  * Array information
977  */
978
979 /* "private" variables */
980 int numberOfDimensions = 0;
981 const char **arrayDimensions = NULL;
982
983 /* clear the array counter */
984 void clearArray(void)
985 {
986   numberOfDimensions = 0;
987   arrayDimensions = NULL;
988 }
989
990 /* add another dimension */
991 void pushArraySize(const char *size)
992 {
993   vtkParse_AddStringToArray(&arrayDimensions, &numberOfDimensions,
994                             size);
995 }
996
997 /* add another dimension to the front */
998 void pushArrayFront(const char *size)
999 {
1000   int i;
1001
1002   vtkParse_AddStringToArray(&arrayDimensions, &numberOfDimensions, 0);
1003
1004   for (i = numberOfDimensions-1; i > 0; i--)
1005     {
1006     arrayDimensions[i] = arrayDimensions[i-1];
1007     }
1008
1009   arrayDimensions[0] = size;
1010 }
1011
1012 /* get the number of dimensions */
1013 int getArrayNDims()
1014 {
1015   return numberOfDimensions;
1016 }
1017
1018 /* get the whole array */
1019 const char **getArray()
1020 {
1021   if (numberOfDimensions > 0)
1022     {
1023     return arrayDimensions;
1024     }
1025   return NULL;
1026 }
1027
1028 /*----------------------------------------------------------------
1029  * Variables and Parameters
1030  */
1031
1032 /* "private" variables */
1033 const char *currentVarName = 0;
1034 const char *currentVarValue = 0;
1035 const char *currentId = 0;
1036
1037 /* clear the var Id */
1038 void clearVarName(void)
1039 {
1040   currentVarName = NULL;
1041 }
1042
1043 /* set the var Id */
1044 void setVarName(const char *text)
1045 {
1046   currentVarName = text;
1047 }
1048
1049 /* return the var id */
1050 const char *getVarName()
1051 {
1052   return currentVarName;
1053 }
1054
1055 /* variable value -------------- */
1056
1057 /* clear the var value */
1058 void clearVarValue(void)
1059 {
1060   currentVarValue = NULL;
1061 }
1062
1063 /* set the var value */
1064 void setVarValue(const char *text)
1065 {
1066   currentVarValue = text;
1067 }
1068
1069 /* return the var value */
1070 const char *getVarValue()
1071 {
1072   return currentVarValue;
1073 }
1074
1075 /* variable type -------------- */
1076
1077 /* clear the current Id */
1078 void clearTypeId(void)
1079 {
1080   currentId = NULL;
1081 }
1082
1083 /* set the current Id, it is sticky until cleared */
1084 void setTypeId(const char *text)
1085 {
1086   if (currentId == NULL)
1087     {
1088     currentId = text;
1089     }
1090 }
1091
1092 /* set the signature and type together */
1093 void typeSig(const char *text)
1094 {
1095   postSig(text);
1096   postSig(" ");
1097
1098   if (currentId == 0)
1099     {
1100     setTypeId(text);
1101     }
1102 }
1103
1104 /* return the current Id */
1105 const char *getTypeId()
1106 {
1107   return currentId;
1108 }
1109
1110 /*----------------------------------------------------------------
1111  * Specifically for function pointers, the scope (i.e. class) that
1112  * the function is a method of.
1113  */
1114
1115 const char *pointerScopeStack[10];
1116 int pointerScopeDepth = 0;
1117
1118 /* save the scope for scoped method pointers */
1119 void scopeSig(const char *scope)
1120 {
1121   if (scope && scope[0] != '\0')
1122     {
1123     postSig(scope);
1124     }
1125   else
1126     {
1127     scope = NULL;
1128     }
1129   pointerScopeStack[pointerScopeDepth++] = vtkstrdup(scope);
1130 }
1131
1132 /* get the scope back */
1133 const char *getScope()
1134 {
1135   return pointerScopeStack[--pointerScopeDepth];
1136 }
1137
1138 /*----------------------------------------------------------------
1139  * Function stack
1140  *
1141  * operates on: currentFunction
1142  */
1143
1144 /* "private" variables */
1145 FunctionInfo *functionStack[10] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
1146 const char *functionVarNameStack[10];
1147 const char *functionTypeIdStack[10];
1148 int functionDepth = 0;
1149
1150 void pushFunction()
1151 {
1152   functionStack[functionDepth] = currentFunction;
1153   currentFunction = (FunctionInfo *)malloc(sizeof(FunctionInfo));
1154   vtkParse_InitFunction(currentFunction);
1155   if (!functionStack[functionDepth])
1156     {
1157     startSig();
1158     }
1159   functionVarNameStack[functionDepth] = getVarName();
1160   functionTypeIdStack[functionDepth] = getTypeId();
1161   pushType();
1162   clearType();
1163   clearVarName();
1164   clearTypeId();
1165   functionDepth++;
1166   functionStack[functionDepth] = 0;
1167 }
1168
1169 void popFunction()
1170 {
1171   FunctionInfo *newFunction = currentFunction;
1172
1173   --functionDepth;
1174   currentFunction = functionStack[functionDepth];
1175   clearVarName();
1176   if (functionVarNameStack[functionDepth])
1177     {
1178     setVarName(functionVarNameStack[functionDepth]);
1179     }
1180   clearTypeId();
1181   if (functionTypeIdStack[functionDepth])
1182     {
1183     setTypeId(functionTypeIdStack[functionDepth]);
1184     }
1185   popType();
1186
1187   functionStack[functionDepth+1] = newFunction;
1188 }
1189
1190 FunctionInfo *getFunction()
1191 {
1192   return functionStack[functionDepth+1];
1193 }
1194
1195 /*----------------------------------------------------------------
1196  * Utility methods
1197  */
1198
1199 /* prepend a scope:: to a name */
1200 void prepend_scope(char *cp, const char *arg)
1201 {
1202   size_t i, j, m, n;
1203   int depth;
1204
1205   m = strlen(cp);
1206   n = strlen(arg);
1207   i = m;
1208   while (i > 0 &&
1209          (vtkParse_CharType(cp[i-1], CPRE_IDGIT) ||
1210           cp[i-1] == ':' || cp[i-1] == '>'))
1211     {
1212     i--;
1213     if (cp[i] == '>')
1214       {
1215       depth = 1;
1216       while (i > 0)
1217         {
1218         i--;
1219         if (cp[i] == '<')
1220           {
1221           if (--depth == 0)
1222             {
1223             break;
1224             }
1225           }
1226         if (cp[i] == '>')
1227           {
1228           depth++;
1229           }
1230         }
1231       }
1232     }
1233
1234   for (j = m; j > i; j--)
1235     {
1236     cp[j+n+1] = cp[j-1];
1237     }
1238   for (j = 0; j < n; j++)
1239     {
1240     cp[j+i] = arg[j];
1241     }
1242   cp[n+i] = ':'; cp[n+i+1] = ':';
1243   cp[m+n+2] = '\0';
1244 }
1245
1246 /* expand a type by including pointers from another */
1247 unsigned int add_indirection(unsigned int type1, unsigned int type2)
1248 {
1249   unsigned int ptr1 = (type1 & VTK_PARSE_POINTER_MASK);
1250   unsigned int ptr2 = (type2 & VTK_PARSE_POINTER_MASK);
1251   unsigned int reverse = 0;
1252   unsigned int result;
1253
1254   /* one of type1 or type2 will only have VTK_PARSE_INDIRECT, but
1255    * we don't know which one. */
1256   result = ((type1 & ~VTK_PARSE_POINTER_MASK) |
1257             (type2 & ~VTK_PARSE_POINTER_MASK));
1258
1259   /* if there are two ampersands, it is an rvalue reference */
1260   if ((type1 & type2 & VTK_PARSE_REF) != 0)
1261     {
1262     result |= VTK_PARSE_RVALUE;
1263     }
1264
1265   while (ptr2)
1266     {
1267     reverse = ((reverse << 2) | (ptr2 & VTK_PARSE_POINTER_LOWMASK));
1268     ptr2 = ((ptr2 >> 2) & VTK_PARSE_POINTER_MASK);
1269     }
1270
1271   while (reverse)
1272     {
1273     ptr1 = ((ptr1 << 2) | (reverse & VTK_PARSE_POINTER_LOWMASK));
1274     reverse = ((reverse >> 2) & VTK_PARSE_POINTER_MASK);
1275
1276     /* make sure we don't exceed the VTK_PARSE_POINTER bitfield */
1277     if ((ptr1 & VTK_PARSE_POINTER_MASK) != ptr1)
1278       {
1279       ptr1 = VTK_PARSE_BAD_INDIRECT;
1280       break;
1281       }
1282     }
1283
1284   return (ptr1 | result);
1285 }
1286
1287 /* There is only one array, so add any parenthetical indirection to it */
1288 unsigned int add_indirection_to_array(unsigned int type)
1289 {
1290   unsigned int ptrs = (type & VTK_PARSE_POINTER_MASK);
1291   unsigned int result = (type & ~VTK_PARSE_POINTER_MASK);
1292   unsigned int reverse = 0;
1293
1294   if ((type & VTK_PARSE_INDIRECT) == VTK_PARSE_BAD_INDIRECT)
1295     {
1296     return (result | VTK_PARSE_BAD_INDIRECT);
1297     }
1298
1299   while (ptrs)
1300     {
1301     reverse = ((reverse << 2) | (ptrs & VTK_PARSE_POINTER_LOWMASK));
1302     ptrs = ((ptrs >> 2) & VTK_PARSE_POINTER_MASK);
1303     }
1304
1305   /* I know the reversal makes no difference, but it is still
1306    * nice to add the pointers in the correct order, just in
1307    * case const pointers are thrown into the mix. */
1308   while (reverse)
1309     {
1310     pushArrayFront("");
1311     reverse = ((reverse >> 2) & VTK_PARSE_POINTER_MASK);
1312     }
1313
1314   return result;
1315 }
1316
1317
1318
1319 /* Line 172 of glr.c  */
1320 #line 1322 "vtkParse.tab.c"
1321
1322
1323
1324
1325 /* Tokens.  */
1326 #ifndef YYTOKENTYPE
1327 # define YYTOKENTYPE
1328    /* Put the tokens into the symbol table, so that GDB and other debuggers
1329       know about them.  */
1330    enum yytokentype {
1331      ID = 258,
1332      VTK_ID = 259,
1333      QT_ID = 260,
1334      StdString = 261,
1335      UnicodeString = 262,
1336      OSTREAM = 263,
1337      ISTREAM = 264,
1338      LP = 265,
1339      LA = 266,
1340      STRING_LITERAL = 267,
1341      INT_LITERAL = 268,
1342      HEX_LITERAL = 269,
1343      OCT_LITERAL = 270,
1344      FLOAT_LITERAL = 271,
1345      CHAR_LITERAL = 272,
1346      ZERO = 273,
1347      NULLPTR = 274,
1348      SSIZE_T = 275,
1349      SIZE_T = 276,
1350      NULLPTR_T = 277,
1351      BEGIN_ATTRIB = 278,
1352      STRUCT = 279,
1353      CLASS = 280,
1354      UNION = 281,
1355      ENUM = 282,
1356      PUBLIC = 283,
1357      PRIVATE = 284,
1358      PROTECTED = 285,
1359      CONST = 286,
1360      VOLATILE = 287,
1361      MUTABLE = 288,
1362      STATIC = 289,
1363      THREAD_LOCAL = 290,
1364      VIRTUAL = 291,
1365      EXPLICIT = 292,
1366      INLINE = 293,
1367      CONSTEXPR = 294,
1368      FRIEND = 295,
1369      EXTERN = 296,
1370      OPERATOR = 297,
1371      TEMPLATE = 298,
1372      THROW = 299,
1373      TRY = 300,
1374      CATCH = 301,
1375      NOEXCEPT = 302,
1376      DECLTYPE = 303,
1377      TYPENAME = 304,
1378      TYPEDEF = 305,
1379      NAMESPACE = 306,
1380      USING = 307,
1381      NEW = 308,
1382      DELETE = 309,
1383      DEFAULT = 310,
1384      STATIC_CAST = 311,
1385      DYNAMIC_CAST = 312,
1386      CONST_CAST = 313,
1387      REINTERPRET_CAST = 314,
1388      OP_LSHIFT_EQ = 315,
1389      OP_RSHIFT_EQ = 316,
1390      OP_LSHIFT = 317,
1391      OP_RSHIFT_A = 318,
1392      OP_DOT_POINTER = 319,
1393      OP_ARROW_POINTER = 320,
1394      OP_ARROW = 321,
1395      OP_INCR = 322,
1396      OP_DECR = 323,
1397      OP_PLUS_EQ = 324,
1398      OP_MINUS_EQ = 325,
1399      OP_TIMES_EQ = 326,
1400      OP_DIVIDE_EQ = 327,
1401      OP_REMAINDER_EQ = 328,
1402      OP_AND_EQ = 329,
1403      OP_OR_EQ = 330,
1404      OP_XOR_EQ = 331,
1405      OP_LOGIC_AND = 332,
1406      OP_LOGIC_OR = 333,
1407      OP_LOGIC_EQ = 334,
1408      OP_LOGIC_NEQ = 335,
1409      OP_LOGIC_LEQ = 336,
1410      OP_LOGIC_GEQ = 337,
1411      ELLIPSIS = 338,
1412      DOUBLE_COLON = 339,
1413      OTHER = 340,
1414      AUTO = 341,
1415      VOID = 342,
1416      BOOL = 343,
1417      FLOAT = 344,
1418      DOUBLE = 345,
1419      INT = 346,
1420      SHORT = 347,
1421      LONG = 348,
1422      INT64__ = 349,
1423      CHAR = 350,
1424      CHAR16_T = 351,
1425      CHAR32_T = 352,
1426      WCHAR_T = 353,
1427      SIGNED = 354,
1428      UNSIGNED = 355,
1429      IdType = 356,
1430      TypeInt8 = 357,
1431      TypeUInt8 = 358,
1432      TypeInt16 = 359,
1433      TypeUInt16 = 360,
1434      TypeInt32 = 361,
1435      TypeUInt32 = 362,
1436      TypeInt64 = 363,
1437      TypeUInt64 = 364,
1438      TypeFloat32 = 365,
1439      TypeFloat64 = 366,
1440      SetMacro = 367,
1441      GetMacro = 368,
1442      SetStringMacro = 369,
1443      GetStringMacro = 370,
1444      SetClampMacro = 371,
1445      SetObjectMacro = 372,
1446      GetObjectMacro = 373,
1447      BooleanMacro = 374,
1448      SetVector2Macro = 375,
1449      SetVector3Macro = 376,
1450      SetVector4Macro = 377,
1451      SetVector6Macro = 378,
1452      GetVector2Macro = 379,
1453      GetVector3Macro = 380,
1454      GetVector4Macro = 381,
1455      GetVector6Macro = 382,
1456      SetVectorMacro = 383,
1457      GetVectorMacro = 384,
1458      ViewportCoordinateMacro = 385,
1459      WorldCoordinateMacro = 386,
1460      TypeMacro = 387,
1461      VTK_BYTE_SWAP_DECL = 388
1462    };
1463 #endif
1464
1465
1466 #ifndef YYSTYPE
1467 typedef union YYSTYPE
1468 {
1469
1470 /* Line 215 of glr.c  */
1471 #line 1293 "vtkParse.y"
1472
1473   const char   *str;
1474   unsigned int  integer;
1475
1476
1477
1478 /* Line 215 of glr.c  */
1479 #line 1481 "vtkParse.tab.c"
1480 } YYSTYPE;
1481 # define YYSTYPE_IS_TRIVIAL 1
1482 #endif
1483
1484 #if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED
1485 typedef struct YYLTYPE
1486 {
1487
1488   char yydummy;
1489
1490 } YYLTYPE;
1491 # define YYLTYPE_IS_DECLARED 1
1492 # define YYLTYPE_IS_TRIVIAL 1
1493 #endif
1494
1495
1496
1497 /* Enabling traces.  */
1498 #ifndef YYDEBUG
1499 # define YYDEBUG 0
1500 #endif
1501
1502 /* Enabling verbose error messages.  */
1503 #ifdef YYERROR_VERBOSE
1504 # undef YYERROR_VERBOSE
1505 # define YYERROR_VERBOSE 1
1506 #else
1507 # define YYERROR_VERBOSE 0
1508 #endif
1509
1510 /* Enabling the token table.  */
1511 #ifndef YYTOKEN_TABLE
1512 # define YYTOKEN_TABLE 0
1513 #endif
1514
1515 /* Default (constant) value used for initialization for null
1516    right-hand sides.  Unlike the standard yacc.c template,
1517    here we set the default value of $$ to a zeroed-out value.
1518    Since the default value is undefined, this behavior is
1519    technically correct.  */
1520 static YYSTYPE yyval_default;
1521
1522 /* Copy the second part of user declarations.  */
1523
1524
1525 /* Line 243 of glr.c  */
1526 #line 1528 "vtkParse.tab.c"
1527
1528 #include <stdio.h>
1529 #include <stdlib.h>
1530 #include <string.h>
1531
1532 #ifndef YY_
1533 # if YYENABLE_NLS
1534 #  if ENABLE_NLS
1535 #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
1536 #   define YY_(msgid) dgettext ("bison-runtime", msgid)
1537 #  endif
1538 # endif
1539 # ifndef YY_
1540 #  define YY_(msgid) msgid
1541 # endif
1542 #endif
1543
1544 /* Suppress unused-variable warnings by "using" E.  */
1545 #define YYUSE(e) ((void) (e))
1546
1547 /* Identity function, used to suppress warnings about constant conditions.  */
1548 #ifndef lint
1549 # define YYID(n) (n)
1550 #else
1551 #if (defined __STDC__ || defined __C99__FUNC__ \
1552      || defined __cplusplus || defined _MSC_VER)
1553 static int
1554 YYID (int i)
1555 #else
1556 static int
1557 YYID (i)
1558     int i;
1559 #endif
1560 {
1561   return i;
1562 }
1563 #endif
1564
1565 #ifndef YYFREE
1566 # define YYFREE free
1567 #endif
1568 #ifndef YYMALLOC
1569 # define YYMALLOC malloc
1570 #endif
1571 #ifndef YYREALLOC
1572 # define YYREALLOC realloc
1573 #endif
1574
1575 #define YYSIZEMAX ((size_t) -1)
1576
1577 #ifdef __cplusplus
1578    typedef bool yybool;
1579 #else
1580    typedef unsigned char yybool;
1581 #endif
1582 #define yytrue 1
1583 #define yyfalse 0
1584
1585 #ifndef YYSETJMP
1586 # include <setjmp.h>
1587 # define YYJMP_BUF jmp_buf
1588 # define YYSETJMP(env) setjmp (env)
1589 # define YYLONGJMP(env, val) longjmp (env, val)
1590 #endif
1591
1592 /*-----------------.
1593 | GCC extensions.  |
1594 `-----------------*/
1595
1596 #ifndef __attribute__
1597 /* This feature is available in gcc versions 2.5 and later.  */
1598 # if (! defined __GNUC__ || __GNUC__ < 2 \
1599       || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || __STRICT_ANSI__)
1600 #  define __attribute__(Spec) /* empty */
1601 # endif
1602 #endif
1603
1604
1605 #ifdef __cplusplus
1606 # define YYOPTIONAL_LOC(Name) /* empty */
1607 #else
1608 # define YYOPTIONAL_LOC(Name) Name __attribute__ ((__unused__))
1609 #endif
1610
1611 #ifndef YYASSERT
1612 # define YYASSERT(condition) ((void) ((condition) || (abort (), 0)))
1613 #endif
1614
1615 /* YYFINAL -- State number of the termination state.  */
1616 #define YYFINAL  3
1617 /* YYLAST -- Last index in YYTABLE.  */
1618 #define YYLAST   9147
1619
1620 /* YYNTOKENS -- Number of terminals.  */
1621 #define YYNTOKENS  157
1622 /* YYNNTS -- Number of nonterminals.  */
1623 #define YYNNTS  276
1624 /* YYNRULES -- Number of rules.  */
1625 #define YYNRULES  701
1626 /* YYNRULES -- Number of states.  */
1627 #define YYNSTATES  1182
1628 /* YYMAXRHS -- Maximum number of symbols on right-hand side of rule.  */
1629 #define YYMAXRHS 10
1630 /* YYMAXLEFT -- Maximum number of symbols to the left of a handle
1631    accessed by $0, $-1, etc., in any rule.  */
1632 #define YYMAXLEFT 0
1633
1634 /* YYTRANSLATE(X) -- Bison symbol number corresponding to X.  */
1635 #define YYUNDEFTOK  2
1636 #define YYMAXUTOK   388
1637
1638 #define YYTRANSLATE(YYX)                                                \
1639   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
1640
1641 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
1642 static const unsigned char yytranslate[] =
1643 {
1644        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1645        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1646        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1647        2,     2,     2,   153,     2,     2,     2,   149,   146,     2,
1648      140,   141,   147,   152,   139,   151,   156,   150,     2,     2,
1649        2,     2,     2,     2,     2,     2,     2,     2,   138,   134,
1650      142,   137,   148,     2,     2,     2,     2,     2,     2,     2,
1651        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1652        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1653        2,   143,     2,   144,   155,     2,     2,     2,     2,     2,
1654        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1655        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1656        2,     2,     2,   135,   154,   136,   145,     2,     2,     2,
1657        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1658        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1659        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1660        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1661        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1662        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1663        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1664        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1665        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1666        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1667        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1668        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1669        2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
1670        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
1671       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
1672       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
1673       35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
1674       45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
1675       55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
1676       65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
1677       75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
1678       85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
1679       95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
1680      105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
1681      115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
1682      125,   126,   127,   128,   129,   130,   131,   132,   133
1683 };
1684
1685 #if YYDEBUG
1686 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
1687    YYRHS.  */
1688 static const unsigned short int yyprhs[] =
1689 {
1690        0,     0,     3,     5,     6,     7,    12,    14,    16,    18,
1691       20,    22,    24,    26,    28,    30,    32,    34,    36,    38,
1692       40,    42,    44,    47,    49,    52,    55,    58,    61,    64,
1693       70,    75,    81,    86,    87,    94,   100,   102,   105,   110,
1694      114,   120,   125,   131,   132,   138,   139,   147,   152,   153,
1695      159,   162,   164,   166,   168,   172,   177,   180,   182,   184,
1696      185,   187,   188,   189,   194,   198,   200,   202,   204,   206,
1697      208,   210,   212,   214,   216,   218,   220,   222,   224,   226,
1698      228,   230,   233,   236,   238,   241,   244,   247,   250,   253,
1699      257,   260,   264,   266,   271,   274,   279,   284,   285,   287,
1700      288,   290,   292,   294,   296,   302,   306,   313,   318,   324,
1701      325,   331,   336,   340,   342,   345,   348,   349,   350,   354,
1702      356,   360,   361,   363,   364,   369,   376,   379,   381,   387,
1703      394,   398,   403,   409,   413,   415,   418,   424,   430,   437,
1704      443,   450,   453,   454,   458,   461,   463,   465,   466,   467,
1705      476,   478,   482,   484,   487,   490,   493,   497,   501,   506,
1706      507,   516,   520,   521,   527,   529,   530,   535,   536,   537,
1707      543,   544,   545,   551,   552,   553,   554,   562,   563,   565,
1708      567,   569,   570,   572,   573,   577,   579,   582,   585,   588,
1709      591,   594,   598,   603,   606,   610,   613,   617,   622,   625,
1710      630,   636,   640,   642,   644,   647,   649,   652,   656,   657,
1711      658,   668,   671,   672,   677,   678,   686,   689,   691,   695,
1712      696,   699,   700,   704,   706,   709,   711,   714,   716,   718,
1713      720,   723,   726,   727,   729,   730,   734,   738,   740,   742,
1714      749,   750,   757,   758,   766,   767,   768,   775,   776,   783,
1715      784,   787,   789,   793,   797,   798,   799,   802,   804,   805,
1716      810,   814,   816,   817,   818,   824,   825,   827,   828,   832,
1717      833,   836,   841,   844,   845,   848,   849,   850,   855,   858,
1718      859,   861,   865,   866,   873,   877,   878,   884,   885,   889,
1719      891,   892,   893,   894,   902,   904,   905,   908,   911,   915,
1720      919,   922,   924,   927,   929,   932,   933,   935,   938,   943,
1721      945,   947,   949,   950,   952,   953,   956,   958,   961,   962,
1722      968,   969,   970,   973,   975,   977,   979,   981,   983,   986,
1723      989,   992,   995,   998,  1001,  1004,  1007,  1011,  1015,  1019,
1724     1020,  1026,  1028,  1030,  1032,  1033,  1039,  1040,  1044,  1046,
1725     1048,  1050,  1052,  1054,  1056,  1058,  1060,  1062,  1064,  1066,
1726     1068,  1070,  1072,  1074,  1076,  1078,  1080,  1082,  1084,  1086,
1727     1088,  1090,  1092,  1094,  1096,  1098,  1100,  1101,  1105,  1107,
1728     1109,  1111,  1113,  1116,  1120,  1122,  1124,  1126,  1128,  1130,
1729     1132,  1135,  1137,  1139,  1141,  1143,  1145,  1147,  1149,  1151,
1730     1154,  1157,  1158,  1162,  1163,  1168,  1170,  1174,  1179,  1181,
1731     1183,  1184,  1189,  1192,  1195,  1198,  1199,  1203,  1204,  1209,
1732     1212,  1213,  1217,  1218,  1223,  1225,  1227,  1229,  1231,  1234,
1733     1237,  1240,  1243,  1246,  1248,  1250,  1252,  1254,  1256,  1258,
1734     1260,  1262,  1264,  1266,  1268,  1270,  1272,  1274,  1276,  1278,
1735     1280,  1282,  1284,  1286,  1288,  1290,  1292,  1294,  1296,  1298,
1736     1300,  1302,  1304,  1306,  1308,  1310,  1312,  1314,  1316,  1318,
1737     1320,  1322,  1324,  1327,  1330,  1333,  1334,  1339,  1340,  1342,
1738     1344,  1347,  1348,  1351,  1352,  1353,  1360,  1361,  1369,  1370,
1739     1371,  1372,  1382,  1383,  1389,  1390,  1396,  1397,  1398,  1409,
1740     1410,  1418,  1419,  1420,  1421,  1431,  1438,  1439,  1447,  1448,
1741     1456,  1457,  1465,  1466,  1474,  1475,  1483,  1484,  1492,  1493,
1742     1501,  1502,  1510,  1511,  1521,  1522,  1532,  1537,  1542,  1550,
1743     1551,  1553,  1556,  1559,  1563,  1567,  1569,  1571,  1573,  1575,
1744     1578,  1581,  1584,  1586,  1588,  1590,  1592,  1594,  1596,  1598,
1745     1600,  1602,  1604,  1606,  1608,  1610,  1612,  1614,  1616,  1618,
1746     1620,  1622,  1624,  1626,  1628,  1630,  1632,  1634,  1636,  1638,
1747     1640,  1642,  1644,  1646,  1648,  1650,  1652,  1654,  1656,  1658,
1748     1660,  1662,  1664,  1666,  1668,  1670,  1672,  1674,  1676,  1678,
1749     1680,  1682,  1684,  1686,  1688,  1690,  1692,  1694,  1696,  1698,
1750     1700,  1702,  1704,  1706,  1708,  1710,  1712,  1714,  1716,  1718,
1751     1720,  1722,  1724,  1726,  1728,  1730,  1733,  1735,  1737,  1739,
1752     1740,  1744,  1746,  1748,  1750,  1752,  1754,  1756,  1758,  1760,
1753     1762,  1764,  1766,  1768,  1770,  1771,  1774,  1776,  1778,  1780,
1754     1782,  1784,  1786,  1788,  1790,  1792,  1793,  1796,  1797,  1800,
1755     1802,  1804,  1806,  1808,  1810,  1811,  1816,  1818,  1820,  1821,
1756     1826,  1827,  1833,  1834,  1839,  1840,  1845,  1846,  1851,  1852,
1757     1857,  1858,  1861,  1862,  1865,  1867,  1869,  1871,  1873,  1875,
1758     1877,  1879,  1881,  1883,  1885,  1887,  1889,  1891,  1893,  1895,
1759     1897,  1899,  1901,  1903,  1905,  1907,  1911,  1915,  1920,  1924,
1760     1926,  1928
1761 };
1762
1763 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
1764 static const short int yyrhs[] =
1765 {
1766      158,     0,    -1,   159,    -1,    -1,    -1,   159,   160,   367,
1767      161,    -1,   218,    -1,   216,    -1,   219,    -1,   168,    -1,
1768      191,    -1,   165,    -1,   167,    -1,   164,    -1,   206,    -1,
1769      289,    -1,   192,    -1,   170,    -1,   239,    -1,   162,    -1,
1770      163,    -1,   371,    -1,   319,   134,    -1,   134,    -1,   221,
1771      170,    -1,   221,   239,    -1,   221,   202,    -1,   221,   162,
1772       -1,   221,   219,    -1,    41,    43,   428,   425,   134,    -1,
1773       43,   428,   425,   134,    -1,    41,    12,   135,   159,   136,
1774       -1,    51,   135,   424,   136,    -1,    -1,    51,   332,   166,
1775      135,   159,   136,    -1,    51,   332,   137,   321,   134,    -1,
1776      169,    -1,   221,   169,    -1,   176,   367,   177,   134,    -1,
1777      176,   367,   134,    -1,   335,   176,   367,   177,   134,    -1,
1778      171,   333,   291,   134,    -1,   335,   171,   333,   291,   134,
1779       -1,    -1,   173,   172,   135,   180,   136,    -1,    -1,   176,
1780      367,   177,   179,   138,   174,   186,    -1,   176,   367,   177,
1781      179,    -1,    -1,   176,   367,   138,   175,   186,    -1,   176,
1782      367,    -1,    25,    -1,    24,    -1,    26,    -1,   322,   178,
1783      367,    -1,   326,   322,   178,   367,    -1,   178,   367,    -1,
1784      331,    -1,   327,    -1,    -1,     3,    -1,    -1,    -1,   180,
1785      181,   367,   183,    -1,   180,   182,   138,    -1,    28,    -1,
1786       29,    -1,    30,    -1,   216,    -1,   219,    -1,   168,    -1,
1787      191,    -1,   185,    -1,   206,    -1,   289,    -1,   192,    -1,
1788      170,    -1,   243,    -1,   184,    -1,   163,    -1,   371,    -1,
1789      133,   431,    -1,   319,   134,    -1,   134,    -1,   221,   170,
1790       -1,   221,   243,    -1,   221,   184,    -1,   221,   219,    -1,
1791       40,   204,    -1,    40,   221,   204,    -1,    40,   168,    -1,
1792       40,   244,   265,    -1,   187,    -1,   186,   139,   367,   187,
1793       -1,   319,   233,    -1,    36,   189,   319,   233,    -1,   190,
1794      188,   319,   233,    -1,    -1,    36,    -1,    -1,   190,    -1,
1795       28,    -1,    29,    -1,    30,    -1,   196,   367,   319,   197,
1796      134,    -1,   196,   367,   134,    -1,   335,   196,   367,   319,
1797      197,   134,    -1,   193,   333,   291,   134,    -1,   335,   193,
1798      333,   291,   134,    -1,    -1,   195,   135,   194,   199,   136,
1799       -1,   196,   367,   319,   197,    -1,   196,   367,   197,    -1,
1800       27,    -1,    27,    25,    -1,    27,    24,    -1,    -1,    -1,
1801      138,   198,   342,    -1,   200,    -1,   199,   139,   200,    -1,
1802       -1,   331,    -1,    -1,   331,   137,   201,   399,    -1,   341,
1803      233,   322,   331,   203,   134,    -1,   137,   425,    -1,   429,
1804       -1,   176,   367,   177,   179,   205,    -1,   335,   176,   367,
1805      177,   179,   205,    -1,   176,   367,   205,    -1,   335,   176,
1806      367,   205,    -1,   135,   424,   136,   425,   134,    -1,   138,
1807      425,   134,    -1,   207,    -1,   335,   207,    -1,    50,   341,
1808      215,   209,   134,    -1,    50,   171,   333,   208,   134,    -1,
1809       50,   335,   171,   333,   208,   134,    -1,    50,   193,   333,
1810      208,   134,    -1,    50,   335,   193,   333,   208,   134,    -1,
1811      210,   209,    -1,    -1,   209,   139,   210,    -1,   295,   215,
1812       -1,   298,    -1,   212,    -1,    -1,    -1,   233,   309,   140,
1813      213,   278,   141,   214,   305,    -1,   211,    -1,    52,   217,
1814      134,    -1,   319,    -1,    49,   319,    -1,   322,   254,    -1,
1815      322,   249,    -1,   326,   322,   254,    -1,   326,   322,   249,
1816       -1,    52,    51,   319,   134,    -1,    -1,    52,   319,   367,
1817      137,   220,   341,   296,   134,    -1,    43,   142,   414,    -1,
1818       -1,    43,   142,   222,   223,   414,    -1,   225,    -1,    -1,
1819      223,   139,   224,   225,    -1,    -1,    -1,   226,   352,   296,
1820      227,   235,    -1,    -1,    -1,   228,   234,   296,   229,   235,
1821       -1,    -1,    -1,    -1,   230,   221,    25,   231,   296,   232,
1822      235,    -1,    -1,    83,    -1,    25,    -1,    49,    -1,    -1,
1823      236,    -1,    -1,   137,   237,   238,    -1,   410,    -1,   238,
1824      410,    -1,   240,   265,    -1,   245,   265,    -1,   241,   265,
1825       -1,   242,   265,    -1,   341,   233,   256,    -1,   341,   233,
1826      322,   256,    -1,   322,   270,    -1,   335,   322,   270,    -1,
1827      322,   246,    -1,   335,   322,   246,    -1,   341,   233,   322,
1828      250,    -1,   244,   265,    -1,   322,   254,   367,   134,    -1,
1829      335,   322,   254,   367,   134,    -1,   341,   233,   256,    -1,
1830      245,    -1,   270,    -1,   335,   270,    -1,   246,    -1,   335,
1831      246,    -1,   341,   233,   250,    -1,    -1,    -1,   249,   140,
1832      247,   278,   141,   367,   248,   257,   262,    -1,   255,   341,
1833       -1,    -1,   252,   251,   257,   262,    -1,    -1,   254,   367,
1834      140,   253,   278,   141,   367,    -1,   255,   395,    -1,    42,
1835       -1,   268,   257,   262,    -1,    -1,   257,   258,    -1,    -1,
1836       44,   259,   418,    -1,    31,    -1,   137,    18,    -1,     3,
1837       -1,   260,   418,    -1,   260,    -1,   261,    -1,    47,    -1,
1838      137,    54,    -1,   137,    55,    -1,    -1,   263,    -1,    -1,
1839       66,   264,   348,    -1,   135,   424,   136,    -1,   266,    -1,
1840      134,    -1,    45,   275,   135,   424,   136,   267,    -1,    -1,
1841      267,    46,   431,   135,   424,   136,    -1,    -1,   320,   367,
1842      140,   269,   278,   141,   367,    -1,    -1,    -1,   273,   271,
1843      275,   272,   257,   262,    -1,    -1,   320,   140,   274,   278,
1844      141,   367,    -1,    -1,   138,   276,    -1,   277,    -1,   276,
1845      139,   277,    -1,   319,   431,   233,    -1,    -1,    -1,   279,
1846      280,    -1,   282,    -1,    -1,   280,   139,   281,   282,    -1,
1847      280,   139,    83,    -1,    83,    -1,    -1,    -1,   283,   341,
1848      296,   284,   285,    -1,    -1,   286,    -1,    -1,   137,   287,
1849      399,    -1,    -1,   288,   422,    -1,   341,   290,   292,   134,
1850       -1,   298,   285,    -1,    -1,   294,   292,    -1,    -1,    -1,
1851      292,   139,   293,   294,    -1,   295,   290,    -1,    -1,   360,
1852       -1,   233,   308,   302,    -1,    -1,   300,   367,   306,   141,
1853      297,   302,    -1,   233,   309,   311,    -1,    -1,   300,   307,
1854      141,   299,   302,    -1,    -1,    10,   301,   365,    -1,    11,
1855       -1,    -1,    -1,    -1,   140,   303,   278,   141,   367,   304,
1856      305,    -1,   312,    -1,    -1,   305,    33,    -1,   305,    31,
1857       -1,   305,    44,   431,    -1,   305,    47,   431,    -1,   305,
1858       47,    -1,   296,    -1,   360,   296,    -1,   298,    -1,   360,
1859      298,    -1,    -1,   309,    -1,   320,   367,    -1,   320,   367,
1860      138,   310,    -1,    15,    -1,    13,    -1,    14,    -1,    -1,
1861      312,    -1,    -1,   313,   314,    -1,   315,    -1,   314,   315,
1862       -1,    -1,   143,   316,   317,   144,   367,    -1,    -1,    -1,
1863      318,   399,    -1,   320,    -1,   321,    -1,   331,    -1,   327,
1864       -1,   329,    -1,   324,   178,    -1,   324,   329,    -1,   322,
1865      320,    -1,   326,   320,    -1,   326,   321,    -1,   325,   326,
1866       -1,   327,   326,    -1,   329,   326,    -1,   322,   325,   326,
1867       -1,   322,   327,   326,    -1,   322,   329,   326,    -1,    -1,
1868      322,    43,   323,   327,   326,    -1,   145,    -1,   332,    -1,
1869       84,    -1,    -1,   332,   142,   328,   408,   414,    -1,    -1,
1870       48,   330,   418,    -1,     4,    -1,     5,    -1,     3,    -1,
1871        9,    -1,     8,    -1,     6,    -1,     7,    -1,    22,    -1,
1872       21,    -1,    20,    -1,   102,    -1,   103,    -1,   104,    -1,
1873      105,    -1,   106,    -1,   107,    -1,   108,    -1,   109,    -1,
1874      110,    -1,   111,    -1,   101,    -1,     3,    -1,     5,    -1,
1875        4,    -1,     9,    -1,     8,    -1,     6,    -1,     7,    -1,
1876       -1,   333,   334,   367,    -1,   336,    -1,   359,    -1,    50,
1877       -1,    40,    -1,   336,   367,    -1,   335,   336,   367,    -1,
1878      337,    -1,   338,    -1,   339,    -1,    39,    -1,    33,    -1,
1879       41,    -1,    41,    12,    -1,    34,    -1,    35,    -1,    38,
1880       -1,    36,    -1,    37,    -1,    31,    -1,    32,    -1,   339,
1881       -1,   340,   339,    -1,   342,   295,    -1,    -1,   345,   343,
1882      333,    -1,    -1,   335,   345,   344,   333,    -1,   346,    -1,
1883      176,   367,   177,    -1,   196,   367,   319,   367,    -1,   357,
1884       -1,   329,    -1,    -1,    49,   347,   319,   367,    -1,   327,
1885      367,    -1,   321,   367,    -1,   349,   295,    -1,    -1,   346,
1886      350,   333,    -1,    -1,   335,   346,   351,   333,    -1,   353,
1887      295,    -1,    -1,   356,   354,   333,    -1,    -1,   335,   345,
1888      355,   333,    -1,   357,    -1,   329,    -1,   327,    -1,   321,
1889       -1,    24,   319,    -1,    26,   319,    -1,   196,   319,    -1,
1890      359,   367,    -1,   358,   367,    -1,     6,    -1,     7,    -1,
1891        8,    -1,     9,    -1,     3,    -1,     4,    -1,     5,    -1,
1892       22,    -1,    20,    -1,    21,    -1,   102,    -1,   103,    -1,
1893      104,    -1,   105,    -1,   106,    -1,   107,    -1,   108,    -1,
1894      109,    -1,   110,    -1,   111,    -1,   101,    -1,    86,    -1,
1895       87,    -1,    88,    -1,    89,    -1,    90,    -1,    95,    -1,
1896       96,    -1,    97,    -1,    98,    -1,    91,    -1,    92,    -1,
1897       93,    -1,    94,    -1,    99,    -1,   100,    -1,   361,    -1,
1898      362,    -1,   366,    -1,   366,   361,    -1,   146,   367,    -1,
1899       77,   367,    -1,    -1,   147,   367,   364,   365,    -1,    -1,
1900      340,    -1,   363,    -1,   366,   363,    -1,    -1,   367,   368,
1901       -1,    -1,    -1,    23,   369,   404,   370,   144,   144,    -1,
1902       -1,   112,   140,   331,   139,   372,   341,   141,    -1,    -1,
1903       -1,    -1,   113,   140,   373,   331,   139,   374,   341,   375,
1904      141,    -1,    -1,   114,   140,   376,   331,   141,    -1,    -1,
1905      115,   140,   377,   331,   141,    -1,    -1,    -1,   116,   140,
1906      331,   139,   378,   341,   379,   139,   425,   141,    -1,    -1,
1907      117,   140,   331,   139,   380,   341,   141,    -1,    -1,    -1,
1908       -1,   118,   140,   381,   331,   139,   382,   341,   383,   141,
1909       -1,   119,   140,   331,   139,   341,   141,    -1,    -1,   120,
1910      140,   331,   139,   384,   341,   141,    -1,    -1,   124,   140,
1911      331,   139,   385,   341,   141,    -1,    -1,   121,   140,   331,
1912      139,   386,   341,   141,    -1,    -1,   125,   140,   331,   139,
1913      387,   341,   141,    -1,    -1,   122,   140,   331,   139,   388,
1914      341,   141,    -1,    -1,   126,   140,   331,   139,   389,   341,
1915      141,    -1,    -1,   123,   140,   331,   139,   390,   341,   141,
1916       -1,    -1,   127,   140,   331,   139,   391,   341,   141,    -1,
1917       -1,   128,   140,   331,   139,   392,   341,   139,    13,   141,
1918       -1,    -1,   129,   140,   331,   139,   393,   341,   139,    13,
1919      141,    -1,   130,   140,   331,   141,    -1,   131,   140,   331,
1920      141,    -1,   132,   140,   331,   139,   319,   394,   141,    -1,
1921       -1,   139,    -1,   140,   141,    -1,   143,   144,    -1,    53,
1922      143,   144,    -1,    54,   143,   144,    -1,   142,    -1,   148,
1923       -1,   139,    -1,   137,    -1,    63,   148,    -1,    63,    63,
1924       -1,    12,     3,    -1,   396,    -1,   149,    -1,   147,    -1,
1925      150,    -1,   151,    -1,   152,    -1,   153,    -1,   145,    -1,
1926      146,    -1,   154,    -1,   155,    -1,    53,    -1,    54,    -1,
1927       60,    -1,    61,    -1,    62,    -1,    64,    -1,    65,    -1,
1928       66,    -1,    69,    -1,    70,    -1,    71,    -1,    72,    -1,
1929       73,    -1,    67,    -1,    68,    -1,    74,    -1,    75,    -1,
1930       76,    -1,    77,    -1,    78,    -1,    79,    -1,    80,    -1,
1931       81,    -1,    82,    -1,    50,    -1,    49,    -1,    25,    -1,
1932       24,    -1,    26,    -1,    43,    -1,    28,    -1,    30,    -1,
1933       29,    -1,    31,    -1,    34,    -1,    35,    -1,    39,    -1,
1934       38,    -1,    36,    -1,    37,    -1,    48,    -1,    55,    -1,
1935       41,    -1,    52,    -1,    51,    -1,    42,    -1,    27,    -1,
1936       44,    -1,    47,    -1,    58,    -1,    57,    -1,    56,    -1,
1937       59,    -1,    15,    -1,    13,    -1,    14,    -1,    16,    -1,
1938       17,    -1,    12,    -1,    18,    -1,    19,    -1,   400,    -1,
1939      399,   400,    -1,   402,    -1,   412,    -1,   142,    -1,    -1,
1940      148,   401,   403,    -1,    63,    -1,   403,    -1,    84,    -1,
1941      415,    -1,   418,    -1,   422,    -1,   396,    -1,   138,    -1,
1942      156,    -1,   397,    -1,   398,    -1,   359,    -1,   358,    -1,
1943       -1,   404,   406,    -1,   402,    -1,   142,    -1,   148,    -1,
1944       63,    -1,   405,    -1,   137,    -1,   139,    -1,   406,    -1,
1945      134,    -1,    -1,   408,   411,    -1,    -1,   409,   407,    -1,
1946      412,    -1,   402,    -1,   410,    -1,   137,    -1,   139,    -1,
1947       -1,   142,   413,   408,   414,    -1,   148,    -1,    63,    -1,
1948       -1,   143,   416,   404,   144,    -1,    -1,    23,   417,   404,
1949      144,   144,    -1,    -1,   140,   419,   404,   141,    -1,    -1,
1950       10,   420,   404,   141,    -1,    -1,    11,   421,   404,   141,
1951       -1,    -1,   135,   423,   409,   136,    -1,    -1,   424,   426,
1952       -1,    -1,   425,   427,    -1,   427,    -1,   134,    -1,   428,
1953       -1,   142,    -1,   429,    -1,   431,    -1,   430,    -1,    84,
1954       -1,    83,    -1,   396,    -1,    63,    -1,   138,    -1,   156,
1955       -1,   148,    -1,   137,    -1,   139,    -1,   397,    -1,   398,
1956       -1,   359,    -1,   358,    -1,    85,    -1,   135,   424,   136,
1957       -1,   143,   424,   144,    -1,    23,   424,   144,   144,    -1,
1958      432,   424,   141,    -1,   140,    -1,    10,    -1,    11,    -1
1959 };
1960
1961 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
1962 static const unsigned short int yyrline[] =
1963 {
1964        0,  1467,  1467,  1469,  1471,  1470,  1481,  1482,  1483,  1484,
1965     1485,  1486,  1487,  1488,  1489,  1490,  1491,  1492,  1493,  1494,
1966     1495,  1496,  1497,  1498,  1501,  1502,  1503,  1504,  1505,  1508,
1967     1509,  1516,  1523,  1524,  1524,  1528,  1535,  1536,  1539,  1540,
1968     1541,  1544,  1545,  1548,  1548,  1563,  1562,  1568,  1574,  1573,
1969     1578,  1584,  1585,  1586,  1589,  1591,  1593,  1596,  1597,  1600,
1970     1601,  1603,  1605,  1604,  1613,  1617,  1618,  1619,  1622,  1623,
1971     1624,  1625,  1626,  1627,  1628,  1629,  1630,  1631,  1632,  1633,
1972     1634,  1635,  1636,  1637,  1640,  1641,  1642,  1643,  1646,  1647,
1973     1648,  1649,  1652,  1653,  1656,  1658,  1661,  1666,  1667,  1670,
1974     1671,  1674,  1675,  1676,  1687,  1688,  1689,  1693,  1694,  1698,
1975     1698,  1711,  1717,  1725,  1726,  1727,  1730,  1731,  1731,  1735,
1976     1736,  1738,  1739,  1740,  1740,  1748,  1752,  1753,  1756,  1758,
1977     1760,  1761,  1764,  1765,  1773,  1774,  1777,  1778,  1780,  1782,
1978     1784,  1788,  1790,  1791,  1794,  1797,  1798,  1801,  1802,  1801,
1979     1806,  1840,  1843,  1844,  1845,  1847,  1849,  1851,  1855,  1858,
1980     1858,  1889,  1892,  1891,  1909,  1911,  1910,  1915,  1917,  1915,
1981     1919,  1921,  1919,  1923,  1924,  1926,  1923,  1937,  1938,  1941,
1982     1942,  1944,  1945,  1948,  1948,  1958,  1959,  1967,  1968,  1969,
1983     1970,  1973,  1976,  1977,  1978,  1981,  1982,  1983,  1986,  1987,
1984     1988,  1992,  1993,  1994,  1995,  1998,  1999,  2000,  2004,  2009,
1985     2003,  2021,  2025,  2025,  2037,  2036,  2045,  2049,  2052,  2061,
1986     2062,  2065,  2065,  2066,  2067,  2073,  2078,  2079,  2080,  2083,
1987     2086,  2087,  2089,  2090,  2093,  2093,  2101,  2102,  2103,  2106,
1988     2108,  2109,  2113,  2112,  2125,  2126,  2125,  2145,  2145,  2149,
1989     2150,  2153,  2154,  2157,  2163,  2164,  2164,  2167,  2168,  2168,
1990     2170,  2172,  2176,  2178,  2176,  2202,  2203,  2206,  2206,  2208,
1991     2208,  2216,  2219,  2278,  2279,  2281,  2282,  2282,  2285,  2288,
1992     2289,  2293,  2304,  2304,  2323,  2325,  2325,  2343,  2343,  2345,
1993     2349,  2350,  2351,  2350,  2356,  2358,  2359,  2360,  2361,  2362,
1994     2363,  2366,  2367,  2371,  2372,  2376,  2377,  2380,  2381,  2385,
1995     2386,  2387,  2390,  2391,  2394,  2394,  2397,  2398,  2401,  2401,
1996     2405,  2406,  2406,  2413,  2414,  2417,  2418,  2419,  2420,  2421,
1997     2424,  2426,  2428,  2432,  2434,  2436,  2438,  2440,  2442,  2444,
1998     2444,  2449,  2452,  2455,  2458,  2458,  2466,  2466,  2475,  2476,
1999     2477,  2478,  2479,  2480,  2481,  2482,  2483,  2484,  2485,  2486,
2000     2487,  2488,  2489,  2490,  2491,  2492,  2493,  2494,  2495,  2502,
2001     2503,  2504,  2505,  2506,  2507,  2508,  2514,  2515,  2518,  2519,
2002     2521,  2522,  2525,  2526,  2529,  2530,  2531,  2532,  2535,  2536,
2003     2537,  2538,  2539,  2543,  2544,  2545,  2548,  2549,  2552,  2553,
2004     2561,  2564,  2564,  2566,  2566,  2570,  2571,  2573,  2577,  2578,
2005     2580,  2580,  2582,  2584,  2588,  2591,  2591,  2593,  2593,  2597,
2006     2600,  2600,  2602,  2602,  2606,  2607,  2609,  2611,  2613,  2615,
2007     2617,  2621,  2622,  2625,  2626,  2627,  2628,  2629,  2630,  2631,
2008     2632,  2633,  2634,  2635,  2636,  2637,  2638,  2639,  2640,  2641,
2009     2642,  2643,  2644,  2645,  2648,  2649,  2650,  2651,  2652,  2653,
2010     2654,  2655,  2656,  2657,  2658,  2659,  2660,  2661,  2662,  2682,
2011     2683,  2684,  2685,  2688,  2692,  2696,  2696,  2700,  2701,  2716,
2012     2717,  2733,  2734,  2737,  2737,  2737,  2744,  2744,  2754,  2755,
2013     2755,  2754,  2764,  2764,  2774,  2774,  2783,  2783,  2783,  2816,
2014     2815,  2826,  2827,  2827,  2826,  2836,  2854,  2854,  2859,  2859,
2015     2864,  2864,  2869,  2869,  2874,  2874,  2879,  2879,  2884,  2884,
2016     2889,  2889,  2894,  2894,  2911,  2911,  2925,  2962,  3000,  3037,
2017     3038,  3045,  3046,  3047,  3048,  3049,  3050,  3051,  3052,  3053,
2018     3054,  3055,  3056,  3059,  3060,  3061,  3062,  3063,  3064,  3065,
2019     3066,  3067,  3068,  3069,  3070,  3071,  3072,  3073,  3074,  3075,
2020     3076,  3077,  3078,  3079,  3080,  3081,  3082,  3083,  3084,  3085,
2021     3086,  3087,  3088,  3089,  3090,  3091,  3092,  3095,  3096,  3097,
2022     3098,  3099,  3100,  3101,  3102,  3103,  3104,  3105,  3106,  3107,
2023     3108,  3109,  3110,  3111,  3112,  3113,  3114,  3115,  3116,  3117,
2024     3118,  3119,  3120,  3121,  3122,  3123,  3126,  3127,  3128,  3129,
2025     3130,  3131,  3132,  3133,  3140,  3141,  3144,  3145,  3146,  3147,
2026     3147,  3148,  3151,  3152,  3155,  3156,  3157,  3158,  3188,  3188,
2027     3189,  3190,  3191,  3192,  3215,  3216,  3219,  3220,  3221,  3222,
2028     3225,  3226,  3227,  3230,  3231,  3233,  3234,  3236,  3237,  3240,
2029     3241,  3244,  3245,  3246,  3250,  3249,  3263,  3264,  3267,  3267,
2030     3269,  3269,  3273,  3273,  3275,  3275,  3277,  3277,  3281,  3281,
2031     3286,  3287,  3289,  3290,  3293,  3294,  3297,  3298,  3301,  3302,
2032     3303,  3304,  3305,  3306,  3307,  3308,  3308,  3308,  3308,  3308,
2033     3309,  3310,  3311,  3312,  3313,  3316,  3319,  3320,  3323,  3326,
2034     3326,  3326
2035 };
2036 #endif
2037
2038 #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
2039 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
2040    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
2041 static const char *const yytname[] =
2042 {
2043   "$end", "error", "$undefined", "ID", "VTK_ID", "QT_ID", "StdString",
2044   "UnicodeString", "OSTREAM", "ISTREAM", "LP", "LA", "STRING_LITERAL",
2045   "INT_LITERAL", "HEX_LITERAL", "OCT_LITERAL", "FLOAT_LITERAL",
2046   "CHAR_LITERAL", "ZERO", "NULLPTR", "SSIZE_T", "SIZE_T", "NULLPTR_T",
2047   "BEGIN_ATTRIB", "STRUCT", "CLASS", "UNION", "ENUM", "PUBLIC", "PRIVATE",
2048   "PROTECTED", "CONST", "VOLATILE", "MUTABLE", "STATIC", "THREAD_LOCAL",
2049   "VIRTUAL", "EXPLICIT", "INLINE", "CONSTEXPR", "FRIEND", "EXTERN",
2050   "OPERATOR", "TEMPLATE", "THROW", "TRY", "CATCH", "NOEXCEPT", "DECLTYPE",
2051   "TYPENAME", "TYPEDEF", "NAMESPACE", "USING", "NEW", "DELETE", "DEFAULT",
2052   "STATIC_CAST", "DYNAMIC_CAST", "CONST_CAST", "REINTERPRET_CAST",
2053   "OP_LSHIFT_EQ", "OP_RSHIFT_EQ", "OP_LSHIFT", "OP_RSHIFT_A",
2054   "OP_DOT_POINTER", "OP_ARROW_POINTER", "OP_ARROW", "OP_INCR", "OP_DECR",
2055   "OP_PLUS_EQ", "OP_MINUS_EQ", "OP_TIMES_EQ", "OP_DIVIDE_EQ",
2056   "OP_REMAINDER_EQ", "OP_AND_EQ", "OP_OR_EQ", "OP_XOR_EQ", "OP_LOGIC_AND",
2057   "OP_LOGIC_OR", "OP_LOGIC_EQ", "OP_LOGIC_NEQ", "OP_LOGIC_LEQ",
2058   "OP_LOGIC_GEQ", "ELLIPSIS", "DOUBLE_COLON", "OTHER", "AUTO", "VOID",
2059   "BOOL", "FLOAT", "DOUBLE", "INT", "SHORT", "LONG", "INT64__", "CHAR",
2060   "CHAR16_T", "CHAR32_T", "WCHAR_T", "SIGNED", "UNSIGNED", "IdType",
2061   "TypeInt8", "TypeUInt8", "TypeInt16", "TypeUInt16", "TypeInt32",
2062   "TypeUInt32", "TypeInt64", "TypeUInt64", "TypeFloat32", "TypeFloat64",
2063   "SetMacro", "GetMacro", "SetStringMacro", "GetStringMacro",
2064   "SetClampMacro", "SetObjectMacro", "GetObjectMacro", "BooleanMacro",
2065   "SetVector2Macro", "SetVector3Macro", "SetVector4Macro",
2066   "SetVector6Macro", "GetVector2Macro", "GetVector3Macro",
2067   "GetVector4Macro", "GetVector6Macro", "SetVectorMacro", "GetVectorMacro",
2068   "ViewportCoordinateMacro", "WorldCoordinateMacro", "TypeMacro",
2069   "VTK_BYTE_SWAP_DECL", "';'", "'{'", "'}'", "'='", "':'", "','", "'('",
2070   "')'", "'<'", "'['", "']'", "'~'", "'&'", "'*'", "'>'", "'%'", "'/'",
2071   "'-'", "'+'", "'!'", "'|'", "'^'", "'.'", "$accept", "translation_unit",
2072   "opt_declaration_seq", "$@1", "declaration", "template_declaration",
2073   "explicit_instantiation", "linkage_specification",
2074   "namespace_definition", "$@2", "namespace_alias_definition",
2075   "forward_declaration", "simple_forward_declaration", "class_definition",
2076   "class_specifier", "$@3", "class_head", "$@4", "$@5", "class_key",
2077   "class_head_name", "class_name", "opt_final", "member_specification",
2078   "$@6", "member_access_specifier", "member_declaration",
2079   "template_member_declaration", "friend_declaration",
2080   "base_specifier_list", "base_specifier", "opt_virtual",
2081   "opt_access_specifier", "access_specifier", "opaque_enum_declaration",
2082   "enum_definition", "enum_specifier", "$@7", "enum_head", "enum_key",
2083   "opt_enum_base", "$@8", "enumerator_list", "enumerator_definition",
2084   "$@9", "nested_variable_initialization", "ignored_initializer",
2085   "ignored_class", "ignored_class_body", "typedef_declaration",
2086   "basic_typedef_declaration", "typedef_declarator_list",
2087   "typedef_declarator_list_cont", "typedef_declarator",
2088   "typedef_direct_declarator", "function_direct_declarator", "$@10",
2089   "$@11", "typedef_declarator_id", "using_declaration", "using_id",
2090   "using_directive", "alias_declaration", "$@12", "template_head", "$@13",
2091   "template_parameter_list", "$@14", "template_parameter", "$@15", "$@16",
2092   "$@17", "$@18", "$@19", "$@20", "$@21", "opt_ellipsis",
2093   "class_or_typename", "opt_template_parameter_initializer",
2094   "template_parameter_initializer", "$@22", "template_parameter_value",
2095   "function_definition", "function_declaration",
2096   "nested_method_declaration", "nested_operator_declaration",
2097   "method_definition", "method_declaration", "operator_declaration",
2098   "conversion_function", "$@23", "$@24", "conversion_function_id",
2099   "operator_function_nr", "$@25", "operator_function_sig", "$@26",
2100   "operator_function_id", "operator_sig", "function_nr",
2101   "function_trailer_clause", "function_trailer", "$@27", "noexcept_sig",
2102   "function_body_as_trailer", "opt_trailing_return_type",
2103   "trailing_return_type", "$@28", "function_body", "function_try_block",
2104   "handler_seq", "function_sig", "$@29", "structor_declaration", "$@30",
2105   "$@31", "structor_sig", "$@32", "opt_ctor_initializer",
2106   "mem_initializer_list", "mem_initializer",
2107   "parameter_declaration_clause", "$@33", "parameter_list", "$@34",
2108   "parameter_declaration", "$@35", "$@36", "opt_initializer",
2109   "initializer", "$@37", "$@38", "variable_declaration",
2110   "init_declarator_id", "opt_declarator_list", "declarator_list_cont",
2111   "$@39", "init_declarator", "opt_ptr_operator_seq",
2112   "direct_abstract_declarator", "$@40", "direct_declarator", "$@41",
2113   "lp_or_la", "$@42", "opt_array_or_parameters", "$@43", "$@44",
2114   "function_qualifiers", "abstract_declarator", "declarator",
2115   "opt_declarator_id", "declarator_id", "bitfield_size",
2116   "opt_array_decorator_seq", "array_decorator_seq", "$@45",
2117   "array_decorator_seq_impl", "array_decorator", "$@46",
2118   "array_size_specifier", "$@47", "id_expression", "unqualified_id",
2119   "qualified_id", "nested_name_specifier", "$@48", "tilde_sig",
2120   "identifier_sig", "scope_operator_sig", "template_id", "$@49",
2121   "decltype_specifier", "$@50", "simple_id", "identifier",
2122   "opt_decl_specifier_seq", "decl_specifier2", "decl_specifier_seq",
2123   "decl_specifier", "storage_class_specifier", "function_specifier",
2124   "cv_qualifier", "cv_qualifier_seq", "store_type", "store_type_specifier",
2125   "$@51", "$@52", "type_specifier", "trailing_type_specifier", "$@53",
2126   "trailing_type_specifier_seq", "trailing_type_specifier_seq2", "$@54",
2127   "$@55", "tparam_type", "tparam_type_specifier2", "$@56", "$@57",
2128   "tparam_type_specifier", "simple_type_specifier", "type_name",
2129   "primitive_type", "ptr_operator_seq", "reference", "rvalue_reference",
2130   "pointer", "$@58", "ptr_cv_qualifier_seq", "pointer_seq",
2131   "attribute_specifier_seq", "attribute_specifier", "$@59", "$@60",
2132   "declaration_macro", "$@61", "$@62", "$@63", "$@64", "$@65", "$@66",
2133   "$@67", "$@68", "$@69", "$@70", "$@71", "$@72", "$@73", "$@74", "$@75",
2134   "$@76", "$@77", "$@78", "$@79", "$@80", "$@81", "$@82", "opt_comma",
2135   "operator_id", "operator_id_no_delim", "keyword", "literal",
2136   "constant_expression", "constant_expression_item", "$@83",
2137   "common_bracket_item", "common_bracket_item_no_scope_operator",
2138   "any_bracket_contents", "bracket_pitem", "any_bracket_item",
2139   "braces_item", "angle_bracket_contents", "braces_contents",
2140   "angle_bracket_pitem", "angle_bracket_item", "angle_brackets_sig",
2141   "$@84", "right_angle_bracket", "brackets_sig", "$@85", "$@86",
2142   "parentheses_sig", "$@87", "$@88", "$@89", "braces_sig", "$@90",
2143   "ignored_items", "ignored_expression", "ignored_item",
2144   "ignored_item_no_semi", "ignored_item_no_angle", "ignored_braces",
2145   "ignored_brackets", "ignored_parentheses", "ignored_left_parenthesis", 0
2146 };
2147 #endif
2148
2149 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
2150 static const unsigned short int yyr1[] =
2151 {
2152        0,   157,   158,   159,   160,   159,   161,   161,   161,   161,
2153      161,   161,   161,   161,   161,   161,   161,   161,   161,   161,
2154      161,   161,   161,   161,   162,   162,   162,   162,   162,   163,
2155      163,   164,   165,   166,   165,   167,   168,   168,   169,   169,
2156      169,   170,   170,   172,   171,   174,   173,   173,   175,   173,
2157      173,   176,   176,   176,   177,   177,   177,   178,   178,   179,
2158      179,   180,   181,   180,   180,   182,   182,   182,   183,   183,
2159      183,   183,   183,   183,   183,   183,   183,   183,   183,   183,
2160      183,   183,   183,   183,   184,   184,   184,   184,   185,   185,
2161      185,   185,   186,   186,   187,   187,   187,   188,   188,   189,
2162      189,   190,   190,   190,   191,   191,   191,   192,   192,   194,
2163      193,   195,   195,   196,   196,   196,   197,   198,   197,   199,
2164      199,   200,   200,   201,   200,   202,   203,   203,   204,   204,
2165      204,   204,   205,   205,   206,   206,   207,   207,   207,   207,
2166      207,   208,   209,   209,   210,   211,   211,   213,   214,   212,
2167      215,   216,   217,   217,   217,   217,   217,   217,   218,   220,
2168      219,   221,   222,   221,   223,   224,   223,   226,   227,   225,
2169      228,   229,   225,   230,   231,   232,   225,   233,   233,   234,
2170      234,   235,   235,   237,   236,   238,   238,   239,   239,   239,
2171      239,   240,   241,   241,   241,   242,   242,   242,   243,   243,
2172      243,   244,   244,   244,   244,   245,   245,   245,   247,   248,
2173      246,   249,   251,   250,   253,   252,   254,   255,   256,   257,
2174      257,   259,   258,   258,   258,   258,   258,   258,   258,   260,
2175      261,   261,   262,   262,   264,   263,   265,   265,   265,   266,
2176      267,   267,   269,   268,   271,   272,   270,   274,   273,   275,
2177      275,   276,   276,   277,   278,   279,   278,   280,   281,   280,
2178      280,   280,   283,   284,   282,   285,   285,   287,   286,   288,
2179      286,   289,   290,   291,   291,   292,   293,   292,   294,   295,
2180      295,   296,   297,   296,   298,   299,   298,   301,   300,   300,
2181      302,   303,   304,   302,   302,   305,   305,   305,   305,   305,
2182      305,   306,   306,   307,   307,   308,   308,   309,   309,   310,
2183      310,   310,   311,   311,   313,   312,   314,   314,   316,   315,
2184      317,   318,   317,   319,   319,   320,   320,   320,   320,   320,
2185      321,   321,   321,   322,   322,   322,   322,   322,   322,   323,
2186      322,   324,   325,   326,   328,   327,   330,   329,   331,   331,
2187      331,   331,   331,   331,   331,   331,   331,   331,   331,   331,
2188      331,   331,   331,   331,   331,   331,   331,   331,   331,   332,
2189      332,   332,   332,   332,   332,   332,   333,   333,   334,   334,
2190      334,   334,   335,   335,   336,   336,   336,   336,   337,   337,
2191      337,   337,   337,   338,   338,   338,   339,   339,   340,   340,
2192      341,   343,   342,   344,   342,   345,   345,   345,   346,   346,
2193      347,   346,   346,   346,   348,   350,   349,   351,   349,   352,
2194      354,   353,   355,   353,   356,   356,   356,   356,   356,   356,
2195      356,   357,   357,   358,   358,   358,   358,   358,   358,   358,
2196      358,   358,   358,   358,   358,   358,   358,   358,   358,   358,
2197      358,   358,   358,   358,   359,   359,   359,   359,   359,   359,
2198      359,   359,   359,   359,   359,   359,   359,   359,   359,   360,
2199      360,   360,   360,   361,   362,   364,   363,   365,   365,   366,
2200      366,   367,   367,   369,   370,   368,   372,   371,   373,   374,
2201      375,   371,   376,   371,   377,   371,   378,   379,   371,   380,
2202      371,   381,   382,   383,   371,   371,   384,   371,   385,   371,
2203      386,   371,   387,   371,   388,   371,   389,   371,   390,   371,
2204      391,   371,   392,   371,   393,   371,   371,   371,   371,   394,
2205      394,   395,   395,   395,   395,   395,   395,   395,   395,   395,
2206      395,   395,   395,   396,   396,   396,   396,   396,   396,   396,
2207      396,   396,   396,   396,   396,   396,   396,   396,   396,   396,
2208      396,   396,   396,   396,   396,   396,   396,   396,   396,   396,
2209      396,   396,   396,   396,   396,   396,   396,   397,   397,   397,
2210      397,   397,   397,   397,   397,   397,   397,   397,   397,   397,
2211      397,   397,   397,   397,   397,   397,   397,   397,   397,   397,
2212      397,   397,   397,   397,   397,   397,   398,   398,   398,   398,
2213      398,   398,   398,   398,   399,   399,   400,   400,   400,   401,
2214      400,   400,   402,   402,   403,   403,   403,   403,   403,   403,
2215      403,   403,   403,   403,   404,   404,   405,   405,   405,   405,
2216      406,   406,   406,   407,   407,   408,   408,   409,   409,   410,
2217      410,   411,   411,   411,   413,   412,   414,   414,   416,   415,
2218      417,   415,   419,   418,   420,   418,   421,   418,   423,   422,
2219      424,   424,   425,   425,   426,   426,   427,   427,   428,   428,
2220      428,   428,   428,   428,   428,   428,   428,   428,   428,   428,
2221      428,   428,   428,   428,   428,   429,   430,   430,   431,   432,
2222      432,   432
2223 };
2224
2225 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
2226 static const unsigned char yyr2[] =
2227 {
2228        0,     2,     1,     0,     0,     4,     1,     1,     1,     1,
2229        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2230        1,     1,     2,     1,     2,     2,     2,     2,     2,     5,
2231        4,     5,     4,     0,     6,     5,     1,     2,     4,     3,
2232        5,     4,     5,     0,     5,     0,     7,     4,     0,     5,
2233        2,     1,     1,     1,     3,     4,     2,     1,     1,     0,
2234        1,     0,     0,     4,     3,     1,     1,     1,     1,     1,
2235        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2236        1,     2,     2,     1,     2,     2,     2,     2,     2,     3,
2237        2,     3,     1,     4,     2,     4,     4,     0,     1,     0,
2238        1,     1,     1,     1,     5,     3,     6,     4,     5,     0,
2239        5,     4,     3,     1,     2,     2,     0,     0,     3,     1,
2240        3,     0,     1,     0,     4,     6,     2,     1,     5,     6,
2241        3,     4,     5,     3,     1,     2,     5,     5,     6,     5,
2242        6,     2,     0,     3,     2,     1,     1,     0,     0,     8,
2243        1,     3,     1,     2,     2,     2,     3,     3,     4,     0,
2244        8,     3,     0,     5,     1,     0,     4,     0,     0,     5,
2245        0,     0,     5,     0,     0,     0,     7,     0,     1,     1,
2246        1,     0,     1,     0,     3,     1,     2,     2,     2,     2,
2247        2,     3,     4,     2,     3,     2,     3,     4,     2,     4,
2248        5,     3,     1,     1,     2,     1,     2,     3,     0,     0,
2249        9,     2,     0,     4,     0,     7,     2,     1,     3,     0,
2250        2,     0,     3,     1,     2,     1,     2,     1,     1,     1,
2251        2,     2,     0,     1,     0,     3,     3,     1,     1,     6,
2252        0,     6,     0,     7,     0,     0,     6,     0,     6,     0,
2253        2,     1,     3,     3,     0,     0,     2,     1,     0,     4,
2254        3,     1,     0,     0,     5,     0,     1,     0,     3,     0,
2255        2,     4,     2,     0,     2,     0,     0,     4,     2,     0,
2256        1,     3,     0,     6,     3,     0,     5,     0,     3,     1,
2257        0,     0,     0,     7,     1,     0,     2,     2,     3,     3,
2258        2,     1,     2,     1,     2,     0,     1,     2,     4,     1,
2259        1,     1,     0,     1,     0,     2,     1,     2,     0,     5,
2260        0,     0,     2,     1,     1,     1,     1,     1,     2,     2,
2261        2,     2,     2,     2,     2,     2,     3,     3,     3,     0,
2262        5,     1,     1,     1,     0,     5,     0,     3,     1,     1,
2263        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2264        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2265        1,     1,     1,     1,     1,     1,     0,     3,     1,     1,
2266        1,     1,     2,     3,     1,     1,     1,     1,     1,     1,
2267        2,     1,     1,     1,     1,     1,     1,     1,     1,     2,
2268        2,     0,     3,     0,     4,     1,     3,     4,     1,     1,
2269        0,     4,     2,     2,     2,     0,     3,     0,     4,     2,
2270        0,     3,     0,     4,     1,     1,     1,     1,     2,     2,
2271        2,     2,     2,     1,     1,     1,     1,     1,     1,     1,
2272        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2273        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2274        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2275        1,     1,     2,     2,     2,     0,     4,     0,     1,     1,
2276        2,     0,     2,     0,     0,     6,     0,     7,     0,     0,
2277        0,     9,     0,     5,     0,     5,     0,     0,    10,     0,
2278        7,     0,     0,     0,     9,     6,     0,     7,     0,     7,
2279        0,     7,     0,     7,     0,     7,     0,     7,     0,     7,
2280        0,     7,     0,     9,     0,     9,     4,     4,     7,     0,
2281        1,     2,     2,     3,     3,     1,     1,     1,     1,     2,
2282        2,     2,     1,     1,     1,     1,     1,     1,     1,     1,
2283        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2284        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2285        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2286        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2287        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2288        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2289        1,     1,     1,     1,     1,     2,     1,     1,     1,     0,
2290        3,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2291        1,     1,     1,     1,     0,     2,     1,     1,     1,     1,
2292        1,     1,     1,     1,     1,     0,     2,     0,     2,     1,
2293        1,     1,     1,     1,     0,     4,     1,     1,     0,     4,
2294        0,     5,     0,     4,     0,     4,     0,     4,     0,     4,
2295        0,     2,     0,     2,     1,     1,     1,     1,     1,     1,
2296        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2297        1,     1,     1,     1,     1,     3,     3,     4,     3,     1,
2298        1,     1
2299 };
2300
2301 /* YYDPREC[RULE-NUM] -- Dynamic precedence of rule #RULE-NUM (0 if none).  */
2302 static const unsigned char yydprec[] =
2303 {
2304        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2305        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2306        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2307        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2308        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2309        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2310        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2311        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2312        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2313        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2314        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2315        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2316        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2317        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2318        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2319        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2320        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2321        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2322        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2323        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2324        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2325        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2326        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2327        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2328        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2329        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2330        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2331        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2332        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2333        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2334        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2335        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2336        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2337        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2338        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2339        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2340        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2341        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2342        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2343        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2344        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2345        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2346        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2347        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2348        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2349        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2350        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2351        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2352        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2353        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2354        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2355        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2356        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2357        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2358        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2359        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2360        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2361        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2362        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2363        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2364        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2365        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2366        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2367        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2368        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2369        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2370        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2371        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2372        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2373        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2374        0,     0
2375 };
2376
2377 /* YYMERGER[RULE-NUM] -- Index of merging function for rule #RULE-NUM.  */
2378 static const unsigned char yymerger[] =
2379 {
2380        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2381        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2382        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2383        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2384        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2385        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2386        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2387        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2388        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2389        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2390        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2391        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2392        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2393        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2394        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2395        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2396        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2397        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2398        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2399        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2400        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2401        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2402        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2403        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2404        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2405        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2406        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2407        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2408        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2409        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2410        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2411        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2412        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2413        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2414        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2415        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2416        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2417        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2418        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2419        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2420        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2421        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2422        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2423        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2424        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2425        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2426        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2427        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2428        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2429        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2430        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2431        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2432        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2433        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2434        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2435        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2436        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2437        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2438        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2439        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2440        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2441        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2442        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2443        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2444        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2445        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2446        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2447        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2448        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2449        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2450        0,     0
2451 };
2452
2453 /* YYDEFACT[S] -- default rule to reduce with in state S when YYTABLE
2454    doesn't specify something else to do.  Zero means the default is an
2455    error.  */
2456 static const unsigned short int yydefact[] =
2457 {
2458        3,     0,     4,     1,   481,     0,   437,   438,   439,   433,
2459      434,   435,   436,   441,   442,   440,   483,    52,    51,    53,
2460      113,   396,   397,   388,   391,   392,   394,   395,   393,   387,
2461      389,   217,     0,   346,   410,     0,     0,     0,   343,   454,
2462      455,   456,   457,   458,   463,   464,   465,   466,   459,   460,
2463      461,   462,   467,   468,   453,   443,   444,   445,   446,   447,
2464      448,   449,   450,   451,   452,     0,     0,     0,     0,     0,
2465        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2466        0,     0,     0,     0,     0,     0,    23,   341,     5,    19,
2467       20,    13,    11,    12,     9,    36,    17,   376,    43,   481,
2468       10,    16,   376,     0,   481,    14,   134,     7,     6,     8,
2469        0,    18,     0,     0,     0,     0,   205,     0,     0,    15,
2470        0,   323,   481,     0,     0,     0,     0,   481,   409,   325,
2471      342,     0,   481,   384,   385,   386,   177,   279,   401,   405,
2472      408,   481,   481,   482,    21,   634,   115,   114,   390,     0,
2473      437,   438,   439,   433,   434,   435,   436,   700,   701,   611,
2474      607,   608,   606,   609,   610,   612,   613,   441,   442,   440,
2475      670,   580,   579,   581,   599,   583,   585,   584,   586,   587,
2476      588,   591,   592,   590,   589,   595,   598,   582,   600,   601,
2477      593,   578,   577,   597,   596,   553,   554,   594,   604,   603,
2478      602,   605,   555,   556,   557,   684,   558,   559,   560,   566,
2479      567,   561,   562,   563,   564,   565,   568,   569,   570,   571,
2480      572,   573,   574,   575,   576,   682,   681,   694,   453,   443,
2481      444,   445,   446,   447,   448,   449,   450,   451,   452,   670,
2482      688,   685,   689,   699,   162,   670,   549,   550,   544,   687,
2483      543,   545,   546,   547,   548,   551,   552,   686,   693,   692,
2484      683,   690,   691,   672,   678,   680,   679,   670,     0,     0,
2485      437,   438,   439,   433,   434,   435,   436,   389,   376,   481,
2486      376,   481,   481,     0,   481,   409,     0,   177,   369,   371,
2487      370,   374,   375,   373,   372,   670,    33,   350,   348,   349,
2488      353,   354,   352,   351,   357,   356,   355,     0,     0,   368,
2489      358,   359,   360,   361,   362,   363,   364,   365,   366,   367,
2490        0,   481,   324,     0,     0,   326,   327,     0,   488,   492,
2491      494,     0,     0,   501,     0,     0,     0,     0,     0,     0,
2492        0,     0,     0,     0,     0,     0,     0,     0,   279,     0,
2493       50,   279,   109,   116,     0,     0,    27,    37,    24,   481,
2494       26,    28,     0,    25,     0,   177,   249,   238,   670,   187,
2495      237,   189,   190,   188,   208,   481,     0,   211,    22,   413,
2496      339,   195,   193,   244,   330,     0,   326,   327,   328,    58,
2497      329,    57,     0,   333,   331,   332,   334,   412,   335,   344,
2498      376,   481,   376,   481,   135,   206,     0,   481,   403,   382,
2499      287,   289,   178,     0,   275,   265,   177,   481,   481,   481,
2500      400,   280,   469,   470,   479,   471,   376,   432,   431,   484,
2501        3,   672,     0,     0,   657,   656,   167,   161,     0,     0,
2502        0,   664,   666,   662,   347,   481,   390,   279,    50,   279,
2503      116,   330,   376,   376,   150,   146,   142,     0,   145,     0,
2504        0,     0,   153,     0,   151,     0,   155,   154,     0,     0,
2505      350,   348,   349,   353,   354,   352,   351,     0,     0,     0,
2506        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2507        0,     0,     0,     0,     0,     0,     0,     0,   381,   380,
2508        0,   275,   177,   481,   378,   379,    61,    39,    48,   406,
2509      481,     0,     0,    58,     0,     0,   121,   105,   117,   112,
2510      481,   481,     0,     0,     0,     0,     0,     0,   255,     0,
2511        0,   249,   247,   336,   337,   338,   645,   279,    50,   279,
2512      116,   196,   194,   383,   376,   477,   207,   212,   481,     0,
2513      191,   219,   312,   481,     0,     0,   267,   272,   266,     0,
2514        0,   303,     0,   177,   474,   473,   475,   472,   480,   402,
2515      660,   639,   623,   668,   641,   628,   642,   637,   658,   638,
2516      629,   633,   632,     0,   627,   630,   631,   636,   622,   640,
2517      635,   624,   625,   626,     4,     0,   675,   677,     0,   671,
2518      674,   676,   695,     0,   164,     0,     0,     0,   696,    30,
2519      673,   698,   634,   634,   634,   411,     0,   142,   177,   406,
2520        0,   481,   279,   279,     0,   312,   481,   326,   327,    32,
2521        0,     0,     3,   158,   159,     0,   553,   554,     0,   538,
2522      537,     0,   535,     0,   536,   216,   542,   157,   156,   486,
2523        0,     0,     0,   496,   499,     0,     0,   506,   510,   514,
2524      518,   508,   512,   516,   520,   522,   524,   526,   527,     0,
2525       41,   274,   278,   377,    62,     0,    60,    38,    47,    56,
2526      481,    58,     0,     0,   107,     0,   119,   122,     0,   111,
2527      407,   481,   481,     0,   250,   251,     0,   670,   236,     0,
2528      262,   406,     0,   245,   255,     0,     0,   406,     0,   481,
2529      404,   398,   478,   288,   219,     0,   232,   284,   313,     0,
2530      307,   197,   192,   271,   276,     0,   270,   285,   304,   477,
2531      634,   647,   634,     0,    31,    29,   697,   165,   163,     0,
2532        0,     0,   427,   426,   425,     0,   177,   279,   420,   424,
2533      179,   180,   177,     0,     0,     0,     0,   137,   141,   144,
2534      139,   111,     0,     0,   136,   279,   147,   307,    35,     4,
2535        0,   541,     0,     0,   540,   539,   531,   532,     0,   489,
2536      493,   495,     0,     0,   502,     0,     0,     0,     0,     0,
2537        0,     0,     0,     0,     0,     0,   529,    65,    66,    67,
2538       44,   481,     0,   101,   102,   103,    99,    49,    92,    97,
2539      177,    45,    54,   481,   110,   121,   123,   118,   104,     0,
2540      325,     0,   177,     0,   481,   261,   256,   257,     0,   340,
2541      219,     0,   652,   653,   654,   650,   651,   646,   649,   345,
2542       42,    40,   108,   111,   399,   232,   214,   225,   223,   221,
2543      229,   234,     0,   220,   227,   228,   218,   233,   318,   315,
2544      316,     0,   242,   279,   621,   618,   619,   268,   614,   616,
2545      617,   290,   476,     0,     0,     0,   485,   167,   428,   429,
2546      430,   422,   305,   168,   481,   419,   376,   171,   174,   665,
2547      667,   663,   138,   140,   143,   255,    34,   177,   533,   534,
2548        0,     0,   497,     0,     0,   505,     0,     0,     0,     0,
2549        0,     0,     0,     0,     0,     0,   530,     0,     0,    64,
2550        0,   100,   481,    98,     0,    94,     0,    55,   120,     0,
2551      672,     0,   127,   252,   253,   240,   209,   258,   177,   232,
2552      481,   645,   106,   213,   255,     0,     0,   224,   230,   231,
2553      226,   321,   317,   310,   311,   309,   308,   255,   277,     0,
2554      615,   291,   286,   294,     0,   644,   669,   643,   648,   659,
2555      166,   376,   290,   306,   181,   177,   421,   181,   177,     0,
2556        0,   487,   490,     0,   500,   503,   507,   511,   515,   519,
2557      509,   513,   517,   521,     0,     0,   528,     0,   389,     0,
2558        0,    83,    79,    70,    76,    63,    78,    72,    71,    75,
2559       73,    68,    69,     0,    77,     0,   202,   203,    74,     0,
2560      323,     0,     0,   177,    80,   177,     0,   177,    46,   124,
2561      126,   125,   239,   219,   260,   262,   263,   246,   248,     0,
2562        0,   222,     0,   415,   235,   279,     0,     0,     0,   620,
2563      255,   661,   423,   281,   183,   169,   182,   301,     0,   177,
2564      172,   175,   148,   160,     0,   672,     0,     0,     0,    90,
2565      481,    88,     0,     0,     0,     0,   177,    81,    84,    86,
2566       87,     0,    85,     0,   198,    82,   481,   204,     0,     0,
2567       95,    93,    96,     0,   232,   259,   265,   655,   481,   417,
2568      376,   414,   481,   322,   481,     0,     0,   282,   302,   181,
2569      295,   491,     0,   504,   523,   525,     0,   481,    89,     0,
2570       91,   481,     0,     0,     0,   481,   201,     0,   210,   264,
2571      215,   376,   416,   319,   243,   481,   184,   185,   290,   176,
2572      149,   498,   670,   672,   406,   130,     0,   481,     0,   199,
2573        0,   670,   418,   292,   186,   283,   297,   296,     0,   300,
2574        0,     0,     0,    59,     0,   406,   131,   200,     0,   295,
2575      298,   299,   672,   133,   128,    59,     0,   241,   293,     0,
2576      129,   132
2577 };
2578
2579 /* YYPDEFGOTO[NTERM-NUM].  */
2580 static const short int yydefgoto[] =
2581 {
2582       -1,     1,     2,     4,    88,   356,    90,    91,    92,   461,
2583       93,    94,    95,   358,    97,   349,    98,   926,   675,   375,
2584      509,   510,   678,   674,   801,   802,  1005,  1079,  1007,   807,
2585      808,   924,   920,   809,   100,   101,   102,   516,   103,   359,
2586      519,   688,   685,   686,   929,   360,   931,  1071,  1145,   105,
2587      106,   616,   624,   617,   454,   455,   895,  1110,   456,   107,
2588      320,   108,   361,   770,   362,   436,   603,   877,   604,   605,
2589      974,   606,   977,   607,   978,  1109,   882,   752,  1055,  1056,
2590     1106,  1136,   363,   112,   113,   114,  1082,  1015,  1016,   116,
2591      528,  1033,   117,   546,   714,   547,   944,   548,   118,   550,
2592      716,   853,   945,   854,   855,   856,   857,   946,   369,   370,
2593     1032,   551,   957,  1017,   531,   830,   383,   704,   526,   694,
2594      695,   699,   700,   826,  1035,   827,   828,  1096,   557,   558,
2595      725,   559,   119,   414,   500,   555,   863,   501,   502,   883,
2596     1138,   415,   871,   416,   545,   962,  1050,  1169,  1140,  1058,
2597      562,   972,   552,   956,   717,   963,   719,   859,   860,   951,
2598     1046,  1047,   810,   121,   282,   283,   530,   124,   125,   126,
2599      284,   536,   285,   268,   129,   130,   348,   503,   376,   132,
2600      133,   134,   135,   712,  1076,   137,   426,   544,   138,   139,
2601      269,  1044,  1045,  1100,  1131,   746,   747,   886,   971,   748,
2602      140,   141,   142,   421,   422,   423,   424,   729,   713,   425,
2603      690,   143,   145,   583,   144,   778,   478,   901,  1064,   479,
2604      480,   782,   983,   783,   483,   904,  1066,   786,   790,   787,
2605      791,   788,   792,   789,   793,   794,   795,   917,   645,   584,
2606      585,   586,   867,   868,   959,   587,   588,   429,   589,   590,
2607      968,   705,   874,   836,   837,   870,   941,   437,   591,   732,
2608      730,   592,   614,   612,   613,   593,   731,   432,   439,   599,
2609      600,   601,   264,   265,   266,   267
2610 };
2611
2612 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
2613    STATE-NUM.  */
2614 #define YYPACT_NINF -1028
2615 static const short int yypact[] =
2616 {
2617    -1028,   108,   115, -1028, -1028,  6791,   217,   221,   231,   247,
2618      250,   288,   291,   -71,   -29,   -12, -1028, -1028, -1028, -1028,
2619      285, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
2620      129, -1028,  4328, -1028, -1028,  8663,   173,  7489, -1028, -1028,
2621    -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
2622    -1028, -1028, -1028, -1028,   148,   150,   192,   246,   269,   273,
2623      292,   300,   304,   329,   342,   -51,   -10,    20,   128,   135,
2624      143,   185,   209,   214,   218,   222,   230,   254,   284,   289,
2625      299,   306,   314,   326,   354,   358, -1028, -1028, -1028, -1028,
2626    -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
2627    -1028, -1028, -1028,   113, -1028, -1028, -1028, -1028, -1028, -1028,
2628     8336, -1028,   164,   164,   164,   164, -1028,   375,  8663, -1028,
2629      123, -1028,   341,  1951,  9036,   437,  7756,   166,   196, -1028,
2630        7,  8445, -1028, -1028, -1028, -1028,   256,   140, -1028, -1028,
2631    -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,   383,  4790,
2632    -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
2633    -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
2634    -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
2635    -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
2636    -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
2637    -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
2638    -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
2639    -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
2640    -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
2641    -1028, -1028, -1028, -1028,    15, -1028, -1028, -1028, -1028, -1028,
2642    -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
2643    -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,    55,  7756,
2644       -7,    -3,     4,    28,   152,   162,   179,   511, -1028, -1028,
2645    -1028, -1028, -1028,  7778,   437,   437,  8663,   256, -1028, -1028,
2646    -1028, -1028, -1028, -1028, -1028, -1028,   395,    -7,    -3,     4,
2647       28,   152,   162,   179, -1028, -1028, -1028,  7756,  7756, -1028,
2648    -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
2649      400,   406, -1028,  1951,  7756,   437,   437,  6747, -1028, -1028,
2650    -1028,  6747,  6747, -1028,  6747,  6747,  6747,  6747,  6747,  6747,
2651     6747,  6747,  6747,  6747,  6747,  6747,  6747,  6747,  8191,   407,
2652     8001,  8191, -1028,  7424,   403,  7756, -1028, -1028, -1028, -1028,
2653    -1028, -1028,  8336, -1028,  8554,   463,   409, -1028, -1028, -1028,
2654    -1028, -1028, -1028, -1028, -1028, -1028,  8663, -1028, -1028,   525,
2655    -1028, -1028, -1028, -1028,   410,   437,   437,   437, -1028, -1028,
2656    -1028, -1028,     7, -1028, -1028, -1028, -1028,   525, -1028, -1028,
2657    -1028, -1028, -1028, -1028, -1028, -1028,  1951, -1028, -1028,   525,
2658    -1028, -1028, -1028,  7826, -1028,   158,    74, -1028, -1028, -1028,
2659    -1028, -1028, -1028, -1028, -1028,   366, -1028,   525,   525,  5714,
2660    -1028, -1028,  2172,  2326, -1028, -1028,   228, -1028,  2480,  3558,
2661     2634, -1028, -1028, -1028, -1028, -1028, -1028,  8219,  8110,  8219,
2662     7598, -1028, -1028, -1028, -1028, -1028, -1028,  7890, -1028,  2788,
2663      412,   416, -1028,   428, -1028,    57, -1028, -1028,  6638,  1951,
2664    -1028, -1028, -1028, -1028, -1028, -1028, -1028,   425,  6747,  6747,
2665     6747,   426,   427,  6747,   429,   432,   433,   436,   438,   442,
2666      443,   445,   447,   448,   449,   450,   452,   451, -1028, -1028,
2667      460, -1028,   256, -1028, -1028, -1028, -1028, -1028, -1028,    54,
2668    -1028,  9011,   649,   437,   437,   464,  6747, -1028, -1028, -1028,
2669      206, -1028,  7644,  8554,  7826,  7756,   444,  2942,   461,  8990,
2670      676,   409, -1028, -1028, -1028, -1028, -1028,  8191,  8110,  8191,
2671     7598, -1028, -1028,   525, -1028,   499, -1028, -1028, -1028,  1610,
2672    -1028, -1028,   458, -1028,  1951,   122, -1028, -1028, -1028,   468,
2673     7890, -1028,   467,   256,   525,   525,   525, -1028, -1028,  1417,
2674    -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
2675    -1028, -1028, -1028,   466, -1028, -1028, -1028, -1028, -1028, -1028,
2676    -1028, -1028, -1028, -1028,   481,  3712, -1028, -1028,   474, -1028,
2677    -1028, -1028, -1028,   181, -1028,  8772,    77,   576, -1028, -1028,
2678    -1028, -1028, -1028, -1028, -1028,   525,   488, -1028,   256,    64,
2679      489,   189,  8219,  8219,   183,   239, -1028, -1028, -1028, -1028,
2680      490,   437, -1028, -1028, -1028,   623,   484,   485,    27, -1028,
2681    -1028,   495, -1028,   486, -1028, -1028, -1028, -1028, -1028, -1028,
2682      492,   496,   497, -1028, -1028,   501,  8663, -1028, -1028, -1028,
2683    -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,  7756,
2684    -1028,   502, -1028,   525,    67,  7378, -1028, -1028,   504,   525,
2685    -1028,   437,   437,  9011, -1028,   335, -1028,   506,  8663,   510,
2686      525, -1028, -1028,  1951,   508, -1028,    65, -1028, -1028,   518,
2687      562, -1028,   437, -1028,   461,  5868,   515,    84,   526,   206,
2688     1417, -1028,   499, -1028, -1028,    70,   117, -1028, -1028,   519,
2689      109, -1028, -1028, -1028, -1028,  6176, -1028, -1028, -1028,   499,
2690    -1028, -1028, -1028,   521, -1028, -1028, -1028, -1028, -1028,  7756,
2691     7756,  7756, -1028,   437,   437,  8663,   256,   140, -1028, -1028,
2692    -1028, -1028,   256,   638,  4944,  5098,  5252, -1028,   527, -1028,
2693    -1028, -1028,   533,   534, -1028,   140, -1028,    78, -1028,   535,
2694     8663, -1028,   528,   529, -1028, -1028, -1028, -1028,  8663, -1028,
2695    -1028, -1028,  8663,  8663, -1028,   546,  8663,  8663,  8663,  8663,
2696     8663,  8663,  8663,  8663,  8663,  8663,   530, -1028, -1028, -1028,
2697    -1028, -1028,   536, -1028, -1028, -1028,   382,   537, -1028,   653,
2698      463, -1028,   525, -1028, -1028,  6747, -1028, -1028, -1028,    83,
2699      324,  7756,   463,  3096, -1028, -1028,   551, -1028,  8663, -1028,
2700    -1028,   552, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
2701    -1028, -1028, -1028,   560, -1028,   117, -1028, -1028, -1028, -1028,
2702    -1028, -1028,    89, -1028,    55, -1028, -1028, -1028, -1028,   519,
2703    -1028,   514, -1028,   140, -1028,  6022, -1028,  6176, -1028, -1028,
2704    -1028,   345, -1028,  5406,  4482,  5560, -1028,   228, -1028, -1028,
2705    -1028, -1028,  7890, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
2706    -1028, -1028, -1028, -1028, -1028,   461, -1028,   256, -1028, -1028,
2707      554,  8663, -1028,   555,  8663, -1028,   557,   559,   561,   563,
2708      564,   565,   566,   567,   570,   571, -1028,   572,  1787, -1028,
2709     7756, -1028, -1028, -1028,  7756, -1028,  7378,   525, -1028,  6176,
2710    -1028,   569, -1028, -1028, -1028, -1028,   525,   632,   256,   117,
2711    -1028, -1028, -1028, -1028,   461,    55,  8881, -1028, -1028, -1028,
2712    -1028,   574, -1028, -1028, -1028, -1028, -1028,   461, -1028,  6484,
2713    -1028, -1028, -1028, -1028,   575, -1028, -1028, -1028, -1028, -1028,
2714    -1028, -1028,   345, -1028,   584,    50,  1417,   584,   256,   581,
2715      589, -1028, -1028,   585, -1028, -1028, -1028, -1028, -1028, -1028,
2716    -1028, -1028, -1028, -1028,   713,   714, -1028,  7038,   226,  7709,
2717       65, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
2718    -1028, -1028, -1028,  6923, -1028,   164, -1028, -1028, -1028,   595,
2719      410,  1951,  7153,   256, -1028,   463,  1981,   463,   537,  6176,
2720     4636, -1028,   684, -1028, -1028, -1028, -1028, -1028,   525,  5868,
2721      590, -1028,  8881, -1028, -1028,   140,   588,  6176,   592, -1028,
2722      461, -1028,  1417, -1028, -1028, -1028, -1028, -1028,   598,   256,
2723    -1028, -1028, -1028, -1028,   600, -1028,   602,   604,   606, -1028,
2724    -1028, -1028,   805,   164,   410,  7268,   463, -1028, -1028, -1028,
2725    -1028,  6923, -1028,  7268, -1028, -1028, -1028, -1028,  1951,  7826,
2726    -1028, -1028, -1028,    65,   117, -1028,   158, -1028, -1028, -1028,
2727    -1028, -1028, -1028,  6176, -1028,   607,  6330, -1028, -1028,   584,
2728    -1028, -1028,  3866, -1028, -1028, -1028,  7936, -1028, -1028,   805,
2729    -1028, -1028,  7826,  7268,    90, -1028, -1028,   614, -1028, -1028,
2730      525, -1028,  1417,   525,   525, -1028,  6330, -1028,   345, -1028,
2731      434, -1028, -1028, -1028,    95, -1028,  7936, -1028,  8072, -1028,
2732       93, -1028,  1417,   525, -1028, -1028, -1028, -1028,    65,    65,
2733     3250,  4020,   373,    56,  8072,   107, -1028, -1028,  3404, -1028,
2734    -1028, -1028, -1028, -1028, -1028,    59,   373, -1028,   434,  4174,
2735    -1028, -1028
2736 };
2737
2738 /* YYPGOTO[NTERM-NUM].  */
2739 static const short int yypgoto[] =
2740 {
2741    -1028, -1028,  -401, -1028, -1028,   745,  -167, -1028, -1028, -1028,
2742    -1028,  -847,   -99,    -2,   -31, -1028, -1028, -1028, -1028,    21,
2743     -404,  -107,  -828, -1028, -1028, -1028, -1028,  -166, -1028,  -173,
2744     -272, -1028, -1028,   -49,  -163,  -159,   -27, -1028, -1028,    11,
2745     -483, -1028, -1028,   -54, -1028, -1028, -1028,  -309,  -771,  -156,
2746     -119,  -409,   147,     0, -1028, -1028, -1028, -1028,   149,  -152,
2747    -1028, -1028,    18, -1028,    25, -1028, -1028, -1028,  -109, -1028,
2748    -1028, -1028, -1028, -1028, -1028, -1028,   405, -1028,  -923, -1028,
2749    -1028, -1028,   766, -1028, -1028, -1028,  -145,  -218,    26,  -121,
2750    -1028, -1028,  -268,  -502, -1028, -1028, -1028,  -310,  -296,  -526,
2751     -690, -1028, -1028, -1028, -1028,  -802, -1028, -1028,   -80, -1028,
2752    -1028, -1028, -1028,  -117, -1028, -1028, -1028, -1028,   249, -1028,
2753      -40,  -684, -1028, -1028, -1028,  -253, -1028, -1028,  -313, -1028,
2754    -1028, -1028,  -131,   287,  -302,   293, -1028,   -73,  -136,  -713,
2755    -1028,  -251, -1028,  -699, -1028,  -930, -1028, -1028,  -374, -1028,
2756    -1028, -1028,  -432, -1028, -1028,  -478, -1028, -1028,   -63, -1028,
2757    -1028, -1028,  1119,  1082,  1110,    14, -1028, -1028,   -32,   700,
2758       -5, -1028,    45, -1028,   930,   -21,   397, -1028,    94,   998,
2759    -1028, -1028,  -497, -1028,   943,   110, -1028, -1028,  -124,  -876,
2760    -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
2761      195,    51,   440,  -402,   376, -1028,   377, -1028,    75, -1028,
2762      493, -1028, -1028, -1028,  -115, -1028, -1028, -1028, -1028, -1028,
2763    -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
2764    -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,     9,
2765      121,   174,  -835,  -822, -1028,  -633,  -151,  -458, -1028,   -65,
2766    -1028,  -130, -1028, -1027, -1028,  -683, -1028,  -582, -1028, -1028,
2767    -1028,  -259, -1028, -1028, -1028,   251, -1028,  -181,  -426, -1028,
2768     -421,    36,    -8, -1028,  -658, -1028
2769 };
2770
2771 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
2772    positive, shift that token.  If negative, reduce the rule which
2773    number is the opposite.  If zero, do what YYDEFACT says.
2774    If YYTABLE_NINF, syntax error.  */
2775 #define YYTABLE_NINF -655
2776 static const short int yytable[] =
2777 {
2778      127,   420,   381,    96,   278,   595,   382,   408,   280,   444,
2779      405,   357,   404,   467,   563,   296,   104,   388,   610,   123,
2780      831,   738,   838,   109,   845,   625,    99,   468,   722,   594,
2781      110,   115,   325,   371,   372,   373,   458,   689,   822,   887,
2782      620,   260,  1053,   943,   619,   960,   281,   884,   711,   515,
2783      128,   323,   721,   884,  1060,   466,   279,   676,   433,   676,
2784      410,   411,   676,  -357,   438,   441,   442,   676,   263,  -357,
2785     1043,  1003,   835,    16,   718,   157,   158,  -369,   434,  1137,
2786       16,  -371,   326,   258,   410,   411,   440,   676,  -370,   327,
2787      774,   385,   869,    16,  1029,   797,   798,   799,   676,   131,
2788      400,    16,   750,   392,   402,  -356,    16,   947,     3,  1154,
2789      676,  -356,  -374,    16,   459,    -2,    16,   549,   386,   389,
2790      847,   325,  -355,   839,   123,   701,   751,   417,  -355,   286,
2791      328,    99,    16,   412,   707,  -369,   115,  1037,   761,  -371,
2792      939,   148,   403,   948,   949,   406,  -370,   718,   848,   399,
2793     1069,   417,   401,   261,   754,   755,   756,   412,   260,   648,
2794      329,   849,   408,   435,   850,   561,  1099,   722,   387,   390,
2795     -374,   326,   149,   468,   610,   775,   288,   289,   290,   291,
2796      292,   293,   294,   851,   980,   431,  1139,   527,   677,   -59,
2797      677,   721,   -59,   841,   634,   443,   418,   419,   884,   -59,
2798      258,   647,   -59,   800,   364,   243,   262,   960,  1155,   366,
2799      846,   979,  1103,   762,   763,   844,   861,   417,   841,   -59,
2800      418,   419,   -59,   862,  1149,  1036,   843,  1167,   549,   677,
2801      -59,   769,   711,   -59,   869,   706,  -375,   708,   446,   884,
2802      408,   841,   -59,   405,   434,   -59,  -373,   861,   352,   862,
2803       38,   385,   408,  -170,   852,   452,   723,   378,   549,   453,
2804     1040,   724,  1057,  -372,   325,  1061,   410,   411,   330,   149,
2805      261,  -173,   873,  1048,   875,   331,   884,  -170,   386,   884,
2806       38,   960,  -368,   332,  -358,   541,   418,   419,  -368,   542,
2807     -358,   385,  1128,  -269,  -375,   556,   869,   281,   367,   368,
2808     -326,  -369,   325,   325,  -373,  -371,  -326,   279,   295,   146,
2809      147,   618,   728,   618,   326,  -370,  1162,   764,   386,   325,
2810      737,  -372,   765,   262,  -116,   333,  -359,   518,   387,   435,
2811     -327,  -374,  -359,   400,  -375,  1162,  -327,  1176,   469,   412,
2812     -116,  -116,  1077,  1094,   518,   513,  1108,  1176,   325,   334,
2813      325,  -350,   326,   326,   335,  -348,   838,  -350,   336,  -369,
2814      884,  -348,   337,  -371,   511,  -349,  1105,   458,   387,   326,
2815      338,  -349,  -373,  -370,   385,  -372,   123,  1166,   406,   766,
2816     -360,  -353,  -314,   279,  -354,   401,  -360,  -353,   115,  -374,
2817     -354,  1174,  -375,  1166,   339,   514,   869,   549,   326,   408,
2818      326,   386,   405,  -361,   680,  1180,   835,  -362,   325,  -361,
2819      803,   804,   805,  -362,   869,   288,   289,   290,   291,   292,
2820      293,   294,  -352,   838,   340,  -351,  -363,   554,  -352,   341,
2821     -373,  -351,  -363,  -372,  -364,  1127,   392,   385,  -365,   342,
2822     -364,   260,   260,   513,  -365,   325,   343,   260,   260,   260,
2823      973,   387,   627,   838,   344,   631,   523,  1097,   326,   239,
2824       33,   930,   511,  -366,   386,  1156,   345,  1157,   260,  -366,
2825      869,   814,   259,   835,   815,  -324,  -367,   646,  1158,   385,
2826      581,  1159,  -367,   258,   258,   961,   618,   618,  -314,   258,
2827      258,   258,   400,   514,   346,   326,    38,     5,   347,   351,
2828     1170,  1171,   628,   835,  1030,   514,   681,   631,  1142,   392,
2829      258,  1143,   418,   419,   387,   374,   823,   325,   430,   325,
2830      325,    38,   385,   446,   513,   702,   683,   953,   954,   955,
2831       21,    22,   460,   513,   464,   325,   260,   406,   693,   392,
2832     -152,   413,   506,   511,   279,   244,   412,   525,    16,   386,
2833      532,   632,   511,   261,   261,   627,   682,   514,   646,   261,
2834      261,   261,   633,  1126,   649,   653,   654,   326,   656,   326,
2835      326,   657,   658,  1059,   514,   659,   813,   660,   258,   697,
2836      261,   661,   662,   514,   663,   326,   664,   665,   666,   259,
2837      669,   667,   350,   668,   670,   950,  1126,   353,   684,   387,
2838      743,  -314,  -254,   573,   260,   628,   262,   262,   727,   610,
2839      733,   885,   262,   262,   262,   379,   741,   734,   736,   354,
2840      397,   881,   757,   760,   768,   409,   771,   772,   773,   618,
2841      777,   779,   753,   262,   427,   428,   776,   780,   781,  1112,
2842      784,   724,   811,   816,   818,   825,   258,   821,   261,   840,
2843      744,   385,   288,   289,   290,   291,   292,   293,   294,   824,
2844      842,   385,   858,   888,   325,   876,   765,   892,   893,   916,
2845      325,   896,   898,   899,   919,   447,   922,   449,   681,   288,
2846      289,   290,   291,   292,   293,   294,  1041,   905,   386,   923,
2847      937,   610,   457,   940,   942,   981,   984,    33,   986,   745,
2848      987,   262,   988,  1031,   989,   990,   991,   992,   993,   994,
2849      995,  1086,  1144,   996,   326,  1034,   261,  1161,  -320,  1051,
2850      326,  1054,  1062,  1063,  1065,   549,  1067,  1068,   682,  1085,
2851     1093,  1098,  1102,  1104,   325,   325,   325,   324,   387,  1107,
2852      610,  1111,  1163,  1113,  1165,  1114,  1179,  1115,  1135,  1151,
2853       89,  1002,  1006,  1028,  1091,  1008,   581,   921,   610,  1009,
2854     1175,   928,  1010,  1118,   758,   894,  1011,   759,   970,   262,
2855      524,   111,   448,  1014,   450,   379,   581,   397,  1125,  1073,
2856      703,   933,  1095,  1129,   326,   326,   326,  1018,   505,   672,
2857      958,   505,   549,   549,   671,  1178,   952,   537,   817,   539,
2858      749,   567,   568,  1024,   872,   581,   581,   581,  1049,   967,
2859      726,  1039,   932,     0,   465,     0,   325,     0,     0,     0,
2860        0,   560,     0,   569,     0,   393,   549,   396,   398,    17,
2861       18,    19,   260,     0,     0,     0,    21,    22,    23,    24,
2862       25,    26,    27,    28,    29,     0,   277,     0,     0,   622,
2863      623,     0,   522,     0,     0,     0,     0,     0,     0,     0,
2864        0,   392,     0,     0,     0,     0,   326,     0,   529,   582,
2865        0,     0,   259,   259,   258,     0,     0,   627,   259,   259,
2866      259,     0,     0,     0,     0,     0,     0,   505,     0,   505,
2867        0,     0,     0,     0,   538,     0,   540,     0,   408,   259,
2868      543,   405,     0,   404,     0,  1087,     0,   560,     0,  1101,
2869      564,   565,   566,   127,   357,   325,  1004,     0,   581,   325,
2870        0,   325,     0,     0,   581,   581,   581,   628,     0,   104,
2871        0,     0,  1021,     0,     0,  1084,  1012,     0,   615,    99,
2872        0,   710,     0,  1013,   261,     0,     0,     0,   136,     0,
2873        0,   408,     0,     0,   405,     0,     0,     0,  1087,   408,
2874        0,  1160,   405,   128,     0,   326,  1087,   259,   560,   326,
2875     1168,   326,     0,   357,     0,     0,     0,   505,   287,   505,
2876      581,     0,     0,     0,   396,   398,     0,     0,     0,   385,
2877        0,   400,   127,  1120,   325,   402,   673,   262,     0,   408,
2878        0,     0,   405,   679,     0,     0,  1087,     0,   127,   505,
2879      581,  1078,  1022,   323,   465,     0,   386,   127,  1070,     0,
2880        0,   325,  1072,   457,     0,   396,   398,  1021,     0,     0,
2881        0,  1080,     0,   403,    99,   259,  1088,     0,  1081,   260,
2882     1042,   715,   128,   401,   326,     0,   720,     0,     0,     0,
2883      512,     0,   400,   365,   391,     0,   385,     0,   128,     0,
2884        0,   377,   505,   505,     0,     0,   387,   128,   392,     0,
2885      127,   326,     0,     0,     0,     0,   127,     0,   127,  1078,
2886      581,   258,     0,   386,   627,   533,   534,   535,     0,     0,
2887      581,  1075,   400,  1117,     0,  1021,  1121,  1088,   581,  1080,
2888        0,   392,   279,     0,   401,     0,  1081,  1083,     0,     0,
2889        0,   513,     0,     0,     0,   122,     0,   627,   127,   767,
2890      128,   260,     0,     0,   120,     0,   128,     0,   128,   407,
2891      511,     0,     0,   387,   628,     0,     0,  1088,     0,     0,
2892     1147,   513,     0,   513,   279,   582,     0,   322,   512,     0,
2893      505,   261,     0,     0,   581,     0,   321,   581,     0,   513,
2894      511,   514,   511,   258,     0,   582,  1119,   628,   128,   260,
2895      260,     0,     0,   812,     0,  1123,     0,   260,   511,     0,
2896        0,     0,     0,     0,     0,   819,     0,   581,   260,     0,
2897        0,   514,     0,   514,   582,   582,   582,     0,     0,     0,
2898        0,     0,     0,     0,   262,   384,     0,     0,   394,   514,
2899        0,   258,   258,   396,   398,   925,     0,     0,     0,   258,
2900        0,     0,     0,     0,     0,     0,     0,   934,     0,   512,
2901      258,     0,     0,   261,     0,     0,   395,     0,   512,     0,
2902        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2903        0,     0,     0,     0,     0,     0,     0,   477,     0,     0,
2904        0,   481,   482,   259,   484,   485,   486,   487,   488,   489,
2905      490,   491,   492,   493,   494,   495,   496,   497,     0,     0,
2906      391,   261,   261,   976,   407,     0,   262,     0,     0,   261,
2907        0,     0,     0,     0,   918,     0,     0,     0,     0,     0,
2908      261,     0,     0,     0,     0,   365,   927,   582,     0,     0,
2909        0,     0,     0,   582,   582,   582,     0,   936,     0,     0,
2910        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2911        0,   396,     0,     0,   262,   262,     0,     0,     0,     0,
2912        0,     0,   262,     0,     0,     0,   504,     0,     0,   504,
2913        0,     0,     0,   262,     0,     0,     0,     0,     0,     0,
2914        0,     0,   407,     0,     0,   451,     0,     0,  1052,   582,
2915        0,     0,     0,     0,   407,     0,     0,   975,   391,   322,
2916        0,   534,   535,     0,     0,     0,     0,     0,   445,     0,
2917        0,     0,     0,     0,     0,     0,     0,     0,     0,   582,
2918        0,     0,   829,     0,     0,   451,   394,     0,   650,   651,
2919      652,   377,     0,   655,     0,  1026,   505,   322,   322,     0,
2920        0,     0,     0,     0,     0,     0,   462,   463,  1089,     0,
2921     1090,     0,  1092,  1038,   395,     0,     0,     0,     0,     0,
2922        0,   391,     0,   396,   398,   504,   687,   504,    21,    22,
2923       23,    24,    25,    26,    27,    28,    29,   498,   277,   391,
2924        0,     0,     0,   322,     0,   322,     0,   499,   391,   582,
2925      259,     0,   520,     0,   521,     0,     0,     0,     0,   582,
2926        0,  1122,     0,     0,     0,     0,     0,   582,   384,     0,
2927        0,     0,   505,     0,     0,   553,     0,  1132,     0,     0,
2928        0,     0,     0,    39,    40,    41,    42,    43,    44,    45,
2929       46,    47,    48,    49,    50,    51,    52,    53,     0,     0,
2930        0,   407,     0,     0,     0,     0,     0,     0,  1152,     0,
2931        0,     0,     0,     0,     0,   504,     0,   504,     0,   626,
2932        0,     0,     0,   582,     0,     0,   582,     0,     0,     0,
2933        0,   451,   259,     0,     0,     0,     0,     0,     0,     0,
2934      322,     0,     0,  1116,     0,     0,     0,   504,     0,   621,
2935      630,     0,   505,     0,     0,     0,   582,     0,     0,  1124,
2936        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2937        0,  1130,   505,     0,     0,  1133,     0,  1134,     0,   785,
2938      259,   259,     0,     0,     0,     0,   692,     0,   259,     0,
2939     1146,     0,     0,   391,  1148,     0,     0,     0,  1150,   259,
2940      504,   504,   635,   820,     0,     0,     0,     0,  1153,     0,
2941        0,     0,   322,     0,     0,   322,   692,     0,     0,     0,
2942     1164,   691,   626,     0,   696,     0,     0,     0,     0,     0,
2943      322,     0,     0,     0,     0,     0,     0,     0,     0,   709,
2944        0,     0,     0,   636,   637,     0,     0,     0,     0,     0,
2945      202,   203,   204,   638,   206,   207,   208,   209,   210,   211,
2946      212,   213,   214,   215,   216,   217,   218,   219,   220,   221,
2947      222,   223,   224,     0,     0,     0,     0,     0,     0,   324,
2948        0,     0,     0,     0,     0,     0,     0,     0,   504,     0,
2949        0,     0,     0,   897,     0,   742,     0,     0,     0,     0,
2950        0,   900,     0,     0,     0,   902,   903,     0,     0,   906,
2951      907,   908,   909,   910,   911,   912,   913,   914,   915,     0,
2952        0,     0,     0,   407,     0,   687,     0,   639,     0,   640,
2953      641,     0,   642,   643,     0,   246,   247,   248,   644,   250,
2954      251,   252,   253,   254,   255,   256,     0,     0,     0,     0,
2955        0,   938,     0,     0,     0,   692,     0,     0,     0,   322,
2956        0,     0,     0,     0,     0,   322,     0,     0,   796,     0,
2957        6,     7,     8,     9,    10,    11,    12,     0,     0,     0,
2958        0,     0,     0,     0,     0,     0,     0,    13,    14,    15,
2959       16,    17,    18,    19,    20,     0,   512,     0,    21,    22,
2960       23,    24,    25,    26,    27,    28,    29,   997,   998,    31,
2961       32,     0,     0,     0,     0,    33,    34,    35,     0,   999,
2962        0,     0,     0,     0,   982,     0,   512,   985,   512,   322,
2963      322,   322,     0,     0,     0,     0,     0,     0,   878,   879,
2964      880,  1023,     0,     0,   512,     0,     0,     0,     0,     0,
2965        0,    38,     0,    39,    40,    41,    42,    43,    44,    45,
2966       46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
2967       56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
2968       66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
2969       76,    77,    78,    79,    80,    81,    82,    83,    84,    85,
2970     1000,  1001,     0,     0,     0,     0,     0,     0,     0,     0,
2971        0,   322,    87,     0,     0,     0,     0,     0,     0,     0,
2972      696,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2973        0,     0,     0,     0,   297,   298,   299,   300,   301,   302,
2974      303,     0,     0,     0,   626,     0,     0,     0,     0,     0,
2975        0,   304,   305,   306,   504,     0,     0,     0,     0,     0,
2976        0,     0,     0,     0,   297,   298,   299,   300,   301,   302,
2977      303,     0,     0,    31,   380,     0,     0,     0,     0,    33,
2978     1020,   304,   305,   306,    16,     0,     0,     0,     0,   803,
2979      804,   805,     0,     0,     0,     0,     0,   806,     0,     0,
2980      407,     0,     0,     0,     0,     0,     0,     0,   122,    33,
2981      322,     0,     0,     0,   322,     0,   322,  1019,     0,  1025,
2982      407,     0,     0,  1027,     0,     0,   391,     0,     0,     0,
2983      504,     0,   309,   310,   311,   312,   313,   314,   315,   316,
2984      317,   318,   319,     0,     0,    38,     0,     0,     0,     0,
2985        0,     0,     0,   407,     0,     0,   391,     0,   391,  1074,
2986        0,   407,   309,   310,   311,   312,   313,   314,   315,   316,
2987      317,   318,   319,     0,   391,  1074,    87,     0,     0,     0,
2988        0,     0,     0,   451,  1074,     0,     0,     0,     0,   322,
2989        0,     0,     0,     0,     0,     0,     0,   407,   321,     0,
2990        0,   407,     0,     0,     0,     0,    87,     0,     0,     0,
2991      504,     0,     0,     0,     0,     0,   322,     0,     0,     0,
2992        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2993      504,     0,     0,     0,     0,     0,     0,  1074,     0,     0,
2994        0,     0,     0,  1074,     0,  1074,     0,     0,     0,     0,
2995      451,   553,     0,     0,     0,   150,   151,   152,   153,   154,
2996      155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
2997      165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
2998      175,   176,   177,   178,   692,  1074,   179,   180,   181,   182,
2999      183,   184,     0,   185,   186,   187,   188,     0,     0,   189,
3000      190,   191,   192,   193,   194,   195,   196,   197,   198,   199,
3001      200,   201,   202,   203,   204,   205,   206,   207,   208,   209,
3002      210,   211,   212,   213,   214,   215,   216,   217,   218,   219,
3003      220,   221,   222,   223,   224,   225,   226,   227,    39,    40,
3004       41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
3005       51,    52,    53,   228,   229,   230,   231,   232,   233,   234,
3006      235,   236,   237,   238,     0,     0,     0,     0,     0,     0,
3007        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3008        0,     0,     0,     0,     0,     0,   596,   239,     0,   240,
3009      241,   242,   243,     0,   597,   245,   598,   246,   247,   248,
3010      249,   250,   251,   252,   253,   254,   255,   256,   257,   150,
3011      151,   152,   153,   154,   155,   156,   157,   158,   159,   160,
3012      161,   162,   163,   164,   165,   166,   167,   168,   169,   170,
3013      171,   172,   173,   174,   175,   176,   177,   178,     0,     0,
3014      179,   180,   181,   182,   183,   184,     0,   185,   186,   187,
3015      188,     0,     0,   189,   190,   191,   192,   193,   194,   195,
3016      196,   197,   198,   199,   200,   201,   202,   203,   204,   205,
3017      206,   207,   208,   209,   210,   211,   212,   213,   214,   215,
3018      216,   217,   218,   219,   220,   221,   222,   223,   224,   225,
3019      226,   227,    39,    40,    41,    42,    43,    44,    45,    46,
3020       47,    48,    49,    50,    51,    52,    53,   228,   229,   230,
3021      231,   232,   233,   234,   235,   236,   237,   238,     0,     0,
3022        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3023        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3024      596,   239,   602,   240,   241,   242,   243,     0,   597,   245,
3025        0,   246,   247,   248,   249,   250,   251,   252,   253,   254,
3026      255,   256,   257,   150,   151,   152,   153,   154,   155,   156,
3027      157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
3028      167,   168,   169,   170,   171,   172,   173,   174,   175,   176,
3029      177,   178,     0,     0,   179,   180,   181,   182,   183,   184,
3030        0,   185,   186,   187,   188,     0,     0,   189,   190,   191,
3031      192,   193,   194,   195,   196,   197,   198,   199,   200,   201,
3032      202,   203,   204,   205,   206,   207,   208,   209,   210,   211,
3033      212,   213,   214,   215,   216,   217,   218,   219,   220,   221,
3034      222,   223,   224,   225,   226,   227,    39,    40,    41,    42,
3035       43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
3036       53,   228,   229,   230,   231,   232,   233,   234,   235,   236,
3037      237,   238,     0,     0,     0,     0,     0,     0,     0,     0,
3038        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3039        0,     0,     0,     0,   596,   239,     0,   240,   241,   242,
3040      243,     0,   597,   245,   608,   246,   247,   248,   249,   250,
3041      251,   252,   253,   254,   255,   256,   257,   150,   151,   152,
3042      153,   154,   155,   156,   157,   158,   159,   160,   161,   162,
3043      163,   164,   165,   166,   167,   168,   169,   170,   171,   172,
3044      173,   174,   175,   176,   177,   178,     0,     0,   179,   180,
3045      181,   182,   183,   184,     0,   185,   186,   187,   188,     0,
3046        0,   189,   190,   191,   192,   193,   194,   195,   196,   197,
3047      198,   199,   200,   201,   202,   203,   204,   205,   206,   207,
3048      208,   209,   210,   211,   212,   213,   214,   215,   216,   217,
3049      218,   219,   220,   221,   222,   223,   224,   225,   226,   227,
3050       39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
3051       49,    50,    51,    52,    53,   228,   229,   230,   231,   232,
3052      233,   234,   235,   236,   237,   238,     0,     0,     0,     0,
3053        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3054        0,     0,     0,     0,     0,     0,     0,     0,   596,   239,
3055        0,   240,   241,   242,   243,   611,   597,   245,     0,   246,
3056      247,   248,   249,   250,   251,   252,   253,   254,   255,   256,
3057      257,   150,   151,   152,   153,   154,   155,   156,   157,   158,
3058      159,   160,   161,   162,   163,   164,   165,   166,   167,   168,
3059      169,   170,   171,   172,   173,   174,   175,   176,   177,   178,
3060        0,     0,   179,   180,   181,   182,   183,   184,     0,   185,
3061      186,   187,   188,     0,     0,   189,   190,   191,   192,   193,
3062      194,   195,   196,   197,   198,   199,   200,   201,   202,   203,
3063      204,   205,   206,   207,   208,   209,   210,   211,   212,   213,
3064      214,   215,   216,   217,   218,   219,   220,   221,   222,   223,
3065      224,   225,   226,   227,    39,    40,    41,    42,    43,    44,
3066       45,    46,    47,    48,    49,    50,    51,    52,    53,   228,
3067      229,   230,   231,   232,   233,   234,   235,   236,   237,   238,
3068        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3069        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3070        0,     0,   596,   239,   629,   240,   241,   242,   243,     0,
3071      597,   245,     0,   246,   247,   248,   249,   250,   251,   252,
3072      253,   254,   255,   256,   257,   150,   151,   152,   153,   154,
3073      155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
3074      165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
3075      175,   176,   177,   178,     0,     0,   179,   180,   181,   182,
3076      183,   184,     0,   185,   186,   187,   188,     0,     0,   189,
3077      190,   191,   192,   193,   194,   195,   196,   197,   198,   199,
3078      200,   201,   202,   203,   204,   205,   206,   207,   208,   209,
3079      210,   211,   212,   213,   214,   215,   216,   217,   218,   219,
3080      220,   221,   222,   223,   224,   225,   226,   227,    39,    40,
3081       41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
3082       51,    52,    53,   228,   229,   230,   231,   232,   233,   234,
3083      235,   236,   237,   238,     0,     0,     0,     0,     0,     0,
3084        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3085        0,     0,     0,     0,     0,     0,   596,   239,   698,   240,
3086      241,   242,   243,     0,   597,   245,     0,   246,   247,   248,
3087      249,   250,   251,   252,   253,   254,   255,   256,   257,   150,
3088      151,   152,   153,   154,   155,   156,   157,   158,   159,   160,
3089      161,   162,   163,   164,   165,   166,   167,   168,   169,   170,
3090      171,   172,   173,   174,   175,   176,   177,   178,     0,     0,
3091      179,   180,   181,   182,   183,   184,     0,   185,   186,   187,
3092      188,     0,     0,   189,   190,   191,   192,   193,   194,   195,
3093      196,   197,   198,   199,   200,   201,   202,   203,   204,   205,
3094      206,   207,   208,   209,   210,   211,   212,   213,   214,   215,
3095      216,   217,   218,   219,   220,   221,   222,   223,   224,   225,
3096      226,   227,    39,    40,    41,    42,    43,    44,    45,    46,
3097       47,    48,    49,    50,    51,    52,    53,   228,   229,   230,
3098      231,   232,   233,   234,   235,   236,   237,   238,     0,     0,
3099        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3100        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3101      596,   239,   935,   240,   241,   242,   243,     0,   597,   245,
3102        0,   246,   247,   248,   249,   250,   251,   252,   253,   254,
3103      255,   256,   257,   150,   151,   152,   153,   154,   155,   156,
3104      157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
3105      167,   168,   169,   170,   171,   172,   173,   174,   175,   176,
3106      177,   178,     0,     0,   179,   180,   181,   182,   183,   184,
3107        0,   185,   186,   187,   188,     0,     0,   189,   190,   191,
3108      192,   193,   194,   195,   196,   197,   198,   199,   200,   201,
3109      202,   203,   204,   205,   206,   207,   208,   209,   210,   211,
3110      212,   213,   214,   215,   216,   217,   218,   219,   220,   221,
3111      222,   223,   224,   225,   226,   227,    39,    40,    41,    42,
3112       43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
3113       53,   228,   229,   230,   231,   232,   233,   234,   235,   236,
3114      237,   238,     0,     0,     0,     0,     0,     0,     0,     0,
3115        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3116        0,     0,     0,     0,   596,   239,  1172,   240,   241,   242,
3117      243,     0,   597,   245,     0,   246,   247,   248,   249,   250,
3118      251,   252,   253,   254,   255,   256,   257,   150,   151,   152,
3119      153,   154,   155,   156,   157,   158,   159,   160,   161,   162,
3120      163,   164,   165,   166,   167,   168,   169,   170,   171,   172,
3121      173,   174,   175,   176,   177,   178,     0,     0,   179,   180,
3122      181,   182,   183,   184,     0,   185,   186,   187,   188,     0,
3123        0,   189,   190,   191,   192,   193,   194,   195,   196,   197,
3124      198,   199,   200,   201,   202,   203,   204,   205,   206,   207,
3125      208,   209,   210,   211,   212,   213,   214,   215,   216,   217,
3126      218,   219,   220,   221,   222,   223,   224,   225,   226,   227,
3127       39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
3128       49,    50,    51,    52,    53,   228,   229,   230,   231,   232,
3129      233,   234,   235,   236,   237,   238,     0,     0,     0,     0,
3130        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3131        0,     0,     0,     0,     0,     0,     0,     0,   596,   239,
3132     1177,   240,   241,   242,   243,     0,   597,   245,     0,   246,
3133      247,   248,   249,   250,   251,   252,   253,   254,   255,   256,
3134      257,   150,   151,   152,   153,   154,   155,   156,   157,   158,
3135      159,   160,   161,   162,   163,   164,   165,   166,   167,   168,
3136      169,   170,   171,   172,   173,   174,   175,   176,   177,   178,
3137        0,     0,   179,   180,   181,   182,   183,   184,     0,   185,
3138      186,   187,   188,     0,     0,   189,   190,   191,   192,   193,
3139      194,   195,   196,   197,   198,   199,   200,   201,   202,   203,
3140      204,   205,   206,   207,   208,   209,   210,   211,   212,   213,
3141      214,   215,   216,   217,   218,   219,   220,   221,   222,   223,
3142      224,   225,   226,   227,    39,    40,    41,    42,    43,    44,
3143       45,    46,    47,    48,    49,    50,    51,    52,    53,   228,
3144      229,   230,   231,   232,   233,   234,   235,   236,   237,   238,
3145        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3146        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3147        0,     0,   609,   239,     0,   240,   241,   242,   243,     0,
3148      597,   245,     0,   246,   247,   248,   249,   250,   251,   252,
3149      253,   254,   255,   256,   257,   150,   151,   152,   153,   154,
3150      155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
3151      165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
3152      175,   176,   177,   178,     0,     0,   179,   180,   181,   182,
3153      183,   184,     0,   185,   186,   187,   188,     0,     0,   189,
3154      190,   191,   192,   193,   194,   195,   196,   197,   198,   199,
3155      200,   201,   202,   203,   204,   205,   206,   207,   208,   209,
3156      210,   211,   212,   213,   214,   215,   216,   217,   218,   219,
3157      220,   221,   222,   223,   224,   225,   226,   227,    39,    40,
3158       41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
3159       51,    52,    53,   228,   229,   230,   231,   232,   233,   234,
3160      235,   236,   237,   238,     0,     0,     0,     0,     0,     0,
3161        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3162        0,     0,     0,     0,     0,     0,   735,   239,     0,   240,
3163      241,   242,   243,     0,   597,   245,     0,   246,   247,   248,
3164      249,   250,   251,   252,   253,   254,   255,   256,   257,   150,
3165      151,   152,   153,   154,   155,   156,   157,   158,   159,   160,
3166      161,   162,   163,   164,   165,   166,   167,   168,   169,   170,
3167      171,   172,   173,   174,   175,   176,   177,   178,     0,     0,
3168      179,   180,   181,   182,   183,   184,     0,   185,   186,   187,
3169      188,     0,     0,   189,   190,   191,   192,   193,   194,   195,
3170      196,   197,   198,   199,   200,   201,   202,   203,   204,   205,
3171      206,   207,   208,   209,   210,   211,   212,   213,   214,   215,
3172      216,   217,   218,   219,   220,   221,   222,   223,   224,   225,
3173      226,   227,    39,    40,    41,    42,    43,    44,    45,    46,
3174       47,    48,    49,    50,    51,    52,    53,   228,   229,   230,
3175      231,   232,   233,   234,   235,   236,   237,   238,     0,     0,
3176        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3177        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3178        0,   239,     0,   240,   241,   242,   243,  1141,   597,   245,
3179        0,   246,   247,   248,   249,   250,   251,   252,   253,   254,
3180      255,   256,   257,   150,   151,   152,   153,   154,   155,   156,
3181      157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
3182      167,   168,   169,   170,   171,   172,   173,   174,   175,   176,
3183      177,   178,     0,     0,   179,   180,   181,   182,   183,   184,
3184        0,   185,   186,   187,   188,     0,     0,   189,   190,   191,
3185      192,   193,   194,   195,   196,   197,   198,   199,   200,   201,
3186      202,   203,   204,   205,   206,   207,   208,   209,   210,   211,
3187      212,   213,   214,   215,   216,   217,   218,   219,   220,   221,
3188      222,   223,   224,   225,   226,   227,    39,    40,    41,    42,
3189       43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
3190       53,   228,   229,   230,   231,   232,   233,   234,   235,   236,
3191      237,   238,     0,     0,     0,     0,     0,     0,     0,     0,
3192        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3193        0,     0,     0,     0,  1173,   239,     0,   240,   241,   242,
3194      243,     0,   597,   245,     0,   246,   247,   248,   249,   250,
3195      251,   252,   253,   254,   255,   256,   257,   150,   151,   152,
3196      153,   154,   155,   156,   157,   158,   159,   160,   161,   162,
3197      163,   164,   165,   166,   167,   168,   169,   170,   171,   172,
3198      173,   174,   175,   176,   177,   178,     0,     0,   179,   180,
3199      181,   182,   183,   184,     0,   185,   186,   187,   188,     0,
3200        0,   189,   190,   191,   192,   193,   194,   195,   196,   197,
3201      198,   199,   200,   201,   202,   203,   204,   205,   206,   207,
3202      208,   209,   210,   211,   212,   213,   214,   215,   216,   217,
3203      218,   219,   220,   221,   222,   223,   224,   225,   226,   227,
3204       39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
3205       49,    50,    51,    52,    53,   228,   229,   230,   231,   232,
3206      233,   234,   235,   236,   237,   238,     0,     0,     0,     0,
3207        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3208        0,     0,     0,     0,     0,     0,     0,     0,  1181,   239,
3209        0,   240,   241,   242,   243,     0,   597,   245,     0,   246,
3210      247,   248,   249,   250,   251,   252,   253,   254,   255,   256,
3211      257,   150,   151,   152,   153,   154,   155,   156,   157,   158,
3212      159,   160,   161,   162,   163,   164,   165,   166,   167,   168,
3213      169,   170,   171,   172,   173,   174,   175,   176,   177,   178,
3214        0,     0,   179,   180,   181,   182,   183,   184,     0,   185,
3215      186,   187,   188,     0,     0,   189,   190,   191,   192,   193,
3216      194,   195,   196,   197,   198,   199,   200,   201,   202,   203,
3217      204,   205,   206,   207,   208,   209,   210,   211,   212,   213,
3218      214,   215,   216,   217,   218,   219,   220,   221,   222,   223,
3219      224,   225,   226,   227,    39,    40,    41,    42,    43,    44,
3220       45,    46,    47,    48,    49,    50,    51,    52,    53,   228,
3221      229,   230,   231,   232,   233,   234,   235,   236,   237,   238,
3222        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3223        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3224        0,     0,     0,   239,     0,   240,   241,   242,   243,     0,
3225      244,   245,     0,   246,   247,   248,   249,   250,   251,   252,
3226      253,   254,   255,   256,   257,   150,   151,   152,   153,   154,
3227      155,   156,   441,   442,   159,   160,   161,   162,   163,   164,
3228      165,   166,   167,   168,   169,   570,   171,   172,   173,   174,
3229      175,   176,   177,   178,     0,     0,   179,   180,   181,   182,
3230      183,   184,     0,   185,   186,   187,   188,     0,     0,   189,
3231      190,   191,   192,   193,   194,   195,   196,   197,   198,   199,
3232      200,   201,   202,   203,   204,   571,   206,   207,   208,   209,
3233      210,   211,   212,   213,   214,   215,   216,   217,   218,   219,
3234      220,   221,   222,   223,   224,     0,   572,     0,    39,    40,
3235       41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
3236       51,    52,    53,   228,   229,   230,   231,   232,   233,   234,
3237      235,   236,   237,   238,     0,     0,     0,     0,     0,     0,
3238        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3239        0,     0,     0,     0,     0,     0,   965,   573,   966,   574,
3240      575,   576,   443,     0,   577,   578,     0,   246,   247,   248,
3241      579,   250,   251,   252,   253,   254,   255,   256,   580,   150,
3242      151,   152,   153,   154,   155,   156,   157,   158,   159,   160,
3243      161,   162,   163,   164,   165,   166,   167,   168,   169,   170,
3244      171,   172,   173,   174,   175,   176,   177,   178,     0,     0,
3245      179,   180,   181,   182,   183,   184,     0,   185,   186,   187,
3246      188,     0,     0,   189,   190,   191,   192,   193,   194,   195,
3247      196,   197,   198,   199,   200,   201,   202,   203,   204,   205,
3248      206,   207,   208,   209,   210,   211,   212,   213,   214,   215,
3249      216,   217,   218,   219,   220,   221,   222,   223,   224,   225,
3250      226,   227,    39,    40,    41,    42,    43,    44,    45,    46,
3251       47,    48,    49,    50,    51,    52,    53,   228,   229,   230,
3252      231,   232,   233,   234,   235,   236,   237,   238,     0,     0,
3253        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3254        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3255        0,   239,     0,   240,   241,   242,   243,     0,   597,   245,
3256        0,   246,   247,   248,   249,   250,   251,   252,   253,   254,
3257      255,   256,   257,   150,   151,   152,   153,   154,   155,   156,
3258      157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
3259      167,   168,   169,   170,   171,   172,   173,   174,   175,   176,
3260      177,   178,     0,     0,   179,   180,   181,   182,   183,   184,
3261        0,   185,   186,   187,   188,     0,     0,   189,   190,   191,
3262      192,   193,   194,   195,   196,   197,   198,   199,   200,   201,
3263      202,   203,   204,   205,   206,   207,   208,   209,   210,   211,
3264      212,   213,   214,   215,   216,   217,   218,   219,   220,   221,
3265      222,   223,   224,   225,   226,   227,    39,    40,    41,    42,
3266       43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
3267       53,   228,   229,   230,   231,   232,   233,   234,   235,   236,
3268      237,   238,     0,     0,     0,     0,     0,     0,     0,     0,
3269        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3270        0,     0,     0,     0,     0,   239,     0,   240,   241,   242,
3271      243,     0,     0,   245,     0,   246,   247,   248,   249,   250,
3272      251,   252,   253,   254,   255,   256,   257,   150,   151,   152,
3273      153,   154,   155,   156,   441,   442,   159,   160,   161,   162,
3274      163,   164,   165,   166,   167,   168,   169,   570,   171,   172,
3275      173,   174,   175,   176,   177,   178,     0,     0,   179,   180,
3276      181,   182,   183,   184,     0,   185,   186,   187,   188,     0,
3277        0,   189,   190,   191,   192,   193,   194,   195,   196,   197,
3278      198,   199,   200,   201,   202,   203,   204,   571,   206,   207,
3279      208,   209,   210,   211,   212,   213,   214,   215,   216,   217,
3280      218,   219,   220,   221,   222,   223,   224,     0,   572,     0,
3281       39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
3282       49,    50,    51,    52,    53,   228,   229,   230,   231,   232,
3283      233,   234,   235,   236,   237,   238,     0,     0,     0,     0,
3284        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3285        0,     0,     0,     0,     0,     0,     0,     0,     0,   573,
3286        0,   574,   575,   576,   443,   889,   577,   578,     0,   246,
3287      247,   248,   579,   250,   251,   252,   253,   254,   255,   256,
3288      580,   150,   151,   152,   153,   154,   155,   156,   441,   442,
3289      159,   160,   161,   162,   163,   164,   165,   166,   167,   168,
3290      169,   570,   171,   172,   173,   174,   175,   176,   177,   178,
3291        0,     0,   179,   180,   181,   182,   183,   184,     0,   185,
3292      186,   187,   188,     0,     0,   189,   190,   191,   192,   193,
3293      194,   195,   196,   197,   198,   199,   200,   201,   202,   203,
3294      204,   571,   206,   207,   208,   209,   210,   211,   212,   213,
3295      214,   215,   216,   217,   218,   219,   220,   221,   222,   223,
3296      224,     0,   572,     0,    39,    40,    41,    42,    43,    44,
3297       45,    46,    47,    48,    49,    50,    51,    52,    53,   228,
3298      229,   230,   231,   232,   233,   234,   235,   236,   237,   238,
3299        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3300        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3301        0,     0,     0,   573,     0,   574,   575,   576,   443,   890,
3302      577,   578,     0,   246,   247,   248,   579,   250,   251,   252,
3303      253,   254,   255,   256,   580,   150,   151,   152,   153,   154,
3304      155,   156,   441,   442,   159,   160,   161,   162,   163,   164,
3305      165,   166,   167,   168,   169,   570,   171,   172,   173,   174,
3306      175,   176,   177,   178,     0,     0,   179,   180,   181,   182,
3307      183,   184,     0,   185,   186,   187,   188,     0,     0,   189,
3308      190,   191,   192,   193,   194,   195,   196,   197,   198,   199,
3309      200,   201,   202,   203,   204,   571,   206,   207,   208,   209,
3310      210,   211,   212,   213,   214,   215,   216,   217,   218,   219,
3311      220,   221,   222,   223,   224,     0,   572,     0,    39,    40,
3312       41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
3313       51,    52,    53,   228,   229,   230,   231,   232,   233,   234,
3314      235,   236,   237,   238,     0,     0,     0,     0,     0,     0,
3315        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3316        0,     0,     0,     0,     0,     0,     0,   573,     0,   574,
3317      575,   576,   443,   891,   577,   578,     0,   246,   247,   248,
3318      579,   250,   251,   252,   253,   254,   255,   256,   580,   150,
3319      151,   152,   153,   154,   155,   156,   441,   442,   159,   160,
3320      161,   162,   163,   164,   165,   166,   167,   168,   169,   570,
3321      171,   172,   173,   174,   175,   176,   177,   178,     0,     0,
3322      179,   180,   181,   182,   183,   184,     0,   185,   186,   187,
3323      188,     0,     0,   189,   190,   191,   192,   193,   194,   195,
3324      196,   197,   198,   199,   200,   201,   202,   203,   204,   571,
3325      206,   207,   208,   209,   210,   211,   212,   213,   214,   215,
3326      216,   217,   218,   219,   220,   221,   222,   223,   224,     0,
3327      572,     0,    39,    40,    41,    42,    43,    44,    45,    46,
3328       47,    48,    49,    50,    51,    52,    53,   228,   229,   230,
3329      231,   232,   233,   234,   235,   236,   237,   238,     0,     0,
3330        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3331        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3332        0,   573,     0,   574,   575,   576,   443,     0,   577,   578,
3333      964,   246,   247,   248,   579,   250,   251,   252,   253,   254,
3334      255,   256,   580,   150,   151,   152,   153,   154,   155,   156,
3335      441,   442,   159,   160,   161,   162,   163,   164,   165,   166,
3336      167,   168,   169,   570,   171,   172,   173,   174,   175,   176,
3337      177,   178,     0,     0,   179,   180,   181,   182,   183,   184,
3338        0,   185,   186,   187,   188,     0,     0,   189,   190,   191,
3339      192,   193,   194,   195,   196,   197,   198,   199,   200,   201,
3340      202,   203,   204,   571,   206,   207,   208,   209,   210,   211,
3341      212,   213,   214,   215,   216,   217,   218,   219,   220,   221,
3342      222,   223,   224,     0,   572,     0,    39,    40,    41,    42,
3343       43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
3344       53,   228,   229,   230,   231,   232,   233,   234,   235,   236,
3345      237,   238,     0,     0,     0,     0,     0,     0,     0,     0,
3346        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3347        0,     0,     0,     0,     0,   573,     0,   574,   575,   576,
3348      443,     0,   577,   578,   969,   246,   247,   248,   579,   250,
3349      251,   252,   253,   254,   255,   256,   580,   150,   151,   152,
3350      153,   154,   155,   156,   441,   442,   159,   160,   161,   162,
3351      163,   164,   165,   166,   167,   168,   169,   570,   171,   172,
3352      173,   174,   175,   176,   177,   178,     0,     0,   179,   180,
3353      181,   182,   183,   184,     0,   185,   186,   187,   188,     0,
3354        0,   189,   190,   191,   192,   193,   194,   195,   196,   197,
3355      198,   199,   200,   201,   202,   203,   204,   571,   206,   207,
3356      208,   209,   210,   211,   212,   213,   214,   215,   216,   217,
3357      218,   219,   220,   221,   222,   223,   224,     0,   572,     0,
3358       39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
3359       49,    50,    51,    52,    53,   228,   229,   230,   231,   232,
3360      233,   234,   235,   236,   237,   238,     0,     0,     0,     0,
3361        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3362        0,     0,     0,     0,     0,     0,     0,     0,     0,   573,
3363        0,   574,   575,   576,   443,     0,   577,   578,     0,   246,
3364      247,   248,   579,   250,   251,   252,   253,   254,   255,   256,
3365      580,   150,   151,   152,   153,   154,   155,   156,   441,   442,
3366      159,   160,   161,   162,   163,   164,   165,   166,   167,   168,
3367      169,   570,   171,   172,   173,   174,   175,   176,   177,   178,
3368        0,     0,   179,   180,   181,   182,   183,   184,     0,   185,
3369      186,   187,   188,     0,     0,   189,   190,   191,   192,   193,
3370      194,   195,   196,   197,   198,   199,   200,   201,   202,   203,
3371      204,   434,   206,   207,   208,   209,   210,   211,   212,   213,
3372      214,   215,   216,   217,   218,   219,   220,   221,   222,   223,
3373      224,     0,   572,     0,    39,    40,    41,    42,    43,    44,
3374       45,    46,    47,    48,    49,    50,    51,    52,    53,   228,
3375      229,   230,   231,   232,   233,   234,   235,   236,   237,   238,
3376        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3377        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3378        0,     0,     0,   573,     0,   832,   575,   833,   443,     0,
3379      834,   578,     0,   246,   247,   248,   435,   250,   251,   252,
3380      253,   254,   255,   256,   580,  -618,  -618,  -618,  -618,  -618,
3381     -618,  -618,  -618,  -618,  -618,  -618,  -618,  -618,  -618,  -618,
3382     -618,  -618,  -618,  -618,  -618,  -618,  -618,  -618,  -618,  -618,
3383     -618,  -618,  -618,  -618,     0,     0,  -618,  -618,  -618,  -618,
3384     -618,  -618,     0,  -618,  -618,  -618,  -618,     0,     0,  -618,
3385     -618,  -618,  -618,  -618,  -618,  -618,  -618,  -618,  -618,  -618,
3386     -618,  -618,  -618,  -618,  -618,  -618,  -618,  -618,  -618,  -618,
3387     -618,  -618,  -618,  -618,  -618,  -618,  -618,  -618,  -618,  -618,
3388     -618,  -618,  -618,  -618,  -618,     0,  -618,     0,  -618,  -618,
3389     -618,  -618,  -618,  -618,  -618,  -618,  -618,  -618,  -618,  -618,
3390     -618,  -618,  -618,  -618,  -618,  -618,  -618,  -618,  -618,  -618,
3391     -618,  -618,  -618,  -618,     0,     0,     0,     0,     0,     0,
3392        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3393        0,     0,     0,     0,     0,     0,     0,  -618,     0,  -654,
3394     -618,  -618,  -618,     0,  -618,  -618,     0,  -618,  -618,  -618,
3395     -618,  -618,  -618,  -618,  -618,  -618,  -618,  -618,  -618,   150,
3396      151,   152,   153,   154,   155,   156,   441,   442,   159,   160,
3397      161,   162,   163,   164,   165,   166,   167,   168,   169,   570,
3398      171,   172,   173,   174,   175,   176,   177,   178,     0,     0,
3399      179,   180,   181,   182,   183,   184,     0,   185,   186,   187,
3400      188,     0,     0,   189,   190,   191,   192,   193,   194,   195,
3401      196,   197,   198,   199,   200,   201,   202,   203,   204,   864,
3402      206,   207,   208,   209,   210,   211,   212,   213,   214,   215,
3403      216,   217,   218,   219,   220,   221,   222,   223,   224,     0,
3404      572,     0,    39,    40,    41,    42,    43,    44,    45,    46,
3405       47,    48,    49,    50,    51,    52,    53,   228,   229,   230,
3406      231,   232,   233,   234,   235,   236,   237,   238,     0,     0,
3407        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3408        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3409        0,   573,     0,     0,   575,     0,   443,     0,   865,   578,
3410        0,   246,   247,   248,   866,   250,   251,   252,   253,   254,
3411      255,   256,   580,   150,   151,   152,   153,   154,   155,   156,
3412      441,   442,   159,   160,   161,   162,   163,   164,   165,   166,
3413      167,   168,   169,   570,   171,   172,   173,   174,   175,   176,
3414      177,   178,     0,     0,   179,   180,   181,   182,   183,   184,
3415        0,   185,   186,   187,   188,     0,     0,   189,   190,   191,
3416      192,   193,   194,   195,   196,   197,   198,   199,   200,   201,
3417      202,   203,   204,     0,   206,   207,   208,   209,   210,   211,
3418      212,   213,   214,   215,   216,   217,   218,   219,   220,   221,
3419      222,   223,   224,     0,   572,     0,    39,    40,    41,    42,
3420       43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
3421       53,   228,   229,   230,   231,   232,   233,   234,   235,   236,
3422      237,   238,     0,     0,     0,     0,     0,     0,     0,     0,
3423        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3424        0,     0,     0,     0,     0,   573,     0,     0,   575,     0,
3425      443,     0,   834,   578,     0,   246,   247,   248,     0,   250,
3426      251,   252,   253,   254,   255,   256,   580,   150,   151,   152,
3427      153,   154,   155,   156,   441,   442,   159,   160,   161,   162,
3428      163,   164,   165,   166,   167,   168,   169,   570,   171,   172,
3429      173,   174,   175,   176,   177,   178,     0,     0,   179,   180,
3430      181,   182,   183,   184,     0,   185,   186,   187,   188,     0,
3431        0,   189,   190,   191,   192,   193,   194,   195,   196,   197,
3432      198,   199,   200,   201,   202,   203,   204,     0,   206,   207,
3433      208,   209,   210,   211,   212,   213,   214,   215,   216,   217,
3434      218,   219,   220,   221,   222,   223,   224,     0,     0,     0,
3435       39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
3436       49,    50,    51,    52,    53,   228,   229,   230,   231,   232,
3437      233,   234,   235,   236,   237,   238,     0,     0,     0,     0,
3438        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3439        0,     0,     0,     0,     0,     0,     0,     0,     0,   573,
3440        0,     0,   575,     0,   443,     0,     0,   578,     0,   246,
3441      247,   248,     0,   250,   251,   252,   253,   254,   255,   256,
3442      580,   270,   271,   272,   273,   274,   275,   276,     0,     0,
3443      635,     0,     0,     0,     0,     0,     0,     0,   167,   168,
3444      169,     0,    17,    18,    19,    20,     0,     0,     0,    21,
3445       22,    23,    24,    25,    26,    27,    28,    29,     0,   277,
3446        0,     0,     0,     0,     0,     0,    33,    34,     0,     0,
3447        0,   636,   637,     0,     0,     0,     0,     0,   202,   203,
3448      204,   638,   206,   207,   208,   209,   210,   211,   212,   213,
3449      214,   215,   216,   217,   218,   219,   220,   221,   222,   223,
3450      224,     0,    38,     0,    39,    40,    41,    42,    43,    44,
3451       45,    46,    47,    48,    49,    50,    51,    52,    53,   228,
3452      229,   230,   231,   232,   233,   234,   235,   236,   237,   238,
3453      470,   471,   472,   473,   474,   475,   476,     0,     0,     0,
3454        0,     0,     0,     0,     0,     0,     0,   304,   305,   306,
3455        0,     0,     0,     0,     0,   639,     0,   640,   641,     0,
3456      642,   643,     0,   246,   247,   248,   644,   250,   251,   252,
3457      253,   254,   255,   256,     6,     7,     8,     9,    10,    11,
3458       12,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3459        0,    13,    14,    15,    16,    17,    18,    19,    20,     0,
3460        0,     0,    21,    22,    23,    24,    25,    26,    27,    28,
3461       29,     0,    30,    31,    32,     0,     0,     0,     0,    33,
3462       34,    35,    36,    37,     0,     0,     0,     0,   309,   310,
3463      311,   312,   313,   314,   315,   316,   317,   318,   319,     0,
3464        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3465        0,     0,     0,     0,     0,    38,     0,    39,    40,    41,
3466       42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
3467       52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
3468       62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
3469       72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
3470       82,    83,    84,    85,     0,    86,     6,     7,     8,     9,
3471       10,    11,    12,     0,     0,     0,    87,     0,     0,     0,
3472        0,     0,     0,    13,    14,    15,     0,    17,    18,    19,
3473       20,     0,     0,     0,    21,    22,    23,    24,    25,    26,
3474       27,    28,    29,     0,   277,    31,   354,     0,     0,     0,
3475        0,    33,    34,     0,     0,   355,     0,     0,     0,     0,
3476        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3477        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3478        0,     0,     0,     0,     0,     0,     0,    38,     0,    39,
3479       40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
3480       50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
3481       60,    61,    62,    63,    64,     0,     0,     0,     0,     0,
3482        0,     6,     7,     8,     9,    10,    11,    12,     0,     0,
3483        0,     0,     0,     0,     0,     0,     0,     0,    13,    14,
3484       15,     0,    17,    18,    19,    20,     0,     0,    87,    21,
3485       22,    23,    24,    25,    26,    27,    28,    29,     0,   277,
3486       31,   354,     0,     0,     0,     0,    33,    34,     0,     0,
3487        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3488        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3489        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3490        0,     0,    38,     0,    39,    40,    41,    42,    43,    44,
3491       45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
3492       55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
3493        0,     0,     0,     0,     0,     0,     6,     7,     8,     9,
3494       10,    11,    12,     0,     0,     0,     0,     0,     0,     0,
3495        0,     0,     0,    13,    14,    15,     0,    17,    18,    19,
3496       20,     0,     0,    87,    21,    22,    23,    24,    25,    26,
3497       27,    28,    29,     0,   277,    31,     0,     0,     0,     0,
3498        0,    33,    34,    35,     0,     0,     0,     0,     0,     0,
3499        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3500        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3501        0,     0,     0,     0,     0,     0,     0,    38,     0,    39,
3502       40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
3503       50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
3504       60,    61,    62,    63,    64,     0,     0,     0,     0,     0,
3505        0,     6,     7,     8,     9,    10,    11,    12,     0,     0,
3506        0,     0,     0,     0,     0,     0,     0,     0,    13,    14,
3507       15,     0,    17,    18,    19,    20,     0,     0,    87,    21,
3508       22,    23,    24,    25,    26,    27,    28,    29,     0,   277,
3509       31,     0,     0,     0,     0,     0,    33,    34,     0,     0,
3510        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3511        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3512        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3513        0,     0,    38,     0,    39,    40,    41,    42,    43,    44,
3514       45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
3515       55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
3516        0,   297,   298,   299,   300,   301,   302,   303,     0,     0,
3517        0,     0,     0,     0,     0,     0,     0,     0,   304,   305,
3518      306,     0,     0,     0,     0,     0,   803,   804,   805,     0,
3519        0,     0,     0,    87,   806,     0,     0,     0,     0,     0,
3520        0,     0,     0,     0,     0,     0,    33,   297,   298,   299,
3521      300,   301,   302,   303,     0,     0,     0,     0,     0,     0,
3522        0,     0,     0,     0,   304,   305,   306,    16,     0,     0,
3523        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3524        0,     0,    38,     0,     0,     0,     0,     0,     0,     0,
3525        0,     0,    33,     0,     0,     0,     0,     0,     0,   309,
3526      310,   311,   312,   313,   314,   315,   316,   317,   318,   319,
3527        0,     0,   297,   298,   299,   300,   301,   302,   303,     0,
3528        0,     0,     0,     0,     0,     0,     0,     0,    38,   304,
3529      305,   306,     0,     0,     0,     0,     0,     0,     0,     0,
3530        0,     0,     0,    87,     0,   309,   310,   311,   312,   313,
3531      314,   315,   316,   317,   318,   319,     0,    33,   307,     0,
3532      308,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3533        0,     0,     0,     0,     0,     0,     0,     0,   517,     0,
3534        0,     0,   518,     0,     0,     0,     0,     0,     0,    87,
3535        0,     0,     0,    38,     0,     0,     0,     0,     0,     0,
3536        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3537      309,   310,   311,   312,   313,   314,   315,   316,   317,   318,
3538      319,   297,   298,   299,   300,   301,   302,   303,     0,     0,
3539        0,     0,     0,     0,     0,     0,     0,     0,   304,   305,
3540      306,    16,     0,     0,     0,     0,     0,     0,     0,     0,
3541        0,     0,     0,     0,    87,     0,     0,     0,     0,     0,
3542        0,     0,     0,     0,     0,     0,    33,   297,   298,   299,
3543      300,   301,   302,   303,     0,     0,     0,     0,     0,     0,
3544        0,     0,     0,     0,   304,   305,   306,    16,     0,     0,
3545        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3546        0,     0,    38,     0,     0,     0,     0,     0,     0,     0,
3547        0,     0,    33,     0,     0,     0,     0,     0,     0,   309,
3548      310,   311,   312,   313,   314,   315,   316,   317,   318,   319,
3549        0,     0,   297,   298,   299,   300,   301,   302,   303,     0,
3550        0,     0,     0,     0,     0,     0,     0,     0,    38,   304,
3551      305,   306,     0,     0,     0,     0,   518,     0,     0,     0,
3552        0,     0,     0,    87,     0,   309,   310,   311,   312,   313,
3553      314,   315,   316,   317,   318,   319,     0,    33,   307,   297,
3554      298,   299,   300,   301,   302,   303,     0,     0,     0,     0,
3555        0,     0,     0,     0,     0,     0,   304,   305,   306,     0,
3556        0,   297,   298,   299,   300,   301,   302,   303,     0,    87,
3557        0,     0,     0,    38,     0,     0,     0,     0,   304,   305,
3558      306,     0,     0,     0,    33,     0,     0,     0,     0,     0,
3559      309,   310,   311,   312,   313,   314,   315,   316,   317,   318,
3560      319,   380,     0,     0,     0,     0,    33,     0,     0,   297,
3561      298,   299,   300,   301,   302,   303,     0,     0,     0,     0,
3562       38,     0,     0,     0,     0,     0,   304,   305,   306,     0,
3563        0,     0,     0,     0,    87,     0,     0,   309,   310,   311,
3564      312,   313,   314,   315,   316,   317,   318,   319,    31,     0,
3565        0,     0,     0,     0,    33,     0,     0,     0,     0,   309,
3566      310,   311,   312,   313,   314,   315,   316,   317,   318,   319,
3567        0,     0,     0,   297,   298,   299,   300,   301,   302,   303,
3568        0,    87,     0,     0,     0,     0,     0,     0,     0,     0,
3569      304,   305,   306,     0,     0,     0,     0,     0,     0,     0,
3570        0,     0,     0,    87,     0,     0,     0,   309,   310,   311,
3571      312,   313,   314,   315,   316,   317,   318,   319,    33,   297,
3572      298,   299,   300,   301,   302,   303,     0,     0,     0,     0,
3573        0,     0,     0,     0,     0,     0,   304,   305,   306,    16,
3574        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3575        0,    87,     0,     0,     0,     0,     0,     0,     0,     0,
3576        0,     0,     0,     0,    33,     0,     0,     0,     0,     0,
3577        0,   309,   310,   311,   312,   313,   314,   315,   316,   317,
3578      318,   319,     0,     0,   297,   298,   299,   300,   301,   302,
3579      303,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3580       38,   304,   305,   306,    16,     0,     0,     0,     0,     0,
3581        0,     0,     0,     0,     0,    87,     0,   309,   310,   311,
3582      312,   313,   314,   315,   316,   317,   318,   319,     0,    33,
3583        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3584        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3585      507,  1142,     0,     0,  1143,   297,   298,   299,   300,   301,
3586      302,   303,     0,     0,     0,    38,     0,     0,     0,     0,
3587        0,     0,   304,   305,   306,    16,     0,     0,     0,     0,
3588        0,     0,   309,   310,   311,   312,   313,   314,   315,   316,
3589      317,   318,   319,   297,   298,   299,   300,   301,   302,   303,
3590       33,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3591      304,   305,   306,    16,     0,   507,     0,     0,     0,   508,
3592        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3593        0,     0,     0,     0,     0,     0,    38,     0,    33,     0,
3594        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3595        0,     0,     0,   309,   310,   311,   312,   313,   314,   315,
3596      316,   317,   318,   319,     0,     0,     0,     0,     0,     0,
3597        0,     0,     0,     0,    38,     0,     0,     0,     0,     0,
3598        0,     0,     0,     0,     0,     0,     0,  1142,     0,     0,
3599     1143,   309,   310,   311,   312,   313,   314,   315,   316,   317,
3600      318,   319,    21,    22,    23,    24,    25,    26,    27,    28,
3601       29,   498,   277,     0,     0,     0,     0,     0,     0,     0,
3602        0,   499,     0,     0,     0,     0,     0,     0,   508,     0,
3603       21,    22,    23,    24,    25,    26,    27,    28,    29,   498,
3604      277,     0,     0,     0,     0,     0,     0,     0,   417,   499,
3605        0,     0,     0,     0,     0,     0,     0,    39,    40,    41,
3606       42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
3607       52,    53,     0,     0,     0,     0,   417,     0,     0,     0,
3608        0,     0,     0,     0,     0,    39,    40,    41,    42,    43,
3609       44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
3610        0,     0,     0,     0,     0,  -273,     0,     0,     0,     0,
3611        0,     0,     0,     0,     0,     0,     0,   418,   419,   270,
3612      271,   272,   273,   274,   275,   276,     0,     0,     0,     0,
3613        0,     0,     0,     0,     0,     0,   167,   168,   169,     0,
3614       17,    18,    19,    20,     0,   418,   419,    21,    22,    23,
3615       24,    25,    26,    27,    28,    29,     0,   277,    31,   354,
3616        0,     0,     0,     0,    33,    34,     0,     0,   355,     0,
3617        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3618        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3619        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3620       38,     0,    39,    40,    41,    42,    43,    44,    45,    46,
3621       47,    48,    49,    50,    51,    52,    53,   228,   229,   230,
3622      231,   232,   233,   234,   235,   236,   237,   238,   270,   271,
3623      272,   273,   274,   275,   276,     0,     0,     0,     0,     0,
3624        0,     0,     0,     0,     0,   167,   168,   169,     0,    17,
3625       18,    19,    20,     0,     0,     0,    21,    22,    23,    24,
3626       25,    26,    27,    28,    29,     0,   277,    31,     0,     0,
3627        0,     0,     0,    33,    34,    35,     0,     0,     0,     0,
3628        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3629        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3630        0,     0,     0,     0,     0,     0,     0,     0,     0,    38,
3631        0,    39,    40,    41,    42,    43,    44,    45,    46,    47,
3632       48,    49,    50,    51,    52,    53,   228,   229,   230,   231,
3633      232,   233,   234,   235,   236,   237,   238,   270,   271,   272,
3634      273,   274,   275,   276,     0,     0,     0,     0,     0,     0,
3635        0,     0,     0,     0,   167,   168,   169,     0,    17,    18,
3636       19,    20,     0,     0,     0,    21,    22,    23,    24,    25,
3637       26,    27,    28,    29,     0,   277,    31,     0,     0,     0,
3638        0,     0,    33,    34,     0,     0,     0,     0,     0,     0,
3639        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3640        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3641        0,     0,     0,     0,     0,     0,     0,     0,    38,     0,
3642       39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
3643       49,    50,    51,    52,    53,   228,   229,   230,   231,   232,
3644      233,   234,   235,   236,   237,   238,   270,   271,   272,   273,
3645      274,   275,   276,     0,     0,     0,     0,     0,     0,     0,
3646        0,     0,     0,   167,   168,   169,     0,    17,    18,    19,
3647       20,     0,     0,     0,    21,    22,    23,    24,    25,    26,
3648       27,    28,    29,     0,   277,     0,     0,     0,     0,     0,
3649        0,    33,    34,     0,     0,     0,     0,     0,     0,     0,
3650        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3651        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3652        0,     0,     0,     0,     0,     0,     0,    38,     0,    39,
3653       40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
3654       50,    51,    52,    53,   228,   229,   230,   231,   232,   233,
3655      234,   235,   236,   237,   238,   270,   271,   272,   273,   274,
3656      275,   276,     0,     0,     0,     0,     0,     0,     0,     0,
3657        0,     0,   167,   168,   169,     0,   739,     0,   740,    20,
3658        0,     0,     0,    21,    22,    23,    24,    25,    26,    27,
3659       28,    29,     0,   277,     0,     0,     0,     0,     0,     0,
3660       33,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3661        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3662        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3663        0,     0,     0,     0,     0,     0,    38,     0,    39,    40,
3664       41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
3665       51,    52,    53,   228,   229,   230,   231,   232,   233,   234,
3666      235,   236,   237,   238,   270,   271,   272,   273,   274,   275,
3667      276,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3668        0,   167,   168,   169,     0,     0,     0,     0,     0,     0,
3669        0,     0,    21,    22,    23,    24,    25,    26,    27,    28,
3670       29,     0,   277,     0,     0,     0,     0,     0,     0,    33,
3671       34,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3672        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3673        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3674        0,     0,     0,     0,     0,    38,     0,    39,    40,    41,
3675       42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
3676       52,    53,   228,   229,   230,   231,   232,   233,   234,   235,
3677      236,   237,   238,   297,   298,   299,   300,   301,   302,   303,
3678        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3679      304,   305,   306,    16,   297,   298,   299,   300,   301,   302,
3680      303,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3681        0,   304,   305,   306,     0,     0,     0,     0,    33,   297,
3682      298,   299,   300,   301,   302,   303,     0,     0,     0,     0,
3683        0,     0,     0,     0,   380,     0,   304,   305,   306,    33,
3684        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3685        0,     0,     0,     0,    38,     0,     0,     0,     0,     0,
3686        0,     0,     0,     0,    33,     0,     0,     0,     0,     0,
3687        0,   309,   310,   311,   312,   313,   314,   315,   316,   317,
3688      318,   319,     0,     0,     0,     0,     0,     0,     0,     0,
3689        0,     0,   309,   310,   311,   312,   313,   314,   315,   316,
3690      317,   318,   319,     0,     0,     0,     0,     0,     0,     0,
3691        0,     0,     0,     0,     0,     0,     0,   309,   310,   311,
3692      312,   313,   314,   315,   316,   317,   318,   319
3693 };
3694
3695 /* YYCONFLP[YYPACT[STATE-NUM]] -- Pointer into YYCONFL of start of
3696    list of conflicting reductions corresponding to action entry for
3697    state STATE-NUM in yytable.  0 means no conflicts.  The list in
3698    yyconfl is terminated by a rule number of 0.  */
3699 static const unsigned char yyconflp[] =
3700 {
3701        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3702        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3703        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3704        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3705        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3706        0,     0,     0,     0,     0,     0,     0,     1,     0,     0,
3707        0,     0,     0,     0,     0,     0,     0,     3,     0,     0,
3708        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3709        0,     0,     0,     0,     0,     0,     0,     5,     0,     0,
3710        0,     0,     0,     0,     0,     0,     0,     0,   247,     0,
3711        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3712      249,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3713        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3714        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3715        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3716        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3717        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3718        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3719        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3720        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3721        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3722        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3723        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3724        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3725        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3726        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3727        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3728        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3729        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3730        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3731        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3732        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3733        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3734        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3735        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3736        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3737        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3738        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3739        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3740        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3741        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3742        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3743        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3744        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3745        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3746        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3747        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3748        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3749        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3750        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3751        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3752        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3753        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3754        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3755        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3756        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3757        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3758        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3759        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3760        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3761        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3762        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3763        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3764        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3765        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3766        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3767        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3768        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3769        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3770        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3771        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3772        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3773        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3774        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3775        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3776        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3777        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3778        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3779        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3780        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3781        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3782        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3783        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3784        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3785        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3786        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3787        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3788        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3789        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3790        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3791        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3792        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3793        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3794        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3795        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3796        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3797        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3798        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3799        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3800        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3801        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3802        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3803        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3804        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3805        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3806        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3807        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3808        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3809        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3810        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3811        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3812        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3813        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3814        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3815        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3816        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3817        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3818        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3819        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3820        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3821        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3822        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3823        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3824        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3825        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3826        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3827        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3828        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3829        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3830        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3831        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3832        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3833        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3834        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3835        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3836        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3837        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3838        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3839        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3840        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3841        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3842        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3843        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3844        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3845        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3846        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3847        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3848        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3849        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3850        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3851        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3852        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3853        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3854        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3855        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3856        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3857        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3858        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3859        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3860        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3861        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3862        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3863        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3864        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3865        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3866        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3867        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3868        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3869        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3870        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3871        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3872        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3873        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3874        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3875        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3876        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3877        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3878        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3879        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3880        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3881        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3882        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3883        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3884        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3885        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3886        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3887        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3888        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3889        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3890        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3891        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3892        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3893        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3894        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3895        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3896        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3897        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3898        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3899        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3900        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3901        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3902        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3903        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3904        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3905        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3906        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3907        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3908        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3909        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3910        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3911        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3912        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3913        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3914        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3915        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3916        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3917        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3918        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3919        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3920        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3921        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3922        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3923        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3924        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3925        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3926        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3927        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3928        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3929        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3930        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3931        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3932        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3933        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3934        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3935        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3936        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3937        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3938        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3939        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3940        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3941        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3942        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3943        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3944        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3945        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3946        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3947        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3948        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3949        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3950        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3951        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3952        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3953        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3954        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3955        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3956        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3957        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3958        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3959        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3960        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3961        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3962        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3963        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3964        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3965        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3966        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3967        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3968        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3969        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3970        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3971        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3972        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3973        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3974        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3975        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3976        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3977        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3978        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3979        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3980        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3981        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3982        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3983        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3984        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3985        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3986        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3987        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3988        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3989        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3990        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3991        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3992        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3993        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3994        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3995        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3996        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3997        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3998        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3999        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4000        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4001        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4002        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4003        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4004        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4005        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4006        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4007        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4008        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4009        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4010        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4011        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4012        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4013        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4014        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4015        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4016        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4017        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4018        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4019        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4020        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4021        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4022        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4023        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4024        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4025        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4026        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4027        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4028        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4029        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4030        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4031        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4032        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4033        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4034        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4035        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4036        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4037        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4038        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4039        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4040        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4041        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4042        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4043        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4044        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4045        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4046        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4047        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4048        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4049        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4050        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4051        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4052        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4053        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4054        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4055        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4056        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4057        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4058        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4059        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4060        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4061        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4062        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4063        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4064        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4065        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4066        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4067        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4068        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4069        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4070        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4071        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4072        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4073        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4074        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4075        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4076        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4077        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4078        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4079        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4080        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4081        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4082        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4083        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4084        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4085        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4086        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4087        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4088        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4089        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4090        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4091        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4092        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4093        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4094        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4095        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4096        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4097        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4098        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4099        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4100        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4101        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4102        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4103        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4104        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4105        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4106        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4107        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4108        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4109        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4110        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4111        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4112        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4113        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4114        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4115        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4116        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4117        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4118        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4119        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4120        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4121        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4122        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4123        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4124        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4125        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4126        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4127        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4128        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4129        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4130        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4131        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4132        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4133        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4134        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4135        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4136        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4137        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4138        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4139        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4140        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4141        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4142        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4143        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4144        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4145        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4146        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4147        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4148        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4149        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4150        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4151        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4152        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4153        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4154        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4155        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4156        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4157        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4158        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4159        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4160        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4161        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4162        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4163        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4164        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4165        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4166        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4167        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4168        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4169        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4170        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4171        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4172        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4173        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4174        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4175        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4176        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4177        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4178        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4179        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4180        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4181        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4182        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4183        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4184        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4185        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4186        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4187        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4188        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4189        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4190        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4191        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4192        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4193        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4194        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4195        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4196        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4197        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4198        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4199        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4200        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4201        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4202        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4203        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4204        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4205        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4206        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4207        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4208        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4209        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4210        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4211        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4212        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4213        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4214        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4215        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4216        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4217        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4218        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4219        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4220        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4221        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4222        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4223        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4224        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4225        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4226        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4227        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4228        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4229        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4230        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4231        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4232        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4233        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4234        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4235        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4236        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4237        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4238        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4239        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4240        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4241        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4242        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4243        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4244        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4245        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4246        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4247        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4248        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4249        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4250        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4251        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4252        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4253        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4254        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4255        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4256        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4257        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4258        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4259        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4260        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4261        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4262        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4263        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4264        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4265        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4266        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4267        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4268        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4269        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4270        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4271        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4272        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4273        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4274        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4275        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4276        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4277        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4278        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4279        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4280        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4281        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4282        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4283        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4284        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4285        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4286        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4287        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4288        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4289        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4290        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4291        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4292        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4293        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4294        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4295        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4296        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4297        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4298        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4299        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4300        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4301        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4302        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4303        0,     0,     0,     0,     0,     7,     9,    11,    13,    15,
4304       17,    19,    21,    23,    25,    27,    29,    31,    33,    35,
4305       37,    39,    41,    43,    45,    47,    49,    51,    53,    55,
4306       57,    59,    61,    63,     0,     0,    65,    67,    69,    71,
4307       73,    75,     0,    77,    79,    81,    83,     0,     0,    85,
4308       87,    89,    91,    93,    95,    97,    99,   101,   103,   105,
4309      107,   109,   111,   113,   115,   117,   119,   121,   123,   125,
4310      127,   129,   131,   133,   135,   137,   139,   141,   143,   145,
4311      147,   149,   151,   153,   155,     0,   157,     0,   159,   161,
4312      163,   165,   167,   169,   171,   173,   175,   177,   179,   181,
4313      183,   185,   187,   189,   191,   193,   195,   197,   199,   201,
4314      203,   205,   207,   209,     0,     0,     0,     0,     0,     0,
4315        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4316        0,     0,     0,     0,     0,     0,     0,   211,     0,     0,
4317      213,   215,   217,     0,   219,   221,     0,   223,   225,   227,
4318      229,   231,   233,   235,   237,   239,   241,   243,   245,     0,
4319        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4320        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4321        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4322        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4323        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4324        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4325        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4326        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4327        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4328        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4329        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4330        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4331        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4332        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4333        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4334        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4335        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4336        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4337        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4338        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4339        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4340        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4341        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4342        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4343        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4344        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4345        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4346        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4347        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4348        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4349        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4350        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4351        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4352        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4353        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4354        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4355        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4356        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4357        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4358        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4359        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4360        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4361        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4362        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4363        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4364        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4365        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4366        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4367        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4368        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4369        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4370        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4371        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4372        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4373        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4374        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4375        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4376        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4377        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4378        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4379        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4380        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4381        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4382        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4383        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4384        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4385        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4386        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4387        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4388        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4389        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4390        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4391        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4392        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4393        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4394        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4395        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4396        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4397        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4398        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4399        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4400        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4401        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4402        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4403        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4404        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4405        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4406        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4407        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4408        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4409        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4410        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4411        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4412        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4413        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4414        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4415        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4416        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4417        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4418        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4419        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4420        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4421        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4422        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4423        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4424        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4425        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4426        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4427        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4428        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4429        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4430        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4431        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4432        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4433        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4434        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4435        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4436        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4437        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4438        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4439        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4440        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4441        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4442        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4443        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4444        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4445        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4446        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4447        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4448        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4449        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4450        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4451        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4452        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4453        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4454        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4455        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4456        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4457        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4458        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4459        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4460        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4461        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4462        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4463        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4464        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4465        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4466        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4467        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4468        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4469        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4470        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4471        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4472        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4473        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4474        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4475        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4476        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4477        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4478        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4479        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4480        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4481        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4482        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4483        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4484        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4485        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4486        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4487        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4488        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4489        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4490        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4491        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4492        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4493        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4494        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4495        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4496        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4497        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4498        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4499        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4500        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4501        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4502        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4503        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4504        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4505        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4506        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4507        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4508        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4509        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4510        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4511        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4512        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4513        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4514        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4515        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4516        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4517        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4518        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4519        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4520        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4521        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4522        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4523        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4524        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4525        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4526        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4527        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4528        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4529        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4530        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4531        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4532        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4533        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4534        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4535        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4536        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4537        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4538        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4539        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4540        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4541        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4542        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4543        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4544        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4545        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4546        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4547        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4548        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4549        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4550        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4551        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4552        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4553        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4554        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4555        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4556        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4557        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4558        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4559        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4560        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4561        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4562        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4563        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4564        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4565        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4566        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4567        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4568        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4569        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4570        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4571        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4572        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4573        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4574        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4575        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4576        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4577        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4578        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4579        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4580        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4581        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4582        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4583        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4584        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4585        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4586        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4587        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4588        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4589        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4590        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4591        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4592        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4593        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4594        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4595        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4596        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4597        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4598        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4599        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4600        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4601        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4602        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4603        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4604        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4605        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4606        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4607        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4608        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4609        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4610        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4611        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4612        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4613        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4614        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4615        0,     0,     0,     0,     0,     0,     0,     0
4616 };
4617
4618 /* YYCONFL[I] -- lists of conflicting rule numbers, each terminated by
4619    0, pointed into by YYCONFLP.  */
4620 static const short int yyconfl[] =
4621 {
4622        0,   406,     0,   406,     0,   406,     0,   654,     0,   654,
4623        0,   654,     0,   654,     0,   654,     0,   654,     0,   654,
4624        0,   654,     0,   654,     0,   654,     0,   654,     0,   654,
4625        0,   654,     0,   654,     0,   654,     0,   654,     0,   654,
4626        0,   654,     0,   654,     0,   654,     0,   654,     0,   654,
4627        0,   654,     0,   654,     0,   654,     0,   654,     0,   654,
4628        0,   654,     0,   654,     0,   654,     0,   654,     0,   654,
4629        0,   654,     0,   654,     0,   654,     0,   654,     0,   654,
4630        0,   654,     0,   654,     0,   654,     0,   654,     0,   654,
4631        0,   654,     0,   654,     0,   654,     0,   654,     0,   654,
4632        0,   654,     0,   654,     0,   654,     0,   654,     0,   654,
4633        0,   654,     0,   654,     0,   654,     0,   654,     0,   654,
4634        0,   654,     0,   654,     0,   654,     0,   654,     0,   654,
4635        0,   654,     0,   654,     0,   654,     0,   654,     0,   654,
4636        0,   654,     0,   654,     0,   654,     0,   654,     0,   654,
4637        0,   654,     0,   654,     0,   654,     0,   654,     0,   654,
4638        0,   654,     0,   654,     0,   654,     0,   654,     0,   654,
4639        0,   654,     0,   654,     0,   654,     0,   654,     0,   654,
4640        0,   654,     0,   654,     0,   654,     0,   654,     0,   654,
4641        0,   654,     0,   654,     0,   654,     0,   654,     0,   654,
4642        0,   654,     0,   654,     0,   654,     0,   654,     0,   654,
4643        0,   654,     0,   654,     0,   654,     0,   654,     0,   654,
4644        0,   654,     0,   654,     0,   654,     0,   654,     0,   654,
4645        0,   654,     0,   654,     0,   654,     0,   654,     0,   654,
4646        0,   654,     0,   654,     0,   654,     0,   406,     0,   406,
4647        0
4648 };
4649
4650 static const short int yycheck[] =
4651 {
4652        5,   137,   123,     5,    35,   431,   123,   131,    35,   268,
4653      131,   110,   131,   323,   416,    36,     5,   124,   439,     5,
4654      704,   603,   705,     5,   714,   457,     5,   323,   554,   430,
4655        5,     5,    37,   113,   114,   115,   287,   520,   696,   752,
4656      449,    32,   972,   845,   448,   867,    35,   746,   545,   351,
4657        5,    37,   554,   752,   977,   323,    35,     3,   239,     3,
4658       10,    11,     3,   134,   245,    10,    11,     3,    32,   140,
4659      946,   918,   705,    23,   552,    10,    11,    84,    63,  1106,
4660       23,    84,    37,    32,    10,    11,   267,     3,    84,   140,
4661       63,   123,   725,    23,   929,    28,    29,    30,     3,     5,
4662      131,    23,    25,   124,   131,   134,    23,    18,     0,  1136,
4663        3,   140,    84,    23,   295,     0,    23,   413,   123,   124,
4664        3,   126,   134,   705,   110,   529,    49,    77,   140,    35,
4665      140,   110,    23,    83,   538,   142,   110,   939,   621,   142,
4666      830,    12,   131,    54,    55,   131,   142,   625,    31,   142,
4667      997,    77,   131,    32,   612,   613,   614,    83,   149,   469,
4668      140,    44,   286,   148,    47,   416,  1042,   693,   123,   124,
4669      142,   126,    43,   469,   595,   148,     3,     4,     5,     6,
4670        7,     8,     9,    66,   897,   149,  1109,   368,   134,   135,
4671      134,   693,   138,   134,   137,   140,   146,   147,   897,   135,
4672      149,   469,   138,   136,   110,   140,    32,  1029,  1138,    45,
4673      140,   895,  1047,   622,   623,   712,   138,    77,   134,   135,
4674      146,   147,   138,   140,   134,   938,   709,   134,   524,   134,
4675      135,   632,   729,   138,   867,   537,    84,   539,    12,   938,
4676      364,   134,   135,   364,    63,   138,    84,   138,   135,   140,
4677       84,   283,   376,    25,   137,   286,   134,   134,   554,   286,
4678      944,   139,   975,    84,   269,   978,    10,    11,   140,    43,
4679      149,    43,   730,   957,   732,   140,   975,    49,   283,   978,
4680       84,  1103,   134,   140,   134,   406,   146,   147,   140,   406,
4681      140,   323,  1094,   135,   142,   137,   929,   286,   134,   135,
4682      134,    84,   307,   308,   142,    84,   140,   286,   135,    24,
4683       25,   447,   563,   449,   269,    84,  1144,   134,   323,   324,
4684      139,   142,   139,   149,   135,   140,   134,   138,   283,   148,
4685      134,    84,   140,   364,    84,  1163,   140,  1165,   324,    83,
4686      134,   135,  1000,  1033,   138,   350,  1059,  1175,   353,   140,
4687      355,   134,   307,   308,   140,   134,  1039,   140,   140,   142,
4688     1059,   140,   140,   142,   350,   134,  1050,   618,   323,   324,
4689      140,   140,    84,   142,   406,    84,   362,  1148,   364,   140,
4690      134,   134,   143,   362,   134,   364,   140,   140,   362,   142,
4691      140,  1162,   142,  1164,   140,   350,  1029,   693,   353,   523,
4692      355,   406,   523,   134,   511,  1176,  1039,   134,   413,   140,
4693       28,    29,    30,   140,  1047,     3,     4,     5,     6,     7,
4694        8,     9,   134,  1106,   140,   134,   134,   413,   140,   140,
4695      142,   140,   140,   142,   134,  1093,   457,   469,   134,   140,
4696      140,   432,   433,   448,   140,   450,   140,   438,   439,   440,
4697      882,   406,   457,  1136,   140,   460,   362,  1039,   413,   135,
4698       48,   137,   448,   134,   469,    31,   140,    33,   459,   140,
4699     1103,   136,    32,  1106,   139,   134,   134,   468,    44,   511,
4700      429,    47,   140,   432,   433,   140,   622,   623,   143,   438,
4701      439,   440,   523,   448,   140,   450,    84,     4,   140,   102,
4702     1158,  1159,   457,  1136,   930,   460,   511,   512,   135,   530,
4703      459,   138,   146,   147,   469,   140,   697,   522,   135,   524,
4704      525,    84,   554,    12,   529,   530,   512,    13,    14,    15,
4705       31,    32,   137,   538,   134,   540,   527,   523,   524,   560,
4706      134,   136,   135,   529,   523,   142,    83,   138,    23,   554,
4707      140,   135,   538,   432,   433,   560,   511,   512,   549,   438,
4708      439,   440,   134,  1089,   139,   139,   139,   522,   139,   524,
4709      525,   139,   139,   975,   529,   139,   683,   139,   527,   135,
4710      459,   139,   139,   538,   139,   540,   139,   139,   139,   149,
4711      139,   141,    99,   141,   134,   854,  1122,   104,   134,   554,
4712      605,   143,   141,   135,   595,   560,   432,   433,   141,  1030,
4713      144,   747,   438,   439,   440,   122,   605,   136,   144,    43,
4714      127,   745,   134,   134,   134,   132,     3,   143,   143,   765,
4715      144,   139,   607,   459,   141,   142,   141,   141,   141,  1065,
4716      139,   139,   138,   137,   134,    83,   595,   139,   527,   134,
4717      605,   683,     3,     4,     5,     6,     7,     8,     9,   141,
4718      134,   693,   143,    25,   669,   144,   139,   134,   134,   139,
4719      675,   136,   144,   144,   138,   278,   139,   280,   683,     3,
4720        4,     5,     6,     7,     8,     9,   945,   141,   693,    36,
4721      139,  1112,   287,   141,   134,   141,   141,    48,   141,   605,
4722      141,   527,   141,   134,   141,   141,   141,   141,   141,   139,
4723      139,  1021,  1116,   141,   669,    83,   595,  1143,   144,   144,
4724      675,   137,   141,   134,   139,  1021,    13,    13,   683,   134,
4725       46,   141,   144,   141,   739,   740,   741,    37,   693,   141,
4726     1161,   141,  1146,   141,  1148,   141,  1172,   141,   141,   135,
4727        5,   918,   918,   926,  1026,   918,   705,   806,  1179,   918,
4728     1164,   815,   918,  1072,   617,   765,   918,   618,   877,   595,
4729      365,     5,   279,   918,   281,   282,   725,   284,  1088,   997,
4730      531,   821,  1035,  1096,   739,   740,   741,   918,   348,   502,
4731      863,   351,  1088,  1089,   501,  1169,   859,   400,   688,   402,
4732      605,   425,   425,   918,   729,   754,   755,   756,   959,   874,
4733      559,   941,   820,    -1,   321,    -1,   821,    -1,    -1,    -1,
4734       -1,   416,    -1,   426,    -1,   125,  1122,   127,   128,    24,
4735       25,    26,   823,    -1,    -1,    -1,    31,    32,    33,    34,
4736       35,    36,    37,    38,    39,    -1,    41,    -1,    -1,   452,
4737      453,    -1,   359,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4738       -1,   882,    -1,    -1,    -1,    -1,   821,    -1,   375,   429,
4739       -1,    -1,   432,   433,   823,    -1,    -1,   882,   438,   439,
4740      440,    -1,    -1,    -1,    -1,    -1,    -1,   447,    -1,   449,
4741       -1,    -1,    -1,    -1,   401,    -1,   403,    -1,  1022,   459,
4742      407,  1022,    -1,  1022,    -1,  1022,    -1,   502,    -1,  1045,
4743      417,   418,   419,   918,  1013,   920,   918,    -1,   867,   924,
4744       -1,   926,    -1,    -1,   873,   874,   875,   882,    -1,   918,
4745       -1,    -1,   918,    -1,    -1,  1015,   918,    -1,   445,   918,
4746       -1,   544,    -1,   918,   823,    -1,    -1,    -1,     5,    -1,
4747       -1,  1075,    -1,    -1,  1075,    -1,    -1,    -1,  1075,  1083,
4748       -1,  1142,  1083,   918,    -1,   920,  1083,   527,   563,   924,
4749     1151,   926,    -1,  1072,    -1,    -1,    -1,   537,    35,   539,
4750      929,    -1,    -1,    -1,   284,   285,    -1,    -1,    -1,  1021,
4751       -1,  1022,   997,  1073,   999,  1022,   503,   823,    -1,  1123,
4752       -1,    -1,  1123,   510,    -1,    -1,  1123,    -1,  1013,   569,
4753      959,  1013,   918,   999,   521,    -1,  1021,  1022,   997,    -1,
4754       -1,  1026,   997,   618,    -1,   325,   326,  1013,    -1,    -1,
4755       -1,  1013,    -1,  1022,  1013,   595,  1022,    -1,  1013,  1030,
4756      946,   548,   997,  1022,   999,    -1,   553,    -1,    -1,    -1,
4757      350,    -1,  1083,   110,   124,    -1,  1088,    -1,  1013,    -1,
4758       -1,   118,   622,   623,    -1,    -1,  1021,  1022,  1089,    -1,
4759     1075,  1026,    -1,    -1,    -1,    -1,  1081,    -1,  1083,  1081,
4760     1029,  1030,    -1,  1088,  1089,   385,   386,   387,    -1,    -1,
4761     1039,   997,  1123,  1072,    -1,  1081,  1075,  1083,  1047,  1081,
4762       -1,  1122,  1081,    -1,  1083,    -1,  1081,  1013,    -1,    -1,
4763       -1,  1116,    -1,    -1,    -1,     5,    -1,  1122,  1123,   626,
4764     1075,  1112,    -1,    -1,     5,    -1,  1081,    -1,  1083,   131,
4765     1116,    -1,    -1,  1088,  1089,    -1,    -1,  1123,    -1,    -1,
4766     1119,  1146,    -1,  1148,  1123,   705,    -1,    37,   448,    -1,
4767      710,  1030,    -1,    -1,  1103,    -1,    37,  1106,    -1,  1164,
4768     1146,  1116,  1148,  1112,    -1,   725,  1072,  1122,  1123,  1160,
4769     1161,    -1,    -1,   680,    -1,  1081,    -1,  1168,  1164,    -1,
4770       -1,    -1,    -1,    -1,    -1,   692,    -1,  1136,  1179,    -1,
4771       -1,  1146,    -1,  1148,   754,   755,   756,    -1,    -1,    -1,
4772       -1,    -1,    -1,    -1,  1030,   123,    -1,    -1,   126,  1164,
4773       -1,  1160,  1161,   513,   514,   810,    -1,    -1,    -1,  1168,
4774       -1,    -1,    -1,    -1,    -1,    -1,    -1,   822,    -1,   529,
4775     1179,    -1,    -1,  1112,    -1,    -1,   126,    -1,   538,    -1,
4776       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4777       -1,    -1,    -1,    -1,    -1,    -1,    -1,   327,    -1,    -1,
4778       -1,   331,   332,   823,   334,   335,   336,   337,   338,   339,
4779      340,   341,   342,   343,   344,   345,   346,   347,    -1,    -1,
4780      350,  1160,  1161,   886,   286,    -1,  1112,    -1,    -1,  1168,
4781       -1,    -1,    -1,    -1,   801,    -1,    -1,    -1,    -1,    -1,
4782     1179,    -1,    -1,    -1,    -1,   362,   813,   867,    -1,    -1,
4783       -1,    -1,    -1,   873,   874,   875,    -1,   824,    -1,    -1,
4784       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4785       -1,   631,    -1,    -1,  1160,  1161,    -1,    -1,    -1,    -1,
4786       -1,    -1,  1168,    -1,    -1,    -1,   348,    -1,    -1,   351,
4787       -1,    -1,    -1,  1179,    -1,    -1,    -1,    -1,    -1,    -1,
4788       -1,    -1,   364,    -1,    -1,   283,    -1,    -1,   971,   929,
4789       -1,    -1,    -1,    -1,   376,    -1,    -1,   884,   448,   269,
4790       -1,   681,   682,    -1,    -1,    -1,    -1,    -1,   269,    -1,
4791       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   959,
4792       -1,    -1,   702,    -1,    -1,   323,   324,    -1,   478,   479,
4793      480,   468,    -1,   483,    -1,   922,   976,   307,   308,    -1,
4794       -1,    -1,    -1,    -1,    -1,    -1,   307,   308,  1023,    -1,
4795     1025,    -1,  1027,   940,   324,    -1,    -1,    -1,    -1,    -1,
4796       -1,   511,    -1,   743,   744,   447,   516,   449,    31,    32,
4797       33,    34,    35,    36,    37,    38,    39,    40,    41,   529,
4798       -1,    -1,    -1,   353,    -1,   355,    -1,    50,   538,  1029,
4799     1030,    -1,   353,    -1,   355,    -1,    -1,    -1,    -1,  1039,
4800       -1,  1076,    -1,    -1,    -1,    -1,    -1,  1047,   406,    -1,
4801       -1,    -1,  1052,    -1,    -1,   413,    -1,  1100,    -1,    -1,
4802       -1,    -1,    -1,    86,    87,    88,    89,    90,    91,    92,
4803       93,    94,    95,    96,    97,    98,    99,   100,    -1,    -1,
4804       -1,   523,    -1,    -1,    -1,    -1,    -1,    -1,  1131,    -1,
4805       -1,    -1,    -1,    -1,    -1,   537,    -1,   539,    -1,   457,
4806       -1,    -1,    -1,  1103,    -1,    -1,  1106,    -1,    -1,    -1,
4807       -1,   469,  1112,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4808      450,    -1,    -1,  1070,    -1,    -1,    -1,   569,    -1,   450,
4809      460,    -1,  1132,    -1,    -1,    -1,  1136,    -1,    -1,  1086,
4810       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4811       -1,  1098,  1152,    -1,    -1,  1102,    -1,  1104,    -1,   656,
4812     1160,  1161,    -1,    -1,    -1,    -1,   524,    -1,  1168,    -1,
4813     1117,    -1,    -1,   683,  1121,    -1,    -1,    -1,  1125,  1179,
4814      622,   623,    12,   693,    -1,    -1,    -1,    -1,  1135,    -1,
4815       -1,    -1,   522,    -1,    -1,   525,   554,    -1,    -1,    -1,
4816     1147,   522,   560,    -1,   525,    -1,    -1,    -1,    -1,    -1,
4817      540,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   540,
4818       -1,    -1,    -1,    53,    54,    -1,    -1,    -1,    -1,    -1,
4819       60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
4820       70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
4821       80,    81,    82,    -1,    -1,    -1,    -1,    -1,    -1,   999,
4822       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   710,    -1,
4823       -1,    -1,    -1,   770,    -1,   605,    -1,    -1,    -1,    -1,
4824       -1,   778,    -1,    -1,    -1,   782,   783,    -1,    -1,   786,
4825      787,   788,   789,   790,   791,   792,   793,   794,   795,    -1,
4826       -1,    -1,    -1,   745,    -1,   815,    -1,   137,    -1,   139,
4827      140,    -1,   142,   143,    -1,   145,   146,   147,   148,   149,
4828      150,   151,   152,   153,   154,   155,    -1,    -1,    -1,    -1,
4829       -1,   828,    -1,    -1,    -1,   693,    -1,    -1,    -1,   669,
4830       -1,    -1,    -1,    -1,    -1,   675,    -1,    -1,   669,    -1,
4831        3,     4,     5,     6,     7,     8,     9,    -1,    -1,    -1,
4832       -1,    -1,    -1,    -1,    -1,    -1,    -1,    20,    21,    22,
4833       23,    24,    25,    26,    27,    -1,  1116,    -1,    31,    32,
4834       33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
4835       43,    -1,    -1,    -1,    -1,    48,    49,    50,    -1,    52,
4836       -1,    -1,    -1,    -1,   901,    -1,  1146,   904,  1148,   739,
4837      740,   741,    -1,    -1,    -1,    -1,    -1,    -1,   739,   740,
4838      741,   918,    -1,    -1,  1164,    -1,    -1,    -1,    -1,    -1,
4839       -1,    84,    -1,    86,    87,    88,    89,    90,    91,    92,
4840       93,    94,    95,    96,    97,    98,    99,   100,   101,   102,
4841      103,   104,   105,   106,   107,   108,   109,   110,   111,   112,
4842      113,   114,   115,   116,   117,   118,   119,   120,   121,   122,
4843      123,   124,   125,   126,   127,   128,   129,   130,   131,   132,
4844      133,   134,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4845       -1,   821,   145,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4846      821,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4847       -1,    -1,    -1,    -1,     3,     4,     5,     6,     7,     8,
4848        9,    -1,    -1,    -1,   882,    -1,    -1,    -1,    -1,    -1,
4849       -1,    20,    21,    22,   976,    -1,    -1,    -1,    -1,    -1,
4850       -1,    -1,    -1,    -1,     3,     4,     5,     6,     7,     8,
4851        9,    -1,    -1,    42,    43,    -1,    -1,    -1,    -1,    48,
4852      918,    20,    21,    22,    23,    -1,    -1,    -1,    -1,    28,
4853       29,    30,    -1,    -1,    -1,    -1,    -1,    36,    -1,    -1,
4854     1022,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   918,    48,
4855      920,    -1,    -1,    -1,   924,    -1,   926,   918,    -1,   920,
4856     1042,    -1,    -1,   924,    -1,    -1,  1116,    -1,    -1,    -1,
4857     1052,    -1,   101,   102,   103,   104,   105,   106,   107,   108,
4858      109,   110,   111,    -1,    -1,    84,    -1,    -1,    -1,    -1,
4859       -1,    -1,    -1,  1075,    -1,    -1,  1146,    -1,  1148,   997,
4860       -1,  1083,   101,   102,   103,   104,   105,   106,   107,   108,
4861      109,   110,   111,    -1,  1164,  1013,   145,    -1,    -1,    -1,
4862       -1,    -1,    -1,  1021,  1022,    -1,    -1,    -1,    -1,   999,
4863       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1119,   999,    -1,
4864       -1,  1123,    -1,    -1,    -1,    -1,   145,    -1,    -1,    -1,
4865     1132,    -1,    -1,    -1,    -1,    -1,  1026,    -1,    -1,    -1,
4866       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4867     1152,    -1,    -1,    -1,    -1,    -1,    -1,  1075,    -1,    -1,
4868       -1,    -1,    -1,  1081,    -1,  1083,    -1,    -1,    -1,    -1,
4869     1088,  1089,    -1,    -1,    -1,     3,     4,     5,     6,     7,
4870        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
4871       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
4872       28,    29,    30,    31,  1122,  1123,    34,    35,    36,    37,
4873       38,    39,    -1,    41,    42,    43,    44,    -1,    -1,    47,
4874       48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
4875       58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
4876       68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
4877       78,    79,    80,    81,    82,    83,    84,    85,    86,    87,
4878       88,    89,    90,    91,    92,    93,    94,    95,    96,    97,
4879       98,    99,   100,   101,   102,   103,   104,   105,   106,   107,
4880      108,   109,   110,   111,    -1,    -1,    -1,    -1,    -1,    -1,
4881       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4882       -1,    -1,    -1,    -1,    -1,    -1,   134,   135,    -1,   137,
4883      138,   139,   140,    -1,   142,   143,   144,   145,   146,   147,
4884      148,   149,   150,   151,   152,   153,   154,   155,   156,     3,
4885        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
4886       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
4887       24,    25,    26,    27,    28,    29,    30,    31,    -1,    -1,
4888       34,    35,    36,    37,    38,    39,    -1,    41,    42,    43,
4889       44,    -1,    -1,    47,    48,    49,    50,    51,    52,    53,
4890       54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
4891       64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
4892       74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
4893       84,    85,    86,    87,    88,    89,    90,    91,    92,    93,
4894       94,    95,    96,    97,    98,    99,   100,   101,   102,   103,
4895      104,   105,   106,   107,   108,   109,   110,   111,    -1,    -1,
4896       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4897       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4898      134,   135,   136,   137,   138,   139,   140,    -1,   142,   143,
4899       -1,   145,   146,   147,   148,   149,   150,   151,   152,   153,
4900      154,   155,   156,     3,     4,     5,     6,     7,     8,     9,
4901       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
4902       20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
4903       30,    31,    -1,    -1,    34,    35,    36,    37,    38,    39,
4904       -1,    41,    42,    43,    44,    -1,    -1,    47,    48,    49,
4905       50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
4906       60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
4907       70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
4908       80,    81,    82,    83,    84,    85,    86,    87,    88,    89,
4909       90,    91,    92,    93,    94,    95,    96,    97,    98,    99,
4910      100,   101,   102,   103,   104,   105,   106,   107,   108,   109,
4911      110,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4912       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4913       -1,    -1,    -1,    -1,   134,   135,    -1,   137,   138,   139,
4914      140,    -1,   142,   143,   144,   145,   146,   147,   148,   149,
4915      150,   151,   152,   153,   154,   155,   156,     3,     4,     5,
4916        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
4917       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
4918       26,    27,    28,    29,    30,    31,    -1,    -1,    34,    35,
4919       36,    37,    38,    39,    -1,    41,    42,    43,    44,    -1,
4920       -1,    47,    48,    49,    50,    51,    52,    53,    54,    55,
4921       56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
4922       66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
4923       76,    77,    78,    79,    80,    81,    82,    83,    84,    85,
4924       86,    87,    88,    89,    90,    91,    92,    93,    94,    95,
4925       96,    97,    98,    99,   100,   101,   102,   103,   104,   105,
4926      106,   107,   108,   109,   110,   111,    -1,    -1,    -1,    -1,
4927       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4928       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   134,   135,
4929       -1,   137,   138,   139,   140,   141,   142,   143,    -1,   145,
4930      146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
4931      156,     3,     4,     5,     6,     7,     8,     9,    10,    11,
4932       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
4933       22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
4934       -1,    -1,    34,    35,    36,    37,    38,    39,    -1,    41,
4935       42,    43,    44,    -1,    -1,    47,    48,    49,    50,    51,
4936       52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
4937       62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
4938       72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
4939       82,    83,    84,    85,    86,    87,    88,    89,    90,    91,
4940       92,    93,    94,    95,    96,    97,    98,    99,   100,   101,
4941      102,   103,   104,   105,   106,   107,   108,   109,   110,   111,
4942       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4943       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4944       -1,    -1,   134,   135,   136,   137,   138,   139,   140,    -1,
4945      142,   143,    -1,   145,   146,   147,   148,   149,   150,   151,
4946      152,   153,   154,   155,   156,     3,     4,     5,     6,     7,
4947        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
4948       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
4949       28,    29,    30,    31,    -1,    -1,    34,    35,    36,    37,
4950       38,    39,    -1,    41,    42,    43,    44,    -1,    -1,    47,
4951       48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
4952       58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
4953       68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
4954       78,    79,    80,    81,    82,    83,    84,    85,    86,    87,
4955       88,    89,    90,    91,    92,    93,    94,    95,    96,    97,
4956       98,    99,   100,   101,   102,   103,   104,   105,   106,   107,
4957      108,   109,   110,   111,    -1,    -1,    -1,    -1,    -1,    -1,
4958       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4959       -1,    -1,    -1,    -1,    -1,    -1,   134,   135,   136,   137,
4960      138,   139,   140,    -1,   142,   143,    -1,   145,   146,   147,
4961      148,   149,   150,   151,   152,   153,   154,   155,   156,     3,
4962        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
4963       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
4964       24,    25,    26,    27,    28,    29,    30,    31,    -1,    -1,
4965       34,    35,    36,    37,    38,    39,    -1,    41,    42,    43,
4966       44,    -1,    -1,    47,    48,    49,    50,    51,    52,    53,
4967       54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
4968       64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
4969       74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
4970       84,    85,    86,    87,    88,    89,    90,    91,    92,    93,
4971       94,    95,    96,    97,    98,    99,   100,   101,   102,   103,
4972      104,   105,   106,   107,   108,   109,   110,   111,    -1,    -1,
4973       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4974       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4975      134,   135,   136,   137,   138,   139,   140,    -1,   142,   143,
4976       -1,   145,   146,   147,   148,   149,   150,   151,   152,   153,
4977      154,   155,   156,     3,     4,     5,     6,     7,     8,     9,
4978       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
4979       20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
4980       30,    31,    -1,    -1,    34,    35,    36,    37,    38,    39,
4981       -1,    41,    42,    43,    44,    -1,    -1,    47,    48,    49,
4982       50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
4983       60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
4984       70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
4985       80,    81,    82,    83,    84,    85,    86,    87,    88,    89,
4986       90,    91,    92,    93,    94,    95,    96,    97,    98,    99,
4987      100,   101,   102,   103,   104,   105,   106,   107,   108,   109,
4988      110,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4989       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4990       -1,    -1,    -1,    -1,   134,   135,   136,   137,   138,   139,
4991      140,    -1,   142,   143,    -1,   145,   146,   147,   148,   149,
4992      150,   151,   152,   153,   154,   155,   156,     3,     4,     5,
4993        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
4994       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
4995       26,    27,    28,    29,    30,    31,    -1,    -1,    34,    35,
4996       36,    37,    38,    39,    -1,    41,    42,    43,    44,    -1,
4997       -1,    47,    48,    49,    50,    51,    52,    53,    54,    55,
4998       56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
4999       66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
5000       76,    77,    78,    79,    80,    81,    82,    83,    84,    85,
5001       86,    87,    88,    89,    90,    91,    92,    93,    94,    95,
5002       96,    97,    98,    99,   100,   101,   102,   103,   104,   105,
5003      106,   107,   108,   109,   110,   111,    -1,    -1,    -1,    -1,
5004       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5005       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   134,   135,
5006      136,   137,   138,   139,   140,    -1,   142,   143,    -1,   145,
5007      146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
5008      156,     3,     4,     5,     6,     7,     8,     9,    10,    11,
5009       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
5010       22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
5011       -1,    -1,    34,    35,    36,    37,    38,    39,    -1,    41,
5012       42,    43,    44,    -1,    -1,    47,    48,    49,    50,    51,
5013       52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
5014       62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
5015       72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
5016       82,    83,    84,    85,    86,    87,    88,    89,    90,    91,
5017       92,    93,    94,    95,    96,    97,    98,    99,   100,   101,
5018      102,   103,   104,   105,   106,   107,   108,   109,   110,   111,
5019       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5020       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5021       -1,    -1,   134,   135,    -1,   137,   138,   139,   140,    -1,
5022      142,   143,    -1,   145,   146,   147,   148,   149,   150,   151,
5023      152,   153,   154,   155,   156,     3,     4,     5,     6,     7,
5024        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
5025       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
5026       28,    29,    30,    31,    -1,    -1,    34,    35,    36,    37,
5027       38,    39,    -1,    41,    42,    43,    44,    -1,    -1,    47,
5028       48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
5029       58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
5030       68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
5031       78,    79,    80,    81,    82,    83,    84,    85,    86,    87,
5032       88,    89,    90,    91,    92,    93,    94,    95,    96,    97,
5033       98,    99,   100,   101,   102,   103,   104,   105,   106,   107,
5034      108,   109,   110,   111,    -1,    -1,    -1,    -1,    -1,    -1,
5035       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5036       -1,    -1,    -1,    -1,    -1,    -1,   134,   135,    -1,   137,
5037      138,   139,   140,    -1,   142,   143,    -1,   145,   146,   147,
5038      148,   149,   150,   151,   152,   153,   154,   155,   156,     3,
5039        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
5040       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
5041       24,    25,    26,    27,    28,    29,    30,    31,    -1,    -1,
5042       34,    35,    36,    37,    38,    39,    -1,    41,    42,    43,
5043       44,    -1,    -1,    47,    48,    49,    50,    51,    52,    53,
5044       54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
5045       64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
5046       74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
5047       84,    85,    86,    87,    88,    89,    90,    91,    92,    93,
5048       94,    95,    96,    97,    98,    99,   100,   101,   102,   103,
5049      104,   105,   106,   107,   108,   109,   110,   111,    -1,    -1,
5050       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5051       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5052       -1,   135,    -1,   137,   138,   139,   140,   141,   142,   143,
5053       -1,   145,   146,   147,   148,   149,   150,   151,   152,   153,
5054      154,   155,   156,     3,     4,     5,     6,     7,     8,     9,
5055       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
5056       20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
5057       30,    31,    -1,    -1,    34,    35,    36,    37,    38,    39,
5058       -1,    41,    42,    43,    44,    -1,    -1,    47,    48,    49,
5059       50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
5060       60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
5061       70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
5062       80,    81,    82,    83,    84,    85,    86,    87,    88,    89,
5063       90,    91,    92,    93,    94,    95,    96,    97,    98,    99,
5064      100,   101,   102,   103,   104,   105,   106,   107,   108,   109,
5065      110,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5066       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5067       -1,    -1,    -1,    -1,   134,   135,    -1,   137,   138,   139,
5068      140,    -1,   142,   143,    -1,   145,   146,   147,   148,   149,
5069      150,   151,   152,   153,   154,   155,   156,     3,     4,     5,
5070        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
5071       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
5072       26,    27,    28,    29,    30,    31,    -1,    -1,    34,    35,
5073       36,    37,    38,    39,    -1,    41,    42,    43,    44,    -1,
5074       -1,    47,    48,    49,    50,    51,    52,    53,    54,    55,
5075       56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
5076       66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
5077       76,    77,    78,    79,    80,    81,    82,    83,    84,    85,
5078       86,    87,    88,    89,    90,    91,    92,    93,    94,    95,
5079       96,    97,    98,    99,   100,   101,   102,   103,   104,   105,
5080      106,   107,   108,   109,   110,   111,    -1,    -1,    -1,    -1,
5081       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5082       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   134,   135,
5083       -1,   137,   138,   139,   140,    -1,   142,   143,    -1,   145,
5084      146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
5085      156,     3,     4,     5,     6,     7,     8,     9,    10,    11,
5086       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
5087       22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
5088       -1,    -1,    34,    35,    36,    37,    38,    39,    -1,    41,
5089       42,    43,    44,    -1,    -1,    47,    48,    49,    50,    51,
5090       52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
5091       62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
5092       72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
5093       82,    83,    84,    85,    86,    87,    88,    89,    90,    91,
5094       92,    93,    94,    95,    96,    97,    98,    99,   100,   101,
5095      102,   103,   104,   105,   106,   107,   108,   109,   110,   111,
5096       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5097       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5098       -1,    -1,    -1,   135,    -1,   137,   138,   139,   140,    -1,
5099      142,   143,    -1,   145,   146,   147,   148,   149,   150,   151,
5100      152,   153,   154,   155,   156,     3,     4,     5,     6,     7,
5101        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
5102       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
5103       28,    29,    30,    31,    -1,    -1,    34,    35,    36,    37,
5104       38,    39,    -1,    41,    42,    43,    44,    -1,    -1,    47,
5105       48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
5106       58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
5107       68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
5108       78,    79,    80,    81,    82,    -1,    84,    -1,    86,    87,
5109       88,    89,    90,    91,    92,    93,    94,    95,    96,    97,
5110       98,    99,   100,   101,   102,   103,   104,   105,   106,   107,
5111      108,   109,   110,   111,    -1,    -1,    -1,    -1,    -1,    -1,
5112       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5113       -1,    -1,    -1,    -1,    -1,    -1,   134,   135,   136,   137,
5114      138,   139,   140,    -1,   142,   143,    -1,   145,   146,   147,
5115      148,   149,   150,   151,   152,   153,   154,   155,   156,     3,
5116        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
5117       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
5118       24,    25,    26,    27,    28,    29,    30,    31,    -1,    -1,
5119       34,    35,    36,    37,    38,    39,    -1,    41,    42,    43,
5120       44,    -1,    -1,    47,    48,    49,    50,    51,    52,    53,
5121       54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
5122       64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
5123       74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
5124       84,    85,    86,    87,    88,    89,    90,    91,    92,    93,
5125       94,    95,    96,    97,    98,    99,   100,   101,   102,   103,
5126      104,   105,   106,   107,   108,   109,   110,   111,    -1,    -1,
5127       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5128       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5129       -1,   135,    -1,   137,   138,   139,   140,    -1,   142,   143,
5130       -1,   145,   146,   147,   148,   149,   150,   151,   152,   153,
5131      154,   155,   156,     3,     4,     5,     6,     7,     8,     9,
5132       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
5133       20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
5134       30,    31,    -1,    -1,    34,    35,    36,    37,    38,    39,
5135       -1,    41,    42,    43,    44,    -1,    -1,    47,    48,    49,
5136       50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
5137       60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
5138       70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
5139       80,    81,    82,    83,    84,    85,    86,    87,    88,    89,
5140       90,    91,    92,    93,    94,    95,    96,    97,    98,    99,
5141      100,   101,   102,   103,   104,   105,   106,   107,   108,   109,
5142      110,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5143       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5144       -1,    -1,    -1,    -1,    -1,   135,    -1,   137,   138,   139,
5145      140,    -1,    -1,   143,    -1,   145,   146,   147,   148,   149,
5146      150,   151,   152,   153,   154,   155,   156,     3,     4,     5,
5147        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
5148       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
5149       26,    27,    28,    29,    30,    31,    -1,    -1,    34,    35,
5150       36,    37,    38,    39,    -1,    41,    42,    43,    44,    -1,
5151       -1,    47,    48,    49,    50,    51,    52,    53,    54,    55,
5152       56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
5153       66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
5154       76,    77,    78,    79,    80,    81,    82,    -1,    84,    -1,
5155       86,    87,    88,    89,    90,    91,    92,    93,    94,    95,
5156       96,    97,    98,    99,   100,   101,   102,   103,   104,   105,
5157      106,   107,   108,   109,   110,   111,    -1,    -1,    -1,    -1,
5158       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5159       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   135,
5160       -1,   137,   138,   139,   140,   141,   142,   143,    -1,   145,
5161      146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
5162      156,     3,     4,     5,     6,     7,     8,     9,    10,    11,
5163       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
5164       22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
5165       -1,    -1,    34,    35,    36,    37,    38,    39,    -1,    41,
5166       42,    43,    44,    -1,    -1,    47,    48,    49,    50,    51,
5167       52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
5168       62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
5169       72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
5170       82,    -1,    84,    -1,    86,    87,    88,    89,    90,    91,
5171       92,    93,    94,    95,    96,    97,    98,    99,   100,   101,
5172      102,   103,   104,   105,   106,   107,   108,   109,   110,   111,
5173       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5174       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5175       -1,    -1,    -1,   135,    -1,   137,   138,   139,   140,   141,
5176      142,   143,    -1,   145,   146,   147,   148,   149,   150,   151,
5177      152,   153,   154,   155,   156,     3,     4,     5,     6,     7,
5178        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
5179       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
5180       28,    29,    30,    31,    -1,    -1,    34,    35,    36,    37,
5181       38,    39,    -1,    41,    42,    43,    44,    -1,    -1,    47,
5182       48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
5183       58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
5184       68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
5185       78,    79,    80,    81,    82,    -1,    84,    -1,    86,    87,
5186       88,    89,    90,    91,    92,    93,    94,    95,    96,    97,
5187       98,    99,   100,   101,   102,   103,   104,   105,   106,   107,
5188      108,   109,   110,   111,    -1,    -1,    -1,    -1,    -1,    -1,
5189       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5190       -1,    -1,    -1,    -1,    -1,    -1,    -1,   135,    -1,   137,
5191      138,   139,   140,   141,   142,   143,    -1,   145,   146,   147,
5192      148,   149,   150,   151,   152,   153,   154,   155,   156,     3,
5193        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
5194       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
5195       24,    25,    26,    27,    28,    29,    30,    31,    -1,    -1,
5196       34,    35,    36,    37,    38,    39,    -1,    41,    42,    43,
5197       44,    -1,    -1,    47,    48,    49,    50,    51,    52,    53,
5198       54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
5199       64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
5200       74,    75,    76,    77,    78,    79,    80,    81,    82,    -1,
5201       84,    -1,    86,    87,    88,    89,    90,    91,    92,    93,
5202       94,    95,    96,    97,    98,    99,   100,   101,   102,   103,
5203      104,   105,   106,   107,   108,   109,   110,   111,    -1,    -1,
5204       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5205       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5206       -1,   135,    -1,   137,   138,   139,   140,    -1,   142,   143,
5207      144,   145,   146,   147,   148,   149,   150,   151,   152,   153,
5208      154,   155,   156,     3,     4,     5,     6,     7,     8,     9,
5209       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
5210       20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
5211       30,    31,    -1,    -1,    34,    35,    36,    37,    38,    39,
5212       -1,    41,    42,    43,    44,    -1,    -1,    47,    48,    49,
5213       50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
5214       60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
5215       70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
5216       80,    81,    82,    -1,    84,    -1,    86,    87,    88,    89,
5217       90,    91,    92,    93,    94,    95,    96,    97,    98,    99,
5218      100,   101,   102,   103,   104,   105,   106,   107,   108,   109,
5219      110,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5220       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5221       -1,    -1,    -1,    -1,    -1,   135,    -1,   137,   138,   139,
5222      140,    -1,   142,   143,   144,   145,   146,   147,   148,   149,
5223      150,   151,   152,   153,   154,   155,   156,     3,     4,     5,
5224        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
5225       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
5226       26,    27,    28,    29,    30,    31,    -1,    -1,    34,    35,
5227       36,    37,    38,    39,    -1,    41,    42,    43,    44,    -1,
5228       -1,    47,    48,    49,    50,    51,    52,    53,    54,    55,
5229       56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
5230       66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
5231       76,    77,    78,    79,    80,    81,    82,    -1,    84,    -1,
5232       86,    87,    88,    89,    90,    91,    92,    93,    94,    95,
5233       96,    97,    98,    99,   100,   101,   102,   103,   104,   105,
5234      106,   107,   108,   109,   110,   111,    -1,    -1,    -1,    -1,
5235       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5236       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   135,
5237       -1,   137,   138,   139,   140,    -1,   142,   143,    -1,   145,
5238      146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
5239      156,     3,     4,     5,     6,     7,     8,     9,    10,    11,
5240       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
5241       22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
5242       -1,    -1,    34,    35,    36,    37,    38,    39,    -1,    41,
5243       42,    43,    44,    -1,    -1,    47,    48,    49,    50,    51,
5244       52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
5245       62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
5246       72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
5247       82,    -1,    84,    -1,    86,    87,    88,    89,    90,    91,
5248       92,    93,    94,    95,    96,    97,    98,    99,   100,   101,
5249      102,   103,   104,   105,   106,   107,   108,   109,   110,   111,
5250       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5251       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5252       -1,    -1,    -1,   135,    -1,   137,   138,   139,   140,    -1,
5253      142,   143,    -1,   145,   146,   147,   148,   149,   150,   151,
5254      152,   153,   154,   155,   156,     3,     4,     5,     6,     7,
5255        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
5256       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
5257       28,    29,    30,    31,    -1,    -1,    34,    35,    36,    37,
5258       38,    39,    -1,    41,    42,    43,    44,    -1,    -1,    47,
5259       48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
5260       58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
5261       68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
5262       78,    79,    80,    81,    82,    -1,    84,    -1,    86,    87,
5263       88,    89,    90,    91,    92,    93,    94,    95,    96,    97,
5264       98,    99,   100,   101,   102,   103,   104,   105,   106,   107,
5265      108,   109,   110,   111,    -1,    -1,    -1,    -1,    -1,    -1,
5266       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5267       -1,    -1,    -1,    -1,    -1,    -1,    -1,   135,    -1,   137,
5268      138,   139,   140,    -1,   142,   143,    -1,   145,   146,   147,
5269      148,   149,   150,   151,   152,   153,   154,   155,   156,     3,
5270        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
5271       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
5272       24,    25,    26,    27,    28,    29,    30,    31,    -1,    -1,
5273       34,    35,    36,    37,    38,    39,    -1,    41,    42,    43,
5274       44,    -1,    -1,    47,    48,    49,    50,    51,    52,    53,
5275       54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
5276       64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
5277       74,    75,    76,    77,    78,    79,    80,    81,    82,    -1,
5278       84,    -1,    86,    87,    88,    89,    90,    91,    92,    93,
5279       94,    95,    96,    97,    98,    99,   100,   101,   102,   103,
5280      104,   105,   106,   107,   108,   109,   110,   111,    -1,    -1,
5281       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5282       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5283       -1,   135,    -1,    -1,   138,    -1,   140,    -1,   142,   143,
5284       -1,   145,   146,   147,   148,   149,   150,   151,   152,   153,
5285      154,   155,   156,     3,     4,     5,     6,     7,     8,     9,
5286       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
5287       20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
5288       30,    31,    -1,    -1,    34,    35,    36,    37,    38,    39,
5289       -1,    41,    42,    43,    44,    -1,    -1,    47,    48,    49,
5290       50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
5291       60,    61,    62,    -1,    64,    65,    66,    67,    68,    69,
5292       70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
5293       80,    81,    82,    -1,    84,    -1,    86,    87,    88,    89,
5294       90,    91,    92,    93,    94,    95,    96,    97,    98,    99,
5295      100,   101,   102,   103,   104,   105,   106,   107,   108,   109,
5296      110,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5297       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5298       -1,    -1,    -1,    -1,    -1,   135,    -1,    -1,   138,    -1,
5299      140,    -1,   142,   143,    -1,   145,   146,   147,    -1,   149,
5300      150,   151,   152,   153,   154,   155,   156,     3,     4,     5,
5301        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
5302       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
5303       26,    27,    28,    29,    30,    31,    -1,    -1,    34,    35,
5304       36,    37,    38,    39,    -1,    41,    42,    43,    44,    -1,
5305       -1,    47,    48,    49,    50,    51,    52,    53,    54,    55,
5306       56,    57,    58,    59,    60,    61,    62,    -1,    64,    65,
5307       66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
5308       76,    77,    78,    79,    80,    81,    82,    -1,    -1,    -1,
5309       86,    87,    88,    89,    90,    91,    92,    93,    94,    95,
5310       96,    97,    98,    99,   100,   101,   102,   103,   104,   105,
5311      106,   107,   108,   109,   110,   111,    -1,    -1,    -1,    -1,
5312       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5313       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   135,
5314       -1,    -1,   138,    -1,   140,    -1,    -1,   143,    -1,   145,
5315      146,   147,    -1,   149,   150,   151,   152,   153,   154,   155,
5316      156,     3,     4,     5,     6,     7,     8,     9,    -1,    -1,
5317       12,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    20,    21,
5318       22,    -1,    24,    25,    26,    27,    -1,    -1,    -1,    31,
5319       32,    33,    34,    35,    36,    37,    38,    39,    -1,    41,
5320       -1,    -1,    -1,    -1,    -1,    -1,    48,    49,    -1,    -1,
5321       -1,    53,    54,    -1,    -1,    -1,    -1,    -1,    60,    61,
5322       62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
5323       72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
5324       82,    -1,    84,    -1,    86,    87,    88,    89,    90,    91,
5325       92,    93,    94,    95,    96,    97,    98,    99,   100,   101,
5326      102,   103,   104,   105,   106,   107,   108,   109,   110,   111,
5327        3,     4,     5,     6,     7,     8,     9,    -1,    -1,    -1,
5328       -1,    -1,    -1,    -1,    -1,    -1,    -1,    20,    21,    22,
5329       -1,    -1,    -1,    -1,    -1,   137,    -1,   139,   140,    -1,
5330      142,   143,    -1,   145,   146,   147,   148,   149,   150,   151,
5331      152,   153,   154,   155,     3,     4,     5,     6,     7,     8,
5332        9,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5333       -1,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
5334       -1,    -1,    31,    32,    33,    34,    35,    36,    37,    38,
5335       39,    -1,    41,    42,    43,    -1,    -1,    -1,    -1,    48,
5336       49,    50,    51,    52,    -1,    -1,    -1,    -1,   101,   102,
5337      103,   104,   105,   106,   107,   108,   109,   110,   111,    -1,
5338       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5339       -1,    -1,    -1,    -1,    -1,    84,    -1,    86,    87,    88,
5340       89,    90,    91,    92,    93,    94,    95,    96,    97,    98,
5341       99,   100,   101,   102,   103,   104,   105,   106,   107,   108,
5342      109,   110,   111,   112,   113,   114,   115,   116,   117,   118,
5343      119,   120,   121,   122,   123,   124,   125,   126,   127,   128,
5344      129,   130,   131,   132,    -1,   134,     3,     4,     5,     6,
5345        7,     8,     9,    -1,    -1,    -1,   145,    -1,    -1,    -1,
5346       -1,    -1,    -1,    20,    21,    22,    -1,    24,    25,    26,
5347       27,    -1,    -1,    -1,    31,    32,    33,    34,    35,    36,
5348       37,    38,    39,    -1,    41,    42,    43,    -1,    -1,    -1,
5349       -1,    48,    49,    -1,    -1,    52,    -1,    -1,    -1,    -1,
5350       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5351       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5352       -1,    -1,    -1,    -1,    -1,    -1,    -1,    84,    -1,    86,
5353       87,    88,    89,    90,    91,    92,    93,    94,    95,    96,
5354       97,    98,    99,   100,   101,   102,   103,   104,   105,   106,
5355      107,   108,   109,   110,   111,    -1,    -1,    -1,    -1,    -1,
5356       -1,     3,     4,     5,     6,     7,     8,     9,    -1,    -1,
5357       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    20,    21,
5358       22,    -1,    24,    25,    26,    27,    -1,    -1,   145,    31,
5359       32,    33,    34,    35,    36,    37,    38,    39,    -1,    41,
5360       42,    43,    -1,    -1,    -1,    -1,    48,    49,    -1,    -1,
5361       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5362       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5363       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5364       -1,    -1,    84,    -1,    86,    87,    88,    89,    90,    91,
5365       92,    93,    94,    95,    96,    97,    98,    99,   100,   101,
5366      102,   103,   104,   105,   106,   107,   108,   109,   110,   111,
5367       -1,    -1,    -1,    -1,    -1,    -1,     3,     4,     5,     6,
5368        7,     8,     9,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5369       -1,    -1,    -1,    20,    21,    22,    -1,    24,    25,    26,
5370       27,    -1,    -1,   145,    31,    32,    33,    34,    35,    36,
5371       37,    38,    39,    -1,    41,    42,    -1,    -1,    -1,    -1,
5372       -1,    48,    49,    50,    -1,    -1,    -1,    -1,    -1,    -1,
5373       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5374       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5375       -1,    -1,    -1,    -1,    -1,    -1,    -1,    84,    -1,    86,
5376       87,    88,    89,    90,    91,    92,    93,    94,    95,    96,
5377       97,    98,    99,   100,   101,   102,   103,   104,   105,   106,
5378      107,   108,   109,   110,   111,    -1,    -1,    -1,    -1,    -1,
5379       -1,     3,     4,     5,     6,     7,     8,     9,    -1,    -1,
5380       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    20,    21,
5381       22,    -1,    24,    25,    26,    27,    -1,    -1,   145,    31,
5382       32,    33,    34,    35,    36,    37,    38,    39,    -1,    41,
5383       42,    -1,    -1,    -1,    -1,    -1,    48,    49,    -1,    -1,
5384       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5385       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5386       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5387       -1,    -1,    84,    -1,    86,    87,    88,    89,    90,    91,
5388       92,    93,    94,    95,    96,    97,    98,    99,   100,   101,
5389      102,   103,   104,   105,   106,   107,   108,   109,   110,   111,
5390       -1,     3,     4,     5,     6,     7,     8,     9,    -1,    -1,
5391       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    20,    21,
5392       22,    -1,    -1,    -1,    -1,    -1,    28,    29,    30,    -1,
5393       -1,    -1,    -1,   145,    36,    -1,    -1,    -1,    -1,    -1,
5394       -1,    -1,    -1,    -1,    -1,    -1,    48,     3,     4,     5,
5395        6,     7,     8,     9,    -1,    -1,    -1,    -1,    -1,    -1,
5396       -1,    -1,    -1,    -1,    20,    21,    22,    23,    -1,    -1,
5397       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5398       -1,    -1,    84,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5399       -1,    -1,    48,    -1,    -1,    -1,    -1,    -1,    -1,   101,
5400      102,   103,   104,   105,   106,   107,   108,   109,   110,   111,
5401       -1,    -1,     3,     4,     5,     6,     7,     8,     9,    -1,
5402       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    84,    20,
5403       21,    22,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5404       -1,    -1,    -1,   145,    -1,   101,   102,   103,   104,   105,
5405      106,   107,   108,   109,   110,   111,    -1,    48,    49,    -1,
5406       51,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5407       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   134,    -1,
5408       -1,    -1,   138,    -1,    -1,    -1,    -1,    -1,    -1,   145,
5409       -1,    -1,    -1,    84,    -1,    -1,    -1,    -1,    -1,    -1,
5410       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5411      101,   102,   103,   104,   105,   106,   107,   108,   109,   110,
5412      111,     3,     4,     5,     6,     7,     8,     9,    -1,    -1,
5413       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    20,    21,
5414       22,    23,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5415       -1,    -1,    -1,    -1,   145,    -1,    -1,    -1,    -1,    -1,
5416       -1,    -1,    -1,    -1,    -1,    -1,    48,     3,     4,     5,
5417        6,     7,     8,     9,    -1,    -1,    -1,    -1,    -1,    -1,
5418       -1,    -1,    -1,    -1,    20,    21,    22,    23,    -1,    -1,
5419       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5420       -1,    -1,    84,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5421       -1,    -1,    48,    -1,    -1,    -1,    -1,    -1,    -1,   101,
5422      102,   103,   104,   105,   106,   107,   108,   109,   110,   111,
5423       -1,    -1,     3,     4,     5,     6,     7,     8,     9,    -1,
5424       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    84,    20,
5425       21,    22,    -1,    -1,    -1,    -1,   138,    -1,    -1,    -1,
5426       -1,    -1,    -1,   145,    -1,   101,   102,   103,   104,   105,
5427      106,   107,   108,   109,   110,   111,    -1,    48,    49,     3,
5428        4,     5,     6,     7,     8,     9,    -1,    -1,    -1,    -1,
5429       -1,    -1,    -1,    -1,    -1,    -1,    20,    21,    22,    -1,
5430       -1,     3,     4,     5,     6,     7,     8,     9,    -1,   145,
5431       -1,    -1,    -1,    84,    -1,    -1,    -1,    -1,    20,    21,
5432       22,    -1,    -1,    -1,    48,    -1,    -1,    -1,    -1,    -1,
5433      101,   102,   103,   104,   105,   106,   107,   108,   109,   110,
5434      111,    43,    -1,    -1,    -1,    -1,    48,    -1,    -1,     3,
5435        4,     5,     6,     7,     8,     9,    -1,    -1,    -1,    -1,
5436       84,    -1,    -1,    -1,    -1,    -1,    20,    21,    22,    -1,
5437       -1,    -1,    -1,    -1,   145,    -1,    -1,   101,   102,   103,
5438      104,   105,   106,   107,   108,   109,   110,   111,    42,    -1,
5439       -1,    -1,    -1,    -1,    48,    -1,    -1,    -1,    -1,   101,
5440      102,   103,   104,   105,   106,   107,   108,   109,   110,   111,
5441       -1,    -1,    -1,     3,     4,     5,     6,     7,     8,     9,
5442       -1,   145,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5443       20,    21,    22,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5444       -1,    -1,    -1,   145,    -1,    -1,    -1,   101,   102,   103,
5445      104,   105,   106,   107,   108,   109,   110,   111,    48,     3,
5446        4,     5,     6,     7,     8,     9,    -1,    -1,    -1,    -1,
5447       -1,    -1,    -1,    -1,    -1,    -1,    20,    21,    22,    23,
5448       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5449       -1,   145,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5450       -1,    -1,    -1,    -1,    48,    -1,    -1,    -1,    -1,    -1,
5451       -1,   101,   102,   103,   104,   105,   106,   107,   108,   109,
5452      110,   111,    -1,    -1,     3,     4,     5,     6,     7,     8,
5453        9,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5454       84,    20,    21,    22,    23,    -1,    -1,    -1,    -1,    -1,
5455       -1,    -1,    -1,    -1,    -1,   145,    -1,   101,   102,   103,
5456      104,   105,   106,   107,   108,   109,   110,   111,    -1,    48,
5457       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5458       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5459      134,   135,    -1,    -1,   138,     3,     4,     5,     6,     7,
5460        8,     9,    -1,    -1,    -1,    84,    -1,    -1,    -1,    -1,
5461       -1,    -1,    20,    21,    22,    23,    -1,    -1,    -1,    -1,
5462       -1,    -1,   101,   102,   103,   104,   105,   106,   107,   108,
5463      109,   110,   111,     3,     4,     5,     6,     7,     8,     9,
5464       48,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5465       20,    21,    22,    23,    -1,   134,    -1,    -1,    -1,   138,
5466       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5467       -1,    -1,    -1,    -1,    -1,    -1,    84,    -1,    48,    -1,
5468       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5469       -1,    -1,    -1,   101,   102,   103,   104,   105,   106,   107,
5470      108,   109,   110,   111,    -1,    -1,    -1,    -1,    -1,    -1,
5471       -1,    -1,    -1,    -1,    84,    -1,    -1,    -1,    -1,    -1,
5472       -1,    -1,    -1,    -1,    -1,    -1,    -1,   135,    -1,    -1,
5473      138,   101,   102,   103,   104,   105,   106,   107,   108,   109,
5474      110,   111,    31,    32,    33,    34,    35,    36,    37,    38,
5475       39,    40,    41,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5476       -1,    50,    -1,    -1,    -1,    -1,    -1,    -1,   138,    -1,
5477       31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
5478       41,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    77,    50,
5479       -1,    -1,    -1,    -1,    -1,    -1,    -1,    86,    87,    88,
5480       89,    90,    91,    92,    93,    94,    95,    96,    97,    98,
5481       99,   100,    -1,    -1,    -1,    -1,    77,    -1,    -1,    -1,
5482       -1,    -1,    -1,    -1,    -1,    86,    87,    88,    89,    90,
5483       91,    92,    93,    94,    95,    96,    97,    98,    99,   100,
5484       -1,    -1,    -1,    -1,    -1,   134,    -1,    -1,    -1,    -1,
5485       -1,    -1,    -1,    -1,    -1,    -1,    -1,   146,   147,     3,
5486        4,     5,     6,     7,     8,     9,    -1,    -1,    -1,    -1,
5487       -1,    -1,    -1,    -1,    -1,    -1,    20,    21,    22,    -1,
5488       24,    25,    26,    27,    -1,   146,   147,    31,    32,    33,
5489       34,    35,    36,    37,    38,    39,    -1,    41,    42,    43,
5490       -1,    -1,    -1,    -1,    48,    49,    -1,    -1,    52,    -1,
5491       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5492       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5493       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5494       84,    -1,    86,    87,    88,    89,    90,    91,    92,    93,
5495       94,    95,    96,    97,    98,    99,   100,   101,   102,   103,
5496      104,   105,   106,   107,   108,   109,   110,   111,     3,     4,
5497        5,     6,     7,     8,     9,    -1,    -1,    -1,    -1,    -1,
5498       -1,    -1,    -1,    -1,    -1,    20,    21,    22,    -1,    24,
5499       25,    26,    27,    -1,    -1,    -1,    31,    32,    33,    34,
5500       35,    36,    37,    38,    39,    -1,    41,    42,    -1,    -1,
5501       -1,    -1,    -1,    48,    49,    50,    -1,    -1,    -1,    -1,
5502       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5503       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5504       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    84,
5505       -1,    86,    87,    88,    89,    90,    91,    92,    93,    94,
5506       95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
5507      105,   106,   107,   108,   109,   110,   111,     3,     4,     5,
5508        6,     7,     8,     9,    -1,    -1,    -1,    -1,    -1,    -1,
5509       -1,    -1,    -1,    -1,    20,    21,    22,    -1,    24,    25,
5510       26,    27,    -1,    -1,    -1,    31,    32,    33,    34,    35,
5511       36,    37,    38,    39,    -1,    41,    42,    -1,    -1,    -1,
5512       -1,    -1,    48,    49,    -1,    -1,    -1,    -1,    -1,    -1,
5513       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5514       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5515       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    84,    -1,
5516       86,    87,    88,    89,    90,    91,    92,    93,    94,    95,
5517       96,    97,    98,    99,   100,   101,   102,   103,   104,   105,
5518      106,   107,   108,   109,   110,   111,     3,     4,     5,     6,
5519        7,     8,     9,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5520       -1,    -1,    -1,    20,    21,    22,    -1,    24,    25,    26,
5521       27,    -1,    -1,    -1,    31,    32,    33,    34,    35,    36,
5522       37,    38,    39,    -1,    41,    -1,    -1,    -1,    -1,    -1,
5523       -1,    48,    49,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5524       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5525       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5526       -1,    -1,    -1,    -1,    -1,    -1,    -1,    84,    -1,    86,
5527       87,    88,    89,    90,    91,    92,    93,    94,    95,    96,
5528       97,    98,    99,   100,   101,   102,   103,   104,   105,   106,
5529      107,   108,   109,   110,   111,     3,     4,     5,     6,     7,
5530        8,     9,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5531       -1,    -1,    20,    21,    22,    -1,    24,    -1,    26,    27,
5532       -1,    -1,    -1,    31,    32,    33,    34,    35,    36,    37,
5533       38,    39,    -1,    41,    -1,    -1,    -1,    -1,    -1,    -1,
5534       48,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5535       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5536       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5537       -1,    -1,    -1,    -1,    -1,    -1,    84,    -1,    86,    87,
5538       88,    89,    90,    91,    92,    93,    94,    95,    96,    97,
5539       98,    99,   100,   101,   102,   103,   104,   105,   106,   107,
5540      108,   109,   110,   111,     3,     4,     5,     6,     7,     8,
5541        9,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5542       -1,    20,    21,    22,    -1,    -1,    -1,    -1,    -1,    -1,
5543       -1,    -1,    31,    32,    33,    34,    35,    36,    37,    38,
5544       39,    -1,    41,    -1,    -1,    -1,    -1,    -1,    -1,    48,
5545       49,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5546       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5547       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5548       -1,    -1,    -1,    -1,    -1,    84,    -1,    86,    87,    88,
5549       89,    90,    91,    92,    93,    94,    95,    96,    97,    98,
5550       99,   100,   101,   102,   103,   104,   105,   106,   107,   108,
5551      109,   110,   111,     3,     4,     5,     6,     7,     8,     9,
5552       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5553       20,    21,    22,    23,     3,     4,     5,     6,     7,     8,
5554        9,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5555       -1,    20,    21,    22,    -1,    -1,    -1,    -1,    48,     3,
5556        4,     5,     6,     7,     8,     9,    -1,    -1,    -1,    -1,
5557       -1,    -1,    -1,    -1,    43,    -1,    20,    21,    22,    48,
5558       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5559       -1,    -1,    -1,    -1,    84,    -1,    -1,    -1,    -1,    -1,
5560       -1,    -1,    -1,    -1,    48,    -1,    -1,    -1,    -1,    -1,
5561       -1,   101,   102,   103,   104,   105,   106,   107,   108,   109,
5562      110,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5563       -1,    -1,   101,   102,   103,   104,   105,   106,   107,   108,
5564      109,   110,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5565       -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,   102,   103,
5566      104,   105,   106,   107,   108,   109,   110,   111
5567 };
5568
5569 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
5570    symbol of state STATE-NUM.  */
5571 static const unsigned short int yystos[] =
5572 {
5573        0,   158,   159,     0,   160,   367,     3,     4,     5,     6,
5574        7,     8,     9,    20,    21,    22,    23,    24,    25,    26,
5575       27,    31,    32,    33,    34,    35,    36,    37,    38,    39,
5576       41,    42,    43,    48,    49,    50,    51,    52,    84,    86,
5577       87,    88,    89,    90,    91,    92,    93,    94,    95,    96,
5578       97,    98,    99,   100,   101,   102,   103,   104,   105,   106,
5579      107,   108,   109,   110,   111,   112,   113,   114,   115,   116,
5580      117,   118,   119,   120,   121,   122,   123,   124,   125,   126,
5581      127,   128,   129,   130,   131,   132,   134,   145,   161,   162,
5582      163,   164,   165,   167,   168,   169,   170,   171,   173,   176,
5583      191,   192,   193,   195,   196,   206,   207,   216,   218,   219,
5584      221,   239,   240,   241,   242,   245,   246,   249,   255,   289,
5585      319,   320,   321,   322,   324,   325,   326,   327,   329,   331,
5586      332,   335,   336,   337,   338,   339,   341,   342,   345,   346,
5587      357,   358,   359,   368,   371,   369,    24,    25,    12,    43,
5588        3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
5589       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
5590       23,    24,    25,    26,    27,    28,    29,    30,    31,    34,
5591       35,    36,    37,    38,    39,    41,    42,    43,    44,    47,
5592       48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
5593       58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
5594       68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
5595       78,    79,    80,    81,    82,    83,    84,    85,   101,   102,
5596      103,   104,   105,   106,   107,   108,   109,   110,   111,   135,
5597      137,   138,   139,   140,   142,   143,   145,   146,   147,   148,
5598      149,   150,   151,   152,   153,   154,   155,   156,   358,   359,
5599      396,   397,   398,   428,   429,   430,   431,   432,   330,   347,
5600        3,     4,     5,     6,     7,     8,     9,    41,   171,   176,
5601      193,   196,   321,   322,   327,   329,   335,   341,     3,     4,
5602        5,     6,     7,     8,     9,   135,   332,     3,     4,     5,
5603        6,     7,     8,     9,    20,    21,    22,    49,    51,   101,
5604      102,   103,   104,   105,   106,   107,   108,   109,   110,   111,
5605      217,   319,   321,   322,   326,   327,   329,   140,   140,   140,
5606      140,   140,   140,   140,   140,   140,   140,   140,   140,   140,
5607      140,   140,   140,   140,   140,   140,   140,   140,   333,   172,
5608      367,   333,   135,   367,    43,    52,   162,   169,   170,   196,
5609      202,   219,   221,   239,   335,   341,    45,   134,   135,   265,
5610      266,   265,   265,   265,   140,   176,   335,   341,   134,   367,
5611       43,   246,   270,   273,   320,   325,   327,   329,   178,   327,
5612      329,   331,   332,   326,   320,   321,   326,   367,   326,   142,
5613      171,   176,   193,   196,   207,   246,   322,   336,   345,   367,
5614       10,    11,    83,   233,   290,   298,   300,    77,   146,   147,
5615      295,   360,   361,   362,   363,   366,   343,   367,   367,   404,
5616      135,   428,   424,   424,    63,   148,   222,   414,   424,   425,
5617      424,    10,    11,   140,   418,   319,    12,   333,   367,   333,
5618      367,   320,   171,   193,   211,   212,   215,   233,   298,   424,
5619      137,   166,   319,   319,   134,   367,   249,   254,   255,   322,
5620        3,     4,     5,     6,     7,     8,     9,   331,   373,   376,
5621      377,   331,   331,   381,   331,   331,   331,   331,   331,   331,
5622      331,   331,   331,   331,   331,   331,   331,   331,    40,    50,
5623      291,   294,   295,   334,   336,   359,   135,   134,   138,   177,
5624      178,   322,   326,   327,   329,   291,   194,   134,   138,   197,
5625      319,   319,   367,   335,   233,   138,   275,   424,   247,   367,
5626      323,   271,   140,   326,   326,   326,   328,   333,   367,   333,
5627      367,   246,   270,   367,   344,   301,   250,   252,   254,   255,
5628      256,   268,   309,   320,   322,   292,   137,   285,   286,   288,
5629      233,   298,   307,   360,   367,   367,   367,   361,   363,   333,
5630       23,    63,    84,   135,   137,   138,   139,   142,   143,   148,
5631      156,   358,   359,   370,   396,   397,   398,   402,   403,   405,
5632      406,   415,   418,   422,   159,   425,   134,   142,   144,   426,
5633      427,   428,   136,   223,   225,   226,   228,   230,   144,   134,
5634      427,   141,   420,   421,   419,   367,   208,   210,   295,   177,
5635      208,   319,   333,   333,   209,   309,   320,   327,   329,   136,
5636      321,   327,   135,   134,   137,    12,    53,    54,    63,   137,
5637      139,   140,   142,   143,   148,   395,   396,   249,   254,   139,
5638      331,   331,   331,   139,   139,   331,   139,   139,   139,   139,
5639      139,   139,   139,   139,   139,   139,   139,   141,   141,   139,
5640      134,   292,   290,   367,   180,   175,     3,   134,   179,   367,
5641      178,   327,   329,   322,   134,   199,   200,   331,   198,   197,
5642      367,   319,   320,   322,   276,   277,   319,   135,   136,   278,
5643      279,   177,   327,   275,   274,   408,   291,   177,   291,   319,
5644      333,   339,   340,   365,   251,   367,   257,   311,   312,   313,
5645      367,   250,   256,   134,   139,   287,   422,   141,   298,   364,
5646      417,   423,   416,   144,   136,   134,   144,   139,   414,    24,
5647       26,   196,   321,   327,   329,   335,   352,   353,   356,   357,
5648       25,    49,   234,   221,   404,   404,   404,   134,   209,   215,
5649      134,   197,   208,   208,   134,   139,   140,   367,   134,   159,
5650      220,     3,   143,   143,    63,   148,   141,   144,   372,   139,
5651      141,   141,   378,   380,   139,   341,   384,   386,   388,   390,
5652      385,   387,   389,   391,   392,   393,   319,    28,    29,    30,
5653      136,   181,   182,    28,    29,    30,    36,   186,   187,   190,
5654      319,   138,   367,   178,   136,   139,   137,   342,   134,   367,
5655      331,   139,   431,   424,   141,    83,   280,   282,   283,   326,
5656      272,   278,   137,   139,   142,   402,   410,   411,   412,   414,
5657      134,   134,   134,   197,   339,   257,   140,     3,    31,    44,
5658       47,    66,   137,   258,   260,   261,   262,   263,   143,   314,
5659      315,   138,   140,   293,    63,   142,   148,   399,   400,   402,
5660      412,   299,   365,   404,   409,   404,   144,   224,   319,   319,
5661      319,   345,   233,   296,   300,   295,   354,   296,    25,   141,
5662      141,   141,   134,   134,   210,   213,   136,   341,   144,   144,
5663      341,   374,   341,   341,   382,   141,   341,   341,   341,   341,
5664      341,   341,   341,   341,   341,   341,   139,   394,   367,   138,
5665      189,   190,   139,    36,   188,   233,   174,   367,   200,   201,
5666      137,   203,   429,   277,   233,   136,   367,   139,   341,   257,
5667      141,   413,   134,   262,   253,   259,   264,    18,    54,    55,
5668      418,   316,   315,    13,    14,    15,   310,   269,   294,   401,
5669      400,   140,   302,   312,   144,   134,   136,   406,   407,   144,
5670      225,   355,   308,   309,   227,   367,   333,   229,   231,   278,
5671      296,   141,   341,   379,   141,   341,   141,   141,   141,   141,
5672      141,   141,   141,   141,   139,   139,   141,    40,    41,    52,
5673      133,   134,   163,   168,   170,   183,   184,   185,   191,   192,
5674      206,   216,   219,   221,   243,   244,   245,   270,   289,   319,
5675      320,   322,   335,   341,   371,   319,   367,   319,   186,   399,
5676      425,   134,   267,   248,    83,   281,   296,   262,   367,   408,
5677      278,   418,   335,   346,   348,   349,   317,   318,   278,   403,
5678      303,   144,   333,   302,   137,   235,   236,   296,   306,   360,
5679      235,   296,   141,   134,   375,   139,   383,    13,    13,   168,
5680      176,   204,   221,   244,   320,   335,   341,   431,   170,   184,
5681      219,   221,   243,   335,   265,   134,   254,   270,   322,   233,
5682      233,   187,   233,    46,   257,   282,   284,   414,   141,   346,
5683      350,   295,   144,   399,   141,   278,   237,   141,   296,   232,
5684      214,   141,   425,   141,   141,   141,   367,   176,   204,   335,
5685      265,   176,   233,   335,   367,   254,   256,   431,   262,   285,
5686      367,   351,   333,   367,   367,   141,   238,   410,   297,   235,
5687      305,   141,   135,   138,   177,   205,   367,   176,   367,   134,
5688      367,   135,   333,   367,   410,   302,    31,    33,    44,    47,
5689      424,   425,   179,   177,   367,   177,   205,   134,   424,   304,
5690      431,   431,   136,   134,   205,   177,   179,   136,   305,   425,
5691      205,   134
5692 };
5693
5694 \f
5695 /* Prevent warning if -Wmissing-prototypes.  */
5696 int yyparse (void);
5697
5698 /* Error token number */
5699 #define YYTERROR 1
5700
5701 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
5702    If N is 0, then set CURRENT to the empty location which ends
5703    the previous symbol: RHS[0] (always defined).  */
5704
5705
5706 #ifndef YYLLOC_DEFAULT
5707 # define YYLLOC_DEFAULT(Current, Rhs, N) ((void)Rhs)
5708 #endif
5709
5710
5711 #ifndef YY_LOCATION_PRINT
5712 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
5713 #endif
5714
5715
5716 /* YYLEX -- calling `yylex' with the right arguments.  */
5717 #define YYLEX yylex ()
5718
5719 YYSTYPE yylval;
5720
5721 YYLTYPE yylloc;
5722
5723 int yynerrs;
5724 int yychar;
5725
5726 static const int YYEOF = 0;
5727 static const int YYEMPTY = -2;
5728
5729 typedef enum { yyok, yyaccept, yyabort, yyerr } YYRESULTTAG;
5730
5731 #define YYCHK(YYE)                                                             \
5732    do { YYRESULTTAG yyflag = YYE; if (yyflag != yyok) return yyflag; }             \
5733    while (YYID (0))
5734
5735 #if YYDEBUG
5736
5737 # ifndef YYFPRINTF
5738 #  define YYFPRINTF fprintf
5739 # endif
5740
5741 # define YYDPRINTF(Args)                        \
5742 do {                                                \
5743   if (yydebug)                                        \
5744     YYFPRINTF Args;                                \
5745 } while (YYID (0))
5746
5747
5748 /*--------------------------------.
5749 | Print this symbol on YYOUTPUT.  |
5750 `--------------------------------*/
5751
5752 /*ARGSUSED*/
5753 static void
5754 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
5755 {
5756   if (!yyvaluep)
5757     return;
5758 # ifdef YYPRINT
5759   if (yytype < YYNTOKENS)
5760     YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
5761 # else
5762   YYUSE (yyoutput);
5763 # endif
5764   switch (yytype)
5765     {
5766       default:
5767         break;
5768     }
5769 }
5770
5771
5772 /*--------------------------------.
5773 | Print this symbol on YYOUTPUT.  |
5774 `--------------------------------*/
5775
5776 static void
5777 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
5778 {
5779   if (yytype < YYNTOKENS)
5780     YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
5781   else
5782     YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
5783
5784   yy_symbol_value_print (yyoutput, yytype, yyvaluep);
5785   YYFPRINTF (yyoutput, ")");
5786 }
5787
5788 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)                            \
5789 do {                                                                            \
5790   if (yydebug)                                                                    \
5791     {                                                                            \
5792       YYFPRINTF (stderr, "%s ", Title);                                            \
5793       yy_symbol_print (stderr, Type,                                            \
5794                        Value);  \
5795       YYFPRINTF (stderr, "\n");                                                    \
5796     }                                                                            \
5797 } while (YYID (0))
5798
5799 /* Nonzero means print parse trace.  It is left uninitialized so that
5800    multiple parsers can coexist.  */
5801 int yydebug;
5802
5803 #else /* !YYDEBUG */
5804
5805 # define YYDPRINTF(Args)
5806 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
5807
5808 #endif /* !YYDEBUG */
5809
5810 /* YYINITDEPTH -- initial size of the parser's stacks.  */
5811 #ifndef        YYINITDEPTH
5812 # define YYINITDEPTH 200
5813 #endif
5814
5815 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
5816    if the built-in stack extension method is used).
5817
5818    Do not make this value too large; the results are undefined if
5819    SIZE_MAX < YYMAXDEPTH * sizeof (GLRStackItem)
5820    evaluated with infinite-precision integer arithmetic.  */
5821
5822 #ifndef YYMAXDEPTH
5823 # define YYMAXDEPTH 10000
5824 #endif
5825
5826 /* Minimum number of free items on the stack allowed after an
5827    allocation.  This is to allow allocation and initialization
5828    to be completed by functions that call yyexpandGLRStack before the
5829    stack is expanded, thus insuring that all necessary pointers get
5830    properly redirected to new data.  */
5831 #define YYHEADROOM 2
5832
5833 #ifndef YYSTACKEXPANDABLE
5834 # if (! defined __cplusplus \
5835       || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))
5836 #  define YYSTACKEXPANDABLE 1
5837 # else
5838 #  define YYSTACKEXPANDABLE 0
5839 # endif
5840 #endif
5841
5842 #if YYSTACKEXPANDABLE
5843 # define YY_RESERVE_GLRSTACK(Yystack)                        \
5844   do {                                                        \
5845     if (Yystack->yyspaceLeft < YYHEADROOM)                \
5846       yyexpandGLRStack (Yystack);                        \
5847   } while (YYID (0))
5848 #else
5849 # define YY_RESERVE_GLRSTACK(Yystack)                        \
5850   do {                                                        \
5851     if (Yystack->yyspaceLeft < YYHEADROOM)                \
5852       yyMemoryExhausted (Yystack);                        \
5853   } while (YYID (0))
5854 #endif
5855
5856
5857 #if YYERROR_VERBOSE
5858
5859 # ifndef yystpcpy
5860 #  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
5861 #   define yystpcpy stpcpy
5862 #  else
5863 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
5864    YYDEST.  */
5865 static char *
5866 yystpcpy (char *yydest, const char *yysrc)
5867 {
5868   char *yyd = yydest;
5869   const char *yys = yysrc;
5870
5871   while ((*yyd++ = *yys++) != '\0')
5872     continue;
5873
5874   return yyd - 1;
5875 }
5876 #  endif
5877 # endif
5878
5879 # ifndef yytnamerr
5880 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
5881    quotes and backslashes, so that it's suitable for yyerror.  The
5882    heuristic is that double-quoting is unnecessary unless the string
5883    contains an apostrophe, a comma, or backslash (other than
5884    backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
5885    null, do not copy; instead, return the length of what the result
5886    would have been.  */
5887 static size_t
5888 yytnamerr (char *yyres, const char *yystr)
5889 {
5890   if (*yystr == '"')
5891     {
5892       size_t yyn = 0;
5893       char const *yyp = yystr;
5894
5895       for (;;)
5896         switch (*++yyp)
5897           {
5898           case '\'':
5899           case ',':
5900             goto do_not_strip_quotes;
5901
5902           case '\\':
5903             if (*++yyp != '\\')
5904               goto do_not_strip_quotes;
5905             /* Fall through.  */
5906           default:
5907             if (yyres)
5908               yyres[yyn] = *yyp;
5909             yyn++;
5910             break;
5911
5912           case '"':
5913             if (yyres)
5914               yyres[yyn] = '\0';
5915             return yyn;
5916           }
5917     do_not_strip_quotes: ;
5918     }
5919
5920   if (! yyres)
5921     return strlen (yystr);
5922
5923   return yystpcpy (yyres, yystr) - yyres;
5924 }
5925 # endif
5926
5927 #endif /* !YYERROR_VERBOSE */
5928
5929 /** State numbers, as in LALR(1) machine */
5930 typedef int yyStateNum;
5931
5932 /** Rule numbers, as in LALR(1) machine */
5933 typedef int yyRuleNum;
5934
5935 /** Grammar symbol */
5936 typedef short int yySymbol;
5937
5938 /** Item references, as in LALR(1) machine */
5939 typedef short int yyItemNum;
5940
5941 typedef struct yyGLRState yyGLRState;
5942 typedef struct yyGLRStateSet yyGLRStateSet;
5943 typedef struct yySemanticOption yySemanticOption;
5944 typedef union yyGLRStackItem yyGLRStackItem;
5945 typedef struct yyGLRStack yyGLRStack;
5946
5947 struct yyGLRState {
5948   /** Type tag: always true.  */
5949   yybool yyisState;
5950   /** Type tag for yysemantics.  If true, yysval applies, otherwise
5951    *  yyfirstVal applies.  */
5952   yybool yyresolved;
5953   /** Number of corresponding LALR(1) machine state.  */
5954   yyStateNum yylrState;
5955   /** Preceding state in this stack */
5956   yyGLRState* yypred;
5957   /** Source position of the first token produced by my symbol */
5958   size_t yyposn;
5959   union {
5960     /** First in a chain of alternative reductions producing the
5961      *  non-terminal corresponding to this state, threaded through
5962      *  yynext.  */
5963     yySemanticOption* yyfirstVal;
5964     /** Semantic value for this state.  */
5965     YYSTYPE yysval;
5966   } yysemantics;
5967   /** Source location for this state.  */
5968   YYLTYPE yyloc;
5969 };
5970
5971 struct yyGLRStateSet {
5972   yyGLRState** yystates;
5973   /** During nondeterministic operation, yylookaheadNeeds tracks which
5974    *  stacks have actually needed the current lookahead.  During deterministic
5975    *  operation, yylookaheadNeeds[0] is not maintained since it would merely
5976    *  duplicate yychar != YYEMPTY.  */
5977   yybool* yylookaheadNeeds;
5978   size_t yysize, yycapacity;
5979 };
5980
5981 struct yySemanticOption {
5982   /** Type tag: always false.  */
5983   yybool yyisState;
5984   /** Rule number for this reduction */
5985   yyRuleNum yyrule;
5986   /** The last RHS state in the list of states to be reduced.  */
5987   yyGLRState* yystate;
5988   /** The lookahead for this reduction.  */
5989   int yyrawchar;
5990   YYSTYPE yyval;
5991   YYLTYPE yyloc;
5992   /** Next sibling in chain of options.  To facilitate merging,
5993    *  options are chained in decreasing order by address.  */
5994   yySemanticOption* yynext;
5995 };
5996
5997 /** Type of the items in the GLR stack.  The yyisState field
5998  *  indicates which item of the union is valid.  */
5999 union yyGLRStackItem {
6000   yyGLRState yystate;
6001   yySemanticOption yyoption;
6002 };
6003
6004 struct yyGLRStack {
6005   int yyerrState;
6006
6007
6008   YYJMP_BUF yyexception_buffer;
6009   yyGLRStackItem* yyitems;
6010   yyGLRStackItem* yynextFree;
6011   size_t yyspaceLeft;
6012   yyGLRState* yysplitPoint;
6013   yyGLRState* yylastDeleted;
6014   yyGLRStateSet yytops;
6015 };
6016
6017 #if YYSTACKEXPANDABLE
6018 static void yyexpandGLRStack (yyGLRStack* yystackp);
6019 #endif
6020
6021 static void yyFail (yyGLRStack* yystackp, const char* yymsg)
6022   __attribute__ ((__noreturn__));
6023 static void
6024 yyFail (yyGLRStack* yystackp, const char* yymsg)
6025 {
6026   if (yymsg != NULL)
6027     yyerror (yymsg);
6028   YYLONGJMP (yystackp->yyexception_buffer, 1);
6029 }
6030
6031 static void yyMemoryExhausted (yyGLRStack* yystackp)
6032   __attribute__ ((__noreturn__));
6033 static void
6034 yyMemoryExhausted (yyGLRStack* yystackp)
6035 {
6036   YYLONGJMP (yystackp->yyexception_buffer, 2);
6037 }
6038
6039 #if YYDEBUG || YYERROR_VERBOSE
6040 /** A printable representation of TOKEN.  */
6041 static const char*
6042 yytokenName (yySymbol yytoken)
6043 {
6044   if (yytoken == YYEMPTY)
6045     return "";
6046
6047   return yytname[yytoken];
6048 }
6049 #endif
6050
6051 /** Fill in YYVSP[YYLOW1 .. YYLOW0-1] from the chain of states starting
6052  *  at YYVSP[YYLOW0].yystate.yypred.  Leaves YYVSP[YYLOW1].yystate.yypred
6053  *  containing the pointer to the next state in the chain.  */
6054 static void yyfillin (yyGLRStackItem *, int, int);
6055 static void
6056 yyfillin (yyGLRStackItem *yyvsp, int yylow0, int yylow1)
6057 {
6058   yyGLRState* s;
6059   int i;
6060   s = yyvsp[yylow0].yystate.yypred;
6061   for (i = yylow0-1; i >= yylow1; i -= 1)
6062     {
6063       YYASSERT (s->yyresolved);
6064       yyvsp[i].yystate.yyresolved = yytrue;
6065       yyvsp[i].yystate.yysemantics.yysval = s->yysemantics.yysval;
6066       yyvsp[i].yystate.yyloc = s->yyloc;
6067       s = yyvsp[i].yystate.yypred = s->yypred;
6068     }
6069 }
6070
6071 /* Do nothing if YYNORMAL or if *YYLOW <= YYLOW1.  Otherwise, fill in
6072  * YYVSP[YYLOW1 .. *YYLOW-1] as in yyfillin and set *YYLOW = YYLOW1.
6073  * For convenience, always return YYLOW1.  */
6074 static int yyfill (yyGLRStackItem *, int *, int, yybool);
6075
6076 static int
6077 yyfill (yyGLRStackItem *yyvsp, int *yylow, int yylow1, yybool yynormal)
6078 {
6079   if (!yynormal && yylow1 < *yylow)
6080     {
6081       yyfillin (yyvsp, *yylow, yylow1);
6082       *yylow = yylow1;
6083     }
6084   return yylow1;
6085 }
6086
6087 /** Perform user action for rule number YYN, with RHS length YYRHSLEN,
6088  *  and top stack item YYVSP.  YYLVALP points to place to put semantic
6089  *  value ($$), and yylocp points to place for location information
6090  *  (@$).  Returns yyok for normal return, yyaccept for YYACCEPT,
6091  *  yyerr for YYERROR, yyabort for YYABORT.  */
6092 /*ARGSUSED*/ static YYRESULTTAG
6093 yyuserAction (yyRuleNum yyn, int yyrhslen, yyGLRStackItem* yyvsp,
6094               YYSTYPE* yyvalp,
6095               YYLTYPE* YYOPTIONAL_LOC (yylocp),
6096               yyGLRStack* yystackp
6097               )
6098 {
6099   yybool yynormal =
6100     (yystackp->yysplitPoint == NULL);
6101   int yylow;
6102 # undef yyerrok
6103 # define yyerrok (yystackp->yyerrState = 0)
6104 # undef YYACCEPT
6105 # define YYACCEPT return yyaccept
6106 # undef YYABORT
6107 # define YYABORT return yyabort
6108 # undef YYERROR
6109 # define YYERROR return yyerrok, yyerr
6110 # undef YYRECOVERING
6111 # define YYRECOVERING() (yystackp->yyerrState != 0)
6112 # undef yyclearin
6113 # define yyclearin (yychar = YYEMPTY)
6114 # undef YYFILL
6115 # define YYFILL(N) yyfill (yyvsp, &yylow, N, yynormal)
6116 # undef YYBACKUP
6117 # define YYBACKUP(Token, Value)                                                     \
6118   return yyerror (YY_("syntax error: cannot back up")),     \
6119          yyerrok, yyerr
6120
6121   yylow = 1;
6122   if (yyrhslen == 0)
6123     *yyvalp = yyval_default;
6124   else
6125     *yyvalp = yyvsp[YYFILL (1-yyrhslen)].yystate.yysemantics.yysval;
6126   YYLLOC_DEFAULT ((*yylocp), (yyvsp - yyrhslen), yyrhslen);
6127
6128   switch (yyn)
6129     {
6130         case 4:
6131
6132 /* Line 936 of glr.c  */
6133 #line 1471 "vtkParse.y"
6134     {
6135       startSig();
6136       clearType();
6137       clearTypeId();
6138       clearTemplate();
6139       closeComment();
6140     }
6141     break;
6142
6143   case 33:
6144
6145 /* Line 936 of glr.c  */
6146 #line 1524 "vtkParse.y"
6147     { pushNamespace((((yyGLRStackItem const *)yyvsp)[YYFILL ((2) - (2))].yystate.yysemantics.yysval.str)); }
6148     break;
6149
6150   case 34:
6151
6152 /* Line 936 of glr.c  */
6153 #line 1525 "vtkParse.y"
6154     { popNamespace(); }
6155     break;
6156
6157   case 43:
6158
6159 /* Line 936 of glr.c  */
6160 #line 1548 "vtkParse.y"
6161     { pushType(); }
6162     break;
6163
6164   case 44:
6165
6166 /* Line 936 of glr.c  */
6167 #line 1549 "vtkParse.y"
6168     {
6169       const char *name = (currentClass ? currentClass->Name : NULL);
6170       popType();
6171       clearTypeId();
6172       if (name)
6173         {
6174         setTypeId(name);
6175         setTypeBase(guess_id_type(name));
6176         }
6177       end_class();
6178     }
6179     break;
6180
6181   case 45:
6182
6183 /* Line 936 of glr.c  */
6184 #line 1563 "vtkParse.y"
6185     {
6186       start_class((((yyGLRStackItem const *)yyvsp)[YYFILL ((3) - (5))].yystate.yysemantics.yysval.str), (((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (5))].yystate.yysemantics.yysval.integer));
6187       currentClass->IsFinal = (((yyGLRStackItem const *)yyvsp)[YYFILL ((4) - (5))].yystate.yysemantics.yysval.integer);
6188     }
6189     break;
6190
6191   case 47:
6192
6193 /* Line 936 of glr.c  */
6194 #line 1569 "vtkParse.y"
6195     {
6196       start_class((((yyGLRStackItem const *)yyvsp)[YYFILL ((3) - (4))].yystate.yysemantics.yysval.str), (((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (4))].yystate.yysemantics.yysval.integer));
6197       currentClass->IsFinal = (((yyGLRStackItem const *)yyvsp)[YYFILL ((4) - (4))].yystate.yysemantics.yysval.integer);
6198     }
6199     break;
6200
6201   case 48:
6202
6203 /* Line 936 of glr.c  */
6204 #line 1574 "vtkParse.y"
6205     {
6206       start_class(NULL, (((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (3))].yystate.yysemantics.yysval.integer));
6207     }
6208     break;
6209
6210   case 50:
6211
6212 /* Line 936 of glr.c  */
6213 #line 1579 "vtkParse.y"
6214     {
6215       start_class(NULL, (((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (2))].yystate.yysemantics.yysval.integer));
6216     }
6217     break;
6218
6219   case 51:
6220
6221 /* Line 936 of glr.c  */
6222 #line 1584 "vtkParse.y"
6223     { ((*yyvalp).integer) = 0; }
6224     break;
6225
6226   case 52:
6227
6228 /* Line 936 of glr.c  */
6229 #line 1585 "vtkParse.y"
6230     { ((*yyvalp).integer) = 1; }
6231     break;
6232
6233   case 53:
6234
6235 /* Line 936 of glr.c  */
6236 #line 1586 "vtkParse.y"
6237     { ((*yyvalp).integer) = 2; }
6238     break;
6239
6240   case 54:
6241
6242 /* Line 936 of glr.c  */
6243 #line 1590 "vtkParse.y"
6244     { ((*yyvalp).str) = vtkstrcat((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (3))].yystate.yysemantics.yysval.str), (((yyGLRStackItem const *)yyvsp)[YYFILL ((2) - (3))].yystate.yysemantics.yysval.str)); }
6245     break;
6246
6247   case 55:
6248
6249 /* Line 936 of glr.c  */
6250 #line 1592 "vtkParse.y"
6251     { ((*yyvalp).str) = vtkstrcat3("::", (((yyGLRStackItem const *)yyvsp)[YYFILL ((2) - (4))].yystate.yysemantics.yysval.str), (((yyGLRStackItem const *)yyvsp)[YYFILL ((3) - (4))].yystate.yysemantics.yysval.str)); }
6252     break;
6253
6254   case 59:
6255
6256 /* Line 936 of glr.c  */
6257 #line 1600 "vtkParse.y"
6258     { ((*yyvalp).integer) = 0; }
6259     break;
6260
6261   case 60:
6262
6263 /* Line 936 of glr.c  */
6264 #line 1601 "vtkParse.y"
6265     { ((*yyvalp).integer) = (strcmp((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (1))].yystate.yysemantics.yysval.str), "final") == 0); }
6266     break;
6267
6268   case 62:
6269
6270 /* Line 936 of glr.c  */
6271 #line 1605 "vtkParse.y"
6272     {
6273       startSig();
6274       clearType();
6275       clearTypeId();
6276       clearTemplate();
6277       closeComment();
6278     }
6279     break;
6280
6281   case 65:
6282
6283 /* Line 936 of glr.c  */
6284 #line 1617 "vtkParse.y"
6285     { access_level = VTK_ACCESS_PUBLIC; }
6286     break;
6287
6288   case 66:
6289
6290 /* Line 936 of glr.c  */
6291 #line 1618 "vtkParse.y"
6292     { access_level = VTK_ACCESS_PRIVATE; }
6293     break;
6294
6295   case 67:
6296
6297 /* Line 936 of glr.c  */
6298 #line 1619 "vtkParse.y"
6299     { access_level = VTK_ACCESS_PROTECTED; }
6300     break;
6301
6302   case 91:
6303
6304 /* Line 936 of glr.c  */
6305 #line 1649 "vtkParse.y"
6306     { output_friend_function(); }
6307     break;
6308
6309   case 94:
6310
6311 /* Line 936 of glr.c  */
6312 #line 1657 "vtkParse.y"
6313     { add_base_class(currentClass, (((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (2))].yystate.yysemantics.yysval.str), access_level, (((yyGLRStackItem const *)yyvsp)[YYFILL ((2) - (2))].yystate.yysemantics.yysval.integer)); }
6314     break;
6315
6316   case 95:
6317
6318 /* Line 936 of glr.c  */
6319 #line 1659 "vtkParse.y"
6320     { add_base_class(currentClass, (((yyGLRStackItem const *)yyvsp)[YYFILL ((3) - (4))].yystate.yysemantics.yysval.str), (((yyGLRStackItem const *)yyvsp)[YYFILL ((2) - (4))].yystate.yysemantics.yysval.integer),
6321                      (VTK_PARSE_VIRTUAL | (((yyGLRStackItem const *)yyvsp)[YYFILL ((4) - (4))].yystate.yysemantics.yysval.integer))); }
6322     break;
6323
6324   case 96:
6325
6326 /* Line 936 of glr.c  */
6327 #line 1662 "vtkParse.y"
6328     { add_base_class(currentClass, (((yyGLRStackItem const *)yyvsp)[YYFILL ((3) - (4))].yystate.yysemantics.yysval.str), (((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (4))].yystate.yysemantics.yysval.integer),
6329                      ((((yyGLRStackItem const *)yyvsp)[YYFILL ((2) - (4))].yystate.yysemantics.yysval.integer) | (((yyGLRStackItem const *)yyvsp)[YYFILL ((4) - (4))].yystate.yysemantics.yysval.integer))); }
6330     break;
6331
6332   case 97:
6333
6334 /* Line 936 of glr.c  */
6335 #line 1666 "vtkParse.y"
6336     { ((*yyvalp).integer) = 0; }
6337     break;
6338
6339   case 98:
6340
6341 /* Line 936 of glr.c  */
6342 #line 1667 "vtkParse.y"
6343     { ((*yyvalp).integer) = VTK_PARSE_VIRTUAL; }
6344     break;
6345
6346   case 99:
6347
6348 /* Line 936 of glr.c  */
6349 #line 1670 "vtkParse.y"
6350     { ((*yyvalp).integer) = access_level; }
6351     break;
6352
6353   case 101:
6354
6355 /* Line 936 of glr.c  */
6356 #line 1674 "vtkParse.y"
6357     { ((*yyvalp).integer) = VTK_ACCESS_PUBLIC; }
6358     break;
6359
6360   case 102:
6361
6362 /* Line 936 of glr.c  */
6363 #line 1675 "vtkParse.y"
6364     { ((*yyvalp).integer) = VTK_ACCESS_PRIVATE; }
6365     break;
6366
6367   case 103:
6368
6369 /* Line 936 of glr.c  */
6370 #line 1676 "vtkParse.y"
6371     { ((*yyvalp).integer) = VTK_ACCESS_PROTECTED; }
6372     break;
6373
6374   case 109:
6375
6376 /* Line 936 of glr.c  */
6377 #line 1698 "vtkParse.y"
6378     { pushType(); }
6379     break;
6380
6381   case 110:
6382
6383 /* Line 936 of glr.c  */
6384 #line 1699 "vtkParse.y"
6385     {
6386       popType();
6387       clearTypeId();
6388       if ((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (5))].yystate.yysemantics.yysval.str) != NULL)
6389         {
6390         setTypeId((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (5))].yystate.yysemantics.yysval.str));
6391         setTypeBase(guess_id_type((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (5))].yystate.yysemantics.yysval.str)));
6392         }
6393       end_enum();
6394     }
6395     break;
6396
6397   case 111:
6398
6399 /* Line 936 of glr.c  */
6400 #line 1712 "vtkParse.y"
6401     {
6402       start_enum((((yyGLRStackItem const *)yyvsp)[YYFILL ((3) - (4))].yystate.yysemantics.yysval.str), (((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (4))].yystate.yysemantics.yysval.integer), (((yyGLRStackItem const *)yyvsp)[YYFILL ((4) - (4))].yystate.yysemantics.yysval.integer), getTypeId());
6403       clearTypeId();
6404       ((*yyvalp).str) = (((yyGLRStackItem const *)yyvsp)[YYFILL ((3) - (4))].yystate.yysemantics.yysval.str);
6405     }
6406     break;
6407
6408   case 112:
6409
6410 /* Line 936 of glr.c  */
6411 #line 1718 "vtkParse.y"
6412     {
6413       start_enum(NULL, (((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (3))].yystate.yysemantics.yysval.integer), (((yyGLRStackItem const *)yyvsp)[YYFILL ((3) - (3))].yystate.yysemantics.yysval.integer), getTypeId());
6414       clearTypeId();
6415       ((*yyvalp).str) = NULL;
6416     }
6417     break;
6418
6419   case 113:
6420
6421 /* Line 936 of glr.c  */
6422 #line 1725 "vtkParse.y"
6423     { ((*yyvalp).integer) = 0; }
6424     break;
6425
6426   case 114:
6427
6428 /* Line 936 of glr.c  */
6429 #line 1726 "vtkParse.y"
6430     { ((*yyvalp).integer) = 1; }
6431     break;
6432
6433   case 115:
6434
6435 /* Line 936 of glr.c  */
6436 #line 1727 "vtkParse.y"
6437     { ((*yyvalp).integer) = 1; }
6438     break;
6439
6440   case 116:
6441
6442 /* Line 936 of glr.c  */
6443 #line 1730 "vtkParse.y"
6444     { ((*yyvalp).integer) = 0; }
6445     break;
6446
6447   case 117:
6448
6449 /* Line 936 of glr.c  */
6450 #line 1731 "vtkParse.y"
6451     { pushType(); }
6452     break;
6453
6454   case 118:
6455
6456 /* Line 936 of glr.c  */
6457 #line 1732 "vtkParse.y"
6458     { ((*yyvalp).integer) = getType(); popType(); }
6459     break;
6460
6461   case 122:
6462
6463 /* Line 936 of glr.c  */
6464 #line 1739 "vtkParse.y"
6465     { add_enum((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (1))].yystate.yysemantics.yysval.str), NULL); }
6466     break;
6467
6468   case 123:
6469
6470 /* Line 936 of glr.c  */
6471 #line 1740 "vtkParse.y"
6472     { postSig("="); markSig(); }
6473     break;
6474
6475   case 124:
6476
6477 /* Line 936 of glr.c  */
6478 #line 1741 "vtkParse.y"
6479     { chopSig(); add_enum((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (4))].yystate.yysemantics.yysval.str), copySig()); }
6480     break;
6481
6482   case 147:
6483
6484 /* Line 936 of glr.c  */
6485 #line 1801 "vtkParse.y"
6486     { pushFunction(); postSig("("); }
6487     break;
6488
6489   case 148:
6490
6491 /* Line 936 of glr.c  */
6492 #line 1802 "vtkParse.y"
6493     { postSig(")"); }
6494     break;
6495
6496   case 149:
6497
6498 /* Line 936 of glr.c  */
6499 #line 1803 "vtkParse.y"
6500     { ((*yyvalp).integer) = (VTK_PARSE_FUNCTION | (((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (8))].yystate.yysemantics.yysval.integer)); popFunction(); }
6501     break;
6502
6503   case 150:
6504
6505 /* Line 936 of glr.c  */
6506 #line 1807 "vtkParse.y"
6507     {
6508       ValueInfo *item = (ValueInfo *)malloc(sizeof(ValueInfo));
6509       vtkParse_InitValue(item);
6510       item->ItemType = VTK_TYPEDEF_INFO;
6511       item->Access = access_level;
6512
6513       handle_complex_type(item, getType(), (((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (1))].yystate.yysemantics.yysval.integer), getSig());
6514
6515       if (getVarName())
6516         {
6517         item->Name = getVarName();
6518         }
6519
6520       if (item->Class == NULL)
6521         {
6522         vtkParse_FreeValue(item);
6523         }
6524       else if (currentClass)
6525         {
6526         vtkParse_AddTypedefToClass(currentClass, item);
6527         }
6528       else
6529         {
6530         vtkParse_AddTypedefToNamespace(currentNamespace, item);
6531         }
6532     }
6533     break;
6534
6535   case 151:
6536
6537 /* Line 936 of glr.c  */
6538 #line 1840 "vtkParse.y"
6539     { add_using((((yyGLRStackItem const *)yyvsp)[YYFILL ((2) - (3))].yystate.yysemantics.yysval.str), 0); }
6540     break;
6541
6542   case 153:
6543
6544 /* Line 936 of glr.c  */
6545 #line 1844 "vtkParse.y"
6546     { ((*yyvalp).str) = (((yyGLRStackItem const *)yyvsp)[YYFILL ((2) - (2))].yystate.yysemantics.yysval.str); }
6547     break;
6548
6549   case 154:
6550
6551 /* Line 936 of glr.c  */
6552 #line 1846 "vtkParse.y"
6553     { ((*yyvalp).str) = vtkstrcat((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (2))].yystate.yysemantics.yysval.str), (((yyGLRStackItem const *)yyvsp)[YYFILL ((2) - (2))].yystate.yysemantics.yysval.str)); }
6554     break;
6555
6556   case 155:
6557
6558 /* Line 936 of glr.c  */
6559 #line 1848 "vtkParse.y"
6560     { ((*yyvalp).str) = vtkstrcat((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (2))].yystate.yysemantics.yysval.str), (((yyGLRStackItem const *)yyvsp)[YYFILL ((2) - (2))].yystate.yysemantics.yysval.str)); }
6561     break;
6562
6563   case 156:
6564
6565 /* Line 936 of glr.c  */
6566 #line 1850 "vtkParse.y"
6567     { ((*yyvalp).str) = vtkstrcat3((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (3))].yystate.yysemantics.yysval.str), (((yyGLRStackItem const *)yyvsp)[YYFILL ((2) - (3))].yystate.yysemantics.yysval.str), (((yyGLRStackItem const *)yyvsp)[YYFILL ((3) - (3))].yystate.yysemantics.yysval.str)); }
6568     break;
6569
6570   case 157:
6571
6572 /* Line 936 of glr.c  */
6573 #line 1852 "vtkParse.y"
6574     { ((*yyvalp).str) = vtkstrcat3((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (3))].yystate.yysemantics.yysval.str), (((yyGLRStackItem const *)yyvsp)[YYFILL ((2) - (3))].yystate.yysemantics.yysval.str), (((yyGLRStackItem const *)yyvsp)[YYFILL ((3) - (3))].yystate.yysemantics.yysval.str)); }
6575     break;
6576
6577   case 158:
6578
6579 /* Line 936 of glr.c  */
6580 #line 1855 "vtkParse.y"
6581     { add_using((((yyGLRStackItem const *)yyvsp)[YYFILL ((3) - (4))].yystate.yysemantics.yysval.str), 1); }
6582     break;
6583
6584   case 159:
6585
6586 /* Line 936 of glr.c  */
6587 #line 1858 "vtkParse.y"
6588     { markSig(); }
6589     break;
6590
6591   case 160:
6592
6593 /* Line 936 of glr.c  */
6594 #line 1860 "vtkParse.y"
6595     {
6596       ValueInfo *item = (ValueInfo *)malloc(sizeof(ValueInfo));
6597       vtkParse_InitValue(item);
6598       item->ItemType = VTK_TYPEDEF_INFO;
6599       item->Access = access_level;
6600
6601       handle_complex_type(item, getType(), (((yyGLRStackItem const *)yyvsp)[YYFILL ((6) - (8))].yystate.yysemantics.yysval.integer), copySig());
6602
6603       item->Name = (((yyGLRStackItem const *)yyvsp)[YYFILL ((2) - (8))].yystate.yysemantics.yysval.str);
6604
6605       if (currentTemplate)
6606         {
6607         vtkParse_FreeValue(item);
6608         }
6609       else if (currentClass)
6610         {
6611         vtkParse_AddTypedefToClass(currentClass, item);
6612         }
6613       else
6614         {
6615         vtkParse_AddTypedefToNamespace(currentNamespace, item);
6616         }
6617     }
6618     break;
6619
6620   case 161:
6621
6622 /* Line 936 of glr.c  */
6623 #line 1890 "vtkParse.y"
6624     { postSig("template<> "); clearTypeId(); }
6625     break;
6626
6627   case 162:
6628
6629 /* Line 936 of glr.c  */
6630 #line 1892 "vtkParse.y"
6631     {
6632       postSig("template<");
6633       pushType();
6634       clearType();
6635       clearTypeId();
6636       startTemplate();
6637     }
6638     break;
6639
6640   case 163:
6641
6642 /* Line 936 of glr.c  */
6643 #line 1900 "vtkParse.y"
6644     {
6645       chopSig();
6646       if (getSig()[getSigLength()-1] == '>') { postSig(" "); }
6647       postSig("> ");
6648       clearTypeId();
6649       popType();
6650     }
6651     break;
6652
6653   case 165:
6654
6655 /* Line 936 of glr.c  */
6656 #line 1911 "vtkParse.y"
6657     { chopSig(); postSig(", "); clearType(); clearTypeId(); }
6658     break;
6659
6660   case 167:
6661
6662 /* Line 936 of glr.c  */
6663 #line 1915 "vtkParse.y"
6664     { markSig(); }
6665     break;
6666
6667   case 168:
6668
6669 /* Line 936 of glr.c  */
6670 #line 1917 "vtkParse.y"
6671     { add_template_parameter(getType(), (((yyGLRStackItem const *)yyvsp)[YYFILL ((3) - (3))].yystate.yysemantics.yysval.integer), copySig()); }
6672     break;
6673
6674   case 170:
6675
6676 /* Line 936 of glr.c  */
6677 #line 1919 "vtkParse.y"
6678     { markSig(); }
6679     break;
6680
6681   case 171:
6682
6683 /* Line 936 of glr.c  */
6684 #line 1921 "vtkParse.y"
6685     { add_template_parameter(0, (((yyGLRStackItem const *)yyvsp)[YYFILL ((3) - (3))].yystate.yysemantics.yysval.integer), copySig()); }
6686     break;
6687
6688   case 173:
6689
6690 /* Line 936 of glr.c  */
6691 #line 1923 "vtkParse.y"
6692     { pushTemplate(); markSig(); }
6693     break;
6694
6695   case 174:
6696
6697 /* Line 936 of glr.c  */
6698 #line 1924 "vtkParse.y"
6699     { postSig("class "); }
6700     break;
6701
6702   case 175:
6703
6704 /* Line 936 of glr.c  */
6705 #line 1926 "vtkParse.y"
6706     {
6707       int i;
6708       TemplateInfo *newTemplate = currentTemplate;
6709       popTemplate();
6710       add_template_parameter(0, (((yyGLRStackItem const *)yyvsp)[YYFILL ((5) - (5))].yystate.yysemantics.yysval.integer), copySig());
6711       i = currentTemplate->NumberOfParameters-1;
6712       currentTemplate->Parameters[i]->Template = newTemplate;
6713     }
6714     break;
6715
6716   case 177:
6717
6718 /* Line 936 of glr.c  */
6719 #line 1937 "vtkParse.y"
6720     { ((*yyvalp).integer) = 0; }
6721     break;
6722
6723   case 178:
6724
6725 /* Line 936 of glr.c  */
6726 #line 1938 "vtkParse.y"
6727     { postSig("..."); ((*yyvalp).integer) = VTK_PARSE_PACK; }
6728     break;
6729
6730   case 179:
6731
6732 /* Line 936 of glr.c  */
6733 #line 1941 "vtkParse.y"
6734     { postSig("class "); }
6735     break;
6736
6737   case 180:
6738
6739 /* Line 936 of glr.c  */
6740 #line 1942 "vtkParse.y"
6741     { postSig("typename "); }
6742     break;
6743
6744   case 183:
6745
6746 /* Line 936 of glr.c  */
6747 #line 1948 "vtkParse.y"
6748     { postSig("="); markSig(); }
6749     break;
6750
6751   case 184:
6752
6753 /* Line 936 of glr.c  */
6754 #line 1950 "vtkParse.y"
6755     {
6756       int i = currentTemplate->NumberOfParameters-1;
6757       ValueInfo *param = currentTemplate->Parameters[i];
6758       chopSig();
6759       param->Value = copySig();
6760     }
6761     break;
6762
6763   case 187:
6764
6765 /* Line 936 of glr.c  */
6766 #line 1967 "vtkParse.y"
6767     { output_function(); }
6768     break;
6769
6770   case 188:
6771
6772 /* Line 936 of glr.c  */
6773 #line 1968 "vtkParse.y"
6774     { output_function(); }
6775     break;
6776
6777   case 189:
6778
6779 /* Line 936 of glr.c  */
6780 #line 1969 "vtkParse.y"
6781     { reject_function(); }
6782     break;
6783
6784   case 190:
6785
6786 /* Line 936 of glr.c  */
6787 #line 1970 "vtkParse.y"
6788     { reject_function(); }
6789     break;
6790
6791   case 198:
6792
6793 /* Line 936 of glr.c  */
6794 #line 1986 "vtkParse.y"
6795     { output_function(); }
6796     break;
6797
6798   case 208:
6799
6800 /* Line 936 of glr.c  */
6801 #line 2004 "vtkParse.y"
6802     {
6803       postSig("(");
6804       currentFunction->IsExplicit = ((getType() & VTK_PARSE_EXPLICIT) != 0);
6805       set_return(currentFunction, getType(), getTypeId(), 0);
6806     }
6807     break;
6808
6809   case 209:
6810
6811 /* Line 936 of glr.c  */
6812 #line 2009 "vtkParse.y"
6813     { postSig(")"); }
6814     break;
6815
6816   case 210:
6817
6818 /* Line 936 of glr.c  */
6819 #line 2011 "vtkParse.y"
6820     {
6821       postSig(";");
6822       closeSig();
6823       currentFunction->IsOperator = 1;
6824       currentFunction->Name = "operator typecast";
6825       currentFunction->Comment = vtkstrdup(getComment());
6826       vtkParseDebug("Parsed operator", "operator typecast");
6827     }
6828     break;
6829
6830   case 211:
6831
6832 /* Line 936 of glr.c  */
6833 #line 2022 "vtkParse.y"
6834     { ((*yyvalp).str) = copySig(); }
6835     break;
6836
6837   case 212:
6838
6839 /* Line 936 of glr.c  */
6840 #line 2025 "vtkParse.y"
6841     { postSig(")"); }
6842     break;
6843
6844   case 213:
6845
6846 /* Line 936 of glr.c  */
6847 #line 2027 "vtkParse.y"
6848     {
6849       postSig(";");
6850       closeSig();
6851       currentFunction->Name = (((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (4))].yystate.yysemantics.yysval.str);
6852       currentFunction->Comment = vtkstrdup(getComment());
6853       vtkParseDebug("Parsed operator", currentFunction->Name);
6854     }
6855     break;
6856
6857   case 214:
6858
6859 /* Line 936 of glr.c  */
6860 #line 2037 "vtkParse.y"
6861     {
6862       postSig("(");
6863       currentFunction->IsOperator = 1;
6864       set_return(currentFunction, getType(), getTypeId(), 0);
6865     }
6866     break;
6867
6868   case 216:
6869
6870 /* Line 936 of glr.c  */
6871 #line 2046 "vtkParse.y"
6872     { chopSig(); ((*yyvalp).str) = vtkstrcat(copySig(), (((yyGLRStackItem const *)yyvsp)[YYFILL ((2) - (2))].yystate.yysemantics.yysval.str)); postSig((((yyGLRStackItem const *)yyvsp)[YYFILL ((2) - (2))].yystate.yysemantics.yysval.str)); }
6873     break;
6874
6875   case 217:
6876
6877 /* Line 936 of glr.c  */
6878 #line 2049 "vtkParse.y"
6879     { markSig(); postSig("operator "); }
6880     break;
6881
6882   case 218:
6883
6884 /* Line 936 of glr.c  */
6885 #line 2053 "vtkParse.y"
6886     {
6887       postSig(";");
6888       closeSig();
6889       currentFunction->Name = (((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (3))].yystate.yysemantics.yysval.str);
6890       currentFunction->Comment = vtkstrdup(getComment());
6891       vtkParseDebug("Parsed func", currentFunction->Name);
6892     }
6893     break;
6894
6895   case 221:
6896
6897 /* Line 936 of glr.c  */
6898 #line 2065 "vtkParse.y"
6899     { postSig(" throw "); }
6900     break;
6901
6902   case 222:
6903
6904 /* Line 936 of glr.c  */
6905 #line 2065 "vtkParse.y"
6906     { chopSig(); }
6907     break;
6908
6909   case 223:
6910
6911 /* Line 936 of glr.c  */
6912 #line 2066 "vtkParse.y"
6913     { postSig(" const"); currentFunction->IsConst = 1; }
6914     break;
6915
6916   case 224:
6917
6918 /* Line 936 of glr.c  */
6919 #line 2068 "vtkParse.y"
6920     {
6921       postSig(" = 0");
6922       currentFunction->IsPureVirtual = 1;
6923       if (currentClass) { currentClass->IsAbstract = 1; }
6924     }
6925     break;
6926
6927   case 225:
6928
6929 /* Line 936 of glr.c  */
6930 #line 2074 "vtkParse.y"
6931     {
6932       postSig(" "); postSig((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (1))].yystate.yysemantics.yysval.str));
6933       if (strcmp((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (1))].yystate.yysemantics.yysval.str), "final") == 0) { currentFunction->IsFinal = 1; }
6934     }
6935     break;
6936
6937   case 226:
6938
6939 /* Line 936 of glr.c  */
6940 #line 2078 "vtkParse.y"
6941     { chopSig(); }
6942     break;
6943
6944   case 229:
6945
6946 /* Line 936 of glr.c  */
6947 #line 2083 "vtkParse.y"
6948     { postSig(" noexcept"); }
6949     break;
6950
6951   case 230:
6952
6953 /* Line 936 of glr.c  */
6954 #line 2086 "vtkParse.y"
6955     { currentFunction->IsDeleted = 1; }
6956     break;
6957
6958   case 234:
6959
6960 /* Line 936 of glr.c  */
6961 #line 2093 "vtkParse.y"
6962     { postSig(" -> "); clearType(); clearTypeId(); }
6963     break;
6964
6965   case 235:
6966
6967 /* Line 936 of glr.c  */
6968 #line 2095 "vtkParse.y"
6969     {
6970       chopSig();
6971       set_return(currentFunction, getType(), getTypeId(), 0);
6972     }
6973     break;
6974
6975   case 242:
6976
6977 /* Line 936 of glr.c  */
6978 #line 2113 "vtkParse.y"
6979     {
6980       postSig("(");
6981       set_return(currentFunction, getType(), getTypeId(), 0);
6982     }
6983     break;
6984
6985   case 243:
6986
6987 /* Line 936 of glr.c  */
6988 #line 2117 "vtkParse.y"
6989     { postSig(")"); }
6990     break;
6991
6992   case 244:
6993
6994 /* Line 936 of glr.c  */
6995 #line 2125 "vtkParse.y"
6996     { closeSig(); }
6997     break;
6998
6999   case 245:
7000
7001 /* Line 936 of glr.c  */
7002 #line 2126 "vtkParse.y"
7003     { openSig(); }
7004     break;
7005
7006   case 246:
7007
7008 /* Line 936 of glr.c  */
7009 #line 2128 "vtkParse.y"
7010     {
7011       postSig(";");
7012       closeSig();
7013       if (getType() & VTK_PARSE_VIRTUAL)
7014         {
7015         currentFunction->IsVirtual = 1;
7016         }
7017       if (getType() & VTK_PARSE_EXPLICIT)
7018         {
7019         currentFunction->IsExplicit = 1;
7020         }
7021       currentFunction->Name = (((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (6))].yystate.yysemantics.yysval.str);
7022       currentFunction->Comment = vtkstrdup(getComment());
7023       vtkParseDebug("Parsed func", currentFunction->Name);
7024     }
7025     break;
7026
7027   case 247:
7028
7029 /* Line 936 of glr.c  */
7030 #line 2145 "vtkParse.y"
7031     { pushType(); postSig("("); }
7032     break;
7033
7034   case 248:
7035
7036 /* Line 936 of glr.c  */
7037 #line 2147 "vtkParse.y"
7038     { popType(); postSig(")"); }
7039     break;
7040
7041   case 255:
7042
7043 /* Line 936 of glr.c  */
7044 #line 2164 "vtkParse.y"
7045     { clearType(); clearTypeId(); }
7046     break;
7047
7048   case 257:
7049
7050 /* Line 936 of glr.c  */
7051 #line 2167 "vtkParse.y"
7052     { clearType(); clearTypeId(); }
7053     break;
7054
7055   case 258:
7056
7057 /* Line 936 of glr.c  */
7058 #line 2168 "vtkParse.y"
7059     { clearType(); clearTypeId(); postSig(", "); }
7060     break;
7061
7062   case 260:
7063
7064 /* Line 936 of glr.c  */
7065 #line 2171 "vtkParse.y"
7066     { currentFunction->IsVariadic = 1; postSig(", ..."); }
7067     break;
7068
7069   case 261:
7070
7071 /* Line 936 of glr.c  */
7072 #line 2173 "vtkParse.y"
7073     { currentFunction->IsVariadic = 1; postSig("..."); }
7074     break;
7075
7076   case 262:
7077
7078 /* Line 936 of glr.c  */
7079 #line 2176 "vtkParse.y"
7080     { markSig(); }
7081     break;
7082
7083   case 263:
7084
7085 /* Line 936 of glr.c  */
7086 #line 2178 "vtkParse.y"
7087     {
7088       ValueInfo *param = (ValueInfo *)malloc(sizeof(ValueInfo));
7089       vtkParse_InitValue(param);
7090
7091       handle_complex_type(param, getType(), (((yyGLRStackItem const *)yyvsp)[YYFILL ((3) - (3))].yystate.yysemantics.yysval.integer), copySig());
7092       add_legacy_parameter(currentFunction, param);
7093
7094       if (getVarName())
7095         {
7096         param->Name = getVarName();
7097         }
7098
7099       vtkParse_AddParameterToFunction(currentFunction, param);
7100     }
7101     break;
7102
7103   case 264:
7104
7105 /* Line 936 of glr.c  */
7106 #line 2193 "vtkParse.y"
7107     {
7108       int i = currentFunction->NumberOfParameters-1;
7109       if (getVarValue())
7110         {
7111         currentFunction->Parameters[i]->Value = getVarValue();
7112         }
7113     }
7114     break;
7115
7116   case 265:
7117
7118 /* Line 936 of glr.c  */
7119 #line 2202 "vtkParse.y"
7120     { clearVarValue(); }
7121     break;
7122
7123   case 267:
7124
7125 /* Line 936 of glr.c  */
7126 #line 2206 "vtkParse.y"
7127     { postSig("="); clearVarValue(); markSig(); }
7128     break;
7129
7130   case 268:
7131
7132 /* Line 936 of glr.c  */
7133 #line 2207 "vtkParse.y"
7134     { chopSig(); setVarValue(copySig()); }
7135     break;
7136
7137   case 269:
7138
7139 /* Line 936 of glr.c  */
7140 #line 2208 "vtkParse.y"
7141     { clearVarValue(); markSig(); }
7142     break;
7143
7144   case 270:
7145
7146 /* Line 936 of glr.c  */
7147 #line 2209 "vtkParse.y"
7148     { chopSig(); setVarValue(copySig()); }
7149     break;
7150
7151   case 272:
7152
7153 /* Line 936 of glr.c  */
7154 #line 2220 "vtkParse.y"
7155     {
7156       unsigned int type = getType();
7157       ValueInfo *var = (ValueInfo *)malloc(sizeof(ValueInfo));
7158       vtkParse_InitValue(var);
7159       var->ItemType = VTK_VARIABLE_INFO;
7160       var->Access = access_level;
7161
7162       handle_complex_type(var, type, (((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (2))].yystate.yysemantics.yysval.integer), getSig());
7163
7164       var->Name = getVarName();
7165
7166       if (getVarValue())
7167         {
7168         var->Value = getVarValue();
7169         }
7170
7171       /* Is this a typedef? */
7172       if ((type & VTK_PARSE_TYPEDEF) != 0)
7173         {
7174         var->ItemType = VTK_TYPEDEF_INFO;
7175         if (currentClass)
7176           {
7177           vtkParse_AddTypedefToClass(currentClass, var);
7178           }
7179         else
7180           {
7181           vtkParse_AddTypedefToNamespace(currentNamespace, var);
7182           }
7183         }
7184       /* Is this a constant? */
7185       else if (((type & VTK_PARSE_CONST) != 0) && var->Value != NULL &&
7186           (((type & VTK_PARSE_INDIRECT) == 0) ||
7187            ((type & VTK_PARSE_INDIRECT) == VTK_PARSE_ARRAY)))
7188         {
7189         var->ItemType = VTK_CONSTANT_INFO;
7190         if (currentClass)
7191           {
7192           vtkParse_AddConstantToClass(currentClass, var);
7193           }
7194         else
7195           {
7196           vtkParse_AddConstantToNamespace(currentNamespace, var);
7197           }
7198         }
7199       /* This is a true variable i.e. not constant */
7200       else
7201         {
7202         if (currentClass)
7203           {
7204           vtkParse_AddVariableToClass(currentClass, var);
7205           }
7206         else
7207           {
7208           vtkParse_AddVariableToNamespace(currentNamespace, var);
7209           }
7210         }
7211     }
7212     break;
7213
7214   case 276:
7215
7216 /* Line 936 of glr.c  */
7217 #line 2282 "vtkParse.y"
7218     { postSig(", "); }
7219     break;
7220
7221   case 279:
7222
7223 /* Line 936 of glr.c  */
7224 #line 2288 "vtkParse.y"
7225     { setTypePtr(0); }
7226     break;
7227
7228   case 280:
7229
7230 /* Line 936 of glr.c  */
7231 #line 2289 "vtkParse.y"
7232     { setTypePtr((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (1))].yystate.yysemantics.yysval.integer)); }
7233     break;
7234
7235   case 281:
7236
7237 /* Line 936 of glr.c  */
7238 #line 2294 "vtkParse.y"
7239     {
7240       if ((((yyGLRStackItem const *)yyvsp)[YYFILL ((3) - (3))].yystate.yysemantics.yysval.integer) == VTK_PARSE_FUNCTION)
7241         {
7242         ((*yyvalp).integer) = (VTK_PARSE_FUNCTION_PTR | (((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (3))].yystate.yysemantics.yysval.integer));
7243         }
7244       else
7245         {
7246         ((*yyvalp).integer) = (((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (3))].yystate.yysemantics.yysval.integer);
7247         }
7248     }
7249     break;
7250
7251   case 282:
7252
7253 /* Line 936 of glr.c  */
7254 #line 2304 "vtkParse.y"
7255     { postSig(")"); }
7256     break;
7257
7258   case 283:
7259
7260 /* Line 936 of glr.c  */
7261 #line 2306 "vtkParse.y"
7262     {
7263       const char *scope = getScope();
7264       unsigned int parens = add_indirection((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (6))].yystate.yysemantics.yysval.integer), (((yyGLRStackItem const *)yyvsp)[YYFILL ((3) - (6))].yystate.yysemantics.yysval.integer));
7265       if ((((yyGLRStackItem const *)yyvsp)[YYFILL ((6) - (6))].yystate.yysemantics.yysval.integer) == VTK_PARSE_FUNCTION)
7266         {
7267         if (scope) { scope = vtkstrndup(scope, strlen(scope) - 2); }
7268         getFunction()->Class = scope;
7269         ((*yyvalp).integer) = (parens | VTK_PARSE_FUNCTION);
7270         }
7271       else if ((((yyGLRStackItem const *)yyvsp)[YYFILL ((6) - (6))].yystate.yysemantics.yysval.integer) == VTK_PARSE_ARRAY)
7272         {
7273         ((*yyvalp).integer) = add_indirection_to_array(parens);
7274         }
7275     }
7276     break;
7277
7278   case 284:
7279
7280 /* Line 936 of glr.c  */
7281 #line 2324 "vtkParse.y"
7282     { ((*yyvalp).integer) = (((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (3))].yystate.yysemantics.yysval.integer); }
7283     break;
7284
7285   case 285:
7286
7287 /* Line 936 of glr.c  */
7288 #line 2325 "vtkParse.y"
7289     { postSig(")"); }
7290     break;
7291
7292   case 286:
7293
7294 /* Line 936 of glr.c  */
7295 #line 2327 "vtkParse.y"
7296     {
7297       const char *scope = getScope();
7298       unsigned int parens = add_indirection((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (5))].yystate.yysemantics.yysval.integer), (((yyGLRStackItem const *)yyvsp)[YYFILL ((2) - (5))].yystate.yysemantics.yysval.integer));
7299       if ((((yyGLRStackItem const *)yyvsp)[YYFILL ((5) - (5))].yystate.yysemantics.yysval.integer) == VTK_PARSE_FUNCTION)
7300         {
7301         if (scope) { scope = vtkstrndup(scope, strlen(scope) - 2); }
7302         getFunction()->Class = scope;
7303         ((*yyvalp).integer) = (parens | VTK_PARSE_FUNCTION);
7304         }
7305       else if ((((yyGLRStackItem const *)yyvsp)[YYFILL ((5) - (5))].yystate.yysemantics.yysval.integer) == VTK_PARSE_ARRAY)
7306         {
7307         ((*yyvalp).integer) = add_indirection_to_array(parens);
7308         }
7309     }
7310     break;
7311
7312   case 287:
7313
7314 /* Line 936 of glr.c  */
7315 #line 2343 "vtkParse.y"
7316     { postSig("("); scopeSig((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (1))].yystate.yysemantics.yysval.str)); postSig("*"); }
7317     break;
7318
7319   case 288:
7320
7321 /* Line 936 of glr.c  */
7322 #line 2344 "vtkParse.y"
7323     { ((*yyvalp).integer) = (((yyGLRStackItem const *)yyvsp)[YYFILL ((3) - (3))].yystate.yysemantics.yysval.integer); }
7324     break;
7325
7326   case 289:
7327
7328 /* Line 936 of glr.c  */
7329 #line 2345 "vtkParse.y"
7330     { postSig("("); scopeSig((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (1))].yystate.yysemantics.yysval.str)); postSig("&");
7331          ((*yyvalp).integer) = VTK_PARSE_REF; }
7332     break;
7333
7334   case 290:
7335
7336 /* Line 936 of glr.c  */
7337 #line 2349 "vtkParse.y"
7338     { ((*yyvalp).integer) = 0; }
7339     break;
7340
7341   case 291:
7342
7343 /* Line 936 of glr.c  */
7344 #line 2350 "vtkParse.y"
7345     { pushFunction(); postSig("("); }
7346     break;
7347
7348   case 292:
7349
7350 /* Line 936 of glr.c  */
7351 #line 2351 "vtkParse.y"
7352     { postSig(")"); }
7353     break;
7354
7355   case 293:
7356
7357 /* Line 936 of glr.c  */
7358 #line 2352 "vtkParse.y"
7359     {
7360       ((*yyvalp).integer) = VTK_PARSE_FUNCTION;
7361       popFunction();
7362     }
7363     break;
7364
7365   case 294:
7366
7367 /* Line 936 of glr.c  */
7368 #line 2356 "vtkParse.y"
7369     { ((*yyvalp).integer) = VTK_PARSE_ARRAY; }
7370     break;
7371
7372   case 297:
7373
7374 /* Line 936 of glr.c  */
7375 #line 2360 "vtkParse.y"
7376     { currentFunction->IsConst = 1; }
7377     break;
7378
7379   case 302:
7380
7381 /* Line 936 of glr.c  */
7382 #line 2368 "vtkParse.y"
7383     { ((*yyvalp).integer) = add_indirection((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (2))].yystate.yysemantics.yysval.integer), (((yyGLRStackItem const *)yyvsp)[YYFILL ((2) - (2))].yystate.yysemantics.yysval.integer)); }
7384     break;
7385
7386   case 304:
7387
7388 /* Line 936 of glr.c  */
7389 #line 2373 "vtkParse.y"
7390     { ((*yyvalp).integer) = add_indirection((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (2))].yystate.yysemantics.yysval.integer), (((yyGLRStackItem const *)yyvsp)[YYFILL ((2) - (2))].yystate.yysemantics.yysval.integer)); }
7391     break;
7392
7393   case 305:
7394
7395 /* Line 936 of glr.c  */
7396 #line 2376 "vtkParse.y"
7397     { clearVarName(); chopSig(); }
7398     break;
7399
7400   case 307:
7401
7402 /* Line 936 of glr.c  */
7403 #line 2380 "vtkParse.y"
7404     { setVarName((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (2))].yystate.yysemantics.yysval.str)); }
7405     break;
7406
7407   case 308:
7408
7409 /* Line 936 of glr.c  */
7410 #line 2382 "vtkParse.y"
7411     { setVarName((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (4))].yystate.yysemantics.yysval.str)); }
7412     break;
7413
7414   case 312:
7415
7416 /* Line 936 of glr.c  */
7417 #line 2390 "vtkParse.y"
7418     { clearArray(); }
7419     break;
7420
7421   case 314:
7422
7423 /* Line 936 of glr.c  */
7424 #line 2394 "vtkParse.y"
7425     { clearArray(); }
7426     break;
7427
7428   case 318:
7429
7430 /* Line 936 of glr.c  */
7431 #line 2401 "vtkParse.y"
7432     { postSig("["); }
7433     break;
7434
7435   case 319:
7436
7437 /* Line 936 of glr.c  */
7438 #line 2402 "vtkParse.y"
7439     { postSig("]"); }
7440     break;
7441
7442   case 320:
7443
7444 /* Line 936 of glr.c  */
7445 #line 2405 "vtkParse.y"
7446     { pushArraySize(""); }
7447     break;
7448
7449   case 321:
7450
7451 /* Line 936 of glr.c  */
7452 #line 2406 "vtkParse.y"
7453     { markSig(); }
7454     break;
7455
7456   case 322:
7457
7458 /* Line 936 of glr.c  */
7459 #line 2406 "vtkParse.y"
7460     { chopSig(); pushArraySize(copySig()); }
7461     break;
7462
7463   case 328:
7464
7465 /* Line 936 of glr.c  */
7466 #line 2420 "vtkParse.y"
7467     { ((*yyvalp).str) = vtkstrcat("~", (((yyGLRStackItem const *)yyvsp)[YYFILL ((2) - (2))].yystate.yysemantics.yysval.str)); }
7468     break;
7469
7470   case 329:
7471
7472 /* Line 936 of glr.c  */
7473 #line 2421 "vtkParse.y"
7474     { ((*yyvalp).str) = vtkstrcat("~", (((yyGLRStackItem const *)yyvsp)[YYFILL ((2) - (2))].yystate.yysemantics.yysval.str)); }
7475     break;
7476
7477   case 330:
7478
7479 /* Line 936 of glr.c  */
7480 #line 2425 "vtkParse.y"
7481     { ((*yyvalp).str) = vtkstrcat((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (2))].yystate.yysemantics.yysval.str), (((yyGLRStackItem const *)yyvsp)[YYFILL ((2) - (2))].yystate.yysemantics.yysval.str)); }
7482     break;
7483
7484   case 331:
7485
7486 /* Line 936 of glr.c  */
7487 #line 2427 "vtkParse.y"
7488     { ((*yyvalp).str) = vtkstrcat((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (2))].yystate.yysemantics.yysval.str), (((yyGLRStackItem const *)yyvsp)[YYFILL ((2) - (2))].yystate.yysemantics.yysval.str)); }
7489     break;
7490
7491   case 332:
7492
7493 /* Line 936 of glr.c  */
7494 #line 2429 "vtkParse.y"
7495     { ((*yyvalp).str) = vtkstrcat((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (2))].yystate.yysemantics.yysval.str), (((yyGLRStackItem const *)yyvsp)[YYFILL ((2) - (2))].yystate.yysemantics.yysval.str)); }
7496     break;
7497
7498   case 333:
7499
7500 /* Line 936 of glr.c  */
7501 #line 2433 "vtkParse.y"
7502     { ((*yyvalp).str) = vtkstrcat((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (2))].yystate.yysemantics.yysval.str), (((yyGLRStackItem const *)yyvsp)[YYFILL ((2) - (2))].yystate.yysemantics.yysval.str)); }
7503     break;
7504
7505   case 334:
7506
7507 /* Line 936 of glr.c  */
7508 #line 2435 "vtkParse.y"
7509     { ((*yyvalp).str) = vtkstrcat((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (2))].yystate.yysemantics.yysval.str), (((yyGLRStackItem const *)yyvsp)[YYFILL ((2) - (2))].yystate.yysemantics.yysval.str)); }
7510     break;
7511
7512   case 335:
7513
7514 /* Line 936 of glr.c  */
7515 #line 2437 "vtkParse.y"
7516     { ((*yyvalp).str) = vtkstrcat((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (2))].yystate.yysemantics.yysval.str), (((yyGLRStackItem const *)yyvsp)[YYFILL ((2) - (2))].yystate.yysemantics.yysval.str)); }
7517     break;
7518
7519   case 336:
7520
7521 /* Line 936 of glr.c  */
7522 #line 2439 "vtkParse.y"
7523     { ((*yyvalp).str) = vtkstrcat3((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (3))].yystate.yysemantics.yysval.str), (((yyGLRStackItem const *)yyvsp)[YYFILL ((2) - (3))].yystate.yysemantics.yysval.str), (((yyGLRStackItem const *)yyvsp)[YYFILL ((3) - (3))].yystate.yysemantics.yysval.str)); }
7524     break;
7525
7526   case 337:
7527
7528 /* Line 936 of glr.c  */
7529 #line 2441 "vtkParse.y"
7530     { ((*yyvalp).str) = vtkstrcat3((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (3))].yystate.yysemantics.yysval.str), (((yyGLRStackItem const *)yyvsp)[YYFILL ((2) - (3))].yystate.yysemantics.yysval.str), (((yyGLRStackItem const *)yyvsp)[YYFILL ((3) - (3))].yystate.yysemantics.yysval.str)); }
7531     break;
7532
7533   case 338:
7534
7535 /* Line 936 of glr.c  */
7536 #line 2443 "vtkParse.y"
7537     { ((*yyvalp).str) = vtkstrcat3((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (3))].yystate.yysemantics.yysval.str), (((yyGLRStackItem const *)yyvsp)[YYFILL ((2) - (3))].yystate.yysemantics.yysval.str), (((yyGLRStackItem const *)yyvsp)[YYFILL ((3) - (3))].yystate.yysemantics.yysval.str)); }
7538     break;
7539
7540   case 339:
7541
7542 /* Line 936 of glr.c  */
7543 #line 2444 "vtkParse.y"
7544     { postSig("template "); }
7545     break;
7546
7547   case 340:
7548
7549 /* Line 936 of glr.c  */
7550 #line 2446 "vtkParse.y"
7551     { ((*yyvalp).str) = vtkstrcat4((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (5))].yystate.yysemantics.yysval.str), "template ", (((yyGLRStackItem const *)yyvsp)[YYFILL ((4) - (5))].yystate.yysemantics.yysval.str), (((yyGLRStackItem const *)yyvsp)[YYFILL ((5) - (5))].yystate.yysemantics.yysval.str)); }
7552     break;
7553
7554   case 341:
7555
7556 /* Line 936 of glr.c  */
7557 #line 2449 "vtkParse.y"
7558     { postSig("~"); }
7559     break;
7560
7561   case 342:
7562
7563 /* Line 936 of glr.c  */
7564 #line 2452 "vtkParse.y"
7565     { postSig((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (1))].yystate.yysemantics.yysval.str)); }
7566     break;
7567
7568   case 343:
7569
7570 /* Line 936 of glr.c  */
7571 #line 2455 "vtkParse.y"
7572     { ((*yyvalp).str) = "::"; postSig(((*yyvalp).str)); }
7573     break;
7574
7575   case 344:
7576
7577 /* Line 936 of glr.c  */
7578 #line 2458 "vtkParse.y"
7579     { markSig(); postSig((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (2))].yystate.yysemantics.yysval.str)); postSig("<"); }
7580     break;
7581
7582   case 345:
7583
7584 /* Line 936 of glr.c  */
7585 #line 2460 "vtkParse.y"
7586     {
7587       chopSig(); if (getSig()[getSigLength()-1] == '>') { postSig(" "); }
7588       postSig(">"); ((*yyvalp).str) = copySig(); clearTypeId();
7589     }
7590     break;
7591
7592   case 346:
7593
7594 /* Line 936 of glr.c  */
7595 #line 2466 "vtkParse.y"
7596     { markSig(); postSig("decltype"); }
7597     break;
7598
7599   case 347:
7600
7601 /* Line 936 of glr.c  */
7602 #line 2467 "vtkParse.y"
7603     { chopSig(); ((*yyvalp).str) = copySig(); clearTypeId(); }
7604     break;
7605
7606   case 348:
7607
7608 /* Line 936 of glr.c  */
7609 #line 2475 "vtkParse.y"
7610     { postSig((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (1))].yystate.yysemantics.yysval.str)); }
7611     break;
7612
7613   case 349:
7614
7615 /* Line 936 of glr.c  */
7616 #line 2476 "vtkParse.y"
7617     { postSig((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (1))].yystate.yysemantics.yysval.str)); }
7618     break;
7619
7620   case 350:
7621
7622 /* Line 936 of glr.c  */
7623 #line 2477 "vtkParse.y"
7624     { postSig((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (1))].yystate.yysemantics.yysval.str)); }
7625     break;
7626
7627   case 351:
7628
7629 /* Line 936 of glr.c  */
7630 #line 2478 "vtkParse.y"
7631     { postSig((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (1))].yystate.yysemantics.yysval.str)); }
7632     break;
7633
7634   case 352:
7635
7636 /* Line 936 of glr.c  */
7637 #line 2479 "vtkParse.y"
7638     { postSig((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (1))].yystate.yysemantics.yysval.str)); }
7639     break;
7640
7641   case 353:
7642
7643 /* Line 936 of glr.c  */
7644 #line 2480 "vtkParse.y"
7645     { postSig((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (1))].yystate.yysemantics.yysval.str)); }
7646     break;
7647
7648   case 354:
7649
7650 /* Line 936 of glr.c  */
7651 #line 2481 "vtkParse.y"
7652     { postSig((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (1))].yystate.yysemantics.yysval.str)); }
7653     break;
7654
7655   case 355:
7656
7657 /* Line 936 of glr.c  */
7658 #line 2482 "vtkParse.y"
7659     { postSig((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (1))].yystate.yysemantics.yysval.str)); }
7660     break;
7661
7662   case 356:
7663
7664 /* Line 936 of glr.c  */
7665 #line 2483 "vtkParse.y"
7666     { postSig((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (1))].yystate.yysemantics.yysval.str)); }
7667     break;
7668
7669   case 357:
7670
7671 /* Line 936 of glr.c  */
7672 #line 2484 "vtkParse.y"
7673     { postSig((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (1))].yystate.yysemantics.yysval.str)); }
7674     break;
7675
7676   case 358:
7677
7678 /* Line 936 of glr.c  */
7679 #line 2485 "vtkParse.y"
7680     { ((*yyvalp).str) = "vtkTypeInt8"; postSig(((*yyvalp).str)); }
7681     break;
7682
7683   case 359:
7684
7685 /* Line 936 of glr.c  */
7686 #line 2486 "vtkParse.y"
7687     { ((*yyvalp).str) = "vtkTypeUInt8"; postSig(((*yyvalp).str)); }
7688     break;
7689
7690   case 360:
7691
7692 /* Line 936 of glr.c  */
7693 #line 2487 "vtkParse.y"
7694     { ((*yyvalp).str) = "vtkTypeInt16"; postSig(((*yyvalp).str)); }
7695     break;
7696
7697   case 361:
7698
7699 /* Line 936 of glr.c  */
7700 #line 2488 "vtkParse.y"
7701     { ((*yyvalp).str) = "vtkTypeUInt16"; postSig(((*yyvalp).str)); }
7702     break;
7703
7704   case 362:
7705
7706 /* Line 936 of glr.c  */
7707 #line 2489 "vtkParse.y"
7708     { ((*yyvalp).str) = "vtkTypeInt32"; postSig(((*yyvalp).str)); }
7709     break;
7710
7711   case 363:
7712
7713 /* Line 936 of glr.c  */
7714 #line 2490 "vtkParse.y"
7715     { ((*yyvalp).str) = "vtkTypeUInt32"; postSig(((*yyvalp).str)); }
7716     break;
7717
7718   case 364:
7719
7720 /* Line 936 of glr.c  */
7721 #line 2491 "vtkParse.y"
7722     { ((*yyvalp).str) = "vtkTypeInt64"; postSig(((*yyvalp).str)); }
7723     break;
7724
7725   case 365:
7726
7727 /* Line 936 of glr.c  */
7728 #line 2492 "vtkParse.y"
7729     { ((*yyvalp).str) = "vtkTypeUInt64"; postSig(((*yyvalp).str)); }
7730     break;
7731
7732   case 366:
7733
7734 /* Line 936 of glr.c  */
7735 #line 2493 "vtkParse.y"
7736     { ((*yyvalp).str) = "vtkTypeFloat32"; postSig(((*yyvalp).str)); }
7737     break;
7738
7739   case 367:
7740
7741 /* Line 936 of glr.c  */
7742 #line 2494 "vtkParse.y"
7743     { ((*yyvalp).str) = "vtkTypeFloat64"; postSig(((*yyvalp).str)); }
7744     break;
7745
7746   case 368:
7747
7748 /* Line 936 of glr.c  */
7749 #line 2495 "vtkParse.y"
7750     { ((*yyvalp).str) = "vtkIdType"; postSig(((*yyvalp).str)); }
7751     break;
7752
7753   case 379:
7754
7755 /* Line 936 of glr.c  */
7756 #line 2520 "vtkParse.y"
7757     { setTypeBase(buildTypeBase(getType(), (((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (1))].yystate.yysemantics.yysval.integer))); }
7758     break;
7759
7760   case 380:
7761
7762 /* Line 936 of glr.c  */
7763 #line 2521 "vtkParse.y"
7764     { setTypeMod(VTK_PARSE_TYPEDEF); }
7765     break;
7766
7767   case 381:
7768
7769 /* Line 936 of glr.c  */
7770 #line 2522 "vtkParse.y"
7771     { setTypeMod(VTK_PARSE_FRIEND); }
7772     break;
7773
7774   case 384:
7775
7776 /* Line 936 of glr.c  */
7777 #line 2529 "vtkParse.y"
7778     { setTypeMod((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (1))].yystate.yysemantics.yysval.integer)); }
7779     break;
7780
7781   case 385:
7782
7783 /* Line 936 of glr.c  */
7784 #line 2530 "vtkParse.y"
7785     { setTypeMod((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (1))].yystate.yysemantics.yysval.integer)); }
7786     break;
7787
7788   case 386:
7789
7790 /* Line 936 of glr.c  */
7791 #line 2531 "vtkParse.y"
7792     { setTypeMod((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (1))].yystate.yysemantics.yysval.integer)); }
7793     break;
7794
7795   case 387:
7796
7797 /* Line 936 of glr.c  */
7798 #line 2532 "vtkParse.y"
7799     { postSig("constexpr "); ((*yyvalp).integer) = 0; }
7800     break;
7801
7802   case 388:
7803
7804 /* Line 936 of glr.c  */
7805 #line 2535 "vtkParse.y"
7806     { postSig("mutable "); ((*yyvalp).integer) = VTK_PARSE_MUTABLE; }
7807     break;
7808
7809   case 389:
7810
7811 /* Line 936 of glr.c  */
7812 #line 2536 "vtkParse.y"
7813     { ((*yyvalp).integer) = 0; }
7814     break;
7815
7816   case 390:
7817
7818 /* Line 936 of glr.c  */
7819 #line 2537 "vtkParse.y"
7820     { ((*yyvalp).integer) = 0; }
7821     break;
7822
7823   case 391:
7824
7825 /* Line 936 of glr.c  */
7826 #line 2538 "vtkParse.y"
7827     { postSig("static "); ((*yyvalp).integer) = VTK_PARSE_STATIC; }
7828     break;
7829
7830   case 392:
7831
7832 /* Line 936 of glr.c  */
7833 #line 2540 "vtkParse.y"
7834     { postSig("thread_local "); ((*yyvalp).integer) = VTK_PARSE_THREAD_LOCAL; }
7835     break;
7836
7837   case 393:
7838
7839 /* Line 936 of glr.c  */
7840 #line 2543 "vtkParse.y"
7841     { ((*yyvalp).integer) = 0; }
7842     break;
7843
7844   case 394:
7845
7846 /* Line 936 of glr.c  */
7847 #line 2544 "vtkParse.y"
7848     { postSig("virtual "); ((*yyvalp).integer) = VTK_PARSE_VIRTUAL; }
7849     break;
7850
7851   case 395:
7852
7853 /* Line 936 of glr.c  */
7854 #line 2545 "vtkParse.y"
7855     { postSig("explicit "); ((*yyvalp).integer) = VTK_PARSE_EXPLICIT; }
7856     break;
7857
7858   case 396:
7859
7860 /* Line 936 of glr.c  */
7861 #line 2548 "vtkParse.y"
7862     { postSig("const "); ((*yyvalp).integer) = VTK_PARSE_CONST; }
7863     break;
7864
7865   case 397:
7866
7867 /* Line 936 of glr.c  */
7868 #line 2549 "vtkParse.y"
7869     { postSig("volatile "); ((*yyvalp).integer) = VTK_PARSE_VOLATILE; }
7870     break;
7871
7872   case 399:
7873
7874 /* Line 936 of glr.c  */
7875 #line 2554 "vtkParse.y"
7876     { ((*yyvalp).integer) = ((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (2))].yystate.yysemantics.yysval.integer) | (((yyGLRStackItem const *)yyvsp)[YYFILL ((2) - (2))].yystate.yysemantics.yysval.integer)); }
7877     break;
7878
7879   case 401:
7880
7881 /* Line 936 of glr.c  */
7882 #line 2564 "vtkParse.y"
7883     { setTypeBase((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (1))].yystate.yysemantics.yysval.integer)); }
7884     break;
7885
7886   case 403:
7887
7888 /* Line 936 of glr.c  */
7889 #line 2566 "vtkParse.y"
7890     { setTypeBase((((yyGLRStackItem const *)yyvsp)[YYFILL ((2) - (2))].yystate.yysemantics.yysval.integer)); }
7891     break;
7892
7893   case 406:
7894
7895 /* Line 936 of glr.c  */
7896 #line 2572 "vtkParse.y"
7897     { postSig(" "); setTypeId((((yyGLRStackItem const *)yyvsp)[YYFILL ((3) - (3))].yystate.yysemantics.yysval.str)); ((*yyvalp).integer) = guess_id_type((((yyGLRStackItem const *)yyvsp)[YYFILL ((3) - (3))].yystate.yysemantics.yysval.str)); }
7898     break;
7899
7900   case 407:
7901
7902 /* Line 936 of glr.c  */
7903 #line 2574 "vtkParse.y"
7904     { postSig(" "); setTypeId((((yyGLRStackItem const *)yyvsp)[YYFILL ((3) - (4))].yystate.yysemantics.yysval.str)); ((*yyvalp).integer) = guess_id_type((((yyGLRStackItem const *)yyvsp)[YYFILL ((3) - (4))].yystate.yysemantics.yysval.str)); }
7905     break;
7906
7907   case 409:
7908
7909 /* Line 936 of glr.c  */
7910 #line 2579 "vtkParse.y"
7911     { postSig(" "); setTypeId((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (1))].yystate.yysemantics.yysval.str)); ((*yyvalp).integer) = 0; }
7912     break;
7913
7914   case 410:
7915
7916 /* Line 936 of glr.c  */
7917 #line 2580 "vtkParse.y"
7918     { postSig("typename "); }
7919     break;
7920
7921   case 411:
7922
7923 /* Line 936 of glr.c  */
7924 #line 2581 "vtkParse.y"
7925     { postSig(" "); setTypeId((((yyGLRStackItem const *)yyvsp)[YYFILL ((3) - (4))].yystate.yysemantics.yysval.str)); ((*yyvalp).integer) = guess_id_type((((yyGLRStackItem const *)yyvsp)[YYFILL ((3) - (4))].yystate.yysemantics.yysval.str)); }
7926     break;
7927
7928   case 412:
7929
7930 /* Line 936 of glr.c  */
7931 #line 2583 "vtkParse.y"
7932     { postSig(" "); setTypeId((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (2))].yystate.yysemantics.yysval.str)); ((*yyvalp).integer) = guess_id_type((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (2))].yystate.yysemantics.yysval.str)); }
7933     break;
7934
7935   case 413:
7936
7937 /* Line 936 of glr.c  */
7938 #line 2585 "vtkParse.y"
7939     { postSig(" "); setTypeId((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (2))].yystate.yysemantics.yysval.str)); ((*yyvalp).integer) = guess_id_type((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (2))].yystate.yysemantics.yysval.str)); }
7940     break;
7941
7942   case 415:
7943
7944 /* Line 936 of glr.c  */
7945 #line 2591 "vtkParse.y"
7946     { setTypeBase((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (1))].yystate.yysemantics.yysval.integer)); }
7947     break;
7948
7949   case 417:
7950
7951 /* Line 936 of glr.c  */
7952 #line 2593 "vtkParse.y"
7953     { setTypeBase((((yyGLRStackItem const *)yyvsp)[YYFILL ((2) - (2))].yystate.yysemantics.yysval.integer)); }
7954     break;
7955
7956   case 420:
7957
7958 /* Line 936 of glr.c  */
7959 #line 2600 "vtkParse.y"
7960     { setTypeBase((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (1))].yystate.yysemantics.yysval.integer)); }
7961     break;
7962
7963   case 422:
7964
7965 /* Line 936 of glr.c  */
7966 #line 2602 "vtkParse.y"
7967     { setTypeBase((((yyGLRStackItem const *)yyvsp)[YYFILL ((2) - (2))].yystate.yysemantics.yysval.integer)); }
7968     break;
7969
7970   case 425:
7971
7972 /* Line 936 of glr.c  */
7973 #line 2608 "vtkParse.y"
7974     { postSig(" "); setTypeId((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (1))].yystate.yysemantics.yysval.str)); ((*yyvalp).integer) = 0; }
7975     break;
7976
7977   case 426:
7978
7979 /* Line 936 of glr.c  */
7980 #line 2610 "vtkParse.y"
7981     { postSig(" "); setTypeId((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (1))].yystate.yysemantics.yysval.str)); ((*yyvalp).integer) = guess_id_type((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (1))].yystate.yysemantics.yysval.str)); }
7982     break;
7983
7984   case 427:
7985
7986 /* Line 936 of glr.c  */
7987 #line 2612 "vtkParse.y"
7988     { postSig(" "); setTypeId((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (1))].yystate.yysemantics.yysval.str)); ((*yyvalp).integer) = guess_id_type((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (1))].yystate.yysemantics.yysval.str)); }
7989     break;
7990
7991   case 428:
7992
7993 /* Line 936 of glr.c  */
7994 #line 2614 "vtkParse.y"
7995     { postSig(" "); setTypeId((((yyGLRStackItem const *)yyvsp)[YYFILL ((2) - (2))].yystate.yysemantics.yysval.str)); ((*yyvalp).integer) = guess_id_type((((yyGLRStackItem const *)yyvsp)[YYFILL ((2) - (2))].yystate.yysemantics.yysval.str)); }
7996     break;
7997
7998   case 429:
7999
8000 /* Line 936 of glr.c  */
8001 #line 2616 "vtkParse.y"
8002     { postSig(" "); setTypeId((((yyGLRStackItem const *)yyvsp)[YYFILL ((2) - (2))].yystate.yysemantics.yysval.str)); ((*yyvalp).integer) = guess_id_type((((yyGLRStackItem const *)yyvsp)[YYFILL ((2) - (2))].yystate.yysemantics.yysval.str)); }
8003     break;
8004
8005   case 430:
8006
8007 /* Line 936 of glr.c  */
8008 #line 2618 "vtkParse.y"
8009     { postSig(" "); setTypeId((((yyGLRStackItem const *)yyvsp)[YYFILL ((2) - (2))].yystate.yysemantics.yysval.str)); ((*yyvalp).integer) = guess_id_type((((yyGLRStackItem const *)yyvsp)[YYFILL ((2) - (2))].yystate.yysemantics.yysval.str)); }
8010     break;
8011
8012   case 431:
8013
8014 /* Line 936 of glr.c  */
8015 #line 2621 "vtkParse.y"
8016     { setTypeId(""); }
8017     break;
8018
8019   case 433:
8020
8021 /* Line 936 of glr.c  */
8022 #line 2625 "vtkParse.y"
8023     { typeSig((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (1))].yystate.yysemantics.yysval.str)); ((*yyvalp).integer) = VTK_PARSE_STRING; }
8024     break;
8025
8026   case 434:
8027
8028 /* Line 936 of glr.c  */
8029 #line 2626 "vtkParse.y"
8030     { typeSig((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (1))].yystate.yysemantics.yysval.str)); ((*yyvalp).integer) = VTK_PARSE_UNICODE_STRING;}
8031     break;
8032
8033   case 435:
8034
8035 /* Line 936 of glr.c  */
8036 #line 2627 "vtkParse.y"
8037     { typeSig((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (1))].yystate.yysemantics.yysval.str)); ((*yyvalp).integer) = VTK_PARSE_OSTREAM; }
8038     break;
8039
8040   case 436:
8041
8042 /* Line 936 of glr.c  */
8043 #line 2628 "vtkParse.y"
8044     { typeSig((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (1))].yystate.yysemantics.yysval.str)); ((*yyvalp).integer) = VTK_PARSE_ISTREAM; }
8045     break;
8046
8047   case 437:
8048
8049 /* Line 936 of glr.c  */
8050 #line 2629 "vtkParse.y"
8051     { typeSig((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (1))].yystate.yysemantics.yysval.str)); ((*yyvalp).integer) = VTK_PARSE_UNKNOWN; }
8052     break;
8053
8054   case 438:
8055
8056 /* Line 936 of glr.c  */
8057 #line 2630 "vtkParse.y"
8058     { typeSig((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (1))].yystate.yysemantics.yysval.str)); ((*yyvalp).integer) = VTK_PARSE_OBJECT; }
8059     break;
8060
8061   case 439:
8062
8063 /* Line 936 of glr.c  */
8064 #line 2631 "vtkParse.y"
8065     { typeSig((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (1))].yystate.yysemantics.yysval.str)); ((*yyvalp).integer) = VTK_PARSE_QOBJECT; }
8066     break;
8067
8068   case 440:
8069
8070 /* Line 936 of glr.c  */
8071 #line 2632 "vtkParse.y"
8072     { typeSig((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (1))].yystate.yysemantics.yysval.str)); ((*yyvalp).integer) = VTK_PARSE_NULLPTR_T; }
8073     break;
8074
8075   case 441:
8076
8077 /* Line 936 of glr.c  */
8078 #line 2633 "vtkParse.y"
8079     { typeSig((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (1))].yystate.yysemantics.yysval.str)); ((*yyvalp).integer) = VTK_PARSE_SSIZE_T; }
8080     break;
8081
8082   case 442:
8083
8084 /* Line 936 of glr.c  */
8085 #line 2634 "vtkParse.y"
8086     { typeSig((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (1))].yystate.yysemantics.yysval.str)); ((*yyvalp).integer) = VTK_PARSE_SIZE_T; }
8087     break;
8088
8089   case 443:
8090
8091 /* Line 936 of glr.c  */
8092 #line 2635 "vtkParse.y"
8093     { typeSig("vtkTypeInt8"); ((*yyvalp).integer) = VTK_PARSE_INT8; }
8094     break;
8095
8096   case 444:
8097
8098 /* Line 936 of glr.c  */
8099 #line 2636 "vtkParse.y"
8100     { typeSig("vtkTypeUInt8"); ((*yyvalp).integer) = VTK_PARSE_UINT8; }
8101     break;
8102
8103   case 445:
8104
8105 /* Line 936 of glr.c  */
8106 #line 2637 "vtkParse.y"
8107     { typeSig("vtkTypeInt16"); ((*yyvalp).integer) = VTK_PARSE_INT16; }
8108     break;
8109
8110   case 446:
8111
8112 /* Line 936 of glr.c  */
8113 #line 2638 "vtkParse.y"
8114     { typeSig("vtkTypeUInt16"); ((*yyvalp).integer) = VTK_PARSE_UINT16; }
8115     break;
8116
8117   case 447:
8118
8119 /* Line 936 of glr.c  */
8120 #line 2639 "vtkParse.y"
8121     { typeSig("vtkTypeInt32"); ((*yyvalp).integer) = VTK_PARSE_INT32; }
8122     break;
8123
8124   case 448:
8125
8126 /* Line 936 of glr.c  */
8127 #line 2640 "vtkParse.y"
8128     { typeSig("vtkTypeUInt32"); ((*yyvalp).integer) = VTK_PARSE_UINT32; }
8129     break;
8130
8131   case 449:
8132
8133 /* Line 936 of glr.c  */
8134 #line 2641 "vtkParse.y"
8135     { typeSig("vtkTypeInt64"); ((*yyvalp).integer) = VTK_PARSE_INT64; }
8136     break;
8137
8138   case 450:
8139
8140 /* Line 936 of glr.c  */
8141 #line 2642 "vtkParse.y"
8142     { typeSig("vtkTypeUInt64"); ((*yyvalp).integer) = VTK_PARSE_UINT64; }
8143     break;
8144
8145   case 451:
8146
8147 /* Line 936 of glr.c  */
8148 #line 2643 "vtkParse.y"
8149     { typeSig("vtkTypeFloat32"); ((*yyvalp).integer) = VTK_PARSE_FLOAT32; }
8150     break;
8151
8152   case 452:
8153
8154 /* Line 936 of glr.c  */
8155 #line 2644 "vtkParse.y"
8156     { typeSig("vtkTypeFloat64"); ((*yyvalp).integer) = VTK_PARSE_FLOAT64; }
8157     break;
8158
8159   case 453:
8160
8161 /* Line 936 of glr.c  */
8162 #line 2645 "vtkParse.y"
8163     { typeSig("vtkIdType"); ((*yyvalp).integer) = VTK_PARSE_ID_TYPE; }
8164     break;
8165
8166   case 454:
8167
8168 /* Line 936 of glr.c  */
8169 #line 2648 "vtkParse.y"
8170     { postSig("auto "); ((*yyvalp).integer) = 0; }
8171     break;
8172
8173   case 455:
8174
8175 /* Line 936 of glr.c  */
8176 #line 2649 "vtkParse.y"
8177     { postSig("void "); ((*yyvalp).integer) = VTK_PARSE_VOID; }
8178     break;
8179
8180   case 456:
8181
8182 /* Line 936 of glr.c  */
8183 #line 2650 "vtkParse.y"
8184     { postSig("bool "); ((*yyvalp).integer) = VTK_PARSE_BOOL; }
8185     break;
8186
8187   case 457:
8188
8189 /* Line 936 of glr.c  */
8190 #line 2651 "vtkParse.y"
8191     { postSig("float "); ((*yyvalp).integer) = VTK_PARSE_FLOAT; }
8192     break;
8193
8194   case 458:
8195
8196 /* Line 936 of glr.c  */
8197 #line 2652 "vtkParse.y"
8198     { postSig("double "); ((*yyvalp).integer) = VTK_PARSE_DOUBLE; }
8199     break;
8200
8201   case 459:
8202
8203 /* Line 936 of glr.c  */
8204 #line 2653 "vtkParse.y"
8205     { postSig("char "); ((*yyvalp).integer) = VTK_PARSE_CHAR; }
8206     break;
8207
8208   case 460:
8209
8210 /* Line 936 of glr.c  */
8211 #line 2654 "vtkParse.y"
8212     { postSig("char16_t "); ((*yyvalp).integer) = VTK_PARSE_CHAR16_T; }
8213     break;
8214
8215   case 461:
8216
8217 /* Line 936 of glr.c  */
8218 #line 2655 "vtkParse.y"
8219     { postSig("char32_t "); ((*yyvalp).integer) = VTK_PARSE_CHAR32_T; }
8220     break;
8221
8222   case 462:
8223
8224 /* Line 936 of glr.c  */
8225 #line 2656 "vtkParse.y"
8226     { postSig("wchar_t "); ((*yyvalp).integer) = VTK_PARSE_WCHAR_T; }
8227     break;
8228
8229   case 463:
8230
8231 /* Line 936 of glr.c  */
8232 #line 2657 "vtkParse.y"
8233     { postSig("int "); ((*yyvalp).integer) = VTK_PARSE_INT; }
8234     break;
8235
8236   case 464:
8237
8238 /* Line 936 of glr.c  */
8239 #line 2658 "vtkParse.y"
8240     { postSig("short "); ((*yyvalp).integer) = VTK_PARSE_SHORT; }
8241     break;
8242
8243   case 465:
8244
8245 /* Line 936 of glr.c  */
8246 #line 2659 "vtkParse.y"
8247     { postSig("long "); ((*yyvalp).integer) = VTK_PARSE_LONG; }
8248     break;
8249
8250   case 466:
8251
8252 /* Line 936 of glr.c  */
8253 #line 2660 "vtkParse.y"
8254     { postSig("__int64 "); ((*yyvalp).integer) = VTK_PARSE___INT64; }
8255     break;
8256
8257   case 467:
8258
8259 /* Line 936 of glr.c  */
8260 #line 2661 "vtkParse.y"
8261     { postSig("signed "); ((*yyvalp).integer) = VTK_PARSE_INT; }
8262     break;
8263
8264   case 468:
8265
8266 /* Line 936 of glr.c  */
8267 #line 2662 "vtkParse.y"
8268     { postSig("unsigned "); ((*yyvalp).integer) = VTK_PARSE_UNSIGNED_INT; }
8269     break;
8270
8271   case 472:
8272
8273 /* Line 936 of glr.c  */
8274 #line 2685 "vtkParse.y"
8275     { ((*yyvalp).integer) = ((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (2))].yystate.yysemantics.yysval.integer) | (((yyGLRStackItem const *)yyvsp)[YYFILL ((2) - (2))].yystate.yysemantics.yysval.integer)); }
8276     break;
8277
8278   case 473:
8279
8280 /* Line 936 of glr.c  */
8281 #line 2689 "vtkParse.y"
8282     { postSig("&"); ((*yyvalp).integer) = VTK_PARSE_REF; }
8283     break;
8284
8285   case 474:
8286
8287 /* Line 936 of glr.c  */
8288 #line 2693 "vtkParse.y"
8289     { postSig("&&"); ((*yyvalp).integer) = (VTK_PARSE_RVALUE | VTK_PARSE_REF); }
8290     break;
8291
8292   case 475:
8293
8294 /* Line 936 of glr.c  */
8295 #line 2696 "vtkParse.y"
8296     { postSig("*"); }
8297     break;
8298
8299   case 476:
8300
8301 /* Line 936 of glr.c  */
8302 #line 2697 "vtkParse.y"
8303     { ((*yyvalp).integer) = (((yyGLRStackItem const *)yyvsp)[YYFILL ((4) - (4))].yystate.yysemantics.yysval.integer); }
8304     break;
8305
8306   case 477:
8307
8308 /* Line 936 of glr.c  */
8309 #line 2700 "vtkParse.y"
8310     { ((*yyvalp).integer) = VTK_PARSE_POINTER; }
8311     break;
8312
8313   case 478:
8314
8315 /* Line 936 of glr.c  */
8316 #line 2702 "vtkParse.y"
8317     {
8318       if (((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (1))].yystate.yysemantics.yysval.integer) & VTK_PARSE_CONST) != 0)
8319         {
8320         ((*yyvalp).integer) = VTK_PARSE_CONST_POINTER;
8321         }
8322       if (((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (1))].yystate.yysemantics.yysval.integer) & VTK_PARSE_VOLATILE) != 0)
8323         {
8324         ((*yyvalp).integer) = VTK_PARSE_BAD_INDIRECT;
8325         }
8326     }
8327     break;
8328
8329   case 480:
8330
8331 /* Line 936 of glr.c  */
8332 #line 2718 "vtkParse.y"
8333     {
8334       unsigned int n;
8335       n = (((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (2))].yystate.yysemantics.yysval.integer) << 2) | (((yyGLRStackItem const *)yyvsp)[YYFILL ((2) - (2))].yystate.yysemantics.yysval.integer));
8336       if ((n & VTK_PARSE_INDIRECT) != n)
8337         {
8338         n = VTK_PARSE_BAD_INDIRECT;
8339         }
8340       ((*yyvalp).integer) = n;
8341     }
8342     break;
8343
8344   case 483:
8345
8346 /* Line 936 of glr.c  */
8347 #line 2737 "vtkParse.y"
8348     { closeSig(); }
8349     break;
8350
8351   case 484:
8352
8353 /* Line 936 of glr.c  */
8354 #line 2737 "vtkParse.y"
8355     { openSig(); }
8356     break;
8357
8358   case 486:
8359
8360 /* Line 936 of glr.c  */
8361 #line 2744 "vtkParse.y"
8362     {preSig("void Set"); postSig("(");}
8363     break;
8364
8365   case 487:
8366
8367 /* Line 936 of glr.c  */
8368 #line 2745 "vtkParse.y"
8369     {
8370    postSig("a);");
8371    currentFunction->Macro = "vtkSetMacro";
8372    currentFunction->Name = vtkstrcat("Set", (((yyGLRStackItem const *)yyvsp)[YYFILL ((3) - (7))].yystate.yysemantics.yysval.str));
8373    currentFunction->Comment = vtkstrdup(getComment());
8374    add_parameter(currentFunction, getType(), getTypeId(), 0);
8375    set_return(currentFunction, VTK_PARSE_VOID, "void", 0);
8376    output_function();
8377    }
8378     break;
8379
8380   case 488:
8381
8382 /* Line 936 of glr.c  */
8383 #line 2754 "vtkParse.y"
8384     {postSig("Get");}
8385     break;
8386
8387   case 489:
8388
8389 /* Line 936 of glr.c  */
8390 #line 2755 "vtkParse.y"
8391     {markSig();}
8392     break;
8393
8394   case 490:
8395
8396 /* Line 936 of glr.c  */
8397 #line 2755 "vtkParse.y"
8398     {swapSig();}
8399     break;
8400
8401   case 491:
8402
8403 /* Line 936 of glr.c  */
8404 #line 2756 "vtkParse.y"
8405     {
8406    postSig("();");
8407    currentFunction->Macro = "vtkGetMacro";
8408    currentFunction->Name = vtkstrcat("Get", (((yyGLRStackItem const *)yyvsp)[YYFILL ((4) - (9))].yystate.yysemantics.yysval.str));
8409    currentFunction->Comment = vtkstrdup(getComment());
8410    set_return(currentFunction, getType(), getTypeId(), 0);
8411    output_function();
8412    }
8413     break;
8414
8415   case 492:
8416
8417 /* Line 936 of glr.c  */
8418 #line 2764 "vtkParse.y"
8419     {preSig("void Set");}
8420     break;
8421
8422   case 493:
8423
8424 /* Line 936 of glr.c  */
8425 #line 2765 "vtkParse.y"
8426     {
8427    postSig("(char *);");
8428    currentFunction->Macro = "vtkSetStringMacro";
8429    currentFunction->Name = vtkstrcat("Set", (((yyGLRStackItem const *)yyvsp)[YYFILL ((4) - (5))].yystate.yysemantics.yysval.str));
8430    currentFunction->Comment = vtkstrdup(getComment());
8431    add_parameter(currentFunction, VTK_PARSE_CHAR_PTR, "char", 0);
8432    set_return(currentFunction, VTK_PARSE_VOID, "void", 0);
8433    output_function();
8434    }
8435     break;
8436
8437   case 494:
8438
8439 /* Line 936 of glr.c  */
8440 #line 2774 "vtkParse.y"
8441     {preSig("char *Get");}
8442     break;
8443
8444   case 495:
8445
8446 /* Line 936 of glr.c  */
8447 #line 2775 "vtkParse.y"
8448     {
8449    postSig("();");
8450    currentFunction->Macro = "vtkGetStringMacro";
8451    currentFunction->Name = vtkstrcat("Get", (((yyGLRStackItem const *)yyvsp)[YYFILL ((4) - (5))].yystate.yysemantics.yysval.str));
8452    currentFunction->Comment = vtkstrdup(getComment());
8453    set_return(currentFunction, VTK_PARSE_CHAR_PTR, "char", 0);
8454    output_function();
8455    }
8456     break;
8457
8458   case 496:
8459
8460 /* Line 936 of glr.c  */
8461 #line 2783 "vtkParse.y"
8462     {startSig(); markSig();}
8463     break;
8464
8465   case 497:
8466
8467 /* Line 936 of glr.c  */
8468 #line 2783 "vtkParse.y"
8469     {closeSig();}
8470     break;
8471
8472   case 498:
8473
8474 /* Line 936 of glr.c  */
8475 #line 2785 "vtkParse.y"
8476     {
8477    const char *typeText;
8478    chopSig();
8479    typeText = copySig();
8480
8481    currentFunction->Macro = "vtkSetClampMacro";
8482    currentFunction->Name = vtkstrcat("Set", (((yyGLRStackItem const *)yyvsp)[YYFILL ((3) - (10))].yystate.yysemantics.yysval.str));
8483    currentFunction->Signature =
8484      vtkstrcat5("void ", currentFunction->Name, "(", typeText, ");");
8485    currentFunction->Comment = vtkstrdup(getComment());
8486    add_parameter(currentFunction, getType(), getTypeId(), 0);
8487    set_return(currentFunction, VTK_PARSE_VOID, "void", 0);
8488    output_function();
8489
8490    currentFunction->Macro = "vtkSetClampMacro";
8491    currentFunction->Name = vtkstrcat3("Get", (((yyGLRStackItem const *)yyvsp)[YYFILL ((3) - (10))].yystate.yysemantics.yysval.str), "MinValue");
8492    currentFunction->Signature =
8493      vtkstrcat4(typeText, " ", currentFunction->Name, "();");
8494    currentFunction->Comment = vtkstrdup(getComment());
8495    set_return(currentFunction, getType(), getTypeId(), 0);
8496    output_function();
8497
8498    currentFunction->Macro = "vtkSetClampMacro";
8499    currentFunction->Name = vtkstrcat3("Get", (((yyGLRStackItem const *)yyvsp)[YYFILL ((3) - (10))].yystate.yysemantics.yysval.str), "MaxValue");
8500    currentFunction->Signature =
8501      vtkstrcat4(typeText, " ", currentFunction->Name, "();");
8502    currentFunction->Comment = vtkstrdup(getComment());
8503    set_return(currentFunction, getType(), getTypeId(), 0);
8504    output_function();
8505    }
8506     break;
8507
8508   case 499:
8509
8510 /* Line 936 of glr.c  */
8511 #line 2816 "vtkParse.y"
8512     {preSig("void Set"); postSig("("); }
8513     break;
8514
8515   case 500:
8516
8517 /* Line 936 of glr.c  */
8518 #line 2817 "vtkParse.y"
8519     {
8520    postSig("*);");
8521    currentFunction->Macro = "vtkSetObjectMacro";
8522    currentFunction->Name = vtkstrcat("Set", (((yyGLRStackItem const *)yyvsp)[YYFILL ((3) - (7))].yystate.yysemantics.yysval.str));
8523    currentFunction->Comment = vtkstrdup(getComment());
8524    add_parameter(currentFunction, VTK_PARSE_OBJECT_PTR, getTypeId(), 0);
8525    set_return(currentFunction, VTK_PARSE_VOID, "void", 0);
8526    output_function();
8527    }
8528     break;
8529
8530   case 501:
8531
8532 /* Line 936 of glr.c  */
8533 #line 2826 "vtkParse.y"
8534     {postSig("*Get");}
8535     break;
8536
8537   case 502:
8538
8539 /* Line 936 of glr.c  */
8540 #line 2827 "vtkParse.y"
8541     {markSig();}
8542     break;
8543
8544   case 503:
8545
8546 /* Line 936 of glr.c  */
8547 #line 2827 "vtkParse.y"
8548     {swapSig();}
8549     break;
8550
8551   case 504:
8552
8553 /* Line 936 of glr.c  */
8554 #line 2828 "vtkParse.y"
8555     {
8556    postSig("();");
8557    currentFunction->Macro = "vtkGetObjectMacro";
8558    currentFunction->Name = vtkstrcat("Get", (((yyGLRStackItem const *)yyvsp)[YYFILL ((4) - (9))].yystate.yysemantics.yysval.str));
8559    currentFunction->Comment = vtkstrdup(getComment());
8560    set_return(currentFunction, VTK_PARSE_OBJECT_PTR, getTypeId(), 0);
8561    output_function();
8562    }
8563     break;
8564
8565   case 505:
8566
8567 /* Line 936 of glr.c  */
8568 #line 2837 "vtkParse.y"
8569     {
8570    currentFunction->Macro = "vtkBooleanMacro";
8571    currentFunction->Name = vtkstrcat((((yyGLRStackItem const *)yyvsp)[YYFILL ((3) - (6))].yystate.yysemantics.yysval.str), "On");
8572    currentFunction->Comment = vtkstrdup(getComment());
8573    currentFunction->Signature =
8574      vtkstrcat3("void ", currentFunction->Name, "();");
8575    set_return(currentFunction, VTK_PARSE_VOID, "void", 0);
8576    output_function();
8577
8578    currentFunction->Macro = "vtkBooleanMacro";
8579    currentFunction->Name = vtkstrcat((((yyGLRStackItem const *)yyvsp)[YYFILL ((3) - (6))].yystate.yysemantics.yysval.str), "Off");
8580    currentFunction->Comment = vtkstrdup(getComment());
8581    currentFunction->Signature =
8582      vtkstrcat3("void ", currentFunction->Name, "();");
8583    set_return(currentFunction, VTK_PARSE_VOID, "void", 0);
8584    output_function();
8585    }
8586     break;
8587
8588   case 506:
8589
8590 /* Line 936 of glr.c  */
8591 #line 2854 "vtkParse.y"
8592     {startSig(); markSig();}
8593     break;
8594
8595   case 507:
8596
8597 /* Line 936 of glr.c  */
8598 #line 2855 "vtkParse.y"
8599     {
8600    chopSig();
8601    outputSetVectorMacro((((yyGLRStackItem const *)yyvsp)[YYFILL ((3) - (7))].yystate.yysemantics.yysval.str), getType(), copySig(), 2);
8602    }
8603     break;
8604
8605   case 508:
8606
8607 /* Line 936 of glr.c  */
8608 #line 2859 "vtkParse.y"
8609     {startSig(); markSig();}
8610     break;
8611
8612   case 509:
8613
8614 /* Line 936 of glr.c  */
8615 #line 2860 "vtkParse.y"
8616     {
8617    chopSig();
8618    outputGetVectorMacro((((yyGLRStackItem const *)yyvsp)[YYFILL ((3) - (7))].yystate.yysemantics.yysval.str), getType(), copySig(), 2);
8619    }
8620     break;
8621
8622   case 510:
8623
8624 /* Line 936 of glr.c  */
8625 #line 2864 "vtkParse.y"
8626     {startSig(); markSig();}
8627     break;
8628
8629   case 511:
8630
8631 /* Line 936 of glr.c  */
8632 #line 2865 "vtkParse.y"
8633     {
8634    chopSig();
8635    outputSetVectorMacro((((yyGLRStackItem const *)yyvsp)[YYFILL ((3) - (7))].yystate.yysemantics.yysval.str), getType(), copySig(), 3);
8636    }
8637     break;
8638
8639   case 512:
8640
8641 /* Line 936 of glr.c  */
8642 #line 2869 "vtkParse.y"
8643     {startSig(); markSig();}
8644     break;
8645
8646   case 513:
8647
8648 /* Line 936 of glr.c  */
8649 #line 2870 "vtkParse.y"
8650     {
8651    chopSig();
8652    outputGetVectorMacro((((yyGLRStackItem const *)yyvsp)[YYFILL ((3) - (7))].yystate.yysemantics.yysval.str), getType(), copySig(), 3);
8653    }
8654     break;
8655
8656   case 514:
8657
8658 /* Line 936 of glr.c  */
8659 #line 2874 "vtkParse.y"
8660     {startSig(); markSig();}
8661     break;
8662
8663   case 515:
8664
8665 /* Line 936 of glr.c  */
8666 #line 2875 "vtkParse.y"
8667     {
8668    chopSig();
8669    outputSetVectorMacro((((yyGLRStackItem const *)yyvsp)[YYFILL ((3) - (7))].yystate.yysemantics.yysval.str), getType(), copySig(), 4);
8670    }
8671     break;
8672
8673   case 516:
8674
8675 /* Line 936 of glr.c  */
8676 #line 2879 "vtkParse.y"
8677     {startSig(); markSig();}
8678     break;
8679
8680   case 517:
8681
8682 /* Line 936 of glr.c  */
8683 #line 2880 "vtkParse.y"
8684     {
8685    chopSig();
8686    outputGetVectorMacro((((yyGLRStackItem const *)yyvsp)[YYFILL ((3) - (7))].yystate.yysemantics.yysval.str), getType(), copySig(), 4);
8687    }
8688     break;
8689
8690   case 518:
8691
8692 /* Line 936 of glr.c  */
8693 #line 2884 "vtkParse.y"
8694     {startSig(); markSig();}
8695     break;
8696
8697   case 519:
8698
8699 /* Line 936 of glr.c  */
8700 #line 2885 "vtkParse.y"
8701     {
8702    chopSig();
8703    outputSetVectorMacro((((yyGLRStackItem const *)yyvsp)[YYFILL ((3) - (7))].yystate.yysemantics.yysval.str), getType(), copySig(), 6);
8704    }
8705     break;
8706
8707   case 520:
8708
8709 /* Line 936 of glr.c  */
8710 #line 2889 "vtkParse.y"
8711     {startSig(); markSig();}
8712     break;
8713
8714   case 521:
8715
8716 /* Line 936 of glr.c  */
8717 #line 2890 "vtkParse.y"
8718     {
8719    chopSig();
8720    outputGetVectorMacro((((yyGLRStackItem const *)yyvsp)[YYFILL ((3) - (7))].yystate.yysemantics.yysval.str), getType(), copySig(), 6);
8721    }
8722     break;
8723
8724   case 522:
8725
8726 /* Line 936 of glr.c  */
8727 #line 2894 "vtkParse.y"
8728     {startSig(); markSig();}
8729     break;
8730
8731   case 523:
8732
8733 /* Line 936 of glr.c  */
8734 #line 2896 "vtkParse.y"
8735     {
8736    const char *typeText;
8737    chopSig();
8738    typeText = copySig();
8739    currentFunction->Macro = "vtkSetVectorMacro";
8740    currentFunction->Name = vtkstrcat("Set", (((yyGLRStackItem const *)yyvsp)[YYFILL ((3) - (9))].yystate.yysemantics.yysval.str));
8741    currentFunction->Signature =
8742      vtkstrcat7("void ", currentFunction->Name, "(", typeText,
8743                 " a[", (((yyGLRStackItem const *)yyvsp)[YYFILL ((8) - (9))].yystate.yysemantics.yysval.str), "]);");
8744    currentFunction->Comment = vtkstrdup(getComment());
8745    add_parameter(currentFunction, (VTK_PARSE_POINTER | getType()),
8746                  getTypeId(), (int)strtol((((yyGLRStackItem const *)yyvsp)[YYFILL ((8) - (9))].yystate.yysemantics.yysval.str), NULL, 0));
8747    set_return(currentFunction, VTK_PARSE_VOID, "void", 0);
8748    output_function();
8749    }
8750     break;
8751
8752   case 524:
8753
8754 /* Line 936 of glr.c  */
8755 #line 2911 "vtkParse.y"
8756     {startSig();}
8757     break;
8758
8759   case 525:
8760
8761 /* Line 936 of glr.c  */
8762 #line 2913 "vtkParse.y"
8763     {
8764    chopSig();
8765    currentFunction->Macro = "vtkGetVectorMacro";
8766    currentFunction->Name = vtkstrcat("Get", (((yyGLRStackItem const *)yyvsp)[YYFILL ((3) - (9))].yystate.yysemantics.yysval.str));
8767    postSig(" *");
8768    postSig(currentFunction->Name);
8769    postSig("();");
8770    currentFunction->Comment = vtkstrdup(getComment());
8771    set_return(currentFunction, (VTK_PARSE_POINTER | getType()),
8772               getTypeId(), (int)strtol((((yyGLRStackItem const *)yyvsp)[YYFILL ((8) - (9))].yystate.yysemantics.yysval.str), NULL, 0));
8773    output_function();
8774    }
8775     break;
8776
8777   case 526:
8778
8779 /* Line 936 of glr.c  */
8780 #line 2926 "vtkParse.y"
8781     {
8782      currentFunction->Macro = "vtkViewportCoordinateMacro";
8783      currentFunction->Name = vtkstrcat3("Get", (((yyGLRStackItem const *)yyvsp)[YYFILL ((3) - (4))].yystate.yysemantics.yysval.str), "Coordinate");
8784      currentFunction->Signature =
8785        vtkstrcat3("vtkCoordinate *", currentFunction->Name, "();");
8786      currentFunction->Comment = vtkstrdup(getComment());
8787      set_return(currentFunction, VTK_PARSE_OBJECT_PTR, "vtkCoordinate", 0);
8788      output_function();
8789
8790      currentFunction->Macro = "vtkViewportCoordinateMacro";
8791      currentFunction->Name = vtkstrcat("Set", (((yyGLRStackItem const *)yyvsp)[YYFILL ((3) - (4))].yystate.yysemantics.yysval.str));
8792      currentFunction->Signature =
8793        vtkstrcat3("void ", currentFunction->Name, "(double, double);");
8794      currentFunction->Comment = vtkstrdup(getComment());
8795      add_parameter(currentFunction, VTK_PARSE_DOUBLE, "double", 0);
8796      add_parameter(currentFunction, VTK_PARSE_DOUBLE, "double", 0);
8797      set_return(currentFunction, VTK_PARSE_VOID, "void", 0);
8798      output_function();
8799
8800      currentFunction->Macro = "vtkViewportCoordinateMacro";
8801      currentFunction->Name = vtkstrcat("Set", (((yyGLRStackItem const *)yyvsp)[YYFILL ((3) - (4))].yystate.yysemantics.yysval.str));
8802      currentFunction->Signature =
8803        vtkstrcat3("void ", currentFunction->Name, "(double a[2]);");
8804      currentFunction->Comment = vtkstrdup(getComment());
8805      add_parameter(currentFunction, VTK_PARSE_DOUBLE_PTR, "double", 2);
8806      set_return(currentFunction, VTK_PARSE_VOID, "void", 0);
8807      output_function();
8808
8809      currentFunction->Macro = "vtkViewportCoordinateMacro";
8810      currentFunction->Name = vtkstrcat("Get", (((yyGLRStackItem const *)yyvsp)[YYFILL ((3) - (4))].yystate.yysemantics.yysval.str));
8811      currentFunction->Signature =
8812        vtkstrcat3("double *", currentFunction->Name, "();");
8813      currentFunction->Comment = vtkstrdup(getComment());
8814      set_return(currentFunction, VTK_PARSE_DOUBLE_PTR, "double", 2);
8815      output_function();
8816    }
8817     break;
8818
8819   case 527:
8820
8821 /* Line 936 of glr.c  */
8822 #line 2963 "vtkParse.y"
8823     {
8824      currentFunction->Macro = "vtkWorldCoordinateMacro";
8825      currentFunction->Name = vtkstrcat3("Get", (((yyGLRStackItem const *)yyvsp)[YYFILL ((3) - (4))].yystate.yysemantics.yysval.str), "Coordinate");
8826      currentFunction->Signature =
8827        vtkstrcat3("vtkCoordinate *", currentFunction->Name, "();");
8828      currentFunction->Comment = vtkstrdup(getComment());
8829      set_return(currentFunction, VTK_PARSE_OBJECT_PTR, "vtkCoordinate", 0);
8830      output_function();
8831
8832      currentFunction->Macro = "vtkWorldCoordinateMacro";
8833      currentFunction->Name = vtkstrcat("Set", (((yyGLRStackItem const *)yyvsp)[YYFILL ((3) - (4))].yystate.yysemantics.yysval.str));
8834      currentFunction->Signature =
8835        vtkstrcat3("void ", currentFunction->Name, "(double, double, double);");
8836      currentFunction->Comment = vtkstrdup(getComment());
8837      add_parameter(currentFunction, VTK_PARSE_DOUBLE, "double", 0);
8838      add_parameter(currentFunction, VTK_PARSE_DOUBLE, "double", 0);
8839      add_parameter(currentFunction, VTK_PARSE_DOUBLE, "double", 0);
8840      set_return(currentFunction, VTK_PARSE_VOID, "void", 0);
8841      output_function();
8842
8843      currentFunction->Macro = "vtkWorldCoordinateMacro";
8844      currentFunction->Name = vtkstrcat("Set", (((yyGLRStackItem const *)yyvsp)[YYFILL ((3) - (4))].yystate.yysemantics.yysval.str));
8845      currentFunction->Signature =
8846        vtkstrcat3("void ", currentFunction->Name, "(double a[3]);");
8847      currentFunction->Comment = vtkstrdup(getComment());
8848      add_parameter(currentFunction, VTK_PARSE_DOUBLE_PTR, "double", 3);
8849      set_return(currentFunction, VTK_PARSE_VOID, "void", 0);
8850      output_function();
8851
8852      currentFunction->Macro = "vtkWorldCoordinateMacro";
8853      currentFunction->Name = vtkstrcat("Get", (((yyGLRStackItem const *)yyvsp)[YYFILL ((3) - (4))].yystate.yysemantics.yysval.str));
8854      currentFunction->Signature =
8855        vtkstrcat3("double *", currentFunction->Name, "();");
8856      currentFunction->Comment = vtkstrdup(getComment());
8857      set_return(currentFunction, VTK_PARSE_DOUBLE_PTR, "double", 3);
8858      output_function();
8859    }
8860     break;
8861
8862   case 528:
8863
8864 /* Line 936 of glr.c  */
8865 #line 3001 "vtkParse.y"
8866     {
8867    currentFunction->Macro = "vtkTypeMacro";
8868    currentFunction->Name = "GetClassName";
8869    currentFunction->Signature = "const char *GetClassName();";
8870    currentFunction->Comment = vtkstrdup(getComment());
8871    set_return(currentFunction, (VTK_PARSE_CONST | VTK_PARSE_CHAR_PTR),
8872               "char", 0);
8873    output_function();
8874
8875    currentFunction->Macro = "vtkTypeMacro";
8876    currentFunction->Name = "IsA";
8877    currentFunction->Signature = "int IsA(const char *name);";
8878    currentFunction->Comment = vtkstrdup(getComment());
8879    add_parameter(currentFunction, (VTK_PARSE_CONST | VTK_PARSE_CHAR_PTR),
8880                 "char", 0);
8881    set_return(currentFunction, VTK_PARSE_INT, "int", 0);
8882    output_function();
8883
8884    currentFunction->Macro = "vtkTypeMacro";
8885    currentFunction->Name = "NewInstance";
8886    currentFunction->Signature = vtkstrcat((((yyGLRStackItem const *)yyvsp)[YYFILL ((3) - (7))].yystate.yysemantics.yysval.str), " *NewInstance();");
8887    currentFunction->Comment = vtkstrdup(getComment());
8888    set_return(currentFunction, VTK_PARSE_OBJECT_PTR, (((yyGLRStackItem const *)yyvsp)[YYFILL ((3) - (7))].yystate.yysemantics.yysval.str), 0);
8889    output_function();
8890
8891    currentFunction->Macro = "vtkTypeMacro";
8892    currentFunction->Name = "SafeDownCast";
8893    currentFunction->Signature =
8894      vtkstrcat((((yyGLRStackItem const *)yyvsp)[YYFILL ((3) - (7))].yystate.yysemantics.yysval.str), " *SafeDownCast(vtkObject* o);");
8895    currentFunction->Comment = vtkstrdup(getComment());
8896    add_parameter(currentFunction, VTK_PARSE_OBJECT_PTR, "vtkObject", 0);
8897    set_return(currentFunction, (VTK_PARSE_STATIC | VTK_PARSE_OBJECT_PTR),
8898               (((yyGLRStackItem const *)yyvsp)[YYFILL ((3) - (7))].yystate.yysemantics.yysval.str), 0);
8899    output_function();
8900    }
8901     break;
8902
8903   case 531:
8904
8905 /* Line 936 of glr.c  */
8906 #line 3045 "vtkParse.y"
8907     { ((*yyvalp).str) = "()"; }
8908     break;
8909
8910   case 532:
8911
8912 /* Line 936 of glr.c  */
8913 #line 3046 "vtkParse.y"
8914     { ((*yyvalp).str) = "[]"; }
8915     break;
8916
8917   case 533:
8918
8919 /* Line 936 of glr.c  */
8920 #line 3047 "vtkParse.y"
8921     { ((*yyvalp).str) = " new[]"; }
8922     break;
8923
8924   case 534:
8925
8926 /* Line 936 of glr.c  */
8927 #line 3048 "vtkParse.y"
8928     { ((*yyvalp).str) = " delete[]"; }
8929     break;
8930
8931   case 535:
8932
8933 /* Line 936 of glr.c  */
8934 #line 3049 "vtkParse.y"
8935     { ((*yyvalp).str) = "<"; }
8936     break;
8937
8938   case 536:
8939
8940 /* Line 936 of glr.c  */
8941 #line 3050 "vtkParse.y"
8942     { ((*yyvalp).str) = ">"; }
8943     break;
8944
8945   case 537:
8946
8947 /* Line 936 of glr.c  */
8948 #line 3051 "vtkParse.y"
8949     { ((*yyvalp).str) = ","; }
8950     break;
8951
8952   case 538:
8953
8954 /* Line 936 of glr.c  */
8955 #line 3052 "vtkParse.y"
8956     { ((*yyvalp).str) = "="; }
8957     break;
8958
8959   case 539:
8960
8961 /* Line 936 of glr.c  */
8962 #line 3053 "vtkParse.y"
8963     { ((*yyvalp).str) = ">>"; }
8964     break;
8965
8966   case 540:
8967
8968 /* Line 936 of glr.c  */
8969 #line 3054 "vtkParse.y"
8970     { ((*yyvalp).str) = ">>"; }
8971     break;
8972
8973   case 541:
8974
8975 /* Line 936 of glr.c  */
8976 #line 3055 "vtkParse.y"
8977     { ((*yyvalp).str) = vtkstrcat("\"\" ", (((yyGLRStackItem const *)yyvsp)[YYFILL ((2) - (2))].yystate.yysemantics.yysval.str)); }
8978     break;
8979
8980   case 543:
8981
8982 /* Line 936 of glr.c  */
8983 #line 3059 "vtkParse.y"
8984     { ((*yyvalp).str) = "%"; }
8985     break;
8986
8987   case 544:
8988
8989 /* Line 936 of glr.c  */
8990 #line 3060 "vtkParse.y"
8991     { ((*yyvalp).str) = "*"; }
8992     break;
8993
8994   case 545:
8995
8996 /* Line 936 of glr.c  */
8997 #line 3061 "vtkParse.y"
8998     { ((*yyvalp).str) = "/"; }
8999     break;
9000
9001   case 546:
9002
9003 /* Line 936 of glr.c  */
9004 #line 3062 "vtkParse.y"
9005     { ((*yyvalp).str) = "-"; }
9006     break;
9007
9008   case 547:
9009
9010 /* Line 936 of glr.c  */
9011 #line 3063 "vtkParse.y"
9012     { ((*yyvalp).str) = "+"; }
9013     break;
9014
9015   case 548:
9016
9017 /* Line 936 of glr.c  */
9018 #line 3064 "vtkParse.y"
9019     { ((*yyvalp).str) = "!"; }
9020     break;
9021
9022   case 549:
9023
9024 /* Line 936 of glr.c  */
9025 #line 3065 "vtkParse.y"
9026     { ((*yyvalp).str) = "~"; }
9027     break;
9028
9029   case 550:
9030
9031 /* Line 936 of glr.c  */
9032 #line 3066 "vtkParse.y"
9033     { ((*yyvalp).str) = "&"; }
9034     break;
9035
9036   case 551:
9037
9038 /* Line 936 of glr.c  */
9039 #line 3067 "vtkParse.y"
9040     { ((*yyvalp).str) = "|"; }
9041     break;
9042
9043   case 552:
9044
9045 /* Line 936 of glr.c  */
9046 #line 3068 "vtkParse.y"
9047     { ((*yyvalp).str) = "^"; }
9048     break;
9049
9050   case 553:
9051
9052 /* Line 936 of glr.c  */
9053 #line 3069 "vtkParse.y"
9054     { ((*yyvalp).str) = " new"; }
9055     break;
9056
9057   case 554:
9058
9059 /* Line 936 of glr.c  */
9060 #line 3070 "vtkParse.y"
9061     { ((*yyvalp).str) = " delete"; }
9062     break;
9063
9064   case 555:
9065
9066 /* Line 936 of glr.c  */
9067 #line 3071 "vtkParse.y"
9068     { ((*yyvalp).str) = "<<="; }
9069     break;
9070
9071   case 556:
9072
9073 /* Line 936 of glr.c  */
9074 #line 3072 "vtkParse.y"
9075     { ((*yyvalp).str) = ">>="; }
9076     break;
9077
9078   case 557:
9079
9080 /* Line 936 of glr.c  */
9081 #line 3073 "vtkParse.y"
9082     { ((*yyvalp).str) = "<<"; }
9083     break;
9084
9085   case 558:
9086
9087 /* Line 936 of glr.c  */
9088 #line 3074 "vtkParse.y"
9089     { ((*yyvalp).str) = ".*"; }
9090     break;
9091
9092   case 559:
9093
9094 /* Line 936 of glr.c  */
9095 #line 3075 "vtkParse.y"
9096     { ((*yyvalp).str) = "->*"; }
9097     break;
9098
9099   case 560:
9100
9101 /* Line 936 of glr.c  */
9102 #line 3076 "vtkParse.y"
9103     { ((*yyvalp).str) = "->"; }
9104     break;
9105
9106   case 561:
9107
9108 /* Line 936 of glr.c  */
9109 #line 3077 "vtkParse.y"
9110     { ((*yyvalp).str) = "+="; }
9111     break;
9112
9113   case 562:
9114
9115 /* Line 936 of glr.c  */
9116 #line 3078 "vtkParse.y"
9117     { ((*yyvalp).str) = "-="; }
9118     break;
9119
9120   case 563:
9121
9122 /* Line 936 of glr.c  */
9123 #line 3079 "vtkParse.y"
9124     { ((*yyvalp).str) = "*="; }
9125     break;
9126
9127   case 564:
9128
9129 /* Line 936 of glr.c  */
9130 #line 3080 "vtkParse.y"
9131     { ((*yyvalp).str) = "/="; }
9132     break;
9133
9134   case 565:
9135
9136 /* Line 936 of glr.c  */
9137 #line 3081 "vtkParse.y"
9138     { ((*yyvalp).str) = "%="; }
9139     break;
9140
9141   case 566:
9142
9143 /* Line 936 of glr.c  */
9144 #line 3082 "vtkParse.y"
9145     { ((*yyvalp).str) = "++"; }
9146     break;
9147
9148   case 567:
9149
9150 /* Line 936 of glr.c  */
9151 #line 3083 "vtkParse.y"
9152     { ((*yyvalp).str) = "--"; }
9153     break;
9154
9155   case 568:
9156
9157 /* Line 936 of glr.c  */
9158 #line 3084 "vtkParse.y"
9159     { ((*yyvalp).str) = "&="; }
9160     break;
9161
9162   case 569:
9163
9164 /* Line 936 of glr.c  */
9165 #line 3085 "vtkParse.y"
9166     { ((*yyvalp).str) = "|="; }
9167     break;
9168
9169   case 570:
9170
9171 /* Line 936 of glr.c  */
9172 #line 3086 "vtkParse.y"
9173     { ((*yyvalp).str) = "^="; }
9174     break;
9175
9176   case 571:
9177
9178 /* Line 936 of glr.c  */
9179 #line 3087 "vtkParse.y"
9180     { ((*yyvalp).str) = "&&"; }
9181     break;
9182
9183   case 572:
9184
9185 /* Line 936 of glr.c  */
9186 #line 3088 "vtkParse.y"
9187     { ((*yyvalp).str) = "||"; }
9188     break;
9189
9190   case 573:
9191
9192 /* Line 936 of glr.c  */
9193 #line 3089 "vtkParse.y"
9194     { ((*yyvalp).str) = "=="; }
9195     break;
9196
9197   case 574:
9198
9199 /* Line 936 of glr.c  */
9200 #line 3090 "vtkParse.y"
9201     { ((*yyvalp).str) = "!="; }
9202     break;
9203
9204   case 575:
9205
9206 /* Line 936 of glr.c  */
9207 #line 3091 "vtkParse.y"
9208     { ((*yyvalp).str) = "<="; }
9209     break;
9210
9211   case 576:
9212
9213 /* Line 936 of glr.c  */
9214 #line 3092 "vtkParse.y"
9215     { ((*yyvalp).str) = ">="; }
9216     break;
9217
9218   case 577:
9219
9220 /* Line 936 of glr.c  */
9221 #line 3095 "vtkParse.y"
9222     { ((*yyvalp).str) = "typedef"; }
9223     break;
9224
9225   case 578:
9226
9227 /* Line 936 of glr.c  */
9228 #line 3096 "vtkParse.y"
9229     { ((*yyvalp).str) = "typename"; }
9230     break;
9231
9232   case 579:
9233
9234 /* Line 936 of glr.c  */
9235 #line 3097 "vtkParse.y"
9236     { ((*yyvalp).str) = "class"; }
9237     break;
9238
9239   case 580:
9240
9241 /* Line 936 of glr.c  */
9242 #line 3098 "vtkParse.y"
9243     { ((*yyvalp).str) = "struct"; }
9244     break;
9245
9246   case 581:
9247
9248 /* Line 936 of glr.c  */
9249 #line 3099 "vtkParse.y"
9250     { ((*yyvalp).str) = "union"; }
9251     break;
9252
9253   case 582:
9254
9255 /* Line 936 of glr.c  */
9256 #line 3100 "vtkParse.y"
9257     { ((*yyvalp).str) = "template"; }
9258     break;
9259
9260   case 583:
9261
9262 /* Line 936 of glr.c  */
9263 #line 3101 "vtkParse.y"
9264     { ((*yyvalp).str) = "public"; }
9265     break;
9266
9267   case 584:
9268
9269 /* Line 936 of glr.c  */
9270 #line 3102 "vtkParse.y"
9271     { ((*yyvalp).str) = "protected"; }
9272     break;
9273
9274   case 585:
9275
9276 /* Line 936 of glr.c  */
9277 #line 3103 "vtkParse.y"
9278     { ((*yyvalp).str) = "private"; }
9279     break;
9280
9281   case 586:
9282
9283 /* Line 936 of glr.c  */
9284 #line 3104 "vtkParse.y"
9285     { ((*yyvalp).str) = "const"; }
9286     break;
9287
9288   case 587:
9289
9290 /* Line 936 of glr.c  */
9291 #line 3105 "vtkParse.y"
9292     { ((*yyvalp).str) = "static"; }
9293     break;
9294
9295   case 588:
9296
9297 /* Line 936 of glr.c  */
9298 #line 3106 "vtkParse.y"
9299     { ((*yyvalp).str) = "thread_local"; }
9300     break;
9301
9302   case 589:
9303
9304 /* Line 936 of glr.c  */
9305 #line 3107 "vtkParse.y"
9306     { ((*yyvalp).str) = "constexpr"; }
9307     break;
9308
9309   case 590:
9310
9311 /* Line 936 of glr.c  */
9312 #line 3108 "vtkParse.y"
9313     { ((*yyvalp).str) = "inline"; }
9314     break;
9315
9316   case 591:
9317
9318 /* Line 936 of glr.c  */
9319 #line 3109 "vtkParse.y"
9320     { ((*yyvalp).str) = "virtual"; }
9321     break;
9322
9323   case 592:
9324
9325 /* Line 936 of glr.c  */
9326 #line 3110 "vtkParse.y"
9327     { ((*yyvalp).str) = "explicit"; }
9328     break;
9329
9330   case 593:
9331
9332 /* Line 936 of glr.c  */
9333 #line 3111 "vtkParse.y"
9334     { ((*yyvalp).str) = "decltype"; }
9335     break;
9336
9337   case 594:
9338
9339 /* Line 936 of glr.c  */
9340 #line 3112 "vtkParse.y"
9341     { ((*yyvalp).str) = "default"; }
9342     break;
9343
9344   case 595:
9345
9346 /* Line 936 of glr.c  */
9347 #line 3113 "vtkParse.y"
9348     { ((*yyvalp).str) = "extern"; }
9349     break;
9350
9351   case 596:
9352
9353 /* Line 936 of glr.c  */
9354 #line 3114 "vtkParse.y"
9355     { ((*yyvalp).str) = "using"; }
9356     break;
9357
9358   case 597:
9359
9360 /* Line 936 of glr.c  */
9361 #line 3115 "vtkParse.y"
9362     { ((*yyvalp).str) = "namespace"; }
9363     break;
9364
9365   case 598:
9366
9367 /* Line 936 of glr.c  */
9368 #line 3116 "vtkParse.y"
9369     { ((*yyvalp).str) = "operator"; }
9370     break;
9371
9372   case 599:
9373
9374 /* Line 936 of glr.c  */
9375 #line 3117 "vtkParse.y"
9376     { ((*yyvalp).str) = "enum"; }
9377     break;
9378
9379   case 600:
9380
9381 /* Line 936 of glr.c  */
9382 #line 3118 "vtkParse.y"
9383     { ((*yyvalp).str) = "throw"; }
9384     break;
9385
9386   case 601:
9387
9388 /* Line 936 of glr.c  */
9389 #line 3119 "vtkParse.y"
9390     { ((*yyvalp).str) = "noexcept"; }
9391     break;
9392
9393   case 602:
9394
9395 /* Line 936 of glr.c  */
9396 #line 3120 "vtkParse.y"
9397     { ((*yyvalp).str) = "const_cast"; }
9398     break;
9399
9400   case 603:
9401
9402 /* Line 936 of glr.c  */
9403 #line 3121 "vtkParse.y"
9404     { ((*yyvalp).str) = "dynamic_cast"; }
9405     break;
9406
9407   case 604:
9408
9409 /* Line 936 of glr.c  */
9410 #line 3122 "vtkParse.y"
9411     { ((*yyvalp).str) = "static_cast"; }
9412     break;
9413
9414   case 605:
9415
9416 /* Line 936 of glr.c  */
9417 #line 3123 "vtkParse.y"
9418     { ((*yyvalp).str) = "reinterpret_cast"; }
9419     break;
9420
9421   case 618:
9422
9423 /* Line 936 of glr.c  */
9424 #line 3146 "vtkParse.y"
9425     { postSig("< "); }
9426     break;
9427
9428   case 619:
9429
9430 /* Line 936 of glr.c  */
9431 #line 3147 "vtkParse.y"
9432     { postSig("> "); }
9433     break;
9434
9435   case 621:
9436
9437 /* Line 936 of glr.c  */
9438 #line 3148 "vtkParse.y"
9439     { postSig(">"); }
9440     break;
9441
9442   case 623:
9443
9444 /* Line 936 of glr.c  */
9445 #line 3152 "vtkParse.y"
9446     { chopSig(); postSig("::"); }
9447     break;
9448
9449   case 627:
9450
9451 /* Line 936 of glr.c  */
9452 #line 3159 "vtkParse.y"
9453     {
9454       if ((((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (1))].yystate.yysemantics.yysval.str))[0] == '+' || ((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (1))].yystate.yysemantics.yysval.str))[0] == '-' ||
9455            ((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (1))].yystate.yysemantics.yysval.str))[0] == '*' || ((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (1))].yystate.yysemantics.yysval.str))[0] == '&') &&
9456           ((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (1))].yystate.yysemantics.yysval.str))[1] == '\0')
9457         {
9458         int c1 = 0;
9459         size_t l;
9460         const char *cp;
9461         chopSig();
9462         cp = getSig();
9463         l = getSigLength();
9464         if (l != 0) { c1 = cp[l-1]; }
9465         if (c1 != 0 && c1 != '(' && c1 != '[' && c1 != '=')
9466           {
9467           postSig(" ");
9468           }
9469         postSig((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (1))].yystate.yysemantics.yysval.str));
9470         if (vtkParse_CharType(c1, (CPRE_IDGIT|CPRE_QUOTE)) ||
9471             c1 == ')' || c1 == ']')
9472           {
9473           postSig(" ");
9474           }
9475         }
9476        else
9477         {
9478         postSig((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (1))].yystate.yysemantics.yysval.str));
9479         postSig(" ");
9480         }
9481     }
9482     break;
9483
9484   case 628:
9485
9486 /* Line 936 of glr.c  */
9487 #line 3188 "vtkParse.y"
9488     { postSig(":"); postSig(" "); }
9489     break;
9490
9491   case 629:
9492
9493 /* Line 936 of glr.c  */
9494 #line 3188 "vtkParse.y"
9495     { postSig("."); }
9496     break;
9497
9498   case 630:
9499
9500 /* Line 936 of glr.c  */
9501 #line 3189 "vtkParse.y"
9502     { postSig((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (1))].yystate.yysemantics.yysval.str)); postSig(" "); }
9503     break;
9504
9505   case 631:
9506
9507 /* Line 936 of glr.c  */
9508 #line 3190 "vtkParse.y"
9509     { postSig((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (1))].yystate.yysemantics.yysval.str)); postSig(" "); }
9510     break;
9511
9512   case 633:
9513
9514 /* Line 936 of glr.c  */
9515 #line 3193 "vtkParse.y"
9516     {
9517       int c1 = 0;
9518       size_t l;
9519       const char *cp;
9520       chopSig();
9521       cp = getSig();
9522       l = getSigLength();
9523       if (l != 0) { c1 = cp[l-1]; }
9524       while (vtkParse_CharType(c1, CPRE_IDGIT) && l != 0)
9525         {
9526         --l;
9527         c1 = cp[l-1];
9528         }
9529       if (l < 2 || cp[l-1] != ':' || cp[l-2] != ':')
9530         {
9531         cp = add_const_scope(&cp[l]);
9532         resetSig(l);
9533         postSig(cp);
9534         }
9535       postSig(" ");
9536     }
9537     break;
9538
9539   case 637:
9540
9541 /* Line 936 of glr.c  */
9542 #line 3220 "vtkParse.y"
9543     { postSig("< "); }
9544     break;
9545
9546   case 638:
9547
9548 /* Line 936 of glr.c  */
9549 #line 3221 "vtkParse.y"
9550     { postSig("> "); }
9551     break;
9552
9553   case 639:
9554
9555 /* Line 936 of glr.c  */
9556 #line 3222 "vtkParse.y"
9557     { postSig(">"); }
9558     break;
9559
9560   case 641:
9561
9562 /* Line 936 of glr.c  */
9563 #line 3226 "vtkParse.y"
9564     { postSig("= "); }
9565     break;
9566
9567   case 642:
9568
9569 /* Line 936 of glr.c  */
9570 #line 3227 "vtkParse.y"
9571     { chopSig(); postSig(", "); }
9572     break;
9573
9574   case 644:
9575
9576 /* Line 936 of glr.c  */
9577 #line 3231 "vtkParse.y"
9578     { chopSig(); postSig(";"); }
9579     break;
9580
9581   case 652:
9582
9583 /* Line 936 of glr.c  */
9584 #line 3245 "vtkParse.y"
9585     { postSig("= "); }
9586     break;
9587
9588   case 653:
9589
9590 /* Line 936 of glr.c  */
9591 #line 3246 "vtkParse.y"
9592     { chopSig(); postSig(", "); }
9593     break;
9594
9595   case 654:
9596
9597 /* Line 936 of glr.c  */
9598 #line 3250 "vtkParse.y"
9599     {
9600       chopSig();
9601       if (getSig()[getSigLength()-1] == '<') { postSig(" "); }
9602       postSig("<");
9603     }
9604     break;
9605
9606   case 655:
9607
9608 /* Line 936 of glr.c  */
9609 #line 3256 "vtkParse.y"
9610     {
9611       chopSig();
9612       if (getSig()[getSigLength()-1] == '>') { postSig(" "); }
9613       postSig("> ");
9614     }
9615     break;
9616
9617   case 658:
9618
9619 /* Line 936 of glr.c  */
9620 #line 3267 "vtkParse.y"
9621     { postSig("["); }
9622     break;
9623
9624   case 659:
9625
9626 /* Line 936 of glr.c  */
9627 #line 3268 "vtkParse.y"
9628     { chopSig(); postSig("] "); }
9629     break;
9630
9631   case 660:
9632
9633 /* Line 936 of glr.c  */
9634 #line 3269 "vtkParse.y"
9635     { postSig("[["); }
9636     break;
9637
9638   case 661:
9639
9640 /* Line 936 of glr.c  */
9641 #line 3270 "vtkParse.y"
9642     { chopSig(); postSig("]] "); }
9643     break;
9644
9645   case 662:
9646
9647 /* Line 936 of glr.c  */
9648 #line 3273 "vtkParse.y"
9649     { postSig("("); }
9650     break;
9651
9652   case 663:
9653
9654 /* Line 936 of glr.c  */
9655 #line 3274 "vtkParse.y"
9656     { chopSig(); postSig(") "); }
9657     break;
9658
9659   case 664:
9660
9661 /* Line 936 of glr.c  */
9662 #line 3275 "vtkParse.y"
9663     { postSig("("); postSig((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (1))].yystate.yysemantics.yysval.str)); postSig("*"); }
9664     break;
9665
9666   case 665:
9667
9668 /* Line 936 of glr.c  */
9669 #line 3276 "vtkParse.y"
9670     { chopSig(); postSig(") "); }
9671     break;
9672
9673   case 666:
9674
9675 /* Line 936 of glr.c  */
9676 #line 3277 "vtkParse.y"
9677     { postSig("("); postSig((((yyGLRStackItem const *)yyvsp)[YYFILL ((1) - (1))].yystate.yysemantics.yysval.str)); postSig("&"); }
9678     break;
9679
9680   case 667:
9681
9682 /* Line 936 of glr.c  */
9683 #line 3278 "vtkParse.y"
9684     { chopSig(); postSig(") "); }
9685     break;
9686
9687   case 668:
9688
9689 /* Line 936 of glr.c  */
9690 #line 3281 "vtkParse.y"
9691     { postSig("{ "); }
9692     break;
9693
9694   case 669:
9695
9696 /* Line 936 of glr.c  */
9697 #line 3281 "vtkParse.y"
9698     { postSig("} "); }
9699     break;
9700
9701
9702
9703 /* Line 936 of glr.c  */
9704 #line 9710 "vtkParse.tab.c"
9705       default: break;
9706     }
9707
9708   return yyok;
9709 # undef yyerrok
9710 # undef YYABORT
9711 # undef YYACCEPT
9712 # undef YYERROR
9713 # undef YYBACKUP
9714 # undef yyclearin
9715 # undef YYRECOVERING
9716 }
9717 \f
9718
9719 /*ARGSUSED*/ static void
9720 yyuserMerge (int yyn, YYSTYPE* yy0, YYSTYPE* yy1)
9721 {
9722   YYUSE (yy0);
9723   YYUSE (yy1);
9724
9725   switch (yyn)
9726     {
9727
9728       default: break;
9729     }
9730 }
9731
9732                               /* Bison grammar-table manipulation.  */
9733
9734 /*-----------------------------------------------.
9735 | Release the memory associated to this symbol.  |
9736 `-----------------------------------------------*/
9737
9738 /*ARGSUSED*/
9739 static void
9740 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
9741 {
9742   YYUSE (yyvaluep);
9743
9744   if (!yymsg)
9745     yymsg = "Deleting";
9746   YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
9747
9748   switch (yytype)
9749     {
9750
9751       default:
9752         break;
9753     }
9754 }
9755
9756 /** Number of symbols composing the right hand side of rule #RULE.  */
9757 static int
9758 yyrhsLength (yyRuleNum yyrule)
9759 {
9760   return yyr2[yyrule];
9761 }
9762
9763 static void
9764 yydestroyGLRState (char const *yymsg, yyGLRState *yys)
9765 {
9766   if (yys->yyresolved)
9767     yydestruct (yymsg, yystos[yys->yylrState],
9768                 &yys->yysemantics.yysval);
9769   else
9770     {
9771 #if YYDEBUG
9772       if (yydebug)
9773         {
9774           if (yys->yysemantics.yyfirstVal)
9775             YYFPRINTF (stderr, "%s unresolved ", yymsg);
9776           else
9777             YYFPRINTF (stderr, "%s incomplete ", yymsg);
9778           yy_symbol_print (stderr, yystos[yys->yylrState],
9779                            NULL);
9780           YYFPRINTF (stderr, "\n");
9781         }
9782 #endif
9783
9784       if (yys->yysemantics.yyfirstVal)
9785         {
9786           yySemanticOption *yyoption = yys->yysemantics.yyfirstVal;
9787           yyGLRState *yyrh;
9788           int yyn;
9789           for (yyrh = yyoption->yystate, yyn = yyrhsLength (yyoption->yyrule);
9790                yyn > 0;
9791                yyrh = yyrh->yypred, yyn -= 1)
9792             yydestroyGLRState (yymsg, yyrh);
9793         }
9794     }
9795 }
9796
9797 /** Left-hand-side symbol for rule #RULE.  */
9798 static yySymbol
9799 yylhsNonterm (yyRuleNum yyrule)
9800 {
9801   return yyr1[yyrule];
9802 }
9803
9804 #define yyis_pact_ninf(yystate) \
9805   ((yystate) == YYPACT_NINF)
9806
9807 /** True iff LR state STATE has only a default reduction (regardless
9808  *  of token).  */
9809 static yybool
9810 yyisDefaultedState (yyStateNum yystate)
9811 {
9812   return yyis_pact_ninf (yypact[yystate]);
9813 }
9814
9815 /** The default reduction for STATE, assuming it has one.  */
9816 static yyRuleNum
9817 yydefaultAction (yyStateNum yystate)
9818 {
9819   return yydefact[yystate];
9820 }
9821
9822 #define yyis_table_ninf(yytable_value) \
9823   YYID (0)
9824
9825 /** Set *YYACTION to the action to take in YYSTATE on seeing YYTOKEN.
9826  *  Result R means
9827  *    R < 0:  Reduce on rule -R.
9828  *    R = 0:  Error.
9829  *    R > 0:  Shift to state R.
9830  *  Set *CONFLICTS to a pointer into yyconfl to 0-terminated list of
9831  *  conflicting reductions.
9832  */
9833 static void
9834 yygetLRActions (yyStateNum yystate, int yytoken,
9835                 int* yyaction, const short int** yyconflicts)
9836 {
9837   int yyindex = yypact[yystate] + yytoken;
9838   if (yyindex < 0 || YYLAST < yyindex || yycheck[yyindex] != yytoken)
9839     {
9840       *yyaction = -yydefact[yystate];
9841       *yyconflicts = yyconfl;
9842     }
9843   else if (! yyis_table_ninf (yytable[yyindex]))
9844     {
9845       *yyaction = yytable[yyindex];
9846       *yyconflicts = yyconfl + yyconflp[yyindex];
9847     }
9848   else
9849     {
9850       *yyaction = 0;
9851       *yyconflicts = yyconfl + yyconflp[yyindex];
9852     }
9853 }
9854
9855 static yyStateNum
9856 yyLRgotoState (yyStateNum yystate, yySymbol yylhs)
9857 {
9858   int yyr;
9859   yyr = yypgoto[yylhs - YYNTOKENS] + yystate;
9860   if (0 <= yyr && yyr <= YYLAST && yycheck[yyr] == yystate)
9861     return yytable[yyr];
9862   else
9863     return yydefgoto[yylhs - YYNTOKENS];
9864 }
9865
9866 static yybool
9867 yyisShiftAction (int yyaction)
9868 {
9869   return 0 < yyaction;
9870 }
9871
9872 static yybool
9873 yyisErrorAction (int yyaction)
9874 {
9875   return yyaction == 0;
9876 }
9877
9878                                 /* GLRStates */
9879
9880 /** Return a fresh GLRStackItem.  Callers should call
9881  * YY_RESERVE_GLRSTACK afterwards to make sure there is sufficient
9882  * headroom.  */
9883
9884 static yyGLRStackItem*
9885 yynewGLRStackItem (yyGLRStack* yystackp, yybool yyisState)
9886 {
9887   yyGLRStackItem* yynewItem = yystackp->yynextFree;
9888   yystackp->yyspaceLeft -= 1;
9889   yystackp->yynextFree += 1;
9890   yynewItem->yystate.yyisState = yyisState;
9891   return yynewItem;
9892 }
9893
9894 /** Add a new semantic action that will execute the action for rule
9895  *  RULENUM on the semantic values in RHS to the list of
9896  *  alternative actions for STATE.  Assumes that RHS comes from
9897  *  stack #K of *STACKP. */
9898 static void
9899 yyaddDeferredAction (yyGLRStack* yystackp, size_t yyk, yyGLRState* yystate,
9900                      yyGLRState* rhs, yyRuleNum yyrule)
9901 {
9902   yySemanticOption* yynewOption =
9903     &yynewGLRStackItem (yystackp, yyfalse)->yyoption;
9904   yynewOption->yystate = rhs;
9905   yynewOption->yyrule = yyrule;
9906   if (yystackp->yytops.yylookaheadNeeds[yyk])
9907     {
9908       yynewOption->yyrawchar = yychar;
9909       yynewOption->yyval = yylval;
9910       yynewOption->yyloc = yylloc;
9911     }
9912   else
9913     yynewOption->yyrawchar = YYEMPTY;
9914   yynewOption->yynext = yystate->yysemantics.yyfirstVal;
9915   yystate->yysemantics.yyfirstVal = yynewOption;
9916
9917   YY_RESERVE_GLRSTACK (yystackp);
9918 }
9919
9920                                 /* GLRStacks */
9921
9922 /** Initialize SET to a singleton set containing an empty stack.  */
9923 static yybool
9924 yyinitStateSet (yyGLRStateSet* yyset)
9925 {
9926   yyset->yysize = 1;
9927   yyset->yycapacity = 16;
9928   yyset->yystates = (yyGLRState**) YYMALLOC (16 * sizeof yyset->yystates[0]);
9929   if (! yyset->yystates)
9930     return yyfalse;
9931   yyset->yystates[0] = NULL;
9932   yyset->yylookaheadNeeds =
9933     (yybool*) YYMALLOC (16 * sizeof yyset->yylookaheadNeeds[0]);
9934   if (! yyset->yylookaheadNeeds)
9935     {
9936       YYFREE (yyset->yystates);
9937       return yyfalse;
9938     }
9939   return yytrue;
9940 }
9941
9942 static void yyfreeStateSet (yyGLRStateSet* yyset)
9943 {
9944   YYFREE (yyset->yystates);
9945   YYFREE (yyset->yylookaheadNeeds);
9946 }
9947
9948 /** Initialize STACK to a single empty stack, with total maximum
9949  *  capacity for all stacks of SIZE.  */
9950 static yybool
9951 yyinitGLRStack (yyGLRStack* yystackp, size_t yysize)
9952 {
9953   yystackp->yyerrState = 0;
9954   yynerrs = 0;
9955   yystackp->yyspaceLeft = yysize;
9956   yystackp->yyitems =
9957     (yyGLRStackItem*) YYMALLOC (yysize * sizeof yystackp->yynextFree[0]);
9958   if (!yystackp->yyitems)
9959     return yyfalse;
9960   yystackp->yynextFree = yystackp->yyitems;
9961   yystackp->yysplitPoint = NULL;
9962   yystackp->yylastDeleted = NULL;
9963   return yyinitStateSet (&yystackp->yytops);
9964 }
9965
9966
9967 #if YYSTACKEXPANDABLE
9968 # define YYRELOC(YYFROMITEMS,YYTOITEMS,YYX,YYTYPE) \
9969   &((YYTOITEMS) - ((YYFROMITEMS) - (yyGLRStackItem*) (YYX)))->YYTYPE
9970
9971 /** If STACK is expandable, extend it.  WARNING: Pointers into the
9972     stack from outside should be considered invalid after this call.
9973     We always expand when there are 1 or fewer items left AFTER an
9974     allocation, so that we can avoid having external pointers exist
9975     across an allocation.  */
9976 static void
9977 yyexpandGLRStack (yyGLRStack* yystackp)
9978 {
9979   yyGLRStackItem* yynewItems;
9980   yyGLRStackItem* yyp0, *yyp1;
9981   size_t yysize, yynewSize;
9982   size_t yyn;
9983   yysize = yystackp->yynextFree - yystackp->yyitems;
9984   if (YYMAXDEPTH - YYHEADROOM < yysize)
9985     yyMemoryExhausted (yystackp);
9986   yynewSize = 2*yysize;
9987   if (YYMAXDEPTH < yynewSize)
9988     yynewSize = YYMAXDEPTH;
9989   yynewItems = (yyGLRStackItem*) YYMALLOC (yynewSize * sizeof yynewItems[0]);
9990   if (! yynewItems)
9991     yyMemoryExhausted (yystackp);
9992   for (yyp0 = yystackp->yyitems, yyp1 = yynewItems, yyn = yysize;
9993        0 < yyn;
9994        yyn -= 1, yyp0 += 1, yyp1 += 1)
9995     {
9996       *yyp1 = *yyp0;
9997       if (*(yybool *) yyp0)
9998         {
9999           yyGLRState* yys0 = &yyp0->yystate;
10000           yyGLRState* yys1 = &yyp1->yystate;
10001           if (yys0->yypred != NULL)
10002             yys1->yypred =
10003               YYRELOC (yyp0, yyp1, yys0->yypred, yystate);
10004           if (! yys0->yyresolved && yys0->yysemantics.yyfirstVal != NULL)
10005             yys1->yysemantics.yyfirstVal =
10006               YYRELOC(yyp0, yyp1, yys0->yysemantics.yyfirstVal, yyoption);
10007         }
10008       else
10009         {
10010           yySemanticOption* yyv0 = &yyp0->yyoption;
10011           yySemanticOption* yyv1 = &yyp1->yyoption;
10012           if (yyv0->yystate != NULL)
10013             yyv1->yystate = YYRELOC (yyp0, yyp1, yyv0->yystate, yystate);
10014           if (yyv0->yynext != NULL)
10015             yyv1->yynext = YYRELOC (yyp0, yyp1, yyv0->yynext, yyoption);
10016         }
10017     }
10018   if (yystackp->yysplitPoint != NULL)
10019     yystackp->yysplitPoint = YYRELOC (yystackp->yyitems, yynewItems,
10020                                  yystackp->yysplitPoint, yystate);
10021
10022   for (yyn = 0; yyn < yystackp->yytops.yysize; yyn += 1)
10023     if (yystackp->yytops.yystates[yyn] != NULL)
10024       yystackp->yytops.yystates[yyn] =
10025         YYRELOC (yystackp->yyitems, yynewItems,
10026                  yystackp->yytops.yystates[yyn], yystate);
10027   YYFREE (yystackp->yyitems);
10028   yystackp->yyitems = yynewItems;
10029   yystackp->yynextFree = yynewItems + yysize;
10030   yystackp->yyspaceLeft = yynewSize - yysize;
10031 }
10032 #endif
10033
10034 static void
10035 yyfreeGLRStack (yyGLRStack* yystackp)
10036 {
10037   YYFREE (yystackp->yyitems);
10038   yyfreeStateSet (&yystackp->yytops);
10039 }
10040
10041 /** Assuming that S is a GLRState somewhere on STACK, update the
10042  *  splitpoint of STACK, if needed, so that it is at least as deep as
10043  *  S.  */
10044 static void
10045 yyupdateSplit (yyGLRStack* yystackp, yyGLRState* yys)
10046 {
10047   if (yystackp->yysplitPoint != NULL && yystackp->yysplitPoint > yys)
10048     yystackp->yysplitPoint = yys;
10049 }
10050
10051 /** Invalidate stack #K in STACK.  */
10052 static void
10053 yymarkStackDeleted (yyGLRStack* yystackp, size_t yyk)
10054 {
10055   if (yystackp->yytops.yystates[yyk] != NULL)
10056     yystackp->yylastDeleted = yystackp->yytops.yystates[yyk];
10057   yystackp->yytops.yystates[yyk] = NULL;
10058 }
10059
10060 /** Undelete the last stack that was marked as deleted.  Can only be
10061     done once after a deletion, and only when all other stacks have
10062     been deleted.  */
10063 static void
10064 yyundeleteLastStack (yyGLRStack* yystackp)
10065 {
10066   if (yystackp->yylastDeleted == NULL || yystackp->yytops.yysize != 0)
10067     return;
10068   yystackp->yytops.yystates[0] = yystackp->yylastDeleted;
10069   yystackp->yytops.yysize = 1;
10070   YYDPRINTF ((stderr, "Restoring last deleted stack as stack #0.\n"));
10071   yystackp->yylastDeleted = NULL;
10072 }
10073
10074 static void
10075 yyremoveDeletes (yyGLRStack* yystackp)
10076 {
10077   size_t yyi, yyj;
10078   yyi = yyj = 0;
10079   while (yyj < yystackp->yytops.yysize)
10080     {
10081       if (yystackp->yytops.yystates[yyi] == NULL)
10082         {
10083           if (yyi == yyj)
10084             {
10085               YYDPRINTF ((stderr, "Removing dead stacks.\n"));
10086             }
10087           yystackp->yytops.yysize -= 1;
10088         }
10089       else
10090         {
10091           yystackp->yytops.yystates[yyj] = yystackp->yytops.yystates[yyi];
10092           /* In the current implementation, it's unnecessary to copy
10093              yystackp->yytops.yylookaheadNeeds[yyi] since, after
10094              yyremoveDeletes returns, the parser immediately either enters
10095              deterministic operation or shifts a token.  However, it doesn't
10096              hurt, and the code might evolve to need it.  */
10097           yystackp->yytops.yylookaheadNeeds[yyj] =
10098             yystackp->yytops.yylookaheadNeeds[yyi];
10099           if (yyj != yyi)
10100             {
10101               YYDPRINTF ((stderr, "Rename stack %lu -> %lu.\n",
10102                           (unsigned long int) yyi, (unsigned long int) yyj));
10103             }
10104           yyj += 1;
10105         }
10106       yyi += 1;
10107     }
10108 }
10109
10110 /** Shift to a new state on stack #K of STACK, corresponding to LR state
10111  * LRSTATE, at input position POSN, with (resolved) semantic value SVAL.  */
10112 static void
10113 yyglrShift (yyGLRStack* yystackp, size_t yyk, yyStateNum yylrState,
10114             size_t yyposn,
10115             YYSTYPE* yyvalp, YYLTYPE* yylocp)
10116 {
10117   yyGLRState* yynewState = &yynewGLRStackItem (yystackp, yytrue)->yystate;
10118
10119   yynewState->yylrState = yylrState;
10120   yynewState->yyposn = yyposn;
10121   yynewState->yyresolved = yytrue;
10122   yynewState->yypred = yystackp->yytops.yystates[yyk];
10123   yynewState->yysemantics.yysval = *yyvalp;
10124   yynewState->yyloc = *yylocp;
10125   yystackp->yytops.yystates[yyk] = yynewState;
10126
10127   YY_RESERVE_GLRSTACK (yystackp);
10128 }
10129
10130 /** Shift stack #K of YYSTACK, to a new state corresponding to LR
10131  *  state YYLRSTATE, at input position YYPOSN, with the (unresolved)
10132  *  semantic value of YYRHS under the action for YYRULE.  */
10133 static void
10134 yyglrShiftDefer (yyGLRStack* yystackp, size_t yyk, yyStateNum yylrState,
10135                  size_t yyposn, yyGLRState* rhs, yyRuleNum yyrule)
10136 {
10137   yyGLRState* yynewState = &yynewGLRStackItem (yystackp, yytrue)->yystate;
10138
10139   yynewState->yylrState = yylrState;
10140   yynewState->yyposn = yyposn;
10141   yynewState->yyresolved = yyfalse;
10142   yynewState->yypred = yystackp->yytops.yystates[yyk];
10143   yynewState->yysemantics.yyfirstVal = NULL;
10144   yystackp->yytops.yystates[yyk] = yynewState;
10145
10146   /* Invokes YY_RESERVE_GLRSTACK.  */
10147   yyaddDeferredAction (yystackp, yyk, yynewState, rhs, yyrule);
10148 }
10149
10150 /** Pop the symbols consumed by reduction #RULE from the top of stack
10151  *  #K of STACK, and perform the appropriate semantic action on their
10152  *  semantic values.  Assumes that all ambiguities in semantic values
10153  *  have been previously resolved.  Set *VALP to the resulting value,
10154  *  and *LOCP to the computed location (if any).  Return value is as
10155  *  for userAction.  */
10156 static YYRESULTTAG
10157 yydoAction (yyGLRStack* yystackp, size_t yyk, yyRuleNum yyrule,
10158             YYSTYPE* yyvalp, YYLTYPE* yylocp)
10159 {
10160   int yynrhs = yyrhsLength (yyrule);
10161
10162   if (yystackp->yysplitPoint == NULL)
10163     {
10164       /* Standard special case: single stack.  */
10165       yyGLRStackItem* rhs = (yyGLRStackItem*) yystackp->yytops.yystates[yyk];
10166       YYASSERT (yyk == 0);
10167       yystackp->yynextFree -= yynrhs;
10168       yystackp->yyspaceLeft += yynrhs;
10169       yystackp->yytops.yystates[0] = & yystackp->yynextFree[-1].yystate;
10170       return yyuserAction (yyrule, yynrhs, rhs,
10171                            yyvalp, yylocp, yystackp);
10172     }
10173   else
10174     {
10175       /* At present, doAction is never called in nondeterministic
10176        * mode, so this branch is never taken.  It is here in
10177        * anticipation of a future feature that will allow immediate
10178        * evaluation of selected actions in nondeterministic mode.  */
10179       int yyi;
10180       yyGLRState* yys;
10181       yyGLRStackItem yyrhsVals[YYMAXRHS + YYMAXLEFT + 1];
10182       yys = yyrhsVals[YYMAXRHS + YYMAXLEFT].yystate.yypred
10183         = yystackp->yytops.yystates[yyk];
10184       for (yyi = 0; yyi < yynrhs; yyi += 1)
10185         {
10186           yys = yys->yypred;
10187           YYASSERT (yys);
10188         }
10189       yyupdateSplit (yystackp, yys);
10190       yystackp->yytops.yystates[yyk] = yys;
10191       return yyuserAction (yyrule, yynrhs, yyrhsVals + YYMAXRHS + YYMAXLEFT - 1,
10192                            yyvalp, yylocp, yystackp);
10193     }
10194 }
10195
10196 #if !YYDEBUG
10197 # define YY_REDUCE_PRINT(Args)
10198 #else
10199 # define YY_REDUCE_PRINT(Args)                \
10200 do {                                        \
10201   if (yydebug)                                \
10202     yy_reduce_print Args;                \
10203 } while (YYID (0))
10204
10205 /*----------------------------------------------------------.
10206 | Report that the RULE is going to be reduced on stack #K.  |
10207 `----------------------------------------------------------*/
10208
10209 /*ARGSUSED*/ static void
10210 yy_reduce_print (yyGLRStack* yystackp, size_t yyk, yyRuleNum yyrule,
10211                  YYSTYPE* yyvalp, YYLTYPE* yylocp)
10212 {
10213   int yynrhs = yyrhsLength (yyrule);
10214   yybool yynormal __attribute__ ((__unused__)) =
10215     (yystackp->yysplitPoint == NULL);
10216   yyGLRStackItem* yyvsp = (yyGLRStackItem*) yystackp->yytops.yystates[yyk];
10217   int yylow = 1;
10218   int yyi;
10219   YYUSE (yyvalp);
10220   YYUSE (yylocp);
10221   YYFPRINTF (stderr, "Reducing stack %lu by rule %d (line %lu):\n",
10222              (unsigned long int) yyk, yyrule - 1,
10223              (unsigned long int) yyrline[yyrule]);
10224   /* The symbols being reduced.  */
10225   for (yyi = 0; yyi < yynrhs; yyi++)
10226     {
10227       YYFPRINTF (stderr, "   $%d = ", yyi + 1);
10228       yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
10229                        &(((yyGLRStackItem const *)yyvsp)[YYFILL ((yyi + 1) - (yynrhs))].yystate.yysemantics.yysval)
10230                                               );
10231       YYFPRINTF (stderr, "\n");
10232     }
10233 }
10234 #endif
10235
10236 /** Pop items off stack #K of STACK according to grammar rule RULE,
10237  *  and push back on the resulting nonterminal symbol.  Perform the
10238  *  semantic action associated with RULE and store its value with the
10239  *  newly pushed state, if FORCEEVAL or if STACK is currently
10240  *  unambiguous.  Otherwise, store the deferred semantic action with
10241  *  the new state.  If the new state would have an identical input
10242  *  position, LR state, and predecessor to an existing state on the stack,
10243  *  it is identified with that existing state, eliminating stack #K from
10244  *  the STACK.  In this case, the (necessarily deferred) semantic value is
10245  *  added to the options for the existing state's semantic value.
10246  */
10247 static YYRESULTTAG
10248 yyglrReduce (yyGLRStack* yystackp, size_t yyk, yyRuleNum yyrule,
10249              yybool yyforceEval)
10250 {
10251   size_t yyposn = yystackp->yytops.yystates[yyk]->yyposn;
10252
10253   if (yyforceEval || yystackp->yysplitPoint == NULL)
10254     {
10255       YYSTYPE yysval;
10256       YYLTYPE yyloc = {0};
10257
10258       YY_REDUCE_PRINT ((yystackp, yyk, yyrule, &yysval, &yyloc));
10259       YYCHK (yydoAction (yystackp, yyk, yyrule, &yysval,
10260                          &yyloc));
10261       YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyrule], &yysval, &yyloc);
10262       yyglrShift (yystackp, yyk,
10263                   yyLRgotoState (yystackp->yytops.yystates[yyk]->yylrState,
10264                                  yylhsNonterm (yyrule)),
10265                   yyposn, &yysval, &yyloc);
10266     }
10267   else
10268     {
10269       size_t yyi;
10270       int yyn;
10271       yyGLRState* yys, *yys0 = yystackp->yytops.yystates[yyk];
10272       yyStateNum yynewLRState;
10273
10274       for (yys = yystackp->yytops.yystates[yyk], yyn = yyrhsLength (yyrule);
10275            0 < yyn; yyn -= 1)
10276         {
10277           yys = yys->yypred;
10278           YYASSERT (yys);
10279         }
10280       yyupdateSplit (yystackp, yys);
10281       yynewLRState = yyLRgotoState (yys->yylrState, yylhsNonterm (yyrule));
10282       YYDPRINTF ((stderr,
10283                   "Reduced stack %lu by rule #%d; action deferred.  Now in state %d.\n",
10284                   (unsigned long int) yyk, yyrule - 1, yynewLRState));
10285       for (yyi = 0; yyi < yystackp->yytops.yysize; yyi += 1)
10286         if (yyi != yyk && yystackp->yytops.yystates[yyi] != NULL)
10287           {
10288             yyGLRState* yyp, *yysplit = yystackp->yysplitPoint;
10289             yyp = yystackp->yytops.yystates[yyi];
10290             while (yyp != yys && yyp != yysplit && yyp->yyposn >= yyposn)
10291               {
10292                 if (yyp->yylrState == yynewLRState && yyp->yypred == yys)
10293                   {
10294                     yyaddDeferredAction (yystackp, yyk, yyp, yys0, yyrule);
10295                     yymarkStackDeleted (yystackp, yyk);
10296                     YYDPRINTF ((stderr, "Merging stack %lu into stack %lu.\n",
10297                                 (unsigned long int) yyk,
10298                                 (unsigned long int) yyi));
10299                     return yyok;
10300                   }
10301                 yyp = yyp->yypred;
10302               }
10303           }
10304       yystackp->yytops.yystates[yyk] = yys;
10305       yyglrShiftDefer (yystackp, yyk, yynewLRState, yyposn, yys0, yyrule);
10306     }
10307   return yyok;
10308 }
10309
10310 static size_t
10311 yysplitStack (yyGLRStack* yystackp, size_t yyk)
10312 {
10313   if (yystackp->yysplitPoint == NULL)
10314     {
10315       YYASSERT (yyk == 0);
10316       yystackp->yysplitPoint = yystackp->yytops.yystates[yyk];
10317     }
10318   if (yystackp->yytops.yysize >= yystackp->yytops.yycapacity)
10319     {
10320       yyGLRState** yynewStates;
10321       yybool* yynewLookaheadNeeds;
10322
10323       yynewStates = NULL;
10324
10325       if (yystackp->yytops.yycapacity
10326           > (YYSIZEMAX / (2 * sizeof yynewStates[0])))
10327         yyMemoryExhausted (yystackp);
10328       yystackp->yytops.yycapacity *= 2;
10329
10330       yynewStates =
10331         (yyGLRState**) YYREALLOC (yystackp->yytops.yystates,
10332                                   (yystackp->yytops.yycapacity
10333                                    * sizeof yynewStates[0]));
10334       if (yynewStates == NULL)
10335         yyMemoryExhausted (yystackp);
10336       yystackp->yytops.yystates = yynewStates;
10337
10338       yynewLookaheadNeeds =
10339         (yybool*) YYREALLOC (yystackp->yytops.yylookaheadNeeds,
10340                              (yystackp->yytops.yycapacity
10341                               * sizeof yynewLookaheadNeeds[0]));
10342       if (yynewLookaheadNeeds == NULL)
10343         yyMemoryExhausted (yystackp);
10344       yystackp->yytops.yylookaheadNeeds = yynewLookaheadNeeds;
10345     }
10346   yystackp->yytops.yystates[yystackp->yytops.yysize]
10347     = yystackp->yytops.yystates[yyk];
10348   yystackp->yytops.yylookaheadNeeds[yystackp->yytops.yysize]
10349     = yystackp->yytops.yylookaheadNeeds[yyk];
10350   yystackp->yytops.yysize += 1;
10351   return yystackp->yytops.yysize-1;
10352 }
10353
10354 /** True iff Y0 and Y1 represent identical options at the top level.
10355  *  That is, they represent the same rule applied to RHS symbols
10356  *  that produce the same terminal symbols.  */
10357 static yybool
10358 yyidenticalOptions (yySemanticOption* yyy0, yySemanticOption* yyy1)
10359 {
10360   if (yyy0->yyrule == yyy1->yyrule)
10361     {
10362       yyGLRState *yys0, *yys1;
10363       int yyn;
10364       for (yys0 = yyy0->yystate, yys1 = yyy1->yystate,
10365            yyn = yyrhsLength (yyy0->yyrule);
10366            yyn > 0;
10367            yys0 = yys0->yypred, yys1 = yys1->yypred, yyn -= 1)
10368         if (yys0->yyposn != yys1->yyposn)
10369           return yyfalse;
10370       return yytrue;
10371     }
10372   else
10373     return yyfalse;
10374 }
10375
10376 /** Assuming identicalOptions (Y0,Y1), destructively merge the
10377  *  alternative semantic values for the RHS-symbols of Y1 and Y0.  */
10378 static void
10379 yymergeOptionSets (yySemanticOption* yyy0, yySemanticOption* yyy1)
10380 {
10381   yyGLRState *yys0, *yys1;
10382   int yyn;
10383   for (yys0 = yyy0->yystate, yys1 = yyy1->yystate,
10384        yyn = yyrhsLength (yyy0->yyrule);
10385        yyn > 0;
10386        yys0 = yys0->yypred, yys1 = yys1->yypred, yyn -= 1)
10387     {
10388       if (yys0 == yys1)
10389         break;
10390       else if (yys0->yyresolved)
10391         {
10392           yys1->yyresolved = yytrue;
10393           yys1->yysemantics.yysval = yys0->yysemantics.yysval;
10394         }
10395       else if (yys1->yyresolved)
10396         {
10397           yys0->yyresolved = yytrue;
10398           yys0->yysemantics.yysval = yys1->yysemantics.yysval;
10399         }
10400       else
10401         {
10402           yySemanticOption** yyz0p;
10403           yySemanticOption* yyz1;
10404           yyz0p = &yys0->yysemantics.yyfirstVal;
10405           yyz1 = yys1->yysemantics.yyfirstVal;
10406           while (YYID (yytrue))
10407             {
10408               if (yyz1 == *yyz0p || yyz1 == NULL)
10409                 break;
10410               else if (*yyz0p == NULL)
10411                 {
10412                   *yyz0p = yyz1;
10413                   break;
10414                 }
10415               else if (*yyz0p < yyz1)
10416                 {
10417                   yySemanticOption* yyz = *yyz0p;
10418                   *yyz0p = yyz1;
10419                   yyz1 = yyz1->yynext;
10420                   (*yyz0p)->yynext = yyz;
10421                 }
10422               yyz0p = &(*yyz0p)->yynext;
10423             }
10424           yys1->yysemantics.yyfirstVal = yys0->yysemantics.yyfirstVal;
10425         }
10426     }
10427 }
10428
10429 /** Y0 and Y1 represent two possible actions to take in a given
10430  *  parsing state; return 0 if no combination is possible,
10431  *  1 if user-mergeable, 2 if Y0 is preferred, 3 if Y1 is preferred.  */
10432 static int
10433 yypreference (yySemanticOption* y0, yySemanticOption* y1)
10434 {
10435   yyRuleNum r0 = y0->yyrule, r1 = y1->yyrule;
10436   int p0 = yydprec[r0], p1 = yydprec[r1];
10437
10438   if (p0 == p1)
10439     {
10440       if (yymerger[r0] == 0 || yymerger[r0] != yymerger[r1])
10441         return 0;
10442       else
10443         return 1;
10444     }
10445   if (p0 == 0 || p1 == 0)
10446     return 0;
10447   if (p0 < p1)
10448     return 3;
10449   if (p1 < p0)
10450     return 2;
10451   return 0;
10452 }
10453
10454 static YYRESULTTAG yyresolveValue (yyGLRState* yys,
10455                                    yyGLRStack* yystackp);
10456
10457
10458 /** Resolve the previous N states starting at and including state S.  If result
10459  *  != yyok, some states may have been left unresolved possibly with empty
10460  *  semantic option chains.  Regardless of whether result = yyok, each state
10461  *  has been left with consistent data so that yydestroyGLRState can be invoked
10462  *  if necessary.  */
10463 static YYRESULTTAG
10464 yyresolveStates (yyGLRState* yys, int yyn,
10465                  yyGLRStack* yystackp)
10466 {
10467   if (0 < yyn)
10468     {
10469       YYASSERT (yys->yypred);
10470       YYCHK (yyresolveStates (yys->yypred, yyn-1, yystackp));
10471       if (! yys->yyresolved)
10472         YYCHK (yyresolveValue (yys, yystackp));
10473     }
10474   return yyok;
10475 }
10476
10477 /** Resolve the states for the RHS of OPT, perform its user action, and return
10478  *  the semantic value and location.  Regardless of whether result = yyok, all
10479  *  RHS states have been destroyed (assuming the user action destroys all RHS
10480  *  semantic values if invoked).  */
10481 static YYRESULTTAG
10482 yyresolveAction (yySemanticOption* yyopt, yyGLRStack* yystackp,
10483                  YYSTYPE* yyvalp, YYLTYPE* yylocp)
10484 {
10485   yyGLRStackItem yyrhsVals[YYMAXRHS + YYMAXLEFT + 1];
10486   int yynrhs;
10487   int yychar_current;
10488   YYSTYPE yylval_current;
10489   YYLTYPE yylloc_current;
10490   YYRESULTTAG yyflag;
10491
10492   yynrhs = yyrhsLength (yyopt->yyrule);
10493   yyflag = yyresolveStates (yyopt->yystate, yynrhs, yystackp);
10494   if (yyflag != yyok)
10495     {
10496       yyGLRState *yys;
10497       for (yys = yyopt->yystate; yynrhs > 0; yys = yys->yypred, yynrhs -= 1)
10498         yydestroyGLRState ("Cleanup: popping", yys);
10499       return yyflag;
10500     }
10501
10502   yyrhsVals[YYMAXRHS + YYMAXLEFT].yystate.yypred = yyopt->yystate;
10503   yychar_current = yychar;
10504   yylval_current = yylval;
10505   yylloc_current = yylloc;
10506   yychar = yyopt->yyrawchar;
10507   yylval = yyopt->yyval;
10508   yylloc = yyopt->yyloc;
10509   yyflag = yyuserAction (yyopt->yyrule, yynrhs,
10510                            yyrhsVals + YYMAXRHS + YYMAXLEFT - 1,
10511                            yyvalp, yylocp, yystackp);
10512   yychar = yychar_current;
10513   yylval = yylval_current;
10514   yylloc = yylloc_current;
10515   return yyflag;
10516 }
10517
10518 #if YYDEBUG
10519 static void
10520 yyreportTree (yySemanticOption* yyx, int yyindent)
10521 {
10522   int yynrhs = yyrhsLength (yyx->yyrule);
10523   int yyi;
10524   yyGLRState* yys;
10525   yyGLRState* yystates[1 + YYMAXRHS];
10526   yyGLRState yyleftmost_state;
10527
10528   for (yyi = yynrhs, yys = yyx->yystate; 0 < yyi; yyi -= 1, yys = yys->yypred)
10529     yystates[yyi] = yys;
10530   if (yys == NULL)
10531     {
10532       yyleftmost_state.yyposn = 0;
10533       yystates[0] = &yyleftmost_state;
10534     }
10535   else
10536     yystates[0] = yys;
10537
10538   if (yyx->yystate->yyposn < yys->yyposn + 1)
10539     YYFPRINTF (stderr, "%*s%s -> <Rule %d, empty>\n",
10540                yyindent, "", yytokenName (yylhsNonterm (yyx->yyrule)),
10541                yyx->yyrule - 1);
10542   else
10543     YYFPRINTF (stderr, "%*s%s -> <Rule %d, tokens %lu .. %lu>\n",
10544                yyindent, "", yytokenName (yylhsNonterm (yyx->yyrule)),
10545                yyx->yyrule - 1, (unsigned long int) (yys->yyposn + 1),
10546                (unsigned long int) yyx->yystate->yyposn);
10547   for (yyi = 1; yyi <= yynrhs; yyi += 1)
10548     {
10549       if (yystates[yyi]->yyresolved)
10550         {
10551           if (yystates[yyi-1]->yyposn+1 > yystates[yyi]->yyposn)
10552             YYFPRINTF (stderr, "%*s%s <empty>\n", yyindent+2, "",
10553                        yytokenName (yyrhs[yyprhs[yyx->yyrule]+yyi-1]));
10554           else
10555             YYFPRINTF (stderr, "%*s%s <tokens %lu .. %lu>\n", yyindent+2, "",
10556                        yytokenName (yyrhs[yyprhs[yyx->yyrule]+yyi-1]),
10557                        (unsigned long int) (yystates[yyi - 1]->yyposn + 1),
10558                        (unsigned long int) yystates[yyi]->yyposn);
10559         }
10560       else
10561         yyreportTree (yystates[yyi]->yysemantics.yyfirstVal, yyindent+2);
10562     }
10563 }
10564 #endif
10565
10566 /*ARGSUSED*/ static YYRESULTTAG
10567 yyreportAmbiguity (yySemanticOption* yyx0,
10568                    yySemanticOption* yyx1)
10569 {
10570   YYUSE (yyx0);
10571   YYUSE (yyx1);
10572
10573 #if YYDEBUG
10574   YYFPRINTF (stderr, "Ambiguity detected.\n");
10575   YYFPRINTF (stderr, "Option 1,\n");
10576   yyreportTree (yyx0, 2);
10577   YYFPRINTF (stderr, "\nOption 2,\n");
10578   yyreportTree (yyx1, 2);
10579   YYFPRINTF (stderr, "\n");
10580 #endif
10581
10582   yyerror (YY_("syntax is ambiguous"));
10583   return yyabort;
10584 }
10585
10586 /** Starting at and including state S1, resolve the location for each of the
10587  *  previous N1 states that is unresolved.  The first semantic option of a state
10588  *  is always chosen.  */
10589 static void
10590 yyresolveLocations (yyGLRState* yys1, int yyn1,
10591                     yyGLRStack *yystackp)
10592 {
10593   if (0 < yyn1)
10594     {
10595       yyresolveLocations (yys1->yypred, yyn1 - 1, yystackp);
10596       if (!yys1->yyresolved)
10597         {
10598           yySemanticOption *yyoption;
10599           yyGLRStackItem yyrhsloc[1 + YYMAXRHS];
10600           int yynrhs;
10601           int yychar_current;
10602           YYSTYPE yylval_current;
10603           YYLTYPE yylloc_current;
10604           yyoption = yys1->yysemantics.yyfirstVal;
10605           YYASSERT (yyoption != NULL);
10606           yynrhs = yyrhsLength (yyoption->yyrule);
10607           if (yynrhs > 0)
10608             {
10609               yyGLRState *yys;
10610               int yyn;
10611               yyresolveLocations (yyoption->yystate, yynrhs,
10612                                   yystackp);
10613               for (yys = yyoption->yystate, yyn = yynrhs;
10614                    yyn > 0;
10615                    yys = yys->yypred, yyn -= 1)
10616                 yyrhsloc[yyn].yystate.yyloc = yys->yyloc;
10617             }
10618           else
10619             {
10620               /* Both yyresolveAction and yyresolveLocations traverse the GSS
10621                  in reverse rightmost order.  It is only necessary to invoke
10622                  yyresolveLocations on a subforest for which yyresolveAction
10623                  would have been invoked next had an ambiguity not been
10624                  detected.  Thus the location of the previous state (but not
10625                  necessarily the previous state itself) is guaranteed to be
10626                  resolved already.  */
10627               yyGLRState *yyprevious = yyoption->yystate;
10628               yyrhsloc[0].yystate.yyloc = yyprevious->yyloc;
10629             }
10630           yychar_current = yychar;
10631           yylval_current = yylval;
10632           yylloc_current = yylloc;
10633           yychar = yyoption->yyrawchar;
10634           yylval = yyoption->yyval;
10635           yylloc = yyoption->yyloc;
10636           YYLLOC_DEFAULT ((yys1->yyloc), yyrhsloc, yynrhs);
10637           yychar = yychar_current;
10638           yylval = yylval_current;
10639           yylloc = yylloc_current;
10640         }
10641     }
10642 }
10643
10644 /** Resolve the ambiguity represented in state S, perform the indicated
10645  *  actions, and set the semantic value of S.  If result != yyok, the chain of
10646  *  semantic options in S has been cleared instead or it has been left
10647  *  unmodified except that redundant options may have been removed.  Regardless
10648  *  of whether result = yyok, S has been left with consistent data so that
10649  *  yydestroyGLRState can be invoked if necessary.  */
10650 static YYRESULTTAG
10651 yyresolveValue (yyGLRState* yys, yyGLRStack* yystackp)
10652 {
10653   yySemanticOption* yyoptionList = yys->yysemantics.yyfirstVal;
10654   yySemanticOption* yybest;
10655   yySemanticOption** yypp;
10656   yybool yymerge;
10657   YYSTYPE yysval;
10658   YYRESULTTAG yyflag;
10659   YYLTYPE *yylocp = &yys->yyloc;
10660
10661   yybest = yyoptionList;
10662   yymerge = yyfalse;
10663   for (yypp = &yyoptionList->yynext; *yypp != NULL; )
10664     {
10665       yySemanticOption* yyp = *yypp;
10666
10667       if (yyidenticalOptions (yybest, yyp))
10668         {
10669           yymergeOptionSets (yybest, yyp);
10670           *yypp = yyp->yynext;
10671         }
10672       else
10673         {
10674           switch (yypreference (yybest, yyp))
10675             {
10676             case 0:
10677               yyresolveLocations (yys, 1, yystackp);
10678               return yyreportAmbiguity (yybest, yyp);
10679               break;
10680             case 1:
10681               yymerge = yytrue;
10682               break;
10683             case 2:
10684               break;
10685             case 3:
10686               yybest = yyp;
10687               yymerge = yyfalse;
10688               break;
10689             default:
10690               /* This cannot happen so it is not worth a YYASSERT (yyfalse),
10691                  but some compilers complain if the default case is
10692                  omitted.  */
10693               break;
10694             }
10695           yypp = &yyp->yynext;
10696         }
10697     }
10698
10699   if (yymerge)
10700     {
10701       yySemanticOption* yyp;
10702       int yyprec = yydprec[yybest->yyrule];
10703       yyflag = yyresolveAction (yybest, yystackp, &yysval,
10704                                 yylocp);
10705       if (yyflag == yyok)
10706         for (yyp = yybest->yynext; yyp != NULL; yyp = yyp->yynext)
10707           {
10708             if (yyprec == yydprec[yyp->yyrule])
10709               {
10710                 YYSTYPE yysval_other;
10711                 YYLTYPE yydummy;
10712                 yyflag = yyresolveAction (yyp, yystackp, &yysval_other,
10713                                           &yydummy);
10714                 if (yyflag != yyok)
10715                   {
10716                     yydestruct ("Cleanup: discarding incompletely merged value for",
10717                                 yystos[yys->yylrState],
10718                                 &yysval);
10719                     break;
10720                   }
10721                 yyuserMerge (yymerger[yyp->yyrule], &yysval, &yysval_other);
10722               }
10723           }
10724     }
10725   else
10726     yyflag = yyresolveAction (yybest, yystackp, &yysval, yylocp);
10727
10728   if (yyflag == yyok)
10729     {
10730       yys->yyresolved = yytrue;
10731       yys->yysemantics.yysval = yysval;
10732     }
10733   else
10734     yys->yysemantics.yyfirstVal = NULL;
10735   return yyflag;
10736 }
10737
10738 static YYRESULTTAG
10739 yyresolveStack (yyGLRStack* yystackp)
10740 {
10741   if (yystackp->yysplitPoint != NULL)
10742     {
10743       yyGLRState* yys;
10744       int yyn;
10745
10746       for (yyn = 0, yys = yystackp->yytops.yystates[0];
10747            yys != yystackp->yysplitPoint;
10748            yys = yys->yypred, yyn += 1)
10749         continue;
10750       YYCHK (yyresolveStates (yystackp->yytops.yystates[0], yyn, yystackp
10751                              ));
10752     }
10753   return yyok;
10754 }
10755
10756 static void
10757 yycompressStack (yyGLRStack* yystackp)
10758 {
10759   yyGLRState* yyp, *yyq, *yyr;
10760
10761   if (yystackp->yytops.yysize != 1 || yystackp->yysplitPoint == NULL)
10762     return;
10763
10764   for (yyp = yystackp->yytops.yystates[0], yyq = yyp->yypred, yyr = NULL;
10765        yyp != yystackp->yysplitPoint;
10766        yyr = yyp, yyp = yyq, yyq = yyp->yypred)
10767     yyp->yypred = yyr;
10768
10769   yystackp->yyspaceLeft += yystackp->yynextFree - yystackp->yyitems;
10770   yystackp->yynextFree = ((yyGLRStackItem*) yystackp->yysplitPoint) + 1;
10771   yystackp->yyspaceLeft -= yystackp->yynextFree - yystackp->yyitems;
10772   yystackp->yysplitPoint = NULL;
10773   yystackp->yylastDeleted = NULL;
10774
10775   while (yyr != NULL)
10776     {
10777       yystackp->yynextFree->yystate = *yyr;
10778       yyr = yyr->yypred;
10779       yystackp->yynextFree->yystate.yypred = &yystackp->yynextFree[-1].yystate;
10780       yystackp->yytops.yystates[0] = &yystackp->yynextFree->yystate;
10781       yystackp->yynextFree += 1;
10782       yystackp->yyspaceLeft -= 1;
10783     }
10784 }
10785
10786 static YYRESULTTAG
10787 yyprocessOneStack (yyGLRStack* yystackp, size_t yyk,
10788                    size_t yyposn)
10789 {
10790   int yyaction;
10791   const short int* yyconflicts;
10792   yyRuleNum yyrule;
10793
10794   while (yystackp->yytops.yystates[yyk] != NULL)
10795     {
10796       yyStateNum yystate = yystackp->yytops.yystates[yyk]->yylrState;
10797       YYDPRINTF ((stderr, "Stack %lu Entering state %d\n",
10798                   (unsigned long int) yyk, yystate));
10799
10800       YYASSERT (yystate != YYFINAL);
10801
10802       if (yyisDefaultedState (yystate))
10803         {
10804           yyrule = yydefaultAction (yystate);
10805           if (yyrule == 0)
10806             {
10807               YYDPRINTF ((stderr, "Stack %lu dies.\n",
10808                           (unsigned long int) yyk));
10809               yymarkStackDeleted (yystackp, yyk);
10810               return yyok;
10811             }
10812           YYCHK (yyglrReduce (yystackp, yyk, yyrule, yyfalse));
10813         }
10814       else
10815         {
10816           yySymbol yytoken;
10817           yystackp->yytops.yylookaheadNeeds[yyk] = yytrue;
10818           if (yychar == YYEMPTY)
10819             {
10820               YYDPRINTF ((stderr, "Reading a token: "));
10821               yychar = YYLEX;
10822             }
10823
10824           if (yychar <= YYEOF)
10825             {
10826               yychar = yytoken = YYEOF;
10827               YYDPRINTF ((stderr, "Now at end of input.\n"));
10828             }
10829           else
10830             {
10831               yytoken = YYTRANSLATE (yychar);
10832               YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
10833             }
10834
10835           yygetLRActions (yystate, yytoken, &yyaction, &yyconflicts);
10836
10837           while (*yyconflicts != 0)
10838             {
10839               size_t yynewStack = yysplitStack (yystackp, yyk);
10840               YYDPRINTF ((stderr, "Splitting off stack %lu from %lu.\n",
10841                           (unsigned long int) yynewStack,
10842                           (unsigned long int) yyk));
10843               YYCHK (yyglrReduce (yystackp, yynewStack,
10844                                   *yyconflicts, yyfalse));
10845               YYCHK (yyprocessOneStack (yystackp, yynewStack,
10846                                         yyposn));
10847               yyconflicts += 1;
10848             }
10849
10850           if (yyisShiftAction (yyaction))
10851             break;
10852           else if (yyisErrorAction (yyaction))
10853             {
10854               YYDPRINTF ((stderr, "Stack %lu dies.\n",
10855                           (unsigned long int) yyk));
10856               yymarkStackDeleted (yystackp, yyk);
10857               break;
10858             }
10859           else
10860             YYCHK (yyglrReduce (yystackp, yyk, -yyaction,
10861                                 yyfalse));
10862         }
10863     }
10864   return yyok;
10865 }
10866
10867 /*ARGSUSED*/ static void
10868 yyreportSyntaxError (yyGLRStack* yystackp)
10869 {
10870   if (yystackp->yyerrState == 0)
10871     {
10872 #if YYERROR_VERBOSE
10873       int yyn;
10874       yyn = yypact[yystackp->yytops.yystates[0]->yylrState];
10875       if (YYPACT_NINF < yyn && yyn <= YYLAST)
10876         {
10877           yySymbol yytoken = YYTRANSLATE (yychar);
10878           size_t yysize0 = yytnamerr (NULL, yytokenName (yytoken));
10879           size_t yysize = yysize0;
10880           size_t yysize1;
10881           yybool yysize_overflow = yyfalse;
10882           char* yymsg = NULL;
10883           enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
10884           char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
10885           int yyx;
10886           char *yyfmt;
10887           char const *yyf;
10888           static char const yyunexpected[] = "syntax error, unexpected %s";
10889           static char const yyexpecting[] = ", expecting %s";
10890           static char const yyor[] = " or %s";
10891           char yyformat[sizeof yyunexpected
10892                         + sizeof yyexpecting - 1
10893                         + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
10894                            * (sizeof yyor - 1))];
10895           char const *yyprefix = yyexpecting;
10896
10897           /* Start YYX at -YYN if negative to avoid negative indexes in
10898              YYCHECK.  */
10899           int yyxbegin = yyn < 0 ? -yyn : 0;
10900
10901           /* Stay within bounds of both yycheck and yytname.  */
10902           int yychecklim = YYLAST - yyn + 1;
10903           int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
10904           int yycount = 1;
10905
10906           yyarg[0] = yytokenName (yytoken);
10907           yyfmt = yystpcpy (yyformat, yyunexpected);
10908
10909           for (yyx = yyxbegin; yyx < yyxend; ++yyx)
10910             if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
10911               {
10912                 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
10913                   {
10914                     yycount = 1;
10915                     yysize = yysize0;
10916                     yyformat[sizeof yyunexpected - 1] = '\0';
10917                     break;
10918                   }
10919                 yyarg[yycount++] = yytokenName (yyx);
10920                 yysize1 = yysize + yytnamerr (NULL, yytokenName (yyx));
10921                 yysize_overflow |= yysize1 < yysize;
10922                 yysize = yysize1;
10923                 yyfmt = yystpcpy (yyfmt, yyprefix);
10924                 yyprefix = yyor;
10925               }
10926
10927           yyf = YY_(yyformat);
10928           yysize1 = yysize + strlen (yyf);
10929           yysize_overflow |= yysize1 < yysize;
10930           yysize = yysize1;
10931
10932           if (!yysize_overflow)
10933             yymsg = (char *) YYMALLOC (yysize);
10934
10935           if (yymsg)
10936             {
10937               char *yyp = yymsg;
10938               int yyi = 0;
10939               while ((*yyp = *yyf))
10940                 {
10941                   if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
10942                     {
10943                       yyp += yytnamerr (yyp, yyarg[yyi++]);
10944                       yyf += 2;
10945                     }
10946                   else
10947                     {
10948                       yyp++;
10949                       yyf++;
10950                     }
10951                 }
10952               yyerror (yymsg);
10953               YYFREE (yymsg);
10954             }
10955           else
10956             {
10957               yyerror (YY_("syntax error"));
10958               yyMemoryExhausted (yystackp);
10959             }
10960         }
10961       else
10962 #endif /* YYERROR_VERBOSE */
10963         yyerror (YY_("syntax error"));
10964       yynerrs += 1;
10965     }
10966 }
10967
10968 /* Recover from a syntax error on *YYSTACKP, assuming that *YYSTACKP->YYTOKENP,
10969    yylval, and yylloc are the syntactic category, semantic value, and location
10970    of the lookahead.  */
10971 /*ARGSUSED*/ static void
10972 yyrecoverSyntaxError (yyGLRStack* yystackp)
10973 {
10974   size_t yyk;
10975   int yyj;
10976
10977   if (yystackp->yyerrState == 3)
10978     /* We just shifted the error token and (perhaps) took some
10979        reductions.  Skip tokens until we can proceed.  */
10980     while (YYID (yytrue))
10981       {
10982         yySymbol yytoken;
10983         if (yychar == YYEOF)
10984           yyFail (yystackp, NULL);
10985         if (yychar != YYEMPTY)
10986           {
10987             yytoken = YYTRANSLATE (yychar);
10988             yydestruct ("Error: discarding",
10989                         yytoken, &yylval);
10990           }
10991         YYDPRINTF ((stderr, "Reading a token: "));
10992         yychar = YYLEX;
10993         if (yychar <= YYEOF)
10994           {
10995             yychar = yytoken = YYEOF;
10996             YYDPRINTF ((stderr, "Now at end of input.\n"));
10997           }
10998         else
10999           {
11000             yytoken = YYTRANSLATE (yychar);
11001             YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
11002           }
11003         yyj = yypact[yystackp->yytops.yystates[0]->yylrState];
11004         if (yyis_pact_ninf (yyj))
11005           return;
11006         yyj += yytoken;
11007         if (yyj < 0 || YYLAST < yyj || yycheck[yyj] != yytoken)
11008           {
11009             if (yydefact[yystackp->yytops.yystates[0]->yylrState] != 0)
11010               return;
11011           }
11012         else if (yytable[yyj] != 0 && ! yyis_table_ninf (yytable[yyj]))
11013           return;
11014       }
11015
11016   /* Reduce to one stack.  */
11017   for (yyk = 0; yyk < yystackp->yytops.yysize; yyk += 1)
11018     if (yystackp->yytops.yystates[yyk] != NULL)
11019       break;
11020   if (yyk >= yystackp->yytops.yysize)
11021     yyFail (yystackp, NULL);
11022   for (yyk += 1; yyk < yystackp->yytops.yysize; yyk += 1)
11023     yymarkStackDeleted (yystackp, yyk);
11024   yyremoveDeletes (yystackp);
11025   yycompressStack (yystackp);
11026
11027   /* Now pop stack until we find a state that shifts the error token.  */
11028   yystackp->yyerrState = 3;
11029   while (yystackp->yytops.yystates[0] != NULL)
11030     {
11031       yyGLRState *yys = yystackp->yytops.yystates[0];
11032       yyj = yypact[yys->yylrState];
11033       if (! yyis_pact_ninf (yyj))
11034         {
11035           yyj += YYTERROR;
11036           if (0 <= yyj && yyj <= YYLAST && yycheck[yyj] == YYTERROR
11037               && yyisShiftAction (yytable[yyj]))
11038             {
11039               /* Shift the error token having adjusted its location.  */
11040               YYLTYPE yyerrloc = {0};
11041               YY_SYMBOL_PRINT ("Shifting", yystos[yytable[yyj]],
11042                                &yylval, &yyerrloc);
11043               yyglrShift (yystackp, 0, yytable[yyj],
11044                           yys->yyposn, &yylval, &yyerrloc);
11045               yys = yystackp->yytops.yystates[0];
11046               break;
11047             }
11048         }
11049
11050       if (yys->yypred != NULL)
11051         yydestroyGLRState ("Error: popping", yys);
11052       yystackp->yytops.yystates[0] = yys->yypred;
11053       yystackp->yynextFree -= 1;
11054       yystackp->yyspaceLeft += 1;
11055     }
11056   if (yystackp->yytops.yystates[0] == NULL)
11057     yyFail (yystackp, NULL);
11058 }
11059
11060 #define YYCHK1(YYE)                                                             \
11061   do {                                                                             \
11062     switch (YYE) {                                                             \
11063     case yyok:                                                                     \
11064       break;                                                                     \
11065     case yyabort:                                                             \
11066       goto yyabortlab;                                                             \
11067     case yyaccept:                                                             \
11068       goto yyacceptlab;                                                             \
11069     case yyerr:                                                                     \
11070       goto yyuser_error;                                                     \
11071     default:                                                                     \
11072       goto yybuglab;                                                             \
11073     }                                                                             \
11074   } while (YYID (0))
11075
11076
11077 /*----------.
11078 | yyparse.  |
11079 `----------*/
11080
11081 int
11082 yyparse (void)
11083 {
11084   int yyresult;
11085   yyGLRStack yystack;
11086   yyGLRStack* const yystackp = &yystack;
11087   size_t yyposn;
11088
11089   YYDPRINTF ((stderr, "Starting parse\n"));
11090
11091   yychar = YYEMPTY;
11092   yylval = yyval_default;
11093
11094
11095   if (! yyinitGLRStack (yystackp, YYINITDEPTH))
11096     goto yyexhaustedlab;
11097   switch (YYSETJMP (yystack.yyexception_buffer))
11098     {
11099     case 0: break;
11100     case 1: goto yyabortlab;
11101     case 2: goto yyexhaustedlab;
11102     default: goto yybuglab;
11103     }
11104   yyglrShift (&yystack, 0, 0, 0, &yylval, &yylloc);
11105   yyposn = 0;
11106
11107   while (YYID (yytrue))
11108     {
11109       /* For efficiency, we have two loops, the first of which is
11110          specialized to deterministic operation (single stack, no
11111          potential ambiguity).  */
11112       /* Standard mode */
11113       while (YYID (yytrue))
11114         {
11115           yyRuleNum yyrule;
11116           int yyaction;
11117           const short int* yyconflicts;
11118
11119           yyStateNum yystate = yystack.yytops.yystates[0]->yylrState;
11120           YYDPRINTF ((stderr, "Entering state %d\n", yystate));
11121           if (yystate == YYFINAL)
11122             goto yyacceptlab;
11123           if (yyisDefaultedState (yystate))
11124             {
11125               yyrule = yydefaultAction (yystate);
11126               if (yyrule == 0)
11127                 {
11128
11129                   yyreportSyntaxError (&yystack);
11130                   goto yyuser_error;
11131                 }
11132               YYCHK1 (yyglrReduce (&yystack, 0, yyrule, yytrue));
11133             }
11134           else
11135             {
11136               yySymbol yytoken;
11137               if (yychar == YYEMPTY)
11138                 {
11139                   YYDPRINTF ((stderr, "Reading a token: "));
11140                   yychar = YYLEX;
11141                 }
11142
11143               if (yychar <= YYEOF)
11144                 {
11145                   yychar = yytoken = YYEOF;
11146                   YYDPRINTF ((stderr, "Now at end of input.\n"));
11147                 }
11148               else
11149                 {
11150                   yytoken = YYTRANSLATE (yychar);
11151                   YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
11152                 }
11153
11154               yygetLRActions (yystate, yytoken, &yyaction, &yyconflicts);
11155               if (*yyconflicts != 0)
11156                 break;
11157               if (yyisShiftAction (yyaction))
11158                 {
11159                   YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
11160                   yychar = YYEMPTY;
11161                   yyposn += 1;
11162                   yyglrShift (&yystack, 0, yyaction, yyposn, &yylval, &yylloc);
11163                   if (0 < yystack.yyerrState)
11164                     yystack.yyerrState -= 1;
11165                 }
11166               else if (yyisErrorAction (yyaction))
11167                 {
11168
11169                   yyreportSyntaxError (&yystack);
11170                   goto yyuser_error;
11171                 }
11172               else
11173                 YYCHK1 (yyglrReduce (&yystack, 0, -yyaction, yytrue));
11174             }
11175         }
11176
11177       while (YYID (yytrue))
11178         {
11179           yySymbol yytoken_to_shift;
11180           size_t yys;
11181
11182           for (yys = 0; yys < yystack.yytops.yysize; yys += 1)
11183             yystackp->yytops.yylookaheadNeeds[yys] = yychar != YYEMPTY;
11184
11185           /* yyprocessOneStack returns one of three things:
11186
11187               - An error flag.  If the caller is yyprocessOneStack, it
11188                 immediately returns as well.  When the caller is finally
11189                 yyparse, it jumps to an error label via YYCHK1.
11190
11191               - yyok, but yyprocessOneStack has invoked yymarkStackDeleted
11192                 (&yystack, yys), which sets the top state of yys to NULL.  Thus,
11193                 yyparse's following invocation of yyremoveDeletes will remove
11194                 the stack.
11195
11196               - yyok, when ready to shift a token.
11197
11198              Except in the first case, yyparse will invoke yyremoveDeletes and
11199              then shift the next token onto all remaining stacks.  This
11200              synchronization of the shift (that is, after all preceding
11201              reductions on all stacks) helps prevent double destructor calls
11202              on yylval in the event of memory exhaustion.  */
11203
11204           for (yys = 0; yys < yystack.yytops.yysize; yys += 1)
11205             YYCHK1 (yyprocessOneStack (&yystack, yys, yyposn));
11206           yyremoveDeletes (&yystack);
11207           if (yystack.yytops.yysize == 0)
11208             {
11209               yyundeleteLastStack (&yystack);
11210               if (yystack.yytops.yysize == 0)
11211                 yyFail (&yystack, YY_("syntax error"));
11212               YYCHK1 (yyresolveStack (&yystack));
11213               YYDPRINTF ((stderr, "Returning to deterministic operation.\n"));
11214
11215               yyreportSyntaxError (&yystack);
11216               goto yyuser_error;
11217             }
11218
11219           /* If any yyglrShift call fails, it will fail after shifting.  Thus,
11220              a copy of yylval will already be on stack 0 in the event of a
11221              failure in the following loop.  Thus, yychar is set to YYEMPTY
11222              before the loop to make sure the user destructor for yylval isn't
11223              called twice.  */
11224           yytoken_to_shift = YYTRANSLATE (yychar);
11225           yychar = YYEMPTY;
11226           yyposn += 1;
11227           for (yys = 0; yys < yystack.yytops.yysize; yys += 1)
11228             {
11229               int yyaction;
11230               const short int* yyconflicts;
11231               yyStateNum yystate = yystack.yytops.yystates[yys]->yylrState;
11232               yygetLRActions (yystate, yytoken_to_shift, &yyaction,
11233                               &yyconflicts);
11234               /* Note that yyconflicts were handled by yyprocessOneStack.  */
11235               YYDPRINTF ((stderr, "On stack %lu, ", (unsigned long int) yys));
11236               YY_SYMBOL_PRINT ("shifting", yytoken_to_shift, &yylval, &yylloc);
11237               yyglrShift (&yystack, yys, yyaction, yyposn,
11238                           &yylval, &yylloc);
11239               YYDPRINTF ((stderr, "Stack %lu now in state #%d\n",
11240                           (unsigned long int) yys,
11241                           yystack.yytops.yystates[yys]->yylrState));
11242             }
11243
11244           if (yystack.yytops.yysize == 1)
11245             {
11246               YYCHK1 (yyresolveStack (&yystack));
11247               YYDPRINTF ((stderr, "Returning to deterministic operation.\n"));
11248               yycompressStack (&yystack);
11249               break;
11250             }
11251         }
11252       continue;
11253     yyuser_error:
11254       yyrecoverSyntaxError (&yystack);
11255       yyposn = yystack.yytops.yystates[0]->yyposn;
11256     }
11257
11258  yyacceptlab:
11259   yyresult = 0;
11260   goto yyreturn;
11261
11262  yybuglab:
11263   YYASSERT (yyfalse);
11264   goto yyabortlab;
11265
11266  yyabortlab:
11267   yyresult = 1;
11268   goto yyreturn;
11269
11270  yyexhaustedlab:
11271   yyerror (YY_("memory exhausted"));
11272   yyresult = 2;
11273   goto yyreturn;
11274
11275  yyreturn:
11276   if (yychar != YYEMPTY)
11277     yydestruct ("Cleanup: discarding lookahead",
11278                 YYTRANSLATE (yychar),
11279                 &yylval);
11280
11281   /* If the stack is well-formed, pop the stack until it is empty,
11282      destroying its entries as we go.  But free the stack regardless
11283      of whether it is well-formed.  */
11284   if (yystack.yyitems)
11285     {
11286       yyGLRState** yystates = yystack.yytops.yystates;
11287       if (yystates)
11288         {
11289           size_t yysize = yystack.yytops.yysize;
11290           size_t yyk;
11291           for (yyk = 0; yyk < yysize; yyk += 1)
11292             if (yystates[yyk])
11293               {
11294                 while (yystates[yyk])
11295                   {
11296                     yyGLRState *yys = yystates[yyk];
11297                     if (yys->yypred != NULL)
11298                       yydestroyGLRState ("Cleanup: popping", yys);
11299                     yystates[yyk] = yys->yypred;
11300                     yystack.yynextFree -= 1;
11301                     yystack.yyspaceLeft += 1;
11302                   }
11303                 break;
11304               }
11305         }
11306       yyfreeGLRStack (&yystack);
11307     }
11308
11309   /* Make sure YYID is used.  */
11310   return YYID (yyresult);
11311 }
11312
11313 /* DEBUGGING ONLY */
11314 #if YYDEBUG
11315 static void yypstack (yyGLRStack* yystackp, size_t yyk)
11316   __attribute__ ((__unused__));
11317 static void yypdumpstack (yyGLRStack* yystackp) __attribute__ ((__unused__));
11318
11319 static void
11320 yy_yypstack (yyGLRState* yys)
11321 {
11322   if (yys->yypred)
11323     {
11324       yy_yypstack (yys->yypred);
11325       YYFPRINTF (stderr, " -> ");
11326     }
11327   YYFPRINTF (stderr, "%d@%lu", yys->yylrState,
11328              (unsigned long int) yys->yyposn);
11329 }
11330
11331 static void
11332 yypstates (yyGLRState* yyst)
11333 {
11334   if (yyst == NULL)
11335     YYFPRINTF (stderr, "<null>");
11336   else
11337     yy_yypstack (yyst);
11338   YYFPRINTF (stderr, "\n");
11339 }
11340
11341 static void
11342 yypstack (yyGLRStack* yystackp, size_t yyk)
11343 {
11344   yypstates (yystackp->yytops.yystates[yyk]);
11345 }
11346
11347 #define YYINDEX(YYX)                                                             \
11348     ((YYX) == NULL ? -1 : (yyGLRStackItem*) (YYX) - yystackp->yyitems)
11349
11350
11351 static void
11352 yypdumpstack (yyGLRStack* yystackp)
11353 {
11354   yyGLRStackItem* yyp;
11355   size_t yyi;
11356   for (yyp = yystackp->yyitems; yyp < yystackp->yynextFree; yyp += 1)
11357     {
11358       YYFPRINTF (stderr, "%3lu. ",
11359                  (unsigned long int) (yyp - yystackp->yyitems));
11360       if (*(yybool *) yyp)
11361         {
11362           YYFPRINTF (stderr, "Res: %d, LR State: %d, posn: %lu, pred: %ld",
11363                      yyp->yystate.yyresolved, yyp->yystate.yylrState,
11364                      (unsigned long int) yyp->yystate.yyposn,
11365                      (long int) YYINDEX (yyp->yystate.yypred));
11366           if (! yyp->yystate.yyresolved)
11367             YYFPRINTF (stderr, ", firstVal: %ld",
11368                        (long int) YYINDEX (yyp->yystate
11369                                              .yysemantics.yyfirstVal));
11370         }
11371       else
11372         {
11373           YYFPRINTF (stderr, "Option. rule: %d, state: %ld, next: %ld",
11374                      yyp->yyoption.yyrule - 1,
11375                      (long int) YYINDEX (yyp->yyoption.yystate),
11376                      (long int) YYINDEX (yyp->yyoption.yynext));
11377         }
11378       YYFPRINTF (stderr, "\n");
11379     }
11380   YYFPRINTF (stderr, "Tops:");
11381   for (yyi = 0; yyi < yystackp->yytops.yysize; yyi += 1)
11382     YYFPRINTF (stderr, "%lu: %ld; ", (unsigned long int) yyi,
11383                (long int) YYINDEX (yystackp->yytops.yystates[yyi]));
11384   YYFPRINTF (stderr, "\n");
11385 }
11386 #endif
11387
11388
11389
11390 /* Line 2634 of glr.c  */
11391 #line 3328 "vtkParse.y"
11392
11393 #include <string.h>
11394 #include "lex.yy.c"
11395
11396 /* fill in the type name if none given */
11397 const char *type_class(unsigned int type, const char *classname)
11398 {
11399   if (classname)
11400     {
11401     if (classname[0] == '\0')
11402       {
11403       switch ((type & VTK_PARSE_BASE_TYPE))
11404         {
11405         case 0:
11406           classname = "auto";
11407           break;
11408         case VTK_PARSE_VOID:
11409           classname = "void";
11410           break;
11411         case VTK_PARSE_BOOL:
11412           classname = "bool";
11413           break;
11414         case VTK_PARSE_FLOAT:
11415           classname = "float";
11416           break;
11417         case VTK_PARSE_DOUBLE:
11418           classname = "double";
11419           break;
11420         case VTK_PARSE_LONG_DOUBLE:
11421           classname = "long double";
11422           break;
11423         case VTK_PARSE_CHAR:
11424           classname = "char";
11425           break;
11426         case VTK_PARSE_CHAR16_T:
11427           classname = "char16_t";
11428           break;
11429         case VTK_PARSE_CHAR32_T:
11430           classname = "char32_t";
11431           break;
11432         case VTK_PARSE_WCHAR_T:
11433           classname = "wchar_t";
11434           break;
11435         case VTK_PARSE_UNSIGNED_CHAR:
11436           classname = "unsigned char";
11437           break;
11438         case VTK_PARSE_SIGNED_CHAR:
11439           classname = "signed char";
11440           break;
11441         case VTK_PARSE_SHORT:
11442           classname = "short";
11443           break;
11444         case VTK_PARSE_UNSIGNED_SHORT:
11445           classname = "unsigned short";
11446           break;
11447         case VTK_PARSE_INT:
11448           classname = "int";
11449           break;
11450         case VTK_PARSE_UNSIGNED_INT:
11451           classname = "unsigned int";
11452           break;
11453         case VTK_PARSE_LONG:
11454           classname = "long";
11455           break;
11456         case VTK_PARSE_UNSIGNED_LONG:
11457           classname = "unsigned long";
11458           break;
11459         case VTK_PARSE_LONG_LONG:
11460           classname = "long long";
11461           break;
11462         case VTK_PARSE_UNSIGNED_LONG_LONG:
11463           classname = "unsigned long long";
11464           break;
11465         case VTK_PARSE___INT64:
11466           classname = "__int64";
11467           break;
11468         case VTK_PARSE_UNSIGNED___INT64:
11469           classname = "unsigned __int64";
11470           break;
11471         }
11472       }
11473     }
11474
11475   return classname;
11476 }
11477
11478 /* check whether this is the class we are looking for */
11479 void start_class(const char *classname, int is_struct_or_union)
11480 {
11481   ClassInfo *outerClass = currentClass;
11482   pushClass();
11483   currentClass = (ClassInfo *)malloc(sizeof(ClassInfo));
11484   vtkParse_InitClass(currentClass);
11485   currentClass->Name = classname;
11486   if (is_struct_or_union == 1)
11487     {
11488     currentClass->ItemType = VTK_STRUCT_INFO;
11489     }
11490   if (is_struct_or_union == 2)
11491     {
11492     currentClass->ItemType = VTK_UNION_INFO;
11493     }
11494
11495   if (classname && classname[strlen(classname)-1] != '>')
11496     {
11497     if (outerClass)
11498       {
11499       vtkParse_AddClassToClass(outerClass, currentClass);
11500       }
11501     else
11502       {
11503       vtkParse_AddClassToNamespace(currentNamespace, currentClass);
11504       }
11505     }
11506
11507   /* template information */
11508   if (currentTemplate)
11509     {
11510     currentClass->Template = currentTemplate;
11511     currentTemplate = NULL;
11512     }
11513
11514   /* comment, if any */
11515   currentClass->Comment = vtkstrdup(getComment());
11516
11517   access_level = VTK_ACCESS_PRIVATE;
11518   if (is_struct_or_union)
11519     {
11520     access_level = VTK_ACCESS_PUBLIC;
11521     }
11522
11523   vtkParse_InitFunction(currentFunction);
11524   startSig();
11525   clearComment();
11526 }
11527
11528 /* reached the end of a class definition */
11529 void end_class()
11530 {
11531   /* add default constructors */
11532   vtkParse_AddDefaultConstructors(currentClass, data->Strings);
11533
11534   popClass();
11535 }
11536
11537 /* add a base class to the specified class */
11538 void add_base_class(ClassInfo *cls, const char *name, int al,
11539   unsigned int extra)
11540 {
11541   /* "extra" can contain VTK_PARSE_VIRTUAL and VTK_PARSE_PACK */
11542   if (cls && al == VTK_ACCESS_PUBLIC &&
11543       (extra & VTK_PARSE_VIRTUAL) == 0 &&
11544       (extra & VTK_PARSE_PACK) == 0)
11545     {
11546     vtkParse_AddStringToArray(&cls->SuperClasses,
11547                               &cls->NumberOfSuperClasses,
11548                               name);
11549     }
11550 }
11551
11552 /* add a using declaration or directive */
11553 void add_using(const char *name, int is_namespace)
11554 {
11555   size_t i;
11556   UsingInfo *item;
11557
11558   item = (UsingInfo *)malloc(sizeof(UsingInfo));
11559   vtkParse_InitUsing(item);
11560   if (is_namespace)
11561     {
11562     item->Name = NULL;
11563     item->Scope = name;
11564     }
11565   else
11566     {
11567     i = strlen(name);
11568     while (i > 0 && name[i-1] != ':') { i--; }
11569     item->Name = vtkstrdup(&name[i]);
11570     while (i > 0 && name[i-1] == ':') { i--; }
11571     item->Scope = vtkstrndup(name, i);
11572     }
11573
11574   if (currentClass)
11575     {
11576     vtkParse_AddUsingToClass(currentClass, item);
11577     }
11578   else
11579     {
11580     vtkParse_AddUsingToNamespace(currentNamespace, item);
11581     }
11582 }
11583
11584 /* start a new enum */
11585 void start_enum(const char *name, int is_scoped,
11586                 unsigned int type, const char *basename)
11587 {
11588   EnumInfo *item;
11589
11590   currentEnumType = (type ? type : VTK_PARSE_INT);
11591   currentEnumName = "int";
11592   currentEnumValue = NULL;
11593
11594   if (type == 0 && is_scoped)
11595     {
11596     type = VTK_PARSE_INT;
11597     }
11598
11599   if (name)
11600     {
11601     currentEnumName = name;
11602     item = (EnumInfo *)malloc(sizeof(EnumInfo));
11603     vtkParse_InitEnum(item);
11604     item->Name = name;
11605     item->Access = access_level;
11606
11607     if (currentClass)
11608       {
11609       vtkParse_AddEnumToClass(currentClass, item);
11610       }
11611     else
11612       {
11613       vtkParse_AddEnumToNamespace(currentNamespace, item);
11614       }
11615
11616     if (type)
11617       {
11618       vtkParse_AddStringToArray(&item->SuperClasses,
11619                                 &item->NumberOfSuperClasses,
11620                                 type_class(type, basename));
11621       }
11622
11623     if (is_scoped)
11624       {
11625       pushClass();
11626       currentClass = item;
11627       }
11628     }
11629 }
11630
11631 /* finish the enum */
11632 void end_enum()
11633 {
11634   if (currentClass && currentClass->ItemType == VTK_ENUM_INFO)
11635     {
11636     popClass();
11637     }
11638
11639   currentEnumName = NULL;
11640   currentEnumValue = NULL;
11641 }
11642
11643 /* add a constant to the enum */
11644 void add_enum(const char *name, const char *value)
11645 {
11646   static char text[2048];
11647   int i;
11648   long j;
11649
11650   if (value)
11651     {
11652     strcpy(text, value);
11653     currentEnumValue = value;
11654     }
11655   else if (currentEnumValue)
11656     {
11657     i = strlen(text);
11658     while (i > 0 && text[i-1] >= '0' &&
11659            text[i-1] <= '9') { i--; }
11660
11661     if (i == 0 || text[i-1] == ' ' ||
11662         (i > 1 && text[i-2] == ' ' &&
11663          (text[i-1] == '-' || text[i-1] == '+')))
11664       {
11665       if (i > 0 && text[i-1] != ' ')
11666         {
11667         i--;
11668         }
11669       j = (int)strtol(&text[i], NULL, 10);
11670       sprintf(&text[i], "%li", j+1);
11671       }
11672     else
11673       {
11674       i = strlen(text);
11675       strcpy(&text[i], " + 1");
11676       }
11677     currentEnumValue = vtkstrdup(text);
11678     }
11679   else
11680     {
11681     strcpy(text, "0");
11682     currentEnumValue = "0";
11683     }
11684
11685   add_constant(name, currentEnumValue, currentEnumType, currentEnumName, 2);
11686 }
11687
11688 /* for a macro constant, guess the constant type, doesn't do any math */
11689 unsigned int guess_constant_type(const char *valstring)
11690 {
11691   unsigned int valtype = 0;
11692   size_t k;
11693   int i;
11694   int is_name = 0;
11695
11696   if (valstring == NULL || valstring[0] == '\0')
11697     {
11698     return 0;
11699     }
11700
11701   k = vtkParse_SkipId(valstring);
11702   if (valstring[k] == '\0')
11703     {
11704     is_name = 1;
11705     }
11706
11707   if (strcmp(valstring, "true") == 0 || strcmp(valstring, "false") == 0)
11708     {
11709     return VTK_PARSE_BOOL;
11710     }
11711
11712   if (strcmp(valstring, "nullptr") == 0)
11713     {
11714     return VTK_PARSE_NULLPTR_T;
11715     }
11716
11717   if (valstring[0] == '\'')
11718     {
11719     return VTK_PARSE_CHAR;
11720     }
11721
11722   if (strncmp(valstring, "VTK_TYPE_CAST(", 14) == 0 ||
11723       strncmp(valstring, "static_cast<", 12) == 0 ||
11724       strncmp(valstring, "const_cast<", 11) == 0 ||
11725       strncmp(valstring, "(", 1) == 0)
11726     {
11727     const char *cp;
11728     size_t n;
11729     int is_unsigned = 0;
11730
11731     cp = &valstring[1];
11732     if (valstring[0] == 'c')
11733       {
11734       cp = &valstring[11];
11735       }
11736     else if (valstring[0] == 's')
11737       {
11738       cp = &valstring[12];
11739       }
11740     else if (valstring[0] == 'V')
11741       {
11742       cp = &valstring[14];
11743       }
11744
11745     if (strncmp(cp, "unsigned ", 9) == 0)
11746       {
11747       is_unsigned = 1;
11748       cp += 9;
11749       }
11750
11751     n = strlen(cp);
11752     for (k = 0; k < n && cp[k] != ',' &&
11753          cp[k] != '>' && cp[k] != ')'; k++) { ; };
11754
11755     if (strncmp(cp, "long long", k) == 0)
11756       { valtype = VTK_PARSE_LONG_LONG; }
11757     else if (strncmp(cp, "__int64", k) == 0)
11758       { valtype = VTK_PARSE___INT64; }
11759     else if (strncmp(cp, "long", k) == 0)
11760       { valtype = VTK_PARSE_LONG; }
11761     else if (strncmp(cp, "short", k) == 0)
11762       { valtype = VTK_PARSE_SHORT; }
11763     else if (strncmp(cp, "signed char", k) == 0)
11764       { valtype = VTK_PARSE_SIGNED_CHAR; }
11765     else if (strncmp(cp, "char", k) == 0)
11766       { valtype = VTK_PARSE_CHAR; }
11767     else if (strncmp(cp, "int", k) == 0 ||
11768              strncmp(cp, "signed", k) == 0)
11769       { valtype = VTK_PARSE_INT; }
11770     else if (strncmp(cp, "float", k) == 0)
11771       { valtype = VTK_PARSE_FLOAT; }
11772     else if (strncmp(cp, "double", k) == 0)
11773       { valtype = VTK_PARSE_DOUBLE; }
11774     else if (strncmp(cp, "char *", k) == 0)
11775       { valtype = VTK_PARSE_CHAR_PTR; }
11776
11777     if (is_unsigned)
11778       {
11779       if (valtype == 0) { valtype = VTK_PARSE_INT; }
11780       valtype = (valtype | VTK_PARSE_UNSIGNED);
11781       }
11782
11783     if (valtype != 0)
11784       {
11785       return valtype;
11786       }
11787     }
11788
11789   /* check the current scope */
11790   if (is_name)
11791     {
11792     NamespaceInfo *scope = currentNamespace;
11793     if (namespaceDepth > 0)
11794       {
11795       scope = namespaceStack[0];
11796       }
11797
11798     for (i = 0; i < scope->NumberOfConstants; i++)
11799       {
11800       if (strcmp(scope->Constants[i]->Name, valstring) == 0)
11801         {
11802         return scope->Constants[i]->Type;
11803         }
11804       }
11805     }
11806
11807   /* check for preprocessor macros */
11808   if (is_name)
11809     {
11810     MacroInfo *macro = vtkParsePreprocess_GetMacro(
11811       preprocessor, valstring);
11812
11813     if (macro && !macro->IsFunction)
11814       {
11815       return guess_constant_type(macro->Definition);
11816       }
11817     }
11818
11819   /* fall back to the preprocessor to evaluate the constant */
11820     {
11821     preproc_int_t val;
11822     int is_unsigned;
11823     int result = vtkParsePreprocess_EvaluateExpression(
11824       preprocessor, valstring, &val, &is_unsigned);
11825
11826     if (result == VTK_PARSE_PREPROC_DOUBLE)
11827       {
11828       return VTK_PARSE_DOUBLE;
11829       }
11830     else if (result == VTK_PARSE_PREPROC_FLOAT)
11831       {
11832       return VTK_PARSE_FLOAT;
11833       }
11834     else if (result == VTK_PARSE_PREPROC_STRING)
11835       {
11836       return VTK_PARSE_CHAR_PTR;
11837       }
11838     else if (result == VTK_PARSE_OK)
11839       {
11840       if (is_unsigned)
11841         {
11842         if ((preproc_uint_t)val <= VTK_UNSIGNED_INT_MAX)
11843           {
11844           return VTK_PARSE_UNSIGNED_INT;
11845           }
11846         else
11847           {
11848 #if defined(VTK_TYPE_USE_LONG_LONG)
11849           return VTK_PARSE_UNSIGNED_LONG_LONG;
11850 #elif defined(VTK_TYPE_USE___INT64)
11851           return VTK_PARSE_UNSIGNED___INT64;
11852 #else
11853           return VTK_PARSE_UNSIGNED_LONG;
11854 #endif
11855           }
11856         }
11857       else
11858         {
11859         if (val >= VTK_INT_MIN && val <= VTK_INT_MAX)
11860           {
11861           return VTK_PARSE_INT;
11862           }
11863         else
11864           {
11865 #if defined(VTK_TYPE_USE_LONG_LONG)
11866           return VTK_PARSE_LONG_LONG;
11867 #elif defined(VTK_TYPE_USE___INT64)
11868           return VTK_PARSE___INT64;
11869 #else
11870           return VTK_PARSE_LONG;
11871 #endif
11872           }
11873         }
11874       }
11875     }
11876
11877   return 0;
11878 }
11879
11880 /* add a constant to the current class or namespace */
11881 void add_constant(const char *name, const char *value,
11882                   unsigned int type, const char *typeclass, int flag)
11883 {
11884   ValueInfo *con = (ValueInfo *)malloc(sizeof(ValueInfo));
11885   vtkParse_InitValue(con);
11886   con->ItemType = VTK_CONSTANT_INFO;
11887   con->Name = name;
11888   con->Value = value;
11889   con->Type = type;
11890   con->Class = type_class(type, typeclass);
11891
11892   if (flag == 2)
11893     {
11894     con->IsEnum = 1;
11895     }
11896
11897   if (flag == 1)
11898     {
11899     /* actually a macro, need to guess the type */
11900     ValueInfo **cptr = data->Contents->Constants;
11901     int n = data->Contents->NumberOfConstants;
11902     int i;
11903
11904     con->Access = VTK_ACCESS_PUBLIC;
11905     if (con->Type == 0)
11906       {
11907       con->Type = guess_constant_type(con->Value);
11908       }
11909
11910     for (i = 0; i < n; i++)
11911       {
11912       if (strcmp(cptr[i]->Name, con->Name) == 0)
11913         {
11914         break;
11915         }
11916       }
11917
11918     if (i == n)
11919       {
11920       vtkParse_AddConstantToNamespace(data->Contents, con);
11921       }
11922     else
11923       {
11924       vtkParse_FreeValue(con);
11925       }
11926     }
11927   else if (currentClass)
11928     {
11929     con->Access = access_level;
11930     vtkParse_AddConstantToClass(currentClass, con);
11931     }
11932   else
11933     {
11934     con->Access = VTK_ACCESS_PUBLIC;
11935     vtkParse_AddConstantToNamespace(currentNamespace, con);
11936     }
11937 }
11938
11939 /* if the name is a const in this namespace, the scope it */
11940 const char *add_const_scope(const char *name)
11941 {
11942   static char text[256];
11943   NamespaceInfo *scope = currentNamespace;
11944   int i, j;
11945   int addscope = 0;
11946
11947   strcpy(text, name);
11948
11949   if (currentClass)
11950     {
11951     for (j = 0; j < currentClass->NumberOfConstants; j++)
11952       {
11953       if (strcmp(currentClass->Constants[j]->Name, text) == 0)
11954         {
11955         prepend_scope(text, currentClass->Name);
11956         addscope = 1;
11957         }
11958       }
11959     }
11960   i = namespaceDepth;
11961   while (scope && scope->Name)
11962     {
11963     if (addscope)
11964       {
11965       prepend_scope(text, scope->Name);
11966       }
11967     else
11968       {
11969       for (j = 0; j < scope->NumberOfConstants; j++)
11970         {
11971         if (strcmp(scope->Constants[j]->Name, text) == 0)
11972           {
11973           prepend_scope(text, scope->Name);
11974           addscope = 1;
11975           }
11976         }
11977       }
11978
11979     scope = 0;
11980     if (i > 0)
11981       {
11982       scope = namespaceStack[--i];
11983       }
11984     }
11985
11986   return text;
11987 }
11988
11989 /* guess the type from the ID */
11990 unsigned int guess_id_type(const char *cp)
11991 {
11992   unsigned int t = 0;
11993
11994   if (cp)
11995     {
11996     size_t i;
11997     const char *dp;
11998
11999     i = strlen(cp);
12000     while (i > 0 && cp[i-1] != ':') { i--; }
12001     dp = &cp[i];
12002
12003     if (strcmp(dp, "vtkStdString") == 0 ||
12004         strcmp(cp, "std::string") == 0)
12005       {
12006       t = VTK_PARSE_STRING;
12007       }
12008     else if (strcmp(dp, "vtkUnicodeString") == 0)
12009       {
12010       t = VTK_PARSE_UNICODE_STRING;
12011       }
12012     else if (strncmp(dp, "vtk", 3) == 0)
12013       {
12014       t = VTK_PARSE_OBJECT;
12015       }
12016     else if (strncmp(dp, "Q", 1) == 0 ||
12017              strncmp(cp, "Qt::", 4) == 0)
12018       {
12019       t = VTK_PARSE_QOBJECT;
12020       }
12021     else
12022       {
12023       t = VTK_PARSE_UNKNOWN;
12024       }
12025     }
12026
12027   return t;
12028 }
12029
12030 /* add a template parameter to the current template */
12031 void add_template_parameter(
12032   unsigned int datatype, unsigned int extra, const char *funcSig)
12033 {
12034   ValueInfo *param = (ValueInfo *)malloc(sizeof(ValueInfo));
12035   vtkParse_InitValue(param);
12036   handle_complex_type(param, datatype, extra, funcSig);
12037   param->Name = getVarName();
12038   vtkParse_AddParameterToTemplate(currentTemplate, param);
12039 }
12040
12041 /* add a parameter to a function */
12042 void add_parameter(FunctionInfo *func, unsigned int type,
12043                    const char *typeclass, int count)
12044 {
12045   char text[64];
12046   ValueInfo *param = (ValueInfo *)malloc(sizeof(ValueInfo));
12047   vtkParse_InitValue(param);
12048
12049   param->Type = type;
12050   param->Class = type_class(type, typeclass);
12051
12052   if (count)
12053     {
12054     param->Count = count;
12055     sprintf(text, "%i", count);
12056     vtkParse_AddStringToArray(&param->Dimensions, &param->NumberOfDimensions,
12057                               vtkstrdup(text));
12058     }
12059
12060   add_legacy_parameter(func, param);
12061
12062   vtkParse_AddParameterToFunction(func, param);
12063 }
12064
12065 /* set the return type for the current function */
12066 void set_return(FunctionInfo *func, unsigned int type,
12067                 const char *typeclass, int count)
12068 {
12069   char text[64];
12070   ValueInfo *val = (ValueInfo *)malloc(sizeof(ValueInfo));
12071
12072   vtkParse_InitValue(val);
12073   val->Type = type;
12074   val->Class = type_class(type, typeclass);
12075
12076   if (count)
12077     {
12078     val->Count = count;
12079     sprintf(text, "%i", count);
12080     vtkParse_AddStringToArray(&val->Dimensions, &val->NumberOfDimensions,
12081                               vtkstrdup(text));
12082     }
12083
12084   func->ReturnValue = val;
12085
12086 #ifndef VTK_PARSE_LEGACY_REMOVE
12087   func->ReturnType = val->Type;
12088   func->ReturnClass = val->Class;
12089   func->HaveHint = (count > 0);
12090   func->HintSize = count;
12091 #endif
12092 }
12093
12094 int count_from_dimensions(ValueInfo *val)
12095 {
12096   int count, i, n;
12097   const char *cp;
12098
12099   /* count is the product of the dimensions */
12100   count = 0;
12101   if (val->NumberOfDimensions)
12102     {
12103     count = 1;
12104     for (i = 0; i < val->NumberOfDimensions; i++)
12105       {
12106       n = 0;
12107       cp = val->Dimensions[i];
12108       if (cp[0] != '\0')
12109         {
12110         while (*cp != '\0' && *cp >= '0' && *cp <= '9') { cp++; }
12111         while (*cp != '\0' && (*cp == 'u' || *cp == 'l' ||
12112                                *cp == 'U' || *cp == 'L')) { cp++; }
12113         if (*cp == '\0')
12114           {
12115           n = (int)strtol(val->Dimensions[i], NULL, 0);
12116           }
12117         }
12118       count *= n;
12119       }
12120     }
12121
12122   return count;
12123 }
12124
12125 /* deal with types that include function pointers or arrays */
12126 void handle_complex_type(
12127   ValueInfo *val, unsigned int datatype, unsigned int extra,
12128   const char *funcSig)
12129 {
12130   FunctionInfo *func = 0;
12131
12132   /* remove specifiers like "friend" and "typedef" */
12133   datatype &= VTK_PARSE_QUALIFIED_TYPE;
12134
12135   /* remove the pack specifier caused by "..." */
12136   if ((extra & VTK_PARSE_PACK) != 0)
12137     {
12138     val->IsPack = 1;
12139     extra ^= VTK_PARSE_PACK;
12140     }
12141
12142   /* if "extra" was set, parentheses were involved */
12143   if ((extra & VTK_PARSE_BASE_TYPE) == VTK_PARSE_FUNCTION)
12144     {
12145     /* the current type becomes the function return type */
12146     func = getFunction();
12147     func->ReturnValue = (ValueInfo *)malloc(sizeof(ValueInfo));
12148     vtkParse_InitValue(func->ReturnValue);
12149     func->ReturnValue->Type = datatype;
12150     func->ReturnValue->Class = type_class(datatype, getTypeId());
12151     if (funcSig) { func->Signature = vtkstrdup(funcSig); }
12152     val->Function = func;
12153
12154 #ifndef VTK_PARSE_LEGACY_REMOVE
12155     func->ReturnType = func->ReturnValue->Type;
12156     func->ReturnClass = func->ReturnValue->Class;
12157 #endif
12158
12159     /* the val type is whatever was inside the parentheses */
12160     clearTypeId();
12161     setTypeId(func->Class ? "method" : "function");
12162     datatype = (extra & (VTK_PARSE_UNQUALIFIED_TYPE | VTK_PARSE_RVALUE));
12163     }
12164   else if ((extra & VTK_PARSE_INDIRECT) == VTK_PARSE_BAD_INDIRECT)
12165     {
12166     datatype = (datatype | VTK_PARSE_BAD_INDIRECT);
12167     }
12168   else if ((extra & VTK_PARSE_INDIRECT) != 0)
12169     {
12170     extra = (extra & (VTK_PARSE_INDIRECT | VTK_PARSE_RVALUE));
12171
12172     if ((extra & VTK_PARSE_REF) != 0)
12173       {
12174       datatype = (datatype | (extra & (VTK_PARSE_REF | VTK_PARSE_RVALUE)));
12175       extra = (extra & ~(VTK_PARSE_REF | VTK_PARSE_RVALUE));
12176       }
12177
12178     if (extra != 0 && getArrayNDims() > 0)
12179       {
12180       /* pointer represents an unsized array bracket */
12181       datatype = add_indirection(datatype, VTK_PARSE_ARRAY);
12182       extra = ((extra >> 2) & VTK_PARSE_POINTER_MASK);
12183       }
12184
12185     datatype = add_indirection(datatype, extra);
12186     }
12187
12188   if (getArrayNDims() == 1)
12189     {
12190     if ((datatype & VTK_PARSE_POINTER_LOWMASK) != VTK_PARSE_ARRAY)
12191       {
12192       /* turn the first set of brackets into a pointer */
12193       datatype = add_indirection(datatype, VTK_PARSE_POINTER);
12194       }
12195     else
12196       {
12197       pushArrayFront("");
12198       }
12199     }
12200   else if (getArrayNDims() > 1)
12201     {
12202     if ((datatype & VTK_PARSE_POINTER_LOWMASK) != VTK_PARSE_ARRAY)
12203       {
12204       /* turn the first set of brackets into a pointer */
12205       datatype = add_indirection(datatype, VTK_PARSE_ARRAY);
12206       }
12207     else
12208       {
12209       pushArrayFront("");
12210       }
12211     }
12212
12213   /* get the data type */
12214   val->Type = datatype;
12215   val->Class = type_class(datatype, getTypeId());
12216
12217   /* copy contents of all brackets to the ArgDimensions */
12218   val->NumberOfDimensions = getArrayNDims();
12219   val->Dimensions = getArray();
12220   clearArray();
12221
12222   /* count is the product of the dimensions */
12223   val->Count = count_from_dimensions(val);
12224 }
12225
12226 /* add a parameter to the legacy part of the FunctionInfo struct */
12227 void add_legacy_parameter(FunctionInfo *func, ValueInfo *param)
12228 {
12229 #ifndef VTK_PARSE_LEGACY_REMOVE
12230   int i = func->NumberOfArguments;
12231
12232   if (i < MAX_ARGS)
12233     {
12234     func->NumberOfArguments = i + 1;
12235     func->ArgTypes[i] = param->Type;
12236     func->ArgClasses[i] = param->Class;
12237     func->ArgCounts[i] = param->Count;
12238
12239     /* legacy wrappers need VTK_PARSE_FUNCTION without POINTER */
12240     if (param->Type == VTK_PARSE_FUNCTION_PTR)
12241       {
12242       /* check for signature "void (*func)(void *)" */
12243       if (param->Function->NumberOfParameters == 1 &&
12244           param->Function->Parameters[0]->Type == VTK_PARSE_VOID_PTR &&
12245           param->Function->Parameters[0]->NumberOfDimensions == 0 &&
12246           param->Function->ReturnValue->Type == VTK_PARSE_VOID)
12247         {
12248         func->ArgTypes[i] = VTK_PARSE_FUNCTION;
12249         }
12250       }
12251     }
12252   else
12253     {
12254     func->ArrayFailure = 1;
12255     }
12256 #endif
12257 }
12258
12259
12260 /* reject the function, do not output it */
12261 void reject_function()
12262 {
12263   vtkParse_InitFunction(currentFunction);
12264   startSig();
12265   getMacro();
12266 }
12267
12268 /* a simple routine that updates a few variables */
12269 void output_function()
12270 {
12271   const char *macro = getMacro();
12272   size_t n;
12273   int i, j;
12274   int match;
12275
12276   /* reject template specializations */
12277   n = strlen(currentFunction->Name);
12278   if (currentFunction->Name[n-1] == '>')
12279     {
12280     /* make sure there is a matching angle bracket */
12281     while (n > 0 && currentFunction->Name[n-1] != '<') { n--; }
12282     if (n > 0)
12283       {
12284       reject_function();
12285       return;
12286       }
12287     }
12288
12289   /* friend */
12290   if (currentFunction->ReturnValue &&
12291       currentFunction->ReturnValue->Type & VTK_PARSE_FRIEND)
12292     {
12293     currentFunction->ReturnValue->Type ^= VTK_PARSE_FRIEND;
12294     output_friend_function();
12295     return;
12296     }
12297
12298   /* typedef */
12299   if (currentFunction->ReturnValue &&
12300       currentFunction->ReturnValue->Type & VTK_PARSE_TYPEDEF)
12301     {
12302     /* for now, reject it instead of turning a method into a typedef */
12303     currentFunction->ReturnValue->Type ^= VTK_PARSE_TYPEDEF;
12304     reject_function();
12305     return;
12306     }
12307
12308   /* static */
12309   if (currentFunction->ReturnValue &&
12310       currentFunction->ReturnValue->Type & VTK_PARSE_STATIC)
12311     {
12312     currentFunction->IsStatic = 1;
12313     }
12314
12315   /* virtual */
12316   if (currentFunction->ReturnValue &&
12317       currentFunction->ReturnValue->Type & VTK_PARSE_VIRTUAL)
12318     {
12319     currentFunction->IsVirtual = 1;
12320     }
12321
12322   /* the signature */
12323   if (!currentFunction->Signature)
12324     {
12325     currentFunction->Signature = getSig();
12326     }
12327
12328   /* template information */
12329   if (currentTemplate)
12330     {
12331     currentFunction->Template = currentTemplate;
12332     currentTemplate = NULL;
12333     }
12334
12335   /* a void argument is the same as no parameters */
12336   if (currentFunction->NumberOfParameters == 1 &&
12337       (currentFunction->Parameters[0]->Type & VTK_PARSE_UNQUALIFIED_TYPE) ==
12338       VTK_PARSE_VOID)
12339     {
12340     currentFunction->NumberOfParameters = 0;
12341     }
12342
12343   /* is it defined in a legacy macro? */
12344   if (macro && strcmp(macro, "VTK_LEGACY") == 0)
12345     {
12346     currentFunction->IsLegacy = 1;
12347     }
12348
12349   /* set public, protected */
12350   if (currentClass)
12351     {
12352     currentFunction->Access = access_level;
12353     }
12354   else
12355     {
12356     currentFunction->Access = VTK_ACCESS_PUBLIC;
12357     }
12358
12359 #ifndef VTK_PARSE_LEGACY_REMOVE
12360   /* a void argument is the same as no parameters */
12361   if (currentFunction->NumberOfArguments == 1 &&
12362       (currentFunction->ArgTypes[0] & VTK_PARSE_UNQUALIFIED_TYPE) ==
12363       VTK_PARSE_VOID)
12364     {
12365     currentFunction->NumberOfArguments = 0;
12366     }
12367
12368   /* if return type is void, set return class to void */
12369   if (currentFunction->ReturnClass == NULL &&
12370       (currentFunction->ReturnType & VTK_PARSE_UNQUALIFIED_TYPE) ==
12371        VTK_PARSE_VOID)
12372     {
12373     currentFunction->ReturnClass = "void";
12374     }
12375
12376   /* set legacy flags */
12377   if (currentClass)
12378     {
12379     currentFunction->IsPublic = (access_level == VTK_ACCESS_PUBLIC);
12380     currentFunction->IsProtected = (access_level == VTK_ACCESS_PROTECTED);
12381     }
12382   else
12383     {
12384     currentFunction->IsPublic = 1;
12385     currentFunction->IsProtected = 0;
12386     }
12387
12388   /* check for too many parameters */
12389   if (currentFunction->NumberOfParameters > MAX_ARGS)
12390     {
12391     currentFunction->ArrayFailure = 1;
12392     }
12393
12394   for (i = 0; i < currentFunction->NumberOfParameters; i++)
12395     {
12396     ValueInfo *param = currentFunction->Parameters[i];
12397     /* tell old wrappers that multi-dimensional arrays are bad */
12398     if ((param->Type & VTK_PARSE_POINTER_MASK) != 0)
12399       {
12400       if (((param->Type & VTK_PARSE_INDIRECT) == VTK_PARSE_BAD_INDIRECT) ||
12401           ((param->Type & VTK_PARSE_POINTER_LOWMASK) != VTK_PARSE_POINTER))
12402         {
12403         currentFunction->ArrayFailure = 1;
12404         }
12405       }
12406
12407     /* allow only "void (*func)(void *)" as a valid function pointer */
12408     if ((param->Type & VTK_PARSE_BASE_TYPE) == VTK_PARSE_FUNCTION)
12409       {
12410       if (i != 0 || param->Type != VTK_PARSE_FUNCTION_PTR ||
12411           currentFunction->NumberOfParameters != 2 ||
12412           currentFunction->Parameters[1]->Type != VTK_PARSE_VOID_PTR ||
12413           param->Function->NumberOfParameters != 1 ||
12414           param->Function->Parameters[0]->Type != VTK_PARSE_VOID_PTR ||
12415           param->Function->Parameters[0]->NumberOfDimensions != 0 ||
12416           param->Function->ReturnValue->Type != VTK_PARSE_VOID)
12417         {
12418         currentFunction->ArrayFailure = 1;
12419         }
12420       }
12421     }
12422 #endif /* VTK_PARSE_LEGACY_REMOVE */
12423
12424   if (currentClass)
12425     {
12426     /* is it a delete function */
12427     if (currentFunction->Name && !strcmp("Delete",currentFunction->Name))
12428       {
12429       currentClass->HasDelete = 1;
12430       }
12431
12432     currentFunction->Class = currentClass->Name;
12433     vtkParse_AddFunctionToClass(currentClass, currentFunction);
12434
12435     currentFunction = (FunctionInfo *)malloc(sizeof(FunctionInfo));
12436     }
12437   else
12438     {
12439     /* make sure this function isn't a repeat */
12440     match = 0;
12441     for (i = 0; i < currentNamespace->NumberOfFunctions; i++)
12442       {
12443       if (currentNamespace->Functions[i]->Name &&
12444           strcmp(currentNamespace->Functions[i]->Name,
12445                  currentFunction->Name) == 0)
12446         {
12447         if (currentNamespace->Functions[i]->NumberOfParameters ==
12448             currentFunction->NumberOfParameters)
12449           {
12450           for (j = 0; j < currentFunction->NumberOfParameters; j++)
12451             {
12452             if (currentNamespace->Functions[i]->Parameters[j]->Type ==
12453                 currentFunction->Parameters[j]->Type)
12454               {
12455               if (currentFunction->Parameters[j]->Type == VTK_PARSE_OBJECT &&
12456                   strcmp(currentNamespace->Functions[i]->Parameters[j]->Class,
12457                          currentFunction->Parameters[j]->Class) == 0)
12458                 {
12459                 break;
12460                 }
12461               }
12462             }
12463           if (j == currentFunction->NumberOfParameters)
12464             {
12465             match = 1;
12466             break;
12467             }
12468           }
12469         }
12470       }
12471
12472     if (!match)
12473       {
12474       vtkParse_AddFunctionToNamespace(currentNamespace, currentFunction);
12475
12476       currentFunction = (FunctionInfo *)malloc(sizeof(FunctionInfo));
12477       }
12478     }
12479
12480   vtkParse_InitFunction(currentFunction);
12481   startSig();
12482 }
12483
12484 /* output a function that is not a method of the current class */
12485 void output_friend_function()
12486 {
12487   ClassInfo *tmpc = currentClass;
12488   currentClass = NULL;
12489   output_function();
12490   currentClass = tmpc;
12491 }
12492
12493 void outputSetVectorMacro(const char *var, unsigned int paramType,
12494                           const char *typeText, int n)
12495 {
12496   static const char *mnames[] = {
12497     NULL, NULL,
12498     "vtkSetVector2Macro", "vtkSetVector3Macro", "vtkSetVector4Macro",
12499     NULL,
12500     "vtkSetVector6Macro",
12501     NULL };
12502   char ntext[32];
12503   int i, m;
12504   m = (n > 7 ? 0 : n);
12505
12506   sprintf(ntext, "%i", n);
12507
12508   currentFunction->Macro = mnames[m];
12509   currentFunction->Name = vtkstrcat("Set", var);
12510   startSig();
12511   postSig("void ");
12512   postSig(currentFunction->Name);
12513   postSig("(");
12514   postSig(typeText);
12515   for (i = 1; i < n; i++)
12516     {
12517     postSig(", ");
12518     postSig(typeText);
12519     }
12520   postSig(");");
12521   for (i = 0; i < n; i++)
12522     {
12523     add_parameter(currentFunction, paramType, getTypeId(), 0);
12524     }
12525   set_return(currentFunction, VTK_PARSE_VOID, "void", 0);
12526   output_function();
12527
12528   currentFunction->Macro = mnames[m];
12529   currentFunction->Name = vtkstrcat("Set", var);
12530   currentFunction->Signature =
12531     vtkstrcat7("void ", currentFunction->Name, "(", typeText,
12532                " a[", ntext, "]);");
12533   add_parameter(currentFunction, (VTK_PARSE_POINTER | paramType),
12534                 getTypeId(), n);
12535   set_return(currentFunction, VTK_PARSE_VOID, "void", 0);
12536   output_function();
12537 }
12538
12539 void outputGetVectorMacro(const char *var, unsigned int paramType,
12540                           const char *typeText, int n)
12541 {
12542   static const char *mnames[] = {
12543     NULL, NULL,
12544     "vtkGetVector2Macro", "vtkGetVector3Macro", "vtkGetVector4Macro",
12545     NULL,
12546     "vtkGetVector6Macro",
12547     NULL };
12548   int m;
12549   m = (n > 7 ? 0 : n);
12550
12551   currentFunction->Macro = mnames[m];
12552   currentFunction->Name = vtkstrcat("Get", var);
12553   currentFunction->Signature =
12554     vtkstrcat4(typeText, " *", currentFunction->Name, "();");
12555   set_return(currentFunction, (VTK_PARSE_POINTER | paramType), getTypeId(), n);
12556   output_function();
12557 }
12558
12559 /* Set a flag to ignore BTX/ETX markers in the files */
12560 void vtkParse_SetIgnoreBTX(int option)
12561 {
12562   if (option)
12563     {
12564     IgnoreBTX = 1;
12565     }
12566   else
12567     {
12568     IgnoreBTX = 0;
12569     }
12570 }
12571
12572 /* Set a flag to recurse into included files */
12573 void vtkParse_SetRecursive(int option)
12574 {
12575   if (option)
12576     {
12577     Recursive = 1;
12578     }
12579   else
12580     {
12581     Recursive = 0;
12582     }
12583 }
12584
12585 /* Set the global variable that stores the current executable */
12586 void vtkParse_SetCommandName(const char *name)
12587 {
12588   CommandName = name;
12589 }
12590
12591 /* Parse a header file and return a FileInfo struct */
12592 FileInfo *vtkParse_ParseFile(
12593   const char *filename, FILE *ifile, FILE *errfile)
12594 {
12595   int i, j;
12596   int ret;
12597   FileInfo *file_info;
12598   char *main_class;
12599
12600   /* "data" is a global variable used by the parser */
12601   data = (FileInfo *)malloc(sizeof(FileInfo));
12602   vtkParse_InitFile(data);
12603   data->Strings = (StringCache *)malloc(sizeof(StringCache));
12604   vtkParse_InitStringCache(data->Strings);
12605
12606   /* "preprocessor" is a global struct used by the parser */
12607   preprocessor = (PreprocessInfo *)malloc(sizeof(PreprocessInfo));
12608   vtkParsePreprocess_Init(preprocessor, filename);
12609   preprocessor->Strings = data->Strings;
12610   vtkParsePreprocess_AddStandardMacros(preprocessor, VTK_PARSE_NATIVE);
12611
12612   /* add include files specified on the command line */
12613   for (i = 0; i < NumberOfIncludeDirectories; i++)
12614     {
12615     vtkParsePreprocess_IncludeDirectory(preprocessor, IncludeDirectories[i]);
12616     }
12617
12618   /* add macros specified on the command line */
12619   for (i = 0; i < NumberOfDefinitions; i++)
12620     {
12621     const char *cp = Definitions[i];
12622
12623     if (*cp == 'U')
12624       {
12625       vtkParsePreprocess_RemoveMacro(preprocessor, &cp[1]);
12626       }
12627     else if (*cp == 'D')
12628       {
12629       const char *definition = &cp[1];
12630       while (*definition != '=' && *definition != '\0')
12631         {
12632         definition++;
12633         }
12634       if (*definition == '=')
12635         {
12636         definition++;
12637         }
12638       else
12639         {
12640         definition = NULL;
12641         }
12642       vtkParsePreprocess_AddMacro(preprocessor, &cp[1], definition);
12643       }
12644     }
12645
12646   /* should explicitly check for vtkConfigure.h, or even explicitly load it */
12647 #ifdef VTK_USE_64BIT_IDS
12648   vtkParsePreprocess_AddMacro(preprocessor, "VTK_USE_64BIT_IDS", NULL);
12649 #endif
12650
12651   data->FileName = vtkstrdup(filename);
12652
12653   clearComment();
12654
12655   namespaceDepth = 0;
12656   currentNamespace = (NamespaceInfo *)malloc(sizeof(NamespaceInfo));
12657   vtkParse_InitNamespace(currentNamespace);
12658   data->Contents = currentNamespace;
12659
12660   templateDepth = 0;
12661   currentTemplate = NULL;
12662
12663   currentFunction = (FunctionInfo *)malloc(sizeof(FunctionInfo));
12664   vtkParse_InitFunction(currentFunction);
12665   startSig();
12666
12667   parseDebug = 0;
12668   if (getenv("DEBUG") != NULL)
12669     {
12670     parseDebug = 1;
12671     }
12672
12673   yyset_in(ifile);
12674   yyset_out(errfile);
12675   ret = yyparse();
12676
12677   if (ret)
12678     {
12679     return NULL;
12680     }
12681
12682   free(currentFunction);
12683   yylex_destroy();
12684
12685   /* The main class name should match the file name */
12686   i = strlen(filename);
12687   j = i;
12688   while (i > 0)
12689     {
12690     --i;
12691     if (filename[i] == '.')
12692       {
12693       j = i;
12694       }
12695     if (filename[i] == '/' || filename[i] == '\\')
12696       {
12697       i++;
12698       break;
12699       }
12700     }
12701   main_class = (char *)malloc(j-i+1);
12702   strncpy(main_class, &filename[i], j-i);
12703   main_class[j-i] = '\0';
12704
12705   /* special treatment of the main class in the file */
12706   for (i = 0; i < currentNamespace->NumberOfClasses; i++)
12707     {
12708     if (strcmp(currentNamespace->Classes[i]->Name, main_class) == 0)
12709       {
12710       data->MainClass = currentNamespace->Classes[i];
12711       break;
12712       }
12713     }
12714   free(main_class);
12715
12716   vtkParsePreprocess_Free(preprocessor);
12717   preprocessor = NULL;
12718   macroName = NULL;
12719
12720   file_info = data;
12721   data = NULL;
12722
12723   return file_info;
12724 }
12725
12726 /* Read a hints file and update the FileInfo */
12727 int vtkParse_ReadHints(FileInfo *file_info, FILE *hfile, FILE *errfile)
12728 {
12729   char h_cls[512];
12730   char h_func[512];
12731   unsigned int h_type, type;
12732   int h_value;
12733   FunctionInfo *func_info;
12734   ClassInfo *class_info;
12735   NamespaceInfo *contents;
12736   int i, j;
12737   int lineno = 0;
12738   int n;
12739
12740   contents = file_info->Contents;
12741
12742   /* read each hint line in succession */
12743   while ((n = fscanf(hfile,"%s %s %x %i", h_cls, h_func, &h_type, &h_value))
12744          != EOF)
12745     {
12746     lineno++;
12747     if (n < 4)
12748       {
12749       fprintf(errfile, "Wrapping: error parsing hints file line %i\n", lineno);
12750       exit(1);
12751       }
12752
12753     /* erase "ref" and qualifiers from hint type */
12754     type = ((h_type & VTK_PARSE_BASE_TYPE) |
12755             (h_type & VTK_PARSE_POINTER_LOWMASK));
12756
12757     /* find the matching class */
12758     for (i = 0; i < contents->NumberOfClasses; i++)
12759       {
12760       class_info = contents->Classes[i];
12761
12762       if (strcmp(h_cls, class_info->Name) == 0)
12763         {
12764         /* find the matching function */
12765         for (j = 0; j < class_info->NumberOfFunctions; j++)
12766           {
12767           func_info = class_info->Functions[j];
12768
12769           if ((strcmp(h_func, func_info->Name) == 0) &&
12770               func_info->ReturnValue &&
12771               (type == ((func_info->ReturnValue->Type & ~VTK_PARSE_REF) &
12772                         VTK_PARSE_UNQUALIFIED_TYPE)))
12773             {
12774             /* types that hints are accepted for */
12775             switch (func_info->ReturnValue->Type & VTK_PARSE_UNQUALIFIED_TYPE)
12776               {
12777               case VTK_PARSE_FLOAT_PTR:
12778               case VTK_PARSE_VOID_PTR:
12779               case VTK_PARSE_DOUBLE_PTR:
12780               case VTK_PARSE_ID_TYPE_PTR:
12781               case VTK_PARSE_LONG_LONG_PTR:
12782               case VTK_PARSE_UNSIGNED_LONG_LONG_PTR:
12783               case VTK_PARSE___INT64_PTR:
12784               case VTK_PARSE_UNSIGNED___INT64_PTR:
12785               case VTK_PARSE_INT_PTR:
12786               case VTK_PARSE_UNSIGNED_INT_PTR:
12787               case VTK_PARSE_SHORT_PTR:
12788               case VTK_PARSE_UNSIGNED_SHORT_PTR:
12789               case VTK_PARSE_LONG_PTR:
12790               case VTK_PARSE_UNSIGNED_LONG_PTR:
12791               case VTK_PARSE_SIGNED_CHAR_PTR:
12792               case VTK_PARSE_UNSIGNED_CHAR_PTR:
12793               case VTK_PARSE_CHAR_PTR:
12794                 {
12795                 if (func_info->ReturnValue->NumberOfDimensions == 0)
12796                   {
12797                   char text[64];
12798                   sprintf(text, "%i", h_value);
12799                   func_info->ReturnValue->Count = h_value;
12800                   vtkParse_AddStringToArray(
12801                     &func_info->ReturnValue->Dimensions,
12802                     &func_info->ReturnValue->NumberOfDimensions,
12803                     vtkParse_CacheString(
12804                       file_info->Strings, text, strlen(text)));
12805 #ifndef VTK_PARSE_LEGACY_REMOVE
12806                   func_info->HaveHint = 1;
12807                   func_info->HintSize = h_value;
12808 #endif
12809                   }
12810                 break;
12811                 }
12812               default:
12813                 {
12814                 fprintf(errfile,
12815                         "Wrapping: unhandled hint type %#x\n", h_type);
12816                 }
12817               }
12818             }
12819           }
12820         }
12821       }
12822     }
12823
12824   return 1;
12825 }
12826
12827 /* Free the FileInfo struct returned by vtkParse_ParseFile() */
12828 void vtkParse_Free(FileInfo *file_info)
12829 {
12830   vtkParse_FreeFile(file_info);
12831   vtkParse_FreeStringCache(file_info->Strings);
12832   free(file_info->Strings);
12833   free(file_info);
12834 }
12835
12836 /** Define a preprocessor macro. Function macros are not supported.  */
12837 void vtkParse_DefineMacro(const char *name, const char *definition)
12838 {
12839   size_t n = vtkParse_SkipId(name);
12840   size_t l;
12841   char *cp;
12842
12843   if (definition == NULL)
12844     {
12845     definition = "";
12846     }
12847
12848   l = n + strlen(definition) + 3;
12849   cp = (char *)malloc(l);
12850   cp[0] = 'D';
12851   strncpy(&cp[1], name, n);
12852   cp[n+1] = '\0';
12853   if (definition[0] != '\0')
12854     {
12855     cp[n+1] = '=';
12856     strcpy(&cp[n+2], definition);
12857     }
12858   cp[l] = '\0';
12859
12860   vtkParse_AddStringToArray(&Definitions, &NumberOfDefinitions, cp);
12861 }
12862
12863 /** Undefine a preprocessor macro.  */
12864 void vtkParse_UndefineMacro(const char *name)
12865 {
12866   size_t n = vtkParse_SkipId(name);
12867   char *cp;
12868
12869   cp = (char *)malloc(n+2);
12870   cp[0] = 'U';
12871   strncpy(&cp[1], name, n);
12872   cp[n+1] = '\0';
12873
12874   vtkParse_AddStringToArray(&Definitions, &NumberOfDefinitions, cp);
12875 }
12876
12877 /** Add an include directory, for use with the "-I" option.  */
12878 void vtkParse_IncludeDirectory(const char *dirname)
12879 {
12880   size_t n = strlen(dirname);
12881   char *cp;
12882   int i;
12883
12884   for (i = 0; i < NumberOfIncludeDirectories; i++)
12885     {
12886     if (strncmp(IncludeDirectories[i], dirname, n) == 0 &&
12887         IncludeDirectories[i][n] == '\0')
12888       {
12889       return;
12890       }
12891     }
12892
12893   cp = (char *)malloc(n+1);
12894   strcpy(cp, dirname);
12895
12896   vtkParse_AddStringToArray(
12897     &IncludeDirectories, &NumberOfIncludeDirectories, cp);
12898 }
12899
12900 /** Return the full path to a header file.  */
12901 const char *vtkParse_FindIncludeFile(const char *filename)
12902 {
12903   static StringCache cache = {0, 0, 0, 0};
12904   static PreprocessInfo info = {0, 0, 0, 0, 0, 0, &cache, 0, 0, 0};
12905   int val;
12906   int i;
12907
12908   /* add include files specified on the command line */
12909   for (i = 0; i < NumberOfIncludeDirectories; i++)
12910     {
12911     vtkParsePreprocess_IncludeDirectory(&info, IncludeDirectories[i]);
12912     }
12913
12914   return vtkParsePreprocess_FindIncludeFile(&info, filename, 0, &val);
12915 }