Index: src/Common/Assert.cc
===================================================================
--- src/Common/Assert.cc	(revision 4a7d895054466f290f1d971a3482f0e4ff8a3c74)
+++ src/Common/Assert.cc	(revision 4a7d895054466f290f1d971a3482f0e4ff8a3c74)
@@ -0,0 +1,45 @@
+// 
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+// 
+// Assert.cc -- 
+// 
+// Author           : Peter A. Buhr
+// Created On       : Thu Aug 18 13:26:59 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu Aug 18 23:40:29 2016
+// Update Count     : 8
+// 
+
+#include <assert.h>
+#include <cstdarg>
+#include <cstdio>
+#include <cstdlib>
+
+extern const char * __progname;							// global name of running executable (argv[0])
+
+#define CFA_ASSERT_FMT "*CFA assertion error* from program \"%s\" in \"%s\" at line %d in file \"%s\""
+
+// called by macro assert in assert.h
+void __assert_fail( const char *assertion, const char *file, unsigned int line, const char *function ) {
+	fprintf( stderr, CFA_ASSERT_FMT ".\n", __progname, function, line, file );
+	exit( EXIT_FAILURE );
+}
+
+// called by macro assertf
+void __assert_fail_f( const char *assertion, const char *file, unsigned int line, const char *function, const char *fmt, ... ) {
+	fprintf( stderr, CFA_ASSERT_FMT ": ", __progname, function, line, file );
+	va_list args;
+	va_start( args, fmt );
+	vfprintf( stderr, fmt, args );
+	exit( EXIT_FAILURE );
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// mode: c++ //
+// compile-command: "make install" //
+// End:  //
+
Index: src/Common/CompilerError.h
===================================================================
--- src/Common/CompilerError.h	(revision 7b1bfc597c11725f68bb6b8790ca6a3501cd1bf7)
+++ src/Common/CompilerError.h	(revision 4a7d895054466f290f1d971a3482f0e4ff8a3c74)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Tue May 19 07:20:37 2015
-// Update Count     : 2
+// Last Modified On : Thu Aug 18 23:41:30 2016
+// Update Count     : 3
 //
 
@@ -18,5 +18,4 @@
 
 #include <string>
-//#include "../config.h"
 
 class CompilerError : public std::exception {
Index: src/Common/module.mk
===================================================================
--- src/Common/module.mk	(revision 7b1bfc597c11725f68bb6b8790ca6a3501cd1bf7)
+++ src/Common/module.mk	(revision 4a7d895054466f290f1d971a3482f0e4ff8a3c74)
@@ -11,8 +11,9 @@
 ## Created On       : Mon Jun  1 17:49:17 2015
 ## Last Modified By : Peter A. Buhr
-## Last Modified On : Mon Jun  1 17:51:23 2015
-## Update Count     : 1
+## Last Modified On : Thu Aug 18 13:29:04 2016
+## Update Count     : 2
 ###############################################################################
 
 SRC += Common/SemanticError.cc \
-       Common/UniqueName.cc
+       Common/UniqueName.cc \
+       Common/Assert.cc
Index: src/Common/utility.h
===================================================================
--- src/Common/utility.h	(revision 7b1bfc597c11725f68bb6b8790ca6a3501cd1bf7)
+++ src/Common/utility.h	(revision 4a7d895054466f290f1d971a3482f0e4ff8a3c74)
@@ -49,4 +49,12 @@
 }
 
+template< typename T, typename U >
+static inline T * maybeMoveBuild( const U *orig ) {
+	T* ret = maybeBuild<T>(orig);
+	delete orig;
+	return ret;
+}
+
+
 template< typename Input_iterator >
 void printEnums( Input_iterator begin, Input_iterator end, const char * const *name_array, std::ostream &os ) {
Index: src/Makefile.am
===================================================================
--- src/Makefile.am	(revision 7b1bfc597c11725f68bb6b8790ca6a3501cd1bf7)
+++ src/Makefile.am	(revision 4a7d895054466f290f1d971a3482f0e4ff8a3c74)
@@ -11,6 +11,6 @@
 ## Created On       : Sun May 31 08:51:46 2015
 ## Last Modified By : Peter A. Buhr
-## Last Modified On : Fri Jul  8 12:22:25 2016
-## Update Count     : 60
+## Last Modified On : Thu Aug 18 17:47:06 2016
+## Update Count     : 70
 ###############################################################################
 
@@ -42,9 +42,6 @@
 cfa_cpplib_PROGRAMS = driver/cfa-cpp
 driver_cfa_cpp_SOURCES = ${SRC}
-driver_cfa_cpp_LDADD = ${LEXLIB}	# yywrap
-# need files Common/utility.h
-driver_cfa_cpp_CXXFLAGS = -Wno-deprecated -Wall -DDEBUG_ALL
-
-AM_CXXFLAGS = -g -std=c++11
+driver_cfa_cpp_LDADD = ${LEXLIB}			# yywrap
+driver_cfa_cpp_CXXFLAGS = -Wno-deprecated -Wall -DDEBUG_ALL -I${abs_top_srcdir}/src/include
 
 MAINTAINERCLEANFILES += ${libdir}/${notdir ${cfa_cpplib_PROGRAMS}}
Index: src/Makefile.in
===================================================================
--- src/Makefile.in	(revision 7b1bfc597c11725f68bb6b8790ca6a3501cd1bf7)
+++ src/Makefile.in	(revision 4a7d895054466f290f1d971a3482f0e4ff8a3c74)
@@ -105,4 +105,5 @@
 	Common/driver_cfa_cpp-SemanticError.$(OBJEXT) \
 	Common/driver_cfa_cpp-UniqueName.$(OBJEXT) \
+	Common/driver_cfa_cpp-Assert.$(OBJEXT) \
 	ControlStruct/driver_cfa_cpp-LabelGenerator.$(OBJEXT) \
 	ControlStruct/driver_cfa_cpp-LabelFixer.$(OBJEXT) \
@@ -137,5 +138,4 @@
 	Parser/driver_cfa_cpp-LinkageSpec.$(OBJEXT) \
 	Parser/driver_cfa_cpp-parseutility.$(OBJEXT) \
-	Parser/driver_cfa_cpp-Parser.$(OBJEXT) \
 	ResolvExpr/driver_cfa_cpp-AlternativeFinder.$(OBJEXT) \
 	ResolvExpr/driver_cfa_cpp-Alternative.$(OBJEXT) \
@@ -370,5 +370,5 @@
 	CodeGen/CodeGenerator.cc CodeGen/GenType.cc \
 	CodeGen/FixNames.cc CodeGen/OperatorTable.cc \
-	Common/SemanticError.cc Common/UniqueName.cc \
+	Common/SemanticError.cc Common/UniqueName.cc Common/Assert.cc \
 	ControlStruct/LabelGenerator.cc ControlStruct/LabelFixer.cc \
 	ControlStruct/MLEMutator.cc ControlStruct/Mutate.cc \
@@ -385,5 +385,5 @@
 	Parser/ExpressionNode.cc Parser/StatementNode.cc \
 	Parser/InitializerNode.cc Parser/TypeData.cc \
-	Parser/LinkageSpec.cc Parser/parseutility.cc Parser/Parser.cc \
+	Parser/LinkageSpec.cc Parser/parseutility.cc \
 	ResolvExpr/AlternativeFinder.cc ResolvExpr/Alternative.cc \
 	ResolvExpr/Unify.cc ResolvExpr/PtrsAssignable.cc \
@@ -426,8 +426,6 @@
 cfa_cpplibdir = ${libdir}
 driver_cfa_cpp_SOURCES = ${SRC}
-driver_cfa_cpp_LDADD = ${LEXLIB}	# yywrap
-# need files Common/utility.h
-driver_cfa_cpp_CXXFLAGS = -Wno-deprecated -Wall -DDEBUG_ALL
-AM_CXXFLAGS = -g -std=c++11
+driver_cfa_cpp_LDADD = ${LEXLIB}			# yywrap
+driver_cfa_cpp_CXXFLAGS = -Wno-deprecated -Wall -DDEBUG_ALL -I${abs_top_srcdir}/src/include
 all: $(BUILT_SOURCES)
 	$(MAKE) $(AM_MAKEFLAGS) all-am
@@ -528,4 +526,6 @@
 	Common/$(DEPDIR)/$(am__dirstamp)
 Common/driver_cfa_cpp-UniqueName.$(OBJEXT): Common/$(am__dirstamp) \
+	Common/$(DEPDIR)/$(am__dirstamp)
+Common/driver_cfa_cpp-Assert.$(OBJEXT): Common/$(am__dirstamp) \
 	Common/$(DEPDIR)/$(am__dirstamp)
 ControlStruct/$(am__dirstamp):
@@ -632,6 +632,4 @@
 	Parser/$(DEPDIR)/$(am__dirstamp)
 Parser/driver_cfa_cpp-parseutility.$(OBJEXT): Parser/$(am__dirstamp) \
-	Parser/$(DEPDIR)/$(am__dirstamp)
-Parser/driver_cfa_cpp-Parser.$(OBJEXT): Parser/$(am__dirstamp) \
 	Parser/$(DEPDIR)/$(am__dirstamp)
 ResolvExpr/$(am__dirstamp):
@@ -817,4 +815,5 @@
 	-rm -f CodeGen/driver_cfa_cpp-Generate.$(OBJEXT)
 	-rm -f CodeGen/driver_cfa_cpp-OperatorTable.$(OBJEXT)
+	-rm -f Common/driver_cfa_cpp-Assert.$(OBJEXT)
 	-rm -f Common/driver_cfa_cpp-SemanticError.$(OBJEXT)
 	-rm -f Common/driver_cfa_cpp-UniqueName.$(OBJEXT)
@@ -845,5 +844,4 @@
 	-rm -f Parser/driver_cfa_cpp-LinkageSpec.$(OBJEXT)
 	-rm -f Parser/driver_cfa_cpp-ParseNode.$(OBJEXT)
-	-rm -f Parser/driver_cfa_cpp-Parser.$(OBJEXT)
 	-rm -f Parser/driver_cfa_cpp-StatementNode.$(OBJEXT)
 	-rm -f Parser/driver_cfa_cpp-TypeData.$(OBJEXT)
@@ -927,4 +925,5 @@
 @AMDEP_TRUE@@am__include@ @am__quote@CodeGen/$(DEPDIR)/driver_cfa_cpp-Generate.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@CodeGen/$(DEPDIR)/driver_cfa_cpp-OperatorTable.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@Common/$(DEPDIR)/driver_cfa_cpp-Assert.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@Common/$(DEPDIR)/driver_cfa_cpp-SemanticError.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@Common/$(DEPDIR)/driver_cfa_cpp-UniqueName.Po@am__quote@
@@ -955,5 +954,4 @@
 @AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/driver_cfa_cpp-LinkageSpec.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/driver_cfa_cpp-ParseNode.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/driver_cfa_cpp-Parser.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/driver_cfa_cpp-StatementNode.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/driver_cfa_cpp-TypeData.Po@am__quote@
@@ -1169,4 +1167,18 @@
 @am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Common/driver_cfa_cpp-UniqueName.obj `if test -f 'Common/UniqueName.cc'; then $(CYGPATH_W) 'Common/UniqueName.cc'; else $(CYGPATH_W) '$(srcdir)/Common/UniqueName.cc'; fi`
 
+Common/driver_cfa_cpp-Assert.o: Common/Assert.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Common/driver_cfa_cpp-Assert.o -MD -MP -MF Common/$(DEPDIR)/driver_cfa_cpp-Assert.Tpo -c -o Common/driver_cfa_cpp-Assert.o `test -f 'Common/Assert.cc' || echo '$(srcdir)/'`Common/Assert.cc
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) Common/$(DEPDIR)/driver_cfa_cpp-Assert.Tpo Common/$(DEPDIR)/driver_cfa_cpp-Assert.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Common/Assert.cc' object='Common/driver_cfa_cpp-Assert.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Common/driver_cfa_cpp-Assert.o `test -f 'Common/Assert.cc' || echo '$(srcdir)/'`Common/Assert.cc
+
+Common/driver_cfa_cpp-Assert.obj: Common/Assert.cc
+@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Common/driver_cfa_cpp-Assert.obj -MD -MP -MF Common/$(DEPDIR)/driver_cfa_cpp-Assert.Tpo -c -o Common/driver_cfa_cpp-Assert.obj `if test -f 'Common/Assert.cc'; then $(CYGPATH_W) 'Common/Assert.cc'; else $(CYGPATH_W) '$(srcdir)/Common/Assert.cc'; fi`
+@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) Common/$(DEPDIR)/driver_cfa_cpp-Assert.Tpo Common/$(DEPDIR)/driver_cfa_cpp-Assert.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Common/Assert.cc' object='Common/driver_cfa_cpp-Assert.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Common/driver_cfa_cpp-Assert.obj `if test -f 'Common/Assert.cc'; then $(CYGPATH_W) 'Common/Assert.cc'; else $(CYGPATH_W) '$(srcdir)/Common/Assert.cc'; fi`
+
 ControlStruct/driver_cfa_cpp-LabelGenerator.o: ControlStruct/LabelGenerator.cc
 @am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/driver_cfa_cpp-LabelGenerator.o -MD -MP -MF ControlStruct/$(DEPDIR)/driver_cfa_cpp-LabelGenerator.Tpo -c -o ControlStruct/driver_cfa_cpp-LabelGenerator.o `test -f 'ControlStruct/LabelGenerator.cc' || echo '$(srcdir)/'`ControlStruct/LabelGenerator.cc
@@ -1616,18 +1628,4 @@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-parseutility.obj `if test -f 'Parser/parseutility.cc'; then $(CYGPATH_W) 'Parser/parseutility.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/parseutility.cc'; fi`
-
-Parser/driver_cfa_cpp-Parser.o: Parser/Parser.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-Parser.o -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-Parser.Tpo -c -o Parser/driver_cfa_cpp-Parser.o `test -f 'Parser/Parser.cc' || echo '$(srcdir)/'`Parser/Parser.cc
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-Parser.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-Parser.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Parser/Parser.cc' object='Parser/driver_cfa_cpp-Parser.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-Parser.o `test -f 'Parser/Parser.cc' || echo '$(srcdir)/'`Parser/Parser.cc
-
-Parser/driver_cfa_cpp-Parser.obj: Parser/Parser.cc
-@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/driver_cfa_cpp-Parser.obj -MD -MP -MF Parser/$(DEPDIR)/driver_cfa_cpp-Parser.Tpo -c -o Parser/driver_cfa_cpp-Parser.obj `if test -f 'Parser/Parser.cc'; then $(CYGPATH_W) 'Parser/Parser.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/Parser.cc'; fi`
-@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-Parser.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-Parser.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='Parser/Parser.cc' object='Parser/driver_cfa_cpp-Parser.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/driver_cfa_cpp-Parser.obj `if test -f 'Parser/Parser.cc'; then $(CYGPATH_W) 'Parser/Parser.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/Parser.cc'; fi`
 
 ResolvExpr/driver_cfa_cpp-AlternativeFinder.o: ResolvExpr/AlternativeFinder.cc
Index: src/Parser/DeclarationNode.cc
===================================================================
--- src/Parser/DeclarationNode.cc	(revision 7b1bfc597c11725f68bb6b8790ca6a3501cd1bf7)
+++ src/Parser/DeclarationNode.cc	(revision 4a7d895054466f290f1d971a3482f0e4ff8a3c74)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 12:34:05 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon Aug 15 14:30:25 2016
-// Update Count     : 172
+// Last Modified On : Thu Aug 18 23:48:23 2016
+// Update Count     : 182
 //
 
@@ -25,5 +25,4 @@
 #include "SynTree/Expression.h"
 
-#include "Parser.h"
 #include "TypedefTable.h"
 extern TypedefTable typedefTable;
@@ -42,5 +41,5 @@
 UniqueName DeclarationNode::anonymous( "__anonymous" );
 
-extern LinkageSpec::Type linkage;						// defined in parser.yy
+extern LinkageSpec::Spec linkage;						// defined in parser.yy
 
 DeclarationNode *DeclarationNode::clone() const {
@@ -48,15 +47,26 @@
 	newnode->type = maybeClone( type );
 	newnode->name = name;
-	newnode->storageClasses = storageClasses;
-//PAB	newnode->bitfieldWidth = maybeClone( bitfieldWidth );
+	newnode->storageClass = storageClass;
+	newnode->isInline = isInline;
+	newnode->isNoreturn = isNoreturn;
 	newnode->bitfieldWidth = bitfieldWidth;
 	newnode->hasEllipsis = hasEllipsis;
 	newnode->initializer = initializer;
-	newnode->next = maybeClone( next );
+	newnode->set_next( maybeClone( get_next() ) );
 	newnode->linkage = linkage;
 	return newnode;
 } // DeclarationNode::clone
 
-DeclarationNode::DeclarationNode() : type( 0 ), bitfieldWidth( 0 ), initializer( 0 ), hasEllipsis( false ), linkage( ::linkage ) {
+DeclarationNode::DeclarationNode()
+	: type( 0 )
+	, storageClass( NoStorageClass )
+	, isInline( false )
+	, isNoreturn( false )
+	, bitfieldWidth( 0 )
+	, initializer( 0 )
+	, hasEllipsis( false )
+	, linkage( ::linkage )
+	, extension( false )
+	, error() {
 }
 
@@ -83,5 +93,7 @@
 	} // if
 
-	printEnums( storageClasses.begin(), storageClasses.end(), DeclarationNode::storageName, os );
+	if(storageClass != NoStorageClass) os << DeclarationNode::storageName[storageClass] << ' ';
+	if(isInline) os << DeclarationNode::storageName[Inline] << ' ';
+	if(isNoreturn) os << DeclarationNode::storageName[Noreturn] << ' ';
 	if ( type ) {
 		type->print( os, indent );
@@ -144,5 +156,9 @@
 DeclarationNode *DeclarationNode::newStorageClass( DeclarationNode::StorageClass sc ) {
 	DeclarationNode *newnode = new DeclarationNode;
-	newnode->storageClasses.push_back( sc );
+	switch (sc) {
+		case Inline: newnode->isInline = true; break;
+		case Noreturn: newnode->isNoreturn = true; break;
+		default: newnode->storageClass = sc; break;
+	}
 	return newnode;
 } // DeclarationNode::newStorageClass
@@ -284,5 +300,5 @@
 	newnode->type->array->dimension = size;
 	newnode->type->array->isStatic = isStatic;
-	if ( newnode->type->array->dimension == 0 || dynamic_cast<ConstantExpr *>( newnode->type->array->dimension->build() ) ) {
+	if ( newnode->type->array->dimension == 0 || newnode->type->array->dimension->isExpressionType<ConstantExpr *>() ) {
 		newnode->type->array->isVarLen = false;
 	} else {
@@ -360,5 +376,5 @@
 DeclarationNode *DeclarationNode::addQualifiers( DeclarationNode *q ) {
 	if ( q ) {
-		storageClasses.splice( storageClasses.end(), q->storageClasses );
+		copyStorageClasses(q);
 		if ( q->type ) {
 			if ( ! type ) {
@@ -387,5 +403,13 @@
 
 DeclarationNode *DeclarationNode::copyStorageClasses( DeclarationNode *q ) {
-	storageClasses = q->storageClasses;
+	isInline = isInline || q->isInline;
+	isNoreturn = isNoreturn || q->isNoreturn;
+	if(storageClass == NoStorageClass) {
+		storageClass = q->storageClass;
+	}
+	else if (q->storageClass != NoStorageClass) {
+		q->error = "invalid combination of storage classes in declaration of ";
+	}
+	if(error.empty()) error = q->error;
 	return this;
 }
@@ -447,5 +471,5 @@
 DeclarationNode *DeclarationNode::addType( DeclarationNode *o ) {
 	if ( o ) {
-		storageClasses.splice( storageClasses.end(), o->storageClasses );
+		copyStorageClasses( o );
 		if ( o->type ) {
 			if ( ! type ) {
@@ -694,5 +718,5 @@
 	} // if
 	newnode->type->forall = maybeClone( type->forall );
-	newnode->storageClasses = storageClasses;
+	newnode->copyStorageClasses( this );
 	newnode->name = assign_strptr( newName );
 	return newnode;
@@ -701,5 +725,5 @@
 DeclarationNode *DeclarationNode::cloneBaseType( DeclarationNode *o ) {
 	if ( o ) {
-		o->storageClasses.insert( o->storageClasses.end(), storageClasses.begin(), storageClasses.end() );
+		o->copyStorageClasses( this );
 		if ( type ) {
 			TypeData *srcType = type;
@@ -734,5 +758,5 @@
 	DeclarationNode *newnode = new DeclarationNode;
 	newnode->type = maybeClone( type );
-	newnode->storageClasses = storageClasses;
+	newnode->copyStorageClasses( this );
 	newnode->name = assign_strptr( newName );
 	return newnode;
@@ -741,5 +765,5 @@
 DeclarationNode *DeclarationNode::cloneType( DeclarationNode *o ) {
 	if ( o ) {
-		o->storageClasses.insert( o->storageClasses.end(), storageClasses.begin(), storageClasses.end() );
+		o->copyStorageClasses( this );
 		if ( type ) {
 			TypeData *newType = type->clone();
@@ -752,12 +776,6 @@
 		} // if
 	} // if
+	delete o;
 	return o;
-}
-
-DeclarationNode *DeclarationNode::appendList( DeclarationNode *node ) {
-	if ( node != 0 ) {
-		set_last( node );
-	} // if
-	return this;
 }
 
@@ -776,5 +794,5 @@
 void buildList( const DeclarationNode *firstNode, std::list< Declaration * > &outputList ) {
 	SemanticError errors;
-	std::back_insert_iterator< std::list< Declaration *> > out( outputList );
+	std::back_insert_iterator< std::list< Declaration * > > out( outputList );
 	const DeclarationNode *cur = firstNode;
 	while ( cur ) {
@@ -794,5 +812,5 @@
 			errors.append( e );
 		} // try
-		cur = dynamic_cast<DeclarationNode *>( cur->get_next() );
+		cur = dynamic_cast< DeclarationNode * >( cur->get_next() );
 	} // while
 	if ( ! errors.isEmpty() ) {
@@ -801,7 +819,7 @@
 }
 
-void buildList( const DeclarationNode *firstNode, std::list< DeclarationWithType *> &outputList ) {
+void buildList( const DeclarationNode *firstNode, std::list< DeclarationWithType * > &outputList ) {
 	SemanticError errors;
-	std::back_insert_iterator< std::list< DeclarationWithType *> > out( outputList );
+	std::back_insert_iterator< std::list< DeclarationWithType * > > out( outputList );
 	const DeclarationNode *cur = firstNode;
 	while ( cur ) {
@@ -817,11 +835,11 @@
 			Declaration *decl = cur->build();
 			if ( decl ) {
-				if ( DeclarationWithType *dwt = dynamic_cast< DeclarationWithType *>( decl ) ) {
+				if ( DeclarationWithType *dwt = dynamic_cast< DeclarationWithType * >( decl ) ) {
 					*out++ = dwt;
-				} else if ( StructDecl *agg = dynamic_cast< StructDecl *>( decl ) ) {
+				} else if ( StructDecl *agg = dynamic_cast< StructDecl * >( decl ) ) {
 					StructInstType *inst = new StructInstType( Type::Qualifiers(), agg->get_name() );
 					*out++ = new ObjectDecl( "", DeclarationNode::NoStorageClass, linkage, 0, inst, 0 );
 					delete agg;
-				} else if ( UnionDecl *agg = dynamic_cast< UnionDecl *>( decl ) ) {
+				} else if ( UnionDecl *agg = dynamic_cast< UnionDecl * >( decl ) ) {
 					UnionInstType *inst = new UnionInstType( Type::Qualifiers(), agg->get_name() );
 					*out++ = new ObjectDecl( "", DeclarationNode::NoStorageClass, linkage, 0, inst, 0 );
@@ -831,5 +849,5 @@
 			errors.append( e );
 		} // try
-		cur = dynamic_cast< DeclarationNode *>( cur->get_next() );
+		cur = dynamic_cast< DeclarationNode * >( cur->get_next() );
 	} // while
 	if ( ! errors.isEmpty() ) {
@@ -838,7 +856,7 @@
 }
 
-void buildTypeList( const DeclarationNode *firstNode, std::list< Type *> &outputList ) {
+void buildTypeList( const DeclarationNode *firstNode, std::list< Type * > &outputList ) {
 	SemanticError errors;
-	std::back_insert_iterator< std::list< Type *> > out( outputList );
+	std::back_insert_iterator< std::list< Type * > > out( outputList );
 	const DeclarationNode *cur = firstNode;
 	while ( cur ) {
@@ -848,5 +866,5 @@
 			errors.append( e );
 		} // try
-		cur = dynamic_cast< DeclarationNode *>( cur->get_next() );
+		cur = dynamic_cast< DeclarationNode * >( cur->get_next() );
 	} // while
 	if ( ! errors.isEmpty() ) {
@@ -856,9 +874,10 @@
 
 Declaration *DeclarationNode::build() const {
+	if( !error.empty() ) throw SemanticError( error, this );
 	if ( type ) {
-		return type->buildDecl( name, buildStorageClass(), maybeBuild< Expression >( bitfieldWidth ), buildFuncSpecifier( Inline ), buildFuncSpecifier( Noreturn ), linkage, maybeBuild< Initializer >(initializer) )->set_extension( extension );
-	} // if
-	if ( ! buildFuncSpecifier( Inline ) && ! buildFuncSpecifier( Noreturn ) ) {
-		return (new ObjectDecl( name, buildStorageClass(), linkage, maybeBuild< Expression >( bitfieldWidth ), 0, maybeBuild< Initializer >( initializer ) ))->set_extension( extension );
+		return type->buildDecl( name, storageClass, maybeBuild< Expression >( bitfieldWidth ), isInline, isNoreturn, linkage, maybeBuild< Initializer >(initializer) )->set_extension( extension );
+	} // if
+	if ( ! isInline && ! isNoreturn ) {
+		return (new ObjectDecl( name, storageClass, linkage, maybeBuild< Expression >( bitfieldWidth ), 0, maybeBuild< Initializer >( initializer ) ))->set_extension( extension );
 	} // if
 	throw SemanticError( "invalid function specifier in declaration of ", this );
@@ -899,23 +918,23 @@
 }
 
-DeclarationNode::StorageClass DeclarationNode::buildStorageClass() const {
-	DeclarationNode::StorageClass ret = DeclarationNode::NoStorageClass;
-	for ( std::list< DeclarationNode::StorageClass >::const_iterator i = storageClasses.begin(); i != storageClasses.end(); ++i ) {
-	  if ( *i == DeclarationNode::Inline || *i == DeclarationNode::Noreturn ) continue; // ignore function specifiers
-	  if ( ret != DeclarationNode::NoStorageClass ) {	// already have a valid storage class ?
-			throw SemanticError( "invalid combination of storage classes in declaration of ", this );
-		} // if
-		ret = *i;
-	} // for
-	return ret;
-}
-
-bool DeclarationNode::buildFuncSpecifier( DeclarationNode::StorageClass key ) const {
-	std::list< DeclarationNode::StorageClass >::const_iterator first = std::find( storageClasses.begin(), storageClasses.end(), key );
-  if ( first == storageClasses.end() ) return false;	// not found
-	first = std::find( ++first, storageClasses.end(), key ); // found
-  if ( first == storageClasses.end() ) return true;		// not found again
-	throw SemanticError( "duplicate function specifier in declaration of ", this );
-}
+// DeclarationNode::StorageClass DeclarationNode::buildStorageClass() const {
+// 	DeclarationNode::StorageClass ret = DeclarationNode::NoStorageClass;
+// 	for ( std::list< DeclarationNode::StorageClass >::const_iterator i = storageClasses.begin(); i != storageClasses.end(); ++i ) {
+// 	  if ( *i == DeclarationNode::Inline || *i == DeclarationNode::Noreturn ) continue; // ignore function specifiers
+// 	  if ( ret != DeclarationNode::NoStorageClass ) {	// already have a valid storage class ?
+// 			throw SemanticError( "invalid combination of storage classes in declaration of ", this );
+// 		} // if
+// 		ret = *i;
+// 	} // for
+// 	return ret;
+// }
+
+// bool DeclarationNode::buildFuncSpecifier( DeclarationNode::StorageClass key ) const {
+// 	std::list< DeclarationNode::StorageClass >::const_iterator first = std::find( storageClasses.begin(), storageClasses.end(), key );
+//   if ( first == storageClasses.end() ) return false;	// not found
+// 	first = std::find( ++first, storageClasses.end(), key ); // found
+//   if ( first == storageClasses.end() ) return true;		// not found again
+// 	throw SemanticError( "duplicate function specifier in declaration of ", this );
+// }
 
 // Local Variables: //
Index: src/Parser/ExpressionNode.cc
===================================================================
--- src/Parser/ExpressionNode.cc	(revision 7b1bfc597c11725f68bb6b8790ca6a3501cd1bf7)
+++ src/Parser/ExpressionNode.cc	(revision 4a7d895054466f290f1d971a3482f0e4ff8a3c74)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 13:17:07 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon Aug 15 14:30:42 2016
-// Update Count     : 490
+// Last Modified On : Tue Aug 16 00:09:20 2016
+// Update Count     : 495
 //
 
@@ -32,5 +32,5 @@
 using namespace std;
 
-ExpressionNode::ExpressionNode( const ExpressionNode &other ) : ParseNode( other.name ), extension( other.extension ) {}
+ExpressionNode::ExpressionNode( const ExpressionNode &other ) : ParseNode( other.get_name() ), extension( other.extension ) {}
 
 //##############################################################################
@@ -57,5 +57,5 @@
 static inline bool checkX( char c ) { return c == 'x' || c == 'X'; }
 
-Expression *build_constantInteger( std::string & str ) {
+Expression *build_constantInteger( const std::string & str ) {
 	static const BasicType::Kind kind[2][3] = {
 		{ BasicType::SignedInt, BasicType::LongSignedInt, BasicType::LongLongSignedInt },
@@ -123,5 +123,5 @@
 } // build_constantInteger
 
-Expression *build_constantFloat( std::string & str ) {
+Expression *build_constantFloat( const std::string & str ) {
 	static const BasicType::Kind kind[2][3] = {
 		{ BasicType::Float, BasicType::Double, BasicType::LongDouble },
@@ -153,9 +153,9 @@
 } // build_constantFloat
 
-Expression *build_constantChar( std::string & str ) {
+Expression *build_constantChar( const std::string & str ) {
 	return new ConstantExpr( Constant( new BasicType( emptyQualifiers, BasicType::Char ), str ) );
 } // build_constantChar
 
-ConstantExpr *build_constantStr( std::string & str ) {
+ConstantExpr *build_constantStr( const std::string & str ) {
 	// string should probably be a primitive type
 	ArrayType *at = new ArrayType( emptyQualifiers, new BasicType( emptyQualifiers, BasicType::Char ),
@@ -166,11 +166,9 @@
 } // build_constantStr
 
-//##############################################################################
-
 NameExpr * build_varref( const string *name, bool labelp ) {
-	return new NameExpr( *name, nullptr );
-}
-
-//##############################################################################
+	NameExpr *expr = new NameExpr( *name, nullptr );
+	delete name;
+	return expr;
+}
 
 static const char *OperName[] = {
@@ -184,18 +182,16 @@
 };
 
-//##############################################################################
-
 Expression *build_cast( DeclarationNode *decl_node, ExpressionNode *expr_node ) {
 	Type *targetType = decl_node->buildType();
 	if ( dynamic_cast< VoidType * >( targetType ) ) {
 		delete targetType;
-		return new CastExpr( maybeBuild<Expression>(expr_node) );
+		return new CastExpr( maybeMoveBuild< Expression >(expr_node) );
 	} else {
-		return new CastExpr( maybeBuild<Expression>(expr_node), targetType );
+		return new CastExpr( maybeMoveBuild< Expression >(expr_node), targetType );
 	} // if
 }
 
 Expression *build_fieldSel( ExpressionNode *expr_node, NameExpr *member ) {
-	UntypedMemberExpr *ret = new UntypedMemberExpr( member->get_name(), maybeBuild<Expression>(expr_node) );
+	UntypedMemberExpr *ret = new UntypedMemberExpr( member->get_name(), maybeMoveBuild< Expression >(expr_node) );
 	delete member;
 	return ret;
@@ -204,5 +200,5 @@
 Expression *build_pfieldSel( ExpressionNode *expr_node, NameExpr *member ) {
 	UntypedExpr *deref = new UntypedExpr( new NameExpr( "*?" ) );
-	deref->get_args().push_back( maybeBuild<Expression>(expr_node) );
+	deref->get_args().push_back( maybeMoveBuild< Expression >(expr_node) );
 	UntypedMemberExpr *ret = new UntypedMemberExpr( member->get_name(), deref );
 	delete member;
@@ -211,14 +207,16 @@
 
 Expression *build_addressOf( ExpressionNode *expr_node ) {
-		return new AddressExpr( maybeBuild<Expression>(expr_node) );
+		return new AddressExpr( maybeMoveBuild< Expression >(expr_node) );
 }
 Expression *build_sizeOfexpr( ExpressionNode *expr_node ) {
-	return new SizeofExpr( maybeBuild<Expression>(expr_node) );
+	return new SizeofExpr( maybeMoveBuild< Expression >(expr_node) );
 }
 Expression *build_sizeOftype( DeclarationNode *decl_node ) {
-	return new SizeofExpr( decl_node->buildType() );
+	Expression* ret = new SizeofExpr( decl_node->buildType() );
+	delete decl_node;
+	return ret;
 }
 Expression *build_alignOfexpr( ExpressionNode *expr_node ) {
-	return new AlignofExpr( maybeBuild<Expression>(expr_node) );
+	return new AlignofExpr( maybeMoveBuild< Expression >(expr_node) );
 }
 Expression *build_alignOftype( DeclarationNode *decl_node ) {
@@ -226,44 +224,47 @@
 }
 Expression *build_offsetOf( DeclarationNode *decl_node, NameExpr *member ) {
-	return new UntypedOffsetofExpr( decl_node->buildType(), member->get_name() );
+	Expression* ret = new UntypedOffsetofExpr( decl_node->buildType(), member->get_name() );
+	delete decl_node;
+	delete member;
+	return ret;
 }
 
 Expression *build_and_or( ExpressionNode *expr_node1, ExpressionNode *expr_node2, bool kind ) {
-	return new LogicalExpr( notZeroExpr( maybeBuild<Expression>(expr_node1) ), notZeroExpr( maybeBuild<Expression>(expr_node2) ), kind );
+	return new LogicalExpr( notZeroExpr( maybeMoveBuild< Expression >(expr_node1) ), notZeroExpr( maybeMoveBuild< Expression >(expr_node2) ), kind );
 }
 
 Expression *build_unary_val( OperKinds op, ExpressionNode *expr_node ) {
-	std::list<Expression *> args;
-	args.push_back( maybeBuild<Expression>(expr_node) );
+	std::list< Expression * > args;
+	args.push_back( maybeMoveBuild< Expression >(expr_node) );
 	return new UntypedExpr( new NameExpr( OperName[ (int)op ] ), args );
 }
 Expression *build_unary_ptr( OperKinds op, ExpressionNode *expr_node ) {
-	std::list<Expression *> args;
-	args.push_back( new AddressExpr( maybeBuild<Expression>(expr_node) ) );
+	std::list< Expression * > args;
+	args.push_back( new AddressExpr( maybeMoveBuild< Expression >(expr_node) ) );
 	return new UntypedExpr( new NameExpr( OperName[ (int)op ] ), args );
 }
 Expression *build_binary_val( OperKinds op, ExpressionNode *expr_node1, ExpressionNode *expr_node2 ) {
-	std::list<Expression *> args;
-	args.push_back( maybeBuild<Expression>(expr_node1) );
-	args.push_back( maybeBuild<Expression>(expr_node2) );
+	std::list< Expression * > args;
+	args.push_back( maybeMoveBuild< Expression >(expr_node1) );
+	args.push_back( maybeMoveBuild< Expression >(expr_node2) );
 	return new UntypedExpr( new NameExpr( OperName[ (int)op ] ), args );
 }
 Expression *build_binary_ptr( OperKinds op, ExpressionNode *expr_node1, ExpressionNode *expr_node2 ) {
-	std::list<Expression *> args;
-	args.push_back( new AddressExpr( maybeBuild<Expression>(expr_node1) ) );
-	args.push_back( maybeBuild<Expression>(expr_node2) );
+	std::list< Expression * > args;
+	args.push_back( new AddressExpr( maybeMoveBuild< Expression >(expr_node1) ) );
+	args.push_back( maybeMoveBuild< Expression >(expr_node2) );
 	return new UntypedExpr( new NameExpr( OperName[ (int)op ] ), args );
 }
 
 Expression *build_cond( ExpressionNode *expr_node1, ExpressionNode *expr_node2, ExpressionNode *expr_node3 ) {
-	return new ConditionalExpr( notZeroExpr( maybeBuild<Expression>(expr_node1) ), maybeBuild<Expression>(expr_node2), maybeBuild<Expression>(expr_node3) );
+	return new ConditionalExpr( notZeroExpr( maybeMoveBuild< Expression >(expr_node1) ), maybeMoveBuild< Expression >(expr_node2), maybeMoveBuild< Expression >(expr_node3) );
 }
 
 Expression *build_comma( ExpressionNode *expr_node1, ExpressionNode *expr_node2 ) {
-	return new CommaExpr( maybeBuild<Expression>(expr_node1), maybeBuild<Expression>(expr_node2) );
+	return new CommaExpr( maybeMoveBuild< Expression >(expr_node1), maybeMoveBuild< Expression >(expr_node2) );
 }
 
 Expression *build_attrexpr( NameExpr *var, ExpressionNode * expr_node ) {
-	return new AttrExpr( var, maybeBuild<Expression>(expr_node) );
+	return new AttrExpr( var, maybeMoveBuild< Expression >(expr_node) );
 }
 Expression *build_attrtype( NameExpr *var, DeclarationNode * decl_node ) {
@@ -273,58 +274,40 @@
 Expression *build_tuple( ExpressionNode * expr_node ) {
 	TupleExpr *ret = new TupleExpr();
-	buildList( expr_node, ret->get_exprs() );
+	buildMoveList( expr_node, ret->get_exprs() );
 	return ret;
 }
 
 Expression *build_func( ExpressionNode * function, ExpressionNode * expr_node ) {
-	std::list<Expression *> args;
-
-	buildList( expr_node, args );
-	return new UntypedExpr( maybeBuild<Expression>(function), args, nullptr );
+	std::list< Expression * > args;
+	buildMoveList( expr_node, args );
+	return new UntypedExpr( maybeMoveBuild< Expression >(function), args, nullptr );
 }
 
 Expression *build_range( ExpressionNode * low, ExpressionNode *high ) {
-	Expression *low_cexpr = maybeBuild<Expression>( low );
-	Expression *high_cexpr = maybeBuild<Expression>( high );
-	return new RangeExpr( low_cexpr, high_cexpr );
-}
-
-//##############################################################################
+	return new RangeExpr( maybeMoveBuild< Expression >( low ), maybeMoveBuild< Expression >( high ) );
+}
 
 Expression *build_asmexpr( ExpressionNode *inout, ConstantExpr *constraint, ExpressionNode *operand ) {
-	return new AsmExpr( maybeBuild< Expression >( inout ), constraint, maybeBuild<Expression>(operand) );
-}
-
-//##############################################################################
-
-//void LabelNode::print( std::ostream &os, int indent ) const {}
-
-//void LabelNode::printOneLine( std::ostream &os, int indent ) const {}
-
-//##############################################################################
+	return new AsmExpr( maybeMoveBuild< Expression >( inout ), constraint, maybeMoveBuild< Expression >(operand) );
+}
 
 Expression *build_valexpr( StatementNode *s ) {
-	return new UntypedValofExpr( maybeBuild<Statement>(s), nullptr );
-}
-
-//##############################################################################
-
+	return new UntypedValofExpr( maybeMoveBuild< Statement >(s), nullptr );
+}
 Expression *build_typevalue( DeclarationNode *decl ) {
 	return new TypeExpr( decl->buildType() );
 }
 
-//##############################################################################
-
 Expression *build_compoundLiteral( DeclarationNode *decl_node, InitializerNode *kids ) {
-	Declaration * newDecl = maybeBuild<Declaration>(decl_node); // compound literal type
+	Declaration * newDecl = maybeBuild< Declaration >(decl_node); // compound literal type
 	if ( DeclarationWithType * newDeclWithType = dynamic_cast< DeclarationWithType * >( newDecl ) ) { // non-sue compound-literal type
-		return new CompoundLiteralExpr( newDeclWithType->get_type(), maybeBuild<Initializer>(kids) );
+		return new CompoundLiteralExpr( newDeclWithType->get_type(), maybeMoveBuild< Initializer >(kids) );
 	// these types do not have associated type information
 	} else if ( StructDecl * newDeclStructDecl = dynamic_cast< StructDecl * >( newDecl )  ) {
-		return new CompoundLiteralExpr( new StructInstType( Type::Qualifiers(), newDeclStructDecl->get_name() ), maybeBuild<Initializer>(kids) );
+		return new CompoundLiteralExpr( new StructInstType( Type::Qualifiers(), newDeclStructDecl->get_name() ), maybeMoveBuild< Initializer >(kids) );
 	} else if ( UnionDecl * newDeclUnionDecl = dynamic_cast< UnionDecl * >( newDecl )  ) {
-		return new CompoundLiteralExpr( new UnionInstType( Type::Qualifiers(), newDeclUnionDecl->get_name() ), maybeBuild<Initializer>(kids) );
+		return new CompoundLiteralExpr( new UnionInstType( Type::Qualifiers(), newDeclUnionDecl->get_name() ), maybeMoveBuild< Initializer >(kids) );
 	} else if ( EnumDecl * newDeclEnumDecl = dynamic_cast< EnumDecl * >( newDecl )  ) {
-		return new CompoundLiteralExpr( new EnumInstType( Type::Qualifiers(), newDeclEnumDecl->get_name() ), maybeBuild<Initializer>(kids) );
+		return new CompoundLiteralExpr( new EnumInstType( Type::Qualifiers(), newDeclEnumDecl->get_name() ), maybeMoveBuild< Initializer >(kids) );
 	} else {
 		assert( false );
Index: src/Parser/InitializerNode.cc
===================================================================
--- src/Parser/InitializerNode.cc	(revision 7b1bfc597c11725f68bb6b8790ca6a3501cd1bf7)
+++ src/Parser/InitializerNode.cc	(revision 4a7d895054466f290f1d971a3482f0e4ff8a3c74)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 13:20:24 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sat Aug 13 18:55:11 2016
-// Update Count     : 18
+// Last Modified On : Mon Aug 15 18:27:02 2016
+// Update Count     : 20
 //
 
@@ -25,5 +25,5 @@
 	: expr( _expr ), aggregate( aggrp ), designator( des ), kids( 0 ), maybeConstructed( true ) {
 	if ( aggrp )
-		kids = dynamic_cast< InitializerNode *>( get_next() );
+		kids = dynamic_cast< InitializerNode * >( get_next() );
 
 	if ( kids != 0 )
@@ -37,5 +37,5 @@
 
 	if ( aggrp )
-		kids = dynamic_cast< InitializerNode *>( get_next() );
+		kids = dynamic_cast< InitializerNode * >( get_next() );
 
 	if ( kids != 0 )
@@ -82,22 +82,22 @@
 		//assert( next_init() != 0 );
 
-		std::list< Initializer *> initlist;
-		buildList<Initializer, InitializerNode>( next_init(), initlist );
+		std::list< Initializer * > initlist;
+		buildList< Initializer, InitializerNode >( next_init(), initlist );
 
-		std::list< Expression *> designlist;
+		std::list< Expression * > designlist;
 
 		if ( designator != 0 ) {
-			buildList<Expression, ExpressionNode>( designator, designlist );
+			buildList< Expression, ExpressionNode >( designator, designlist );
 		} // if
 
 		return new ListInit( initlist, designlist, maybeConstructed );
 	} else {
-		std::list< Expression *> designators;
+		std::list< Expression * > designators;
 
 		if ( designator != 0 )
-			buildList<Expression, ExpressionNode>( designator, designators );
+			buildList< Expression, ExpressionNode >( designator, designators );
 
 		if ( get_expression() != 0)
-			return new SingleInit( maybeBuild<Expression>( get_expression() ), designators, maybeConstructed );
+			return new SingleInit( maybeBuild< Expression >( get_expression() ), designators, maybeConstructed );
 	} // if
 
Index: src/Parser/LinkageSpec.cc
===================================================================
--- src/Parser/LinkageSpec.cc	(revision 7b1bfc597c11725f68bb6b8790ca6a3501cd1bf7)
+++ src/Parser/LinkageSpec.cc	(revision 4a7d895054466f290f1d971a3482f0e4ff8a3c74)
@@ -9,7 +9,7 @@
 // Author           : Rodolfo G. Esteves
 // Created On       : Sat May 16 13:22:09 2015
-// Last Modified By : Rob Schluntz
-// Last Modified On : Wed Aug 19 15:53:05 2015
-// Update Count     : 5
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu Aug 18 23:47:14 2016
+// Update Count     : 12
 // 
 
@@ -20,5 +20,5 @@
 #include "Common/SemanticError.h"
 
-LinkageSpec::Type LinkageSpec::fromString( const std::string &stringSpec ) {
+LinkageSpec::Spec LinkageSpec::fromString( const std::string &stringSpec ) {
 	if ( stringSpec == "\"Cforall\"" ) {
 		return Cforall;
@@ -30,80 +30,46 @@
 }
 
-std::string LinkageSpec::toString( LinkageSpec::Type linkage ) {
-	switch ( linkage ) {
-	  case Intrinsic:
-		return "intrinsic";
-	  case Cforall:
-		return "Cforall";
-	  case C:
-		return "C";
-	  case AutoGen:
-		return "automatically generated";
-	  case Compiler:
-		return "compiler built-in";
-	}
-	assert( false );
-	return "";
+std::string LinkageSpec::toString( LinkageSpec::Spec linkage ) {
+	static const char *linkageKinds[LinkageSpec::NoOfSpecs] = {
+		"intrinsic", "Cforall", "C", "automatically generated", "compiler built-in",
+	};
+	return linkageKinds[linkage];
 }
 
-bool LinkageSpec::isDecoratable( Type t ) {
-	switch ( t ) {
-	  case Intrinsic:
-	  case Cforall:
-	  case AutoGen:
-		return true;
-	  case C:
-	  case Compiler:
-		return false;
-	}
-	assert( false );
-	return false;
+bool LinkageSpec::isDecoratable( Spec t ) {
+	static bool decoratable[LinkageSpec::NoOfSpecs] = {
+		//	Intrinsic,	Cforall,	C,		AutoGen,	Compiler
+			true,		true,		false,	true,		false, 
+	};
+	return decoratable[t];
 }
 
-bool LinkageSpec::isGeneratable( Type t ) {
-	switch ( t ) {
-	  case Intrinsic:
-	  case Cforall:
-	  case AutoGen:
-	  case C:
-		return true;
-	  case Compiler:
-		return false;
-	}
-	assert( false );
-	return false;
+bool LinkageSpec::isGeneratable( Spec t ) {
+	static bool generatable[LinkageSpec::NoOfSpecs] = {
+		//	Intrinsic,	Cforall,	C,		AutoGen,	Compiler
+			true,		true,		true,	true,		false, 
+	};
+	return generatable[t];
 }
 
-bool LinkageSpec::isOverloadable( Type t ) {
+bool LinkageSpec::isOverloadable( Spec t ) {
 	return isDecoratable( t );
 }
 
 
-bool LinkageSpec::isOverridable( Type t ) {
-	switch ( t ) {
-	  case Intrinsic:
-	  case AutoGen:
-		return true;
-	  case Cforall:
-	  case C:
-	  case Compiler:
-		return false;
-	}
-	assert( false );
-	return false;
+bool LinkageSpec::isOverridable( Spec t ) {
+	static bool overridable[LinkageSpec::NoOfSpecs] = {
+		//	Intrinsic,	Cforall,	C,		AutoGen,	Compiler
+			true,		false,		false,	true,		false, 
+	};
+	return overridable[t];
 }
 
-bool LinkageSpec::isBuiltin( Type t ) {
-	switch ( t ) {
-	  case Cforall:
-	  case AutoGen:
-	  case C:
-		return false;
-	  case Intrinsic:
-	  case Compiler:
-		return true;
-	}
-	assert( false );
-	return false;
+bool LinkageSpec::isBuiltin( Spec t ) {
+	static bool builtin[LinkageSpec::NoOfSpecs] = {
+		//	Intrinsic,	Cforall,	C,		AutoGen,	Compiler
+			true,		false,		false,	false,		true, 
+	};
+	return builtin[t];
 }
 
Index: src/Parser/LinkageSpec.h
===================================================================
--- src/Parser/LinkageSpec.h	(revision 7b1bfc597c11725f68bb6b8790ca6a3501cd1bf7)
+++ src/Parser/LinkageSpec.h	(revision 4a7d895054466f290f1d971a3482f0e4ff8a3c74)
@@ -9,7 +9,7 @@
 // Author           : Rodolfo G. Esteves
 // Created On       : Sat May 16 13:24:28 2015
-// Last Modified By : Rob Schluntz
-// Last Modified On : Tue Aug 18 14:11:55 2015
-// Update Count     : 5
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu Aug 18 23:47:16 2016
+// Update Count     : 7
 //
 
@@ -20,20 +20,21 @@
 
 struct LinkageSpec {
-	enum Type {
+	enum Spec {
 		Intrinsic,										// C built-in defined in prelude
 		Cforall,										// ordinary
 		C,												// not overloadable, not mangled
 		AutoGen,										// built by translator (struct assignment)
-		Compiler										// gcc internal
+		Compiler,										// gcc internal
+		NoOfSpecs
 	};
   
-	static Type fromString( const std::string & );
-	static std::string toString( Type );
+	static Spec fromString( const std::string & );
+	static std::string toString( Spec );
   
-	static bool isDecoratable( Type );
-	static bool isGeneratable( Type );
-	static bool isOverloadable( Type );
-	static bool isOverridable( Type );
-	static bool isBuiltin( Type );
+	static bool isDecoratable( Spec );
+	static bool isGeneratable( Spec );
+	static bool isOverloadable( Spec );
+	static bool isOverridable( Spec );
+	static bool isBuiltin( Spec );
 };
 
Index: src/Parser/ParseNode.cc
===================================================================
--- src/Parser/ParseNode.cc	(revision 7b1bfc597c11725f68bb6b8790ca6a3501cd1bf7)
+++ src/Parser/ParseNode.cc	(revision 4a7d895054466f290f1d971a3482f0e4ff8a3c74)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 13:26:29 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon Aug 15 14:49:06 2016
-// Update Count     : 99
+// Last Modified On : Wed Aug 17 23:14:16 2016
+// Update Count     : 126
 // 
 
@@ -17,38 +17,5 @@
 using namespace std;
 
-// Builder
 int ParseNode::indent_by = 4;
-
-ParseNode::ParseNode() : next( 0 ) {};
-ParseNode::ParseNode( const string *name ) : name( *name ), next( 0 ) { delete name; }
-ParseNode::ParseNode( const string &name ) : name( name ), next( 0 ) { }
-
-ParseNode::~ParseNode() {
-	delete next;
-};
-
-ParseNode *ParseNode::get_last() {
-	ParseNode *current = this;
-
-	while ( current->get_next() != 0 )
-	current = current->get_next();
-	return current;
-}
-
-ParseNode *ParseNode::set_last( ParseNode *next_ ) {
-	if ( next_ != 0 ) get_last()->next = next_;
-	return this;
-}
-
-void ParseNode::print( std::ostream &os, int indent ) const {}
-
-
-void ParseNode::printList( std::ostream &os, int indent ) const {
-	print( os, indent );
-
-	if ( next ) {
-		next->printList( os, indent );
-	} // if
-}
 
 // Local Variables: //
Index: src/Parser/ParseNode.h
===================================================================
--- src/Parser/ParseNode.h	(revision 7b1bfc597c11725f68bb6b8790ca6a3501cd1bf7)
+++ src/Parser/ParseNode.h	(revision 4a7d895054466f290f1d971a3482f0e4ff8a3c74)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 13:28:16 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon Aug 15 14:52:12 2016
-// Update Count     : 512
+// Last Modified On : Thu Aug 18 23:48:37 2016
+// Update Count     : 542
 //
 
@@ -22,12 +22,11 @@
 #include <memory>
 
-#include "Common/utility.h"
 #include "Parser/LinkageSpec.h"
 #include "SynTree/Type.h"
 #include "SynTree/Expression.h"
 #include "SynTree/Statement.h"
-//#include "SynTree/Declaration.h"
+#include "SynTree/Label.h"
+#include "Common/utility.h"
 #include "Common/UniqueName.h"
-#include "SynTree/Label.h"
 
 class StatementNode;
@@ -37,31 +36,37 @@
 class InitializerNode;
 
-// Builder
+//##############################################################################
+
 class ParseNode {
   public:
-	ParseNode();
-	ParseNode( const std::string * );
-	ParseNode( const std::string & );					// for copy constructing subclasses
-	virtual ~ParseNode();
+	ParseNode() {};
+	ParseNode( const std::string *name ) : name( *name ) { assert( false ); delete name; }
+	ParseNode( const std::string &name ) : name( name ) { assert( false ); }
+	virtual ~ParseNode() { delete next; };
+	virtual ParseNode *clone() const = 0;
 
 	ParseNode *get_next() const { return next; }
 	ParseNode *set_next( ParseNode *newlink ) { next = newlink; return this; }
-	ParseNode *get_last();
-	ParseNode *set_last( ParseNode * );
-
-	virtual ParseNode *clone() const { return 0; };
+	ParseNode *get_last() {
+		ParseNode *current;
+		for ( current = this; current->get_next() != 0; current = current->get_next() );
+		return current;
+	}
+	ParseNode *set_last( ParseNode *newlast ) {
+		if ( newlast != 0 ) get_last()->set_next( newlast );
+		return this;
+	}
 
 	const std::string &get_name() const { return name; }
 	void set_name( const std::string &newValue ) { name = newValue; }
 
-	virtual void print( std::ostream &os, int indent = 0 ) const;
-	virtual void printList( std::ostream &os, int indent = 0 ) const;
-
-	ParseNode &operator,( ParseNode & );
-  protected:
+	virtual void print( std::ostream &os, int indent = 0 ) const {}
+	virtual void printList( std::ostream &os, int indent = 0 ) const {}
+  private:
+	static int indent_by;
+
+	ParseNode *next = nullptr;
 	std::string name;
-	static int indent_by;
-	ParseNode *next;
-};
+}; // ParseNode
 
 //##############################################################################
@@ -72,4 +77,5 @@
 	InitializerNode( InitializerNode *, bool aggrp = false, ExpressionNode *des = 0 );
 	~InitializerNode();
+	virtual InitializerNode *clone() const { assert( false ); return nullptr; }
 
 	ExpressionNode *get_expression() const { return expr; }
@@ -97,5 +103,5 @@
 //##############################################################################
 
-class ExpressionNode : public ParseNode {
+class ExpressionNode final : public ParseNode {
   public:
 	ExpressionNode( Expression * expr = nullptr ) : expr( expr ) {}
@@ -103,21 +109,25 @@
 	ExpressionNode( const ExpressionNode &other );
 	virtual ~ExpressionNode() {}
-
-	virtual ExpressionNode *clone() const { return 0; }
+	virtual ExpressionNode *clone() const { assert( false ); return nullptr; }
 
 	bool get_extension() const { return extension; }
 	ExpressionNode *set_extension( bool exten ) { extension = exten; return this; }
 
-	virtual void print( std::ostream &os, int indent = 0 ) const {}
-	virtual void printOneLine( std::ostream &os, int indent = 0 ) const {}
-
-	virtual Expression *build() const { return expr; }
+	void print( std::ostream &os, int indent = 0 ) const {}
+	void printOneLine( std::ostream &os, int indent = 0 ) const {}
+
+	template<typename T>
+	bool isExpressionType() const {
+		return nullptr != dynamic_cast<T>(expr.get());
+	}
+
+	Expression *build() const { return const_cast<ExpressionNode*>(this)->expr.release(); }
   private:
 	bool extension = false;
-	Expression *expr;
+	std::unique_ptr<Expression> expr;
 };
 
 template< typename T >
-struct maybeBuild_t<Expression, T> {
+struct maybeBuild_t< Expression, T > {
 	static inline Expression * doit( const T *orig ) {
 		if ( orig ) {
@@ -126,5 +136,5 @@
 			return p;
 		} else {
-			return 0;
+			return nullptr;
 		} // if
 	}
@@ -146,8 +156,8 @@
 };
 
-Expression *build_constantInteger( std::string &str );
-Expression *build_constantFloat( std::string &str );
-Expression *build_constantChar( std::string &str );
-ConstantExpr *build_constantStr( std::string &str );
+Expression *build_constantInteger( const std::string &str );
+Expression *build_constantFloat( const std::string &str );
+Expression *build_constantChar( const std::string &str );
+ConstantExpr *build_constantStr( const std::string &str );
 
 NameExpr *build_varref( const std::string *name, bool labelp = false );
@@ -228,4 +238,8 @@
 	static DeclarationNode *newBuiltinType( BuiltinType );
 
+	DeclarationNode();
+	~DeclarationNode();
+	DeclarationNode *clone() const;
+
 	DeclarationNode *addQualifiers( DeclarationNode *);
 	DeclarationNode *copyStorageClasses( DeclarationNode *);
@@ -252,7 +266,8 @@
 	DeclarationNode *cloneBaseType( DeclarationNode *newdecl );
 
-	DeclarationNode *appendList( DeclarationNode * );
-
-	DeclarationNode *clone() const;
+	DeclarationNode *appendList( DeclarationNode *node ) {
+		return (DeclarationNode *)set_last( node );
+	}
+
 	void print( std::ostream &os, int indent = 0 ) const;
 	void printList( std::ostream &os, int indent = 0 ) const;
@@ -263,5 +278,5 @@
 	bool get_hasEllipsis() const;
 	const std::string &get_name() const { return name; }
-	LinkageSpec::Type get_linkage() const { return linkage; }
+	LinkageSpec::Spec get_linkage() const { return linkage; }
 	DeclarationNode *extractAggregate() const;
 	ExpressionNode *get_enumeratorValue() const { return enumeratorValue; }
@@ -269,14 +284,13 @@
 	bool get_extension() const { return extension; }
 	DeclarationNode *set_extension( bool exten ) { extension = exten; return this; }
-
-	DeclarationNode();
-	~DeclarationNode();
   private:
-	StorageClass buildStorageClass() const;
-	bool buildFuncSpecifier( StorageClass key ) const;
+	// StorageClass buildStorageClass() const;
+	// bool buildFuncSpecifier( StorageClass key ) const;
 
 	TypeData *type;
 	std::string name;
-	std::list< StorageClass > storageClasses;
+	// std::list< StorageClass > storageClasses;
+	StorageClass storageClass;
+	bool isInline, isNoreturn;
 	std::list< std::string > attributes;
 	ExpressionNode *bitfieldWidth;
@@ -284,6 +298,7 @@
 	InitializerNode *initializer;
 	bool hasEllipsis;
-	LinkageSpec::Type linkage;
+	LinkageSpec::Spec linkage;
 	bool extension = false;
+	std::string error;
 
 	static UniqueName anonymous;
@@ -294,5 +309,5 @@
 //##############################################################################
 
-class StatementNode : public ParseNode {
+class StatementNode final : public ParseNode {
   public:
 	StatementNode() { stmt = nullptr; }
@@ -301,9 +316,10 @@
 	virtual ~StatementNode() {}
 
-	virtual StatementNode *clone() const { assert( false ); return nullptr; }
-	virtual Statement *build() const { return stmt; }
+	virtual StatementNode *clone() const final { assert( false ); return nullptr; }
+	Statement *build() const { return const_cast<StatementNode*>(this)->stmt.release(); }
 
 	virtual StatementNode *add_label( const std::string * name ) {
 		stmt->get_labels().emplace_back( *name );
+		delete name;
 		return this;
 	}
@@ -314,5 +330,5 @@
 	virtual void printList( std::ostream &os, int indent = 0 ) {}
   private:
-	Statement *stmt;
+	std::unique_ptr<Statement> stmt;
 }; // StatementNode
 
@@ -351,11 +367,11 @@
 void buildList( const NodeType *firstNode, std::list< SynTreeType * > &outputList ) {
 	SemanticError errors;
-	std::back_insert_iterator< std::list< SynTreeType *> > out( outputList );
+	std::back_insert_iterator< std::list< SynTreeType * > > out( outputList );
 	const NodeType *cur = firstNode;
 
 	while ( cur ) {
 		try {
-//			SynTreeType *result = dynamic_cast< SynTreeType *>( maybeBuild<typename std::result_of<decltype(&NodeType::build)(NodeType)>::type>( cur ) );
-			SynTreeType *result = dynamic_cast< SynTreeType *>( maybeBuild<typename std::pointer_traits<decltype(cur->build())>::element_type>( cur ) );
+//			SynTreeType *result = dynamic_cast< SynTreeType * >( maybeBuild< typename std::result_of< decltype(&NodeType::build)(NodeType)>::type >( cur ) );
+			SynTreeType *result = dynamic_cast< SynTreeType * >( maybeBuild< typename std::pointer_traits< decltype(cur->build())>::element_type >( cur ) );
 			if ( result ) {
 				*out++ = result;
@@ -365,5 +381,5 @@
 			errors.append( e );
 		} // try
-		cur = dynamic_cast< NodeType *>( cur->get_next() );
+		cur = dynamic_cast< NodeType * >( cur->get_next() );
 	} // while
 	if ( ! errors.isEmpty() ) {
@@ -374,6 +390,13 @@
 // in DeclarationNode.cc
 void buildList( const DeclarationNode *firstNode, std::list< Declaration * > &outputList );
-void buildList( const DeclarationNode *firstNode, std::list< DeclarationWithType *> &outputList );
+void buildList( const DeclarationNode *firstNode, std::list< DeclarationWithType * > &outputList );
 void buildTypeList( const DeclarationNode *firstNode, std::list< Type * > &outputList );
+
+template< typename SynTreeType, typename NodeType >
+void buildMoveList( const NodeType *firstNode, std::list< SynTreeType * > &outputList ) {
+	buildList(firstNode, outputList);
+	delete firstNode;
+}
+
 
 #endif // PARSENODE_H
Index: c/Parser/Parser.cc
===================================================================
--- src/Parser/Parser.cc	(revision 7b1bfc597c11725f68bb6b8790ca6a3501cd1bf7)
+++ 	(revision )
@@ -1,70 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// Parser.cc -- 
-//
-// Author           : Rodolfo G. Esteves
-// Created On       : Sat May 16 14:54:28 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Mon Mar 21 18:04:47 2016
-// Update Count     : 5
-// 
-
-#include "Parser.h"
-#include "lex.h"
-#include "parser.h"
-#include "TypedefTable.h"
-
-// global variables in cfa.y
-extern int yyparse(void);
-extern int yydebug;
-extern LinkageSpec::Type linkage;
-extern TypedefTable typedefTable;
-extern DeclarationNode *theTree;
-
-Parser *Parser::theParser = 0;
-
-Parser::Parser(): parseTree( 0 ), parseStatus( 1 ) {}
-
-Parser::~Parser() {
-	delete parseTree;
-}
-
-Parser &Parser::get_parser() {
-	if ( theParser == 0 ) {
-		theParser = new Parser;
-	} // if
-	return *theParser;
-}
-
-void Parser::parse( FILE *input ) {
-	extern FILE *yyin;
-	yyin = input;
-	extern int yylineno;
-	yylineno = 1;
-	typedefTable.enterScope();
-	parseStatus = yyparse();
-	parseTree = theTree;
-}
-
-void Parser::set_debug( bool debug ) {
-	yydebug = debug;
-}
-
-void Parser::set_linkage( LinkageSpec::Type linkage ) {
-	::linkage = linkage;
-}
-
-void Parser::freeTree() {
-	delete parseTree;
-	parseTree = 0;
-}
-
-// Local Variables: //
-// tab-width: 4 //
-// mode: c++ //
-// compile-command: "make install" //
-// End: //
Index: c/Parser/Parser.h
===================================================================
--- src/Parser/Parser.h	(revision 7b1bfc597c11725f68bb6b8790ca6a3501cd1bf7)
+++ 	(revision )
@@ -1,56 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// Parser.h -- 
-//
-// Author           : Rodolfo G. Esteves
-// Created On       : Sat May 16 14:56:50 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Sat May 16 14:58:56 2015
-// Update Count     : 2
-//
-
-#ifndef PARSER_H
-#define PARSER_H
-
-#include <cstdio>
-
-#include "Parser/ParseNode.h"
-#include "LinkageSpec.h"
-
-class Parser {
-  public:
-	static Parser &get_parser();
-
-	// do the actual parse
-	void parse( FILE *input );
-
-	// accessors to return the result of the parse
-	DeclarationNode *get_parseTree() const { return parseTree; }
-	int get_parseStatus() const { return parseStatus; }
-
-	// mutators to control parse options
-	void set_debug( bool debug );
-	void set_linkage( LinkageSpec::Type linkage );
-
-	// free the parse tree without actually destroying the parser
-	void freeTree();
-
-	~Parser();
-  private:
-	Parser();
-	static Parser *theParser;
-	DeclarationNode *parseTree;
-	int parseStatus;
-};
-
-#endif // PARSER_H
-
-// Local Variables: //
-// tab-width: 4 //
-// mode: c++ //
-// compile-command: "make install" //
-// End: //
Index: src/Parser/StatementNode.cc
===================================================================
--- src/Parser/StatementNode.cc	(revision 7b1bfc597c11725f68bb6b8790ca6a3501cd1bf7)
+++ src/Parser/StatementNode.cc	(revision 4a7d895054466f290f1d971a3482f0e4ff8a3c74)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 14:59:41 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon Aug 15 14:40:05 2016
-// Update Count     : 317
+// Last Modified On : Mon Aug 15 20:47:11 2016
+// Update Count     : 322
 //
 
@@ -32,17 +32,17 @@
 		if ( agg ) {
 			StatementNode *nextStmt = new StatementNode( new DeclStmt( noLabels, maybeBuild< Declaration >( decl ) ) );
-			next = nextStmt;
+			set_next( nextStmt );
 			if ( decl->get_next() ) {
-				next->set_next( new StatementNode( dynamic_cast<DeclarationNode *>(decl->get_next()) ) );
+				get_next()->set_next( new StatementNode( dynamic_cast< DeclarationNode * >(decl->get_next()) ) );
 				decl->set_next( 0 );
 			} // if
 		} else {
 			if ( decl->get_next() ) {
-				next = new StatementNode( dynamic_cast<DeclarationNode *>( decl->get_next() ) );
+				set_next(new StatementNode( dynamic_cast< DeclarationNode * >( decl->get_next() ) ) );
 				decl->set_next( 0 );
 			} // if
 			agg = decl;
 		} // if
-		stmt = new DeclStmt( noLabels, maybeBuild<Declaration>(agg) );
+		stmt.reset( new DeclStmt( noLabels, maybeBuild< Declaration >(agg) ) );
 	} else {
 		assert( false );
@@ -54,15 +54,15 @@
 	// find end of list and maintain previous pointer
 	for ( StatementNode * curr = prev; curr != nullptr; curr = (StatementNode *)curr->get_next() ) {
-		StatementNode *node = dynamic_cast<StatementNode *>(curr);
+		StatementNode *node = dynamic_cast< StatementNode * >(curr);
 		assert( node );
-		assert( dynamic_cast<CaseStmt *>(node->stmt) );
+		assert( dynamic_cast< CaseStmt * >(node->stmt.get()) );
 		prev = curr;
 	} // for
 	// convert from StatementNode list to Statement list
-	StatementNode *node = dynamic_cast<StatementNode *>(prev);
-	std::list<Statement *> stmts;
-	buildList( stmt, stmts );
+	StatementNode *node = dynamic_cast< StatementNode * >(prev);
+	std::list< Statement * > stmts;
+	buildMoveList( stmt, stmts );
 	// splice any new Statements to end of current Statements
-	CaseStmt * caseStmt = dynamic_cast<CaseStmt *>(node->stmt);
+	CaseStmt * caseStmt = dynamic_cast< CaseStmt * >(node->stmt.get());
 	caseStmt->get_statements().splice( caseStmt->get_statements().end(), stmts );
 	return this;
@@ -70,5 +70,5 @@
 
 Statement *build_expr( ExpressionNode *ctl ) {
-	Expression *e = maybeBuild< Expression >( ctl );
+	Expression *e = maybeMoveBuild< Expression >( ctl );
 
 	if ( e )
@@ -80,57 +80,57 @@
 Statement *build_if( ExpressionNode *ctl, StatementNode *then_stmt, StatementNode *else_stmt ) {
 	Statement *thenb, *elseb = 0;
-	std::list<Statement *> branches;
-	buildList<Statement, StatementNode>( then_stmt, branches );
+	std::list< Statement * > branches;
+	buildMoveList< Statement, StatementNode >( then_stmt, branches );
 	assert( branches.size() == 1 );
 	thenb = branches.front();
 
 	if ( else_stmt ) {
-		std::list<Statement *> branches;
-		buildList<Statement, StatementNode>( else_stmt, branches );
+		std::list< Statement * > branches;
+		buildMoveList< Statement, StatementNode >( else_stmt, branches );
 		assert( branches.size() == 1 );
 		elseb = branches.front();
 	} // if
-	return new IfStmt( noLabels, notZeroExpr( maybeBuild<Expression>(ctl) ), thenb, elseb );
+	return new IfStmt( noLabels, notZeroExpr( maybeMoveBuild< Expression >(ctl) ), thenb, elseb );
 }
 
 Statement *build_switch( ExpressionNode *ctl, StatementNode *stmt ) {
-	std::list<Statement *> branches;
-	buildList<Statement, StatementNode>( stmt, branches );
+	std::list< Statement * > branches;
+	buildMoveList< Statement, StatementNode >( stmt, branches );
 	assert( branches.size() >= 0 );						// size == 0 for switch (...) {}, i.e., no declaration or statements
-	return new SwitchStmt( noLabels, maybeBuild<Expression>(ctl), branches );
+	return new SwitchStmt( noLabels, maybeMoveBuild< Expression >(ctl), branches );
 }
 Statement *build_case( ExpressionNode *ctl ) {
-	std::list<Statement *> branches;
-	return new CaseStmt( noLabels, maybeBuild<Expression>(ctl), branches );
+	std::list< Statement * > branches;
+	return new CaseStmt( noLabels, maybeMoveBuild< Expression >(ctl), branches );
 }
 Statement *build_default() {
-	std::list<Statement *> branches;
+	std::list< Statement * > branches;
 	return new CaseStmt( noLabels, nullptr, branches, true );
 }
 
 Statement *build_while( ExpressionNode *ctl, StatementNode *stmt, bool kind ) {
-	std::list<Statement *> branches;
-	buildList<Statement, StatementNode>( stmt, branches );
-	assert( branches.size() == 1 );
-	return new WhileStmt( noLabels, notZeroExpr( maybeBuild<Expression>(ctl) ), branches.front(), kind );
+	std::list< Statement * > branches;
+	buildMoveList< Statement, StatementNode >( stmt, branches );
+	assert( branches.size() == 1 );
+	return new WhileStmt( noLabels, notZeroExpr( maybeMoveBuild< Expression >(ctl) ), branches.front(), kind );
 }
 
 Statement *build_for( ForCtl *forctl, StatementNode *stmt ) {
-	std::list<Statement *> branches;
-	buildList<Statement, StatementNode>( stmt, branches );
-	assert( branches.size() == 1 );
-
-	std::list<Statement *> init;
+	std::list< Statement * > branches;
+	buildMoveList< Statement, StatementNode >( stmt, branches );
+	assert( branches.size() == 1 );
+
+	std::list< Statement * > init;
 	if ( forctl->init != 0 ) {
-		buildList( forctl->init, init );
+		buildMoveList( forctl->init, init );
 	} // if
 
 	Expression *cond = 0;
 	if ( forctl->condition != 0 )
-		cond = notZeroExpr( maybeBuild<Expression>(forctl->condition) );
+		cond = notZeroExpr( maybeMoveBuild< Expression >(forctl->condition) );
 
 	Expression *incr = 0;
 	if ( forctl->change != 0 )
-		incr = maybeBuild<Expression>(forctl->change);
+		incr = maybeMoveBuild< Expression >(forctl->change);
 
 	delete forctl;
@@ -142,42 +142,43 @@
 }
 Statement *build_computedgoto( ExpressionNode *ctl ) {
-	return new BranchStmt( noLabels, maybeBuild<Expression>(ctl), BranchStmt::Goto );
+	return new BranchStmt( noLabels, maybeMoveBuild< Expression >(ctl), BranchStmt::Goto );
 }
 
 Statement *build_return( ExpressionNode *ctl ) {
-	std::list<Expression *> exps;
-	buildList( ctl, exps );
+	std::list< Expression * > exps;
+	buildMoveList( ctl, exps );
 	return new ReturnStmt( noLabels, exps.size() > 0 ? exps.back() : nullptr );
 }
 Statement *build_throw( ExpressionNode *ctl ) {
-	std::list<Expression *> exps;
-	buildList( ctl, exps );
-	return new ReturnStmt( noLabels, exps.size() > 0 ? exps.back() : nullptr, true );
+	std::list< Expression * > exps;
+	buildMoveList( ctl, exps );
+	assertf( exps.size() < 2, "This means we are leaking memory");
+	return new ReturnStmt( noLabels, !exps.empty() ? exps.back() : nullptr, true );
 }
 
 Statement *build_try( StatementNode *try_stmt, StatementNode *catch_stmt, StatementNode *finally_stmt ) {
-	std::list<Statement *> branches;
-	buildList<Statement, StatementNode>( catch_stmt, branches );
-	CompoundStmt *tryBlock = dynamic_cast<CompoundStmt *>(maybeBuild<Statement>(try_stmt));
+	std::list< Statement * > branches;
+	buildMoveList< Statement, StatementNode >( catch_stmt, branches );
+	CompoundStmt *tryBlock = dynamic_cast< CompoundStmt * >(maybeMoveBuild< Statement >(try_stmt));
 	assert( tryBlock );
-	FinallyStmt *finallyBlock = dynamic_cast<FinallyStmt *>(maybeBuild<Statement>(finally_stmt) );
+	FinallyStmt *finallyBlock = dynamic_cast< FinallyStmt * >(maybeMoveBuild< Statement >(finally_stmt) );
 	return new TryStmt( noLabels, tryBlock, branches, finallyBlock );
 }
 Statement *build_catch( DeclarationNode *decl, StatementNode *stmt, bool catchAny ) {
-	std::list<Statement *> branches;
-	buildList<Statement, StatementNode>( stmt, branches );
-	assert( branches.size() == 1 );
-	return new CatchStmt( noLabels, maybeBuild<Declaration>(decl), branches.front(), catchAny );
+	std::list< Statement * > branches;
+	buildMoveList< Statement, StatementNode >( stmt, branches );
+	assert( branches.size() == 1 );
+	return new CatchStmt( noLabels, maybeMoveBuild< Declaration >(decl), branches.front(), catchAny );
 }
 Statement *build_finally( StatementNode *stmt ) {
-	std::list<Statement *> branches;
-	buildList<Statement, StatementNode>( stmt, branches );
-	assert( branches.size() == 1 );
-	return new FinallyStmt( noLabels, dynamic_cast<CompoundStmt *>( branches.front() ) );
+	std::list< Statement * > branches;
+	buildMoveList< Statement, StatementNode >( stmt, branches );
+	assert( branches.size() == 1 );
+	return new FinallyStmt( noLabels, dynamic_cast< CompoundStmt * >( branches.front() ) );
 }
 
 Statement *build_compound( StatementNode *first ) {
 	CompoundStmt *cs = new CompoundStmt( noLabels );
-	buildList( first, cs->get_kids() );
+	buildMoveList( first, cs->get_kids() );
 	return cs;
 }
@@ -187,7 +188,7 @@
 	std::list< ConstantExpr * > clob;
 
-	buildList( output, out );
-	buildList( input, in );
-	buildList( clobber, clob );
+	buildMoveList( output, out );
+	buildMoveList( input, in );
+	buildMoveList( clobber, clob );
 	return new AsmStmt( noLabels, voltile, instruction, out, in, clob, gotolabels ? gotolabels->labels : noLabels );
 }
Index: src/Parser/TypeData.cc
===================================================================
--- src/Parser/TypeData.cc	(revision 7b1bfc597c11725f68bb6b8790ca6a3501cd1bf7)
+++ src/Parser/TypeData.cc	(revision 4a7d895054466f290f1d971a3482f0e4ff8a3c74)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 15:12:51 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sat Aug 13 18:38:41 2016
-// Update Count     : 59
+// Last Modified On : Thu Aug 18 23:48:44 2016
+// Update Count     : 64
 //
 
@@ -182,5 +182,4 @@
 		break;
 	  case Array:
-//PAB		newtype->array->dimension = maybeClone( array->dimension );
 		newtype->array->dimension = array->dimension;
 		newtype->array->isVarLen = array->isVarLen;
@@ -479,5 +478,5 @@
 }
 
-Declaration *TypeData::buildDecl( std::string name, DeclarationNode::StorageClass sc, Expression *bitfieldWidth, bool isInline, bool isNoreturn, LinkageSpec::Type linkage, Initializer *init ) const {
+Declaration *TypeData::buildDecl( std::string name, DeclarationNode::StorageClass sc, Expression *bitfieldWidth, bool isInline, bool isNoreturn, LinkageSpec::Spec linkage, Initializer *init ) const {
 	if ( kind == TypeData::Function ) {
 		FunctionDecl *decl;
@@ -489,6 +488,6 @@
 				decl = new FunctionDecl( name, sc, linkage, buildFunction(), body, isInline, isNoreturn );
 			} else {
-				// std::list<Label> ls;
-				decl = new FunctionDecl( name, sc, linkage, buildFunction(), new CompoundStmt( std::list<Label>() ), isInline, isNoreturn );
+				// std::list< Label > ls;
+				decl = new FunctionDecl( name, sc, linkage, buildFunction(), new CompoundStmt( std::list< Label >() ), isInline, isNoreturn );
 			} // if
 		} else {
@@ -909,7 +908,7 @@
 	buildList( enumeration->constants, ret->get_members() );
 	std::list< Declaration * >::iterator members = ret->get_members().begin();
-	for ( const DeclarationNode *cur = enumeration->constants; cur != NULL; cur = dynamic_cast<DeclarationNode *>( cur->get_next() ), ++members ) {
-		if ( cur->get_enumeratorValue() != NULL ) {
-			ObjectDecl *member = dynamic_cast<ObjectDecl *>(*members);
+	for ( const DeclarationNode *cur = enumeration->constants; cur != nullptr; cur = dynamic_cast< DeclarationNode * >( cur->get_next() ), ++members ) {
+		if ( cur->get_enumeratorValue() != nullptr ) {
+			ObjectDecl *member = dynamic_cast< ObjectDecl * >(*members);
 			member->set_init( new SingleInit( maybeBuild< Expression >( cur->get_enumeratorValue() ), std::list< Expression * >() ) );
 		} // if
Index: src/Parser/TypeData.h
===================================================================
--- src/Parser/TypeData.h	(revision 7b1bfc597c11725f68bb6b8790ca6a3501cd1bf7)
+++ src/Parser/TypeData.h	(revision 4a7d895054466f290f1d971a3482f0e4ff8a3c74)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 15:18:36 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon Aug 15 14:28:32 2016
-// Update Count     : 21
+// Last Modified On : Thu Aug 18 23:48:52 2016
+// Update Count     : 22
 //
 
@@ -126,5 +126,5 @@
 	TypeData * extractAggregate( bool toplevel = true ) const;
 	// helper function for DeclNodeImpl::build
-	Declaration * buildDecl( std::string name, DeclarationNode::StorageClass sc, Expression * bitfieldWidth, bool isInline, bool isNoreturn, LinkageSpec::Type linkage, Initializer * init = 0 ) const;
+	Declaration * buildDecl( std::string name, DeclarationNode::StorageClass sc, Expression * bitfieldWidth, bool isInline, bool isNoreturn, LinkageSpec::Spec linkage, Initializer * init = 0 ) const;
 	// helper functions for build()
 	Type::Qualifiers buildQualifiers() const;
Index: src/Parser/TypedefTable.cc
===================================================================
--- src/Parser/TypedefTable.cc	(revision 7b1bfc597c11725f68bb6b8790ca6a3501cd1bf7)
+++ src/Parser/TypedefTable.cc	(revision 4a7d895054466f290f1d971a3482f0e4ff8a3c74)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 15:20:13 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Apr 13 16:57:30 2016
-// Update Count     : 24
+// Last Modified On : Mon Aug 15 18:24:42 2016
+// Update Count     : 25
 //
 
@@ -64,9 +64,9 @@
 		tableType::iterator curPos = table.find( identifier );
 		if ( curPos == table.end()) {
-			list<Entry> newList;
+			list< Entry > newList;
 			newList.push_front( newEntry );
 			table[identifier] = newList;
 		} else {
-			list<Entry>::iterator listPos = (*curPos ).second.begin();
+			list< Entry >::iterator listPos = (*curPos ).second.begin();
 			while ( listPos != (*curPos ).second.end() && listPos->scope > scope ) {
 				listPos++;
@@ -127,5 +127,5 @@
 	debugPrint( "Leaving scope " << currentScope << endl );
 	for ( tableType::iterator i = table.begin(); i != table.end(); ) {
-		list<Entry> &declList = (*i).second;
+		list< Entry > &declList = (*i).second;
 		while ( ! declList.empty() && declList.front().scope == currentScope ) {
 			declList.pop_front();
@@ -157,6 +157,6 @@
 	for ( tableType::const_iterator i = table.begin(); i != table.end(); i++) {
 		debugPrint( (*i ).first << ": " );
-		list<Entry> declList = (*i).second;
-		for ( list<Entry>::const_iterator j = declList.begin(); j != declList.end(); j++ ) {
+		list< Entry > declList = (*i).second;
+		for ( list< Entry >::const_iterator j = declList.begin(); j != declList.end(); j++ ) {
 			debugPrint( "(" << (*j).scope << " " << (*j).kind << ") " );
 		}
Index: src/Parser/TypedefTable.h
===================================================================
--- src/Parser/TypedefTable.h	(revision 7b1bfc597c11725f68bb6b8790ca6a3501cd1bf7)
+++ src/Parser/TypedefTable.h	(revision 4a7d895054466f290f1d971a3482f0e4ff8a3c74)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 15:24:36 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Apr 13 16:59:56 2016
-// Update Count     : 27
+// Last Modified On : Mon Aug 15 18:25:04 2016
+// Update Count     : 28
 //
 
@@ -39,5 +39,5 @@
 	};
 
-	typedef std::map<std::string, std::list<Entry> > tableType;
+	typedef std::map< std::string, std::list< Entry > > tableType;
 	tableType table;
 
Index: src/Parser/lex.cc
===================================================================
--- src/Parser/lex.cc	(revision 7b1bfc597c11725f68bb6b8790ca6a3501cd1bf7)
+++ src/Parser/lex.cc	(revision 4a7d895054466f290f1d971a3482f0e4ff8a3c74)
@@ -1468,7 +1468,7 @@
  * Author           : Peter A. Buhr
  * Created On       : Sat Sep 22 08:58:10 2001
- * Last Modified By : 
- * Last Modified On : Sun Jul 31 07:19:36 2016
- * Update Count     : 459
+ * Last Modified By : Peter A. Buhr
+ * Last Modified On : Thu Aug 18 22:17:30 2016
+ * Update Count     : 472
  */
 #line 20 "lex.ll"
@@ -1480,4 +1480,5 @@
 
 #include <string>
+#include <cstdio>										// FILENAME_MAX
 
 #include "lex.h"
@@ -1491,11 +1492,11 @@
 #define RETURN_LOCN(x)		yylval.tok.loc.file = yyfilename; yylval.tok.loc.line = yylineno; return( x )
 #define RETURN_VAL(x)		yylval.tok.str = new std::string( yytext ); RETURN_LOCN( x )
-#define RETURN_CHAR(x)		yylval.tok.str = NULL; RETURN_LOCN( x )
+#define RETURN_CHAR(x)		yylval.tok.str = nullptr; RETURN_LOCN( x )
 #define RETURN_STR(x)		yylval.tok.str = strtext; RETURN_LOCN( x )
 
-#define WHITE_RETURN(x)									// do nothing
+#define WHITE_RETURN(x)		// do nothing
 #define NEWLINE_RETURN()	WHITE_RETURN( '\n' )
 #define ASCIIOP_RETURN()	RETURN_CHAR( (int)yytext[0] ) // single character operator
-#define NAMEDOP_RETURN(x)	RETURN_VAL( x )				// multichar operator, with a name
+#define NAMEDOP_RETURN(x)	RETURN_CHAR( x )			// multichar operator, with a name
 #define NUMERIC_RETURN(x)	rm_underscore(); RETURN_VAL( x ) // numeric constant
 #define KEYWORD_RETURN(x)	RETURN_CHAR( x )			// keyword
@@ -1531,5 +1532,5 @@
 
 
-#line 1534 "Parser/lex.cc"
+#line 1535 "Parser/lex.cc"
 
 #define INITIAL 0
@@ -1723,8 +1724,8 @@
 	register int yy_act;
     
-#line 138 "lex.ll"
+#line 139 "lex.ll"
 
 				   /* line directives */
-#line 1729 "Parser/lex.cc"
+#line 1730 "Parser/lex.cc"
 
 	if ( !(yy_init) )
@@ -1823,24 +1824,23 @@
 /* rule 1 can match eol */
 YY_RULE_SETUP
-#line 140 "lex.ll"
+#line 141 "lex.ll"
 {
 	/* " stop highlighting */
+	static char *filename[FILENAME_MAX];				// temporarily store current source-file name
 	char *end_num;
 	char *begin_string, *end_string;
-	char *filename;
 	long lineno, length;
 	lineno = strtol( yytext + 1, &end_num, 0 );
 	begin_string = strchr( end_num, '"' );
-	if ( begin_string ) {
-		end_string = strchr( begin_string + 1, '"' );
-		if ( end_string ) {
-			length = end_string - begin_string - 1;
-			filename = new char[ length + 1 ];
-			memcpy( filename, begin_string + 1, length );
-			filename[ length ] = '\0';
-			//std::cout << "file " << filename << " line " << lineno << std::endl;
-			yylineno = lineno;
-			yyfilename = filename;
-		} // if
+	if ( begin_string ) {								// file name ?
+		end_string = strchr( begin_string + 1, '"' );	// look for ending delimiter
+		assert( end_string );							// closing quote ?
+		length = end_string - begin_string - 1;			// file-name length without quotes or sentinel
+		assert( length < FILENAME_MAX );				// room for sentinel ?
+		memcpy( &filename, begin_string + 1, length );	// copy file name from yytext
+		filename[ length ] = '\0';						// terminate string with sentinel
+		//std::cout << "file " << filename << " line " << lineno << std::endl;
+		yylineno = lineno;
+		yyfilename = filename[0];
 	} // if
 }
Index: src/Parser/lex.ll
===================================================================
--- src/Parser/lex.ll	(revision 7b1bfc597c11725f68bb6b8790ca6a3501cd1bf7)
+++ src/Parser/lex.ll	(revision 4a7d895054466f290f1d971a3482f0e4ff8a3c74)
@@ -9,7 +9,7 @@
  * Author           : Peter A. Buhr
  * Created On       : Sat Sep 22 08:58:10 2001
- * Last Modified By : 
- * Last Modified On : Sun Jul 31 07:19:36 2016
- * Update Count     : 459
+ * Last Modified By : Peter A. Buhr
+ * Last Modified On : Thu Aug 18 22:17:30 2016
+ * Update Count     : 472
  */
 
@@ -25,4 +25,5 @@
 
 #include <string>
+#include <cstdio>										// FILENAME_MAX
 
 #include "lex.h"
@@ -36,11 +37,11 @@
 #define RETURN_LOCN(x)		yylval.tok.loc.file = yyfilename; yylval.tok.loc.line = yylineno; return( x )
 #define RETURN_VAL(x)		yylval.tok.str = new std::string( yytext ); RETURN_LOCN( x )
-#define RETURN_CHAR(x)		yylval.tok.str = NULL; RETURN_LOCN( x )
+#define RETURN_CHAR(x)		yylval.tok.str = nullptr; RETURN_LOCN( x )
 #define RETURN_STR(x)		yylval.tok.str = strtext; RETURN_LOCN( x )
 
-#define WHITE_RETURN(x)									// do nothing
+#define WHITE_RETURN(x)		// do nothing
 #define NEWLINE_RETURN()	WHITE_RETURN( '\n' )
 #define ASCIIOP_RETURN()	RETURN_CHAR( (int)yytext[0] ) // single character operator
-#define NAMEDOP_RETURN(x)	RETURN_VAL( x )				// multichar operator, with a name
+#define NAMEDOP_RETURN(x)	RETURN_CHAR( x )			// multichar operator, with a name
 #define NUMERIC_RETURN(x)	rm_underscore(); RETURN_VAL( x ) // numeric constant
 #define KEYWORD_RETURN(x)	RETURN_CHAR( x )			// keyword
@@ -140,21 +141,20 @@
 ^{h_white}*"#"{h_white}*[0-9]+{h_white}*["][^"\n]+["].*"\n" {
 	/* " stop highlighting */
+	static char *filename[FILENAME_MAX];				// temporarily store current source-file name
 	char *end_num;
 	char *begin_string, *end_string;
-	char *filename;
 	long lineno, length;
 	lineno = strtol( yytext + 1, &end_num, 0 );
 	begin_string = strchr( end_num, '"' );
-	if ( begin_string ) {
-		end_string = strchr( begin_string + 1, '"' );
-		if ( end_string ) {
-			length = end_string - begin_string - 1;
-			filename = new char[ length + 1 ];
-			memcpy( filename, begin_string + 1, length );
-			filename[ length ] = '\0';
-			//std::cout << "file " << filename << " line " << lineno << std::endl;
-			yylineno = lineno;
-			yyfilename = filename;
-		} // if
+	if ( begin_string ) {								// file name ?
+		end_string = strchr( begin_string + 1, '"' );	// look for ending delimiter
+		assert( end_string );							// closing quote ?
+		length = end_string - begin_string - 1;			// file-name length without quotes or sentinel
+		assert( length < FILENAME_MAX );				// room for sentinel ?
+		memcpy( &filename, begin_string + 1, length );	// copy file name from yytext
+		filename[ length ] = '\0';						// terminate string with sentinel
+		//std::cout << "file " << filename << " line " << lineno << std::endl;
+		yylineno = lineno;
+		yyfilename = filename[0];
 	} // if
 }
Index: src/Parser/module.mk
===================================================================
--- src/Parser/module.mk	(revision 7b1bfc597c11725f68bb6b8790ca6a3501cd1bf7)
+++ src/Parser/module.mk	(revision 4a7d895054466f290f1d971a3482f0e4ff8a3c74)
@@ -11,6 +11,6 @@
 ## Created On       : Sat May 16 15:29:09 2015
 ## Last Modified By : Peter A. Buhr
-## Last Modified On : Thu Jan 28 11:57:23 2016
-## Update Count     : 100
+## Last Modified On : Tue Aug 16 17:28:34 2016
+## Update Count     : 101
 ###############################################################################
 
@@ -29,6 +29,5 @@
        Parser/TypeData.cc \
        Parser/LinkageSpec.cc \
-       Parser/parseutility.cc \
-       Parser/Parser.cc
+       Parser/parseutility.cc
 
 MAINTAINERCLEANFILES += Parser/parser.output
Index: src/Parser/parser.cc
===================================================================
--- src/Parser/parser.cc	(revision 7b1bfc597c11725f68bb6b8790ca6a3501cd1bf7)
+++ src/Parser/parser.cc	(revision 4a7d895054466f290f1d971a3482f0e4ff8a3c74)
@@ -1,18 +1,18 @@
-/* A Bison parser, made by GNU Bison 2.5.  */
+/* A Bison parser, made by GNU Bison 3.0.2.  */
 
 /* Bison implementation for Yacc-like parsers in C
-   
-      Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc.
-   
+
+   Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
+
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.
-   
+
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
-   
+
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
@@ -27,5 +27,5 @@
    Bison output files to be licensed under the GNU General Public
    License without this special exception.
-   
+
    This special exception was added by the Free Software Foundation in
    version 2.2 of Bison.  */
@@ -45,5 +45,5 @@
 
 /* Bison version.  */
-#define YYBISON_VERSION "2.5"
+#define YYBISON_VERSION "3.0.2"
 
 /* Skeleton name.  */
@@ -59,17 +59,12 @@
 #define YYPULL 1
 
-/* Using locations.  */
-#define YYLSP_NEEDED 0
 
 
 
 /* Copy the first part of user declarations.  */
-
-/* Line 268 of yacc.c  */
-#line 42 "parser.yy"
+#line 42 "parser.yy" /* yacc.c:339  */
 
 #define YYDEBUG_LEXER_TEXT (yylval)						// lexer loads this up each time
 #define YYDEBUG 1										// get the pretty debugging code to compile
-extern char *yytext;
 
 #undef __GNUC_MINOR__
@@ -84,8 +79,9 @@
 #include "LinkageSpec.h"
 
-DeclarationNode *theTree = 0;							// the resulting parse tree
-LinkageSpec::Type linkage = LinkageSpec::Cforall;
-std::stack< LinkageSpec::Type > linkageStack;
-TypedefTable typedefTable;
+extern DeclarationNode * parseTree;
+extern LinkageSpec::Spec linkage;
+extern TypedefTable typedefTable;
+
+std::stack< LinkageSpec::Spec > linkageStack;
 
 void appendStr( std::string &to, std::string *from ) {
@@ -94,12 +90,13 @@
 } // appendStr
 
-
-/* Line 268 of yacc.c  */
-#line 99 "Parser/parser.cc"
-
-/* Enabling traces.  */
-#ifndef YYDEBUG
-# define YYDEBUG 1
-#endif
+#line 93 "Parser/parser.cc" /* yacc.c:339  */
+
+# ifndef YY_NULLPTR
+#  if defined __cplusplus && 201103L <= __cplusplus
+#   define YY_NULLPTR nullptr
+#  else
+#   define YY_NULLPTR 0
+#  endif
+# endif
 
 /* Enabling verbose error messages.  */
@@ -111,123 +108,128 @@
 #endif
 
-/* Enabling the token table.  */
-#ifndef YYTOKEN_TABLE
-# define YYTOKEN_TABLE 0
+/* In a future release of Bison, this section will be replaced
+   by #include "y.tab.h".  */
+#ifndef YY_YY_Y_TAB_H_INCLUDED
+# define YY_YY_Y_TAB_H_INCLUDED
+/* Debug traces.  */
+#ifndef YYDEBUG
+# define YYDEBUG 1
 #endif
-
-
-/* Tokens.  */
+#if YYDEBUG
+extern int yydebug;
+#endif
+
+/* Token type.  */
 #ifndef YYTOKENTYPE
 # define YYTOKENTYPE
-   /* Put the tokens into the symbol table, so that GDB and other debuggers
-      know about them.  */
-   enum yytokentype {
-     TYPEDEF = 258,
-     AUTO = 259,
-     EXTERN = 260,
-     REGISTER = 261,
-     STATIC = 262,
-     INLINE = 263,
-     FORTRAN = 264,
-     CONST = 265,
-     VOLATILE = 266,
-     RESTRICT = 267,
-     FORALL = 268,
-     LVALUE = 269,
-     VOID = 270,
-     CHAR = 271,
-     SHORT = 272,
-     INT = 273,
-     LONG = 274,
-     FLOAT = 275,
-     DOUBLE = 276,
-     SIGNED = 277,
-     UNSIGNED = 278,
-     VALIST = 279,
-     BOOL = 280,
-     COMPLEX = 281,
-     IMAGINARY = 282,
-     TYPEOF = 283,
-     LABEL = 284,
-     ENUM = 285,
-     STRUCT = 286,
-     UNION = 287,
-     OTYPE = 288,
-     FTYPE = 289,
-     DTYPE = 290,
-     TRAIT = 291,
-     SIZEOF = 292,
-     OFFSETOF = 293,
-     ATTRIBUTE = 294,
-     EXTENSION = 295,
-     IF = 296,
-     ELSE = 297,
-     SWITCH = 298,
-     CASE = 299,
-     DEFAULT = 300,
-     DO = 301,
-     WHILE = 302,
-     FOR = 303,
-     BREAK = 304,
-     CONTINUE = 305,
-     GOTO = 306,
-     RETURN = 307,
-     CHOOSE = 308,
-     DISABLE = 309,
-     ENABLE = 310,
-     FALLTHRU = 311,
-     TRY = 312,
-     CATCH = 313,
-     CATCHRESUME = 314,
-     FINALLY = 315,
-     THROW = 316,
-     THROWRESUME = 317,
-     AT = 318,
-     ASM = 319,
-     ALIGNAS = 320,
-     ALIGNOF = 321,
-     ATOMIC = 322,
-     GENERIC = 323,
-     NORETURN = 324,
-     STATICASSERT = 325,
-     THREADLOCAL = 326,
-     IDENTIFIER = 327,
-     QUOTED_IDENTIFIER = 328,
-     TYPEDEFname = 329,
-     TYPEGENname = 330,
-     ATTR_IDENTIFIER = 331,
-     ATTR_TYPEDEFname = 332,
-     ATTR_TYPEGENname = 333,
-     INTEGERconstant = 334,
-     FLOATINGconstant = 335,
-     CHARACTERconstant = 336,
-     STRINGliteral = 337,
-     ZERO = 338,
-     ONE = 339,
-     ARROW = 340,
-     ICR = 341,
-     DECR = 342,
-     LS = 343,
-     RS = 344,
-     LE = 345,
-     GE = 346,
-     EQ = 347,
-     NE = 348,
-     ANDAND = 349,
-     OROR = 350,
-     ELLIPSIS = 351,
-     MULTassign = 352,
-     DIVassign = 353,
-     MODassign = 354,
-     PLUSassign = 355,
-     MINUSassign = 356,
-     LSassign = 357,
-     RSassign = 358,
-     ANDassign = 359,
-     ERassign = 360,
-     ORassign = 361,
-     ATassign = 362,
-     THEN = 363
-   };
+  enum yytokentype
+  {
+    TYPEDEF = 258,
+    AUTO = 259,
+    EXTERN = 260,
+    REGISTER = 261,
+    STATIC = 262,
+    INLINE = 263,
+    FORTRAN = 264,
+    CONST = 265,
+    VOLATILE = 266,
+    RESTRICT = 267,
+    FORALL = 268,
+    LVALUE = 269,
+    VOID = 270,
+    CHAR = 271,
+    SHORT = 272,
+    INT = 273,
+    LONG = 274,
+    FLOAT = 275,
+    DOUBLE = 276,
+    SIGNED = 277,
+    UNSIGNED = 278,
+    VALIST = 279,
+    BOOL = 280,
+    COMPLEX = 281,
+    IMAGINARY = 282,
+    TYPEOF = 283,
+    LABEL = 284,
+    ENUM = 285,
+    STRUCT = 286,
+    UNION = 287,
+    OTYPE = 288,
+    FTYPE = 289,
+    DTYPE = 290,
+    TRAIT = 291,
+    SIZEOF = 292,
+    OFFSETOF = 293,
+    ATTRIBUTE = 294,
+    EXTENSION = 295,
+    IF = 296,
+    ELSE = 297,
+    SWITCH = 298,
+    CASE = 299,
+    DEFAULT = 300,
+    DO = 301,
+    WHILE = 302,
+    FOR = 303,
+    BREAK = 304,
+    CONTINUE = 305,
+    GOTO = 306,
+    RETURN = 307,
+    CHOOSE = 308,
+    DISABLE = 309,
+    ENABLE = 310,
+    FALLTHRU = 311,
+    TRY = 312,
+    CATCH = 313,
+    CATCHRESUME = 314,
+    FINALLY = 315,
+    THROW = 316,
+    THROWRESUME = 317,
+    AT = 318,
+    ASM = 319,
+    ALIGNAS = 320,
+    ALIGNOF = 321,
+    ATOMIC = 322,
+    GENERIC = 323,
+    NORETURN = 324,
+    STATICASSERT = 325,
+    THREADLOCAL = 326,
+    IDENTIFIER = 327,
+    QUOTED_IDENTIFIER = 328,
+    TYPEDEFname = 329,
+    TYPEGENname = 330,
+    ATTR_IDENTIFIER = 331,
+    ATTR_TYPEDEFname = 332,
+    ATTR_TYPEGENname = 333,
+    INTEGERconstant = 334,
+    FLOATINGconstant = 335,
+    CHARACTERconstant = 336,
+    STRINGliteral = 337,
+    ZERO = 338,
+    ONE = 339,
+    ARROW = 340,
+    ICR = 341,
+    DECR = 342,
+    LS = 343,
+    RS = 344,
+    LE = 345,
+    GE = 346,
+    EQ = 347,
+    NE = 348,
+    ANDAND = 349,
+    OROR = 350,
+    ELLIPSIS = 351,
+    MULTassign = 352,
+    DIVassign = 353,
+    MODassign = 354,
+    PLUSassign = 355,
+    MINUSassign = 356,
+    LSassign = 357,
+    RSassign = 358,
+    ANDassign = 359,
+    ERassign = 360,
+    ORassign = 361,
+    ATassign = 362,
+    THEN = 363
+  };
 #endif
 /* Tokens.  */
@@ -339,13 +341,10 @@
 #define THEN 363
 
-
-
-
+/* Value type.  */
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-typedef union YYSTYPE
+typedef union YYSTYPE YYSTYPE;
+union YYSTYPE
 {
-
-/* Line 293 of yacc.c  */
-#line 115 "parser.yy"
+#line 115 "parser.yy" /* yacc.c:355  */
 
 	Token tok;
@@ -363,20 +362,20 @@
 	bool flag;
 
-
-
-/* Line 293 of yacc.c  */
-#line 369 "Parser/parser.cc"
-} YYSTYPE;
+#line 365 "Parser/parser.cc" /* yacc.c:355  */
+};
 # define YYSTYPE_IS_TRIVIAL 1
-# define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
 #endif
 
 
+extern YYSTYPE yylval;
+
+int yyparse (void);
+
+#endif /* !YY_YY_Y_TAB_H_INCLUDED  */
+
 /* Copy the second part of user declarations.  */
 
-
-/* Line 343 of yacc.c  */
-#line 381 "Parser/parser.cc"
+#line 380 "Parser/parser.cc" /* yacc.c:358  */
 
 #ifdef short
@@ -392,9 +391,6 @@
 #ifdef YYTYPE_INT8
 typedef YYTYPE_INT8 yytype_int8;
-#elif (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
+#else
 typedef signed char yytype_int8;
-#else
-typedef short int yytype_int8;
 #endif
 
@@ -416,6 +412,5 @@
 # elif defined size_t
 #  define YYSIZE_T size_t
-# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
+# elif ! defined YYSIZE_T
 #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
 #  define YYSIZE_T size_t
@@ -431,36 +426,65 @@
 #  if ENABLE_NLS
 #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
-#   define YY_(msgid) dgettext ("bison-runtime", msgid)
+#   define YY_(Msgid) dgettext ("bison-runtime", Msgid)
 #  endif
 # endif
 # ifndef YY_
-#  define YY_(msgid) msgid
+#  define YY_(Msgid) Msgid
 # endif
 #endif
 
+#ifndef YY_ATTRIBUTE
+# if (defined __GNUC__                                               \
+      && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__)))  \
+     || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
+#  define YY_ATTRIBUTE(Spec) __attribute__(Spec)
+# else
+#  define YY_ATTRIBUTE(Spec) /* empty */
+# endif
+#endif
+
+#ifndef YY_ATTRIBUTE_PURE
+# define YY_ATTRIBUTE_PURE   YY_ATTRIBUTE ((__pure__))
+#endif
+
+#ifndef YY_ATTRIBUTE_UNUSED
+# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
+#endif
+
+#if !defined _Noreturn \
+     && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
+# if defined _MSC_VER && 1200 <= _MSC_VER
+#  define _Noreturn __declspec (noreturn)
+# else
+#  define _Noreturn YY_ATTRIBUTE ((__noreturn__))
+# endif
+#endif
+
 /* Suppress unused-variable warnings by "using" E.  */
 #if ! defined lint || defined __GNUC__
-# define YYUSE(e) ((void) (e))
+# define YYUSE(E) ((void) (E))
 #else
-# define YYUSE(e) /* empty */
+# define YYUSE(E) /* empty */
 #endif
 
-/* Identity function, used to suppress warnings about constant conditions.  */
-#ifndef lint
-# define YYID(n) (n)
+#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
+/* Suppress an incorrect diagnostic about yylval being uninitialized.  */
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
+    _Pragma ("GCC diagnostic push") \
+    _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
+    _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
+    _Pragma ("GCC diagnostic pop")
 #else
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static int
-YYID (int yyi)
-#else
-static int
-YYID (yyi)
-    int yyi;
+# define YY_INITIAL_VALUE(Value) Value
 #endif
-{
-  return yyi;
-}
+#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END
 #endif
+#ifndef YY_INITIAL_VALUE
+# define YY_INITIAL_VALUE(Value) /* Nothing. */
+#endif
+
 
 #if ! defined yyoverflow || YYERROR_VERBOSE
@@ -481,7 +505,7 @@
 #   else
 #    define YYSTACK_ALLOC alloca
-#    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
+#    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
 #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+      /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
 #     ifndef EXIT_SUCCESS
 #      define EXIT_SUCCESS 0
@@ -493,6 +517,6 @@
 
 # ifdef YYSTACK_ALLOC
-   /* Pacify GCC's `empty if-body' warning.  */
-#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
+   /* Pacify GCC's 'empty if-body' warning.  */
+#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
 #  ifndef YYSTACK_ALLOC_MAXIMUM
     /* The OS might guarantee only one guard page at the bottom of the stack,
@@ -510,5 +534,5 @@
 #  if (defined __cplusplus && ! defined EXIT_SUCCESS \
        && ! ((defined YYMALLOC || defined malloc) \
-	     && (defined YYFREE || defined free)))
+             && (defined YYFREE || defined free)))
 #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
 #   ifndef EXIT_SUCCESS
@@ -518,6 +542,5 @@
 #  ifndef YYMALLOC
 #   define YYMALLOC malloc
-#   if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
+#   if ! defined malloc && ! defined EXIT_SUCCESS
 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
 #   endif
@@ -525,6 +548,5 @@
 #  ifndef YYFREE
 #   define YYFREE free
-#   if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
+#   if ! defined free && ! defined EXIT_SUCCESS
 void free (void *); /* INFRINGES ON USER NAME SPACE */
 #   endif
@@ -536,5 +558,5 @@
 #if (! defined yyoverflow \
      && (! defined __cplusplus \
-	 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
+         || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
 
 /* A type that is properly aligned for any stack member.  */
@@ -561,33 +583,33 @@
    stack.  Advance YYPTR to a properly aligned location for the next
    stack.  */
-# define YYSTACK_RELOCATE(Stack_alloc, Stack)				\
-    do									\
-      {									\
-	YYSIZE_T yynewbytes;						\
-	YYCOPY (&yyptr->Stack_alloc, Stack, yysize);			\
-	Stack = &yyptr->Stack_alloc;					\
-	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
-	yyptr += yynewbytes / sizeof (*yyptr);				\
-      }									\
-    while (YYID (0))
+# define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
+    do                                                                  \
+      {                                                                 \
+        YYSIZE_T yynewbytes;                                            \
+        YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
+        Stack = &yyptr->Stack_alloc;                                    \
+        yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
+        yyptr += yynewbytes / sizeof (*yyptr);                          \
+      }                                                                 \
+    while (0)
 
 #endif
 
 #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
-/* Copy COUNT objects from FROM to TO.  The source and destination do
+/* Copy COUNT objects from SRC to DST.  The source and destination do
    not overlap.  */
 # ifndef YYCOPY
 #  if defined __GNUC__ && 1 < __GNUC__
-#   define YYCOPY(To, From, Count) \
-      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
+#   define YYCOPY(Dst, Src, Count) \
+      __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
 #  else
-#   define YYCOPY(To, From, Count)		\
-      do					\
-	{					\
-	  YYSIZE_T yyi;				\
-	  for (yyi = 0; yyi < (Count); yyi++)	\
-	    (To)[yyi] = (From)[yyi];		\
-	}					\
-      while (YYID (0))
+#   define YYCOPY(Dst, Src, Count)              \
+      do                                        \
+        {                                       \
+          YYSIZE_T yyi;                         \
+          for (yyi = 0; yyi < (Count); yyi++)   \
+            (Dst)[yyi] = (Src)[yyi];            \
+        }                                       \
+      while (0)
 #  endif
 # endif
@@ -595,25 +617,27 @@
 
 /* YYFINAL -- State number of the termination state.  */
-#define YYFINAL  251
+#define YYFINAL  250
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   10816
+#define YYLAST   10977
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  133
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  241
+#define YYNNTS  240
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  750
-/* YYNRULES -- Number of states.  */
-#define YYNSTATES  1554
-
-/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
+#define YYNRULES  749
+/* YYNSTATES -- Number of states.  */
+#define YYNSTATES  1553
+
+/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
+   by yylex, with out-of-bounds checking.  */
 #define YYUNDEFTOK  2
 #define YYMAXUTOK   363
 
-#define YYTRANSLATE(YYX)						\
+#define YYTRANSLATE(YYX)                                                \
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
 
-/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
+/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
+   as returned by yylex, without out-of-bounds checking.  */
 static const yytype_uint8 yytranslate[] =
 {
@@ -658,364 +682,5 @@
 
 #if YYDEBUG
-/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
-   YYRHS.  */
-static const yytype_uint16 yyprhs[] =
-{
-       0,     0,     3,     4,     5,     7,     9,    11,    13,    15,
-      17,    19,    21,    23,    25,    27,    29,    31,    34,    36,
-      38,    42,    46,    48,    55,    60,    64,    72,    76,    84,
-      87,    90,    98,   103,   105,   109,   110,   112,   114,   118,
-     120,   124,   132,   136,   144,   146,   148,   150,   153,   156,
-     159,   162,   165,   168,   173,   176,   181,   188,   190,   195,
-     200,   202,   204,   206,   208,   210,   212,   214,   219,   224,
-     226,   230,   234,   238,   240,   244,   248,   250,   254,   258,
-     260,   264,   268,   272,   276,   278,   282,   286,   288,   292,
-     294,   298,   300,   304,   306,   310,   312,   316,   318,   324,
-     329,   335,   337,   339,   343,   346,   347,   349,   351,   353,
-     355,   357,   359,   361,   363,   365,   367,   369,   371,   374,
-     380,   387,   395,   397,   401,   403,   407,   408,   410,   412,
-     414,   416,   418,   420,   422,   424,   426,   433,   438,   441,
-     449,   451,   455,   457,   460,   462,   465,   467,   470,   473,
-     479,   487,   493,   503,   509,   519,   521,   525,   527,   529,
-     533,   537,   540,   542,   545,   548,   549,   551,   554,   558,
-     559,   561,   564,   568,   572,   577,   578,   580,   582,   585,
-     591,   599,   606,   613,   618,   622,   627,   630,   634,   637,
-     641,   645,   649,   653,   659,   663,   667,   672,   674,   680,
-     687,   693,   700,   710,   721,   731,   742,   745,   747,   750,
-     753,   756,   758,   765,   774,   785,   798,   813,   814,   816,
-     817,   819,   821,   825,   830,   838,   839,   841,   845,   847,
-     851,   853,   855,   857,   861,   863,   865,   867,   871,   872,
-     874,   878,   883,   885,   889,   891,   893,   897,   901,   905,
-     909,   913,   916,   920,   927,   931,   935,   940,   942,   945,
-     948,   952,   958,   967,   975,   983,   989,   999,  1002,  1005,
-    1011,  1015,  1021,  1026,  1030,  1035,  1040,  1048,  1052,  1056,
-    1060,  1064,  1069,  1076,  1078,  1080,  1082,  1084,  1086,  1088,
-    1090,  1092,  1093,  1095,  1097,  1100,  1102,  1104,  1106,  1108,
-    1110,  1112,  1114,  1115,  1121,  1123,  1126,  1130,  1132,  1135,
-    1137,  1139,  1141,  1143,  1145,  1147,  1149,  1151,  1153,  1155,
-    1157,  1159,  1161,  1163,  1165,  1167,  1169,  1171,  1173,  1175,
-    1177,  1179,  1181,  1184,  1187,  1191,  1195,  1197,  1201,  1203,
-    1206,  1209,  1212,  1217,  1222,  1227,  1232,  1234,  1237,  1240,
-    1244,  1246,  1249,  1252,  1254,  1257,  1260,  1264,  1266,  1269,
-    1272,  1274,  1276,  1281,  1284,  1285,  1292,  1300,  1303,  1306,
-    1309,  1310,  1313,  1316,  1320,  1323,  1327,  1329,  1332,  1336,
-    1339,  1342,  1347,  1348,  1350,  1353,  1356,  1358,  1359,  1361,
-    1364,  1367,  1373,  1376,  1377,  1385,  1388,  1393,  1394,  1397,
-    1398,  1400,  1402,  1404,  1410,  1416,  1422,  1424,  1430,  1436,
-    1446,  1448,  1454,  1455,  1457,  1459,  1465,  1467,  1469,  1475,
-    1481,  1483,  1487,  1491,  1496,  1498,  1500,  1502,  1504,  1507,
-    1509,  1513,  1517,  1519,  1522,  1524,  1528,  1530,  1532,  1534,
-    1536,  1538,  1540,  1542,  1544,  1546,  1548,  1550,  1553,  1555,
-    1557,  1559,  1562,  1563,  1566,  1569,  1571,  1576,  1577,  1579,
-    1582,  1586,  1591,  1594,  1597,  1599,  1602,  1605,  1611,  1617,
-    1625,  1632,  1634,  1637,  1640,  1644,  1646,  1649,  1652,  1657,
-    1660,  1665,  1666,  1671,  1674,  1676,  1678,  1680,  1681,  1684,
-    1690,  1696,  1710,  1712,  1714,  1718,  1722,  1725,  1729,  1733,
-    1736,  1741,  1743,  1750,  1760,  1761,  1773,  1775,  1779,  1783,
-    1787,  1789,  1791,  1797,  1800,  1806,  1807,  1809,  1811,  1815,
-    1816,  1818,  1820,  1822,  1824,  1825,  1832,  1835,  1837,  1840,
-    1845,  1848,  1852,  1856,  1860,  1865,  1871,  1877,  1883,  1890,
-    1892,  1894,  1896,  1900,  1901,  1907,  1908,  1910,  1912,  1915,
-    1922,  1924,  1928,  1929,  1931,  1936,  1938,  1940,  1942,  1944,
-    1947,  1949,  1952,  1955,  1957,  1961,  1964,  1968,  1972,  1975,
-    1980,  1985,  1989,  1998,  2002,  2005,  2007,  2010,  2017,  2026,
-    2030,  2033,  2037,  2041,  2046,  2051,  2055,  2057,  2059,  2061,
-    2066,  2073,  2077,  2080,  2084,  2088,  2093,  2098,  2102,  2105,
-    2107,  2110,  2113,  2115,  2119,  2122,  2126,  2130,  2133,  2138,
-    2143,  2147,  2154,  2163,  2167,  2170,  2172,  2175,  2178,  2181,
-    2185,  2189,  2192,  2197,  2202,  2206,  2213,  2222,  2226,  2229,
-    2231,  2234,  2237,  2239,  2241,  2244,  2248,  2252,  2255,  2260,
-    2267,  2276,  2278,  2281,  2284,  2286,  2289,  2292,  2296,  2300,
-    2302,  2307,  2312,  2316,  2322,  2331,  2335,  2338,  2342,  2344,
-    2350,  2356,  2363,  2370,  2372,  2375,  2378,  2380,  2383,  2386,
-    2390,  2394,  2396,  2401,  2406,  2410,  2416,  2425,  2429,  2431,
-    2434,  2436,  2439,  2446,  2452,  2459,  2467,  2475,  2477,  2480,
-    2483,  2485,  2488,  2491,  2495,  2499,  2501,  2506,  2511,  2515,
-    2524,  2528,  2530,  2532,  2535,  2537,  2539,  2542,  2546,  2549,
-    2553,  2556,  2560,  2564,  2567,  2572,  2576,  2579,  2583,  2586,
-    2591,  2595,  2598,  2605,  2612,  2619,  2627,  2629,  2632,  2634,
-    2636,  2638,  2641,  2645,  2648,  2652,  2655,  2659,  2663,  2668,
-    2671,  2675,  2680,  2683,  2689,  2695,  2702,  2709,  2710,  2712,
-    2713
-};
-
-/* YYRHS -- A `-1'-separated list of the rules' RHS.  */
-static const yytype_int16 yyrhs[] =
-{
-     302,     0,    -1,    -1,    -1,    79,    -1,    80,    -1,    81,
-      -1,    72,    -1,    76,    -1,   140,    -1,    72,    -1,    76,
-      -1,    72,    -1,   140,    -1,    83,    -1,    84,    -1,    82,
-      -1,   141,    82,    -1,    72,    -1,   140,    -1,   109,   169,
-     110,    -1,   109,   173,   110,    -1,   142,    -1,   143,   111,
-     134,   164,   135,   112,    -1,   143,   109,   144,   110,    -1,
-     143,   113,   139,    -1,   143,   113,   111,   134,   146,   135,
-     112,    -1,   143,    85,   139,    -1,   143,    85,   111,   134,
-     146,   135,   112,    -1,   143,    86,    -1,   143,    87,    -1,
-     109,   275,   110,   114,   279,   372,   115,    -1,   143,   114,
-     144,   115,    -1,   145,    -1,   144,   116,   145,    -1,    -1,
-     164,    -1,   147,    -1,   146,   116,   147,    -1,   139,    -1,
-     139,   113,   147,    -1,   139,   113,   111,   134,   146,   135,
-     112,    -1,   139,    85,   147,    -1,   139,    85,   111,   134,
-     146,   135,   112,    -1,   143,    -1,   136,    -1,   141,    -1,
-      40,   151,    -1,   149,   151,    -1,   150,   151,    -1,    86,
-     148,    -1,    87,   148,    -1,    37,   148,    -1,    37,   109,
-     275,   110,    -1,    66,   148,    -1,    66,   109,   275,   110,
-      -1,    38,   109,   275,   116,   139,   110,    -1,    76,    -1,
-      76,   109,   145,   110,    -1,    76,   109,   276,   110,    -1,
-     117,    -1,   118,    -1,   119,    -1,   120,    -1,   121,    -1,
-     122,    -1,   148,    -1,   109,   275,   110,   151,    -1,   109,
-     275,   110,   167,    -1,   151,    -1,   152,   117,   151,    -1,
-     152,   123,   151,    -1,   152,   124,   151,    -1,   152,    -1,
-     153,   119,   152,    -1,   153,   120,   152,    -1,   153,    -1,
-     154,    88,   153,    -1,   154,    89,   153,    -1,   154,    -1,
-     155,   125,   154,    -1,   155,   126,   154,    -1,   155,    90,
-     154,    -1,   155,    91,   154,    -1,   155,    -1,   156,    92,
-     155,    -1,   156,    93,   155,    -1,   156,    -1,   157,   118,
-     156,    -1,   157,    -1,   158,   127,   157,    -1,   158,    -1,
-     159,   128,   158,    -1,   159,    -1,   160,    94,   159,    -1,
-     160,    -1,   161,    95,   160,    -1,   161,    -1,   161,   129,
-     169,   130,   162,    -1,   161,   129,   130,   162,    -1,   161,
-     129,   169,   130,   167,    -1,   162,    -1,   162,    -1,   148,
-     166,   164,    -1,   167,   373,    -1,    -1,   164,    -1,   131,
-      -1,    97,    -1,    98,    -1,    99,    -1,   100,    -1,   101,
-      -1,   102,    -1,   103,    -1,   104,    -1,   105,    -1,   106,
-      -1,   111,   112,    -1,   111,   134,   164,   135,   112,    -1,
-     111,   134,   116,   168,   135,   112,    -1,   111,   134,   164,
-     116,   168,   135,   112,    -1,   165,    -1,   168,   116,   165,
-      -1,   164,    -1,   169,   116,   164,    -1,    -1,   169,    -1,
-     172,    -1,   173,    -1,   177,    -1,   178,    -1,   190,    -1,
-     192,    -1,   193,    -1,   198,    -1,   127,   143,   114,   144,
-     115,   132,    -1,    72,   130,   312,   171,    -1,   114,   115,
-      -1,   114,   134,   134,   209,   174,   135,   115,    -1,   175,
-      -1,   174,   134,   175,    -1,   212,    -1,    40,   212,    -1,
-     308,    -1,   171,   135,    -1,   171,    -1,   176,   171,    -1,
-     170,   132,    -1,    41,   109,   169,   110,   171,    -1,    41,
-     109,   169,   110,   171,    42,   171,    -1,    43,   109,   169,
-     110,   183,    -1,    43,   109,   169,   110,   114,   134,   205,
-     184,   115,    -1,    53,   109,   169,   110,   183,    -1,    53,
-     109,   169,   110,   114,   134,   205,   186,   115,    -1,   163,
-      -1,   163,    96,   163,    -1,   310,    -1,   179,    -1,   180,
-     116,   179,    -1,    44,   180,   130,    -1,    45,   130,    -1,
-     181,    -1,   182,   181,    -1,   182,   171,    -1,    -1,   185,
-      -1,   182,   176,    -1,   185,   182,   176,    -1,    -1,   187,
-      -1,   182,   189,    -1,   182,   176,   188,    -1,   187,   182,
-     189,    -1,   187,   182,   176,   188,    -1,    -1,   189,    -1,
-      56,    -1,    56,   132,    -1,    47,   109,   169,   110,   171,
-      -1,    46,   171,    47,   109,   169,   110,   132,    -1,    48,
-     109,   134,   191,   110,   171,    -1,   170,   135,   132,   170,
-     132,   170,    -1,   212,   170,   132,   170,    -1,    51,    72,
-     132,    -1,    51,   117,   169,   132,    -1,    50,   132,    -1,
-      50,    72,   132,    -1,    49,   132,    -1,    49,    72,   132,
-      -1,    52,   170,   132,    -1,    61,   165,   132,    -1,    62,
-     165,   132,    -1,    62,   165,    63,   164,   132,    -1,    57,
-     173,   194,    -1,    57,   173,   196,    -1,    57,   173,   194,
-     196,    -1,   195,    -1,    58,   109,    96,   110,   173,    -1,
-     195,    58,   109,    96,   110,   173,    -1,    59,   109,    96,
-     110,   173,    -1,   195,    59,   109,    96,   110,   173,    -1,
-      58,   109,   134,   134,   197,   135,   110,   173,   135,    -1,
-     195,    58,   109,   134,   134,   197,   135,   110,   173,   135,
-      -1,    59,   109,   134,   134,   197,   135,   110,   173,   135,
-      -1,   195,    59,   109,   134,   134,   197,   135,   110,   173,
-     135,    -1,    60,   173,    -1,   225,    -1,   225,   309,    -1,
-     225,   357,    -1,   366,   139,    -1,   366,    -1,    64,   199,
-     109,   141,   110,   132,    -1,    64,   199,   109,   141,   130,
-     200,   110,   132,    -1,    64,   199,   109,   141,   130,   200,
-     130,   200,   110,   132,    -1,    64,   199,   109,   141,   130,
-     200,   130,   200,   130,   203,   110,   132,    -1,    64,   199,
-      51,   109,   141,   130,   130,   200,   130,   203,   130,   204,
-     110,   132,    -1,    -1,    11,    -1,    -1,   201,    -1,   202,
-      -1,   201,   116,   202,    -1,   141,   109,   163,   110,    -1,
-     111,   163,   112,   141,   109,   163,   110,    -1,    -1,   141,
-      -1,   203,   116,   141,    -1,   139,    -1,   204,   116,   139,
-      -1,   135,    -1,   206,    -1,   212,    -1,   206,   134,   212,
-      -1,   135,    -1,   208,    -1,   222,    -1,   208,   134,   222,
-      -1,    -1,   210,    -1,    29,   211,   132,    -1,   210,    29,
-     211,   132,    -1,   274,    -1,   211,   116,   274,    -1,   213,
-      -1,   222,    -1,   214,   135,   132,    -1,   219,   135,   132,
-      -1,   216,   135,   132,    -1,   293,   135,   132,    -1,   296,
-     135,   132,    -1,   215,   277,    -1,   231,   215,   277,    -1,
-     214,   135,   116,   134,   272,   277,    -1,   367,   272,   311,
-      -1,   370,   272,   311,    -1,   227,   370,   272,   311,    -1,
-     217,    -1,   227,   217,    -1,   231,   217,    -1,   231,   227,
-     217,    -1,   216,   135,   116,   134,   272,    -1,   111,   112,
-     272,   109,   134,   260,   135,   110,    -1,   370,   272,   109,
-     134,   260,   135,   110,    -1,   218,   272,   109,   134,   260,
-     135,   110,    -1,   111,   134,   262,   135,   112,    -1,   111,
-     134,   262,   135,   116,   134,   263,   135,   112,    -1,     3,
-     215,    -1,     3,   217,    -1,   219,   135,   116,   134,   139,
-      -1,     3,   225,   309,    -1,   220,   135,   116,   134,   309,
-      -1,   227,     3,   225,   309,    -1,   225,     3,   309,    -1,
-     225,     3,   227,   309,    -1,     3,   139,   131,   164,    -1,
-     221,   135,   116,   134,   139,   131,   164,    -1,   223,   135,
-     132,    -1,   220,   135,   132,    -1,   221,   135,   132,    -1,
-     240,   135,   132,    -1,   224,   309,   311,   277,    -1,   223,
-     116,   312,   309,   311,   277,    -1,   236,    -1,   240,    -1,
-     242,    -1,   283,    -1,   237,    -1,   241,    -1,   243,    -1,
-     284,    -1,    -1,   227,    -1,   228,    -1,   227,   228,    -1,
-     229,    -1,   314,    -1,    10,    -1,    12,    -1,    11,    -1,
-      14,    -1,    67,    -1,    -1,    13,   109,   230,   286,   110,
-      -1,   232,    -1,   227,   232,    -1,   231,   227,   232,    -1,
-     233,    -1,   232,   233,    -1,   234,    -1,     5,    -1,     7,
-      -1,     4,    -1,     6,    -1,     8,    -1,     9,    -1,    69,
-      -1,    71,    -1,    16,    -1,    21,    -1,    20,    -1,    18,
-      -1,    19,    -1,    17,    -1,    22,    -1,    23,    -1,    15,
-      -1,    25,    -1,    26,    -1,    27,    -1,    24,    -1,   237,
-      -1,   231,   237,    -1,   236,   233,    -1,   236,   233,   227,
-      -1,   236,   233,   237,    -1,   238,    -1,   226,   239,   226,
-      -1,   235,    -1,   227,   235,    -1,   238,   228,    -1,   238,
-     235,    -1,    28,   109,   276,   110,    -1,    28,   109,   169,
-     110,    -1,    78,   109,   276,   110,    -1,    78,   109,   169,
-     110,    -1,   241,    -1,   231,   241,    -1,   240,   233,    -1,
-     240,   233,   227,    -1,   244,    -1,   227,   244,    -1,   241,
-     228,    -1,   243,    -1,   231,   243,    -1,   242,   233,    -1,
-     242,   233,   227,    -1,    74,    -1,   227,    74,    -1,   243,
-     228,    -1,   245,    -1,   256,    -1,   247,   114,   248,   115,
-      -1,   247,   274,    -1,    -1,   247,   274,   246,   114,   248,
-     115,    -1,   247,   109,   292,   110,   114,   248,   115,    -1,
-     247,   285,    -1,    31,   312,    -1,    32,   312,    -1,    -1,
-     248,   249,    -1,   250,   132,    -1,    40,   250,   132,    -1,
-     251,   132,    -1,    40,   251,   132,    -1,   366,    -1,   366,
-     274,    -1,   250,   116,   274,    -1,   250,   116,    -1,   225,
-     252,    -1,   251,   116,   312,   252,    -1,    -1,   254,    -1,
-     318,   253,    -1,   331,   253,    -1,   357,    -1,    -1,   254,
-      -1,   130,   163,    -1,    30,   312,    -1,   255,   114,   258,
-     372,   115,    -1,   255,   274,    -1,    -1,   255,   274,   257,
-     114,   258,   372,   115,    -1,   274,   259,    -1,   258,   116,
-     274,   259,    -1,    -1,   131,   163,    -1,    -1,   261,    -1,
-     263,    -1,   262,    -1,   262,   135,   116,   134,   263,    -1,
-     263,   135,   116,   134,    96,    -1,   262,   135,   116,   134,
-      96,    -1,   267,    -1,   263,   135,   116,   134,   267,    -1,
-     262,   135,   116,   134,   267,    -1,   262,   135,   116,   134,
-     263,   135,   116,   134,   267,    -1,   268,    -1,   263,   135,
-     116,   134,   268,    -1,    -1,   265,    -1,   266,    -1,   266,
-     135,   116,   134,    96,    -1,   270,    -1,   269,    -1,   266,
-     135,   116,   134,   270,    -1,   266,   135,   116,   134,   269,
-      -1,   269,    -1,   362,   272,   373,    -1,   370,   272,   373,
-      -1,   227,   370,   272,   373,    -1,   217,    -1,   270,    -1,
-     362,    -1,   370,    -1,   227,   370,    -1,   371,    -1,   224,
-     336,   373,    -1,   224,   340,   373,    -1,   224,    -1,   224,
-     351,    -1,   139,    -1,   271,   116,   139,    -1,   137,    -1,
-      74,    -1,    75,    -1,   138,    -1,    74,    -1,    75,    -1,
-     139,    -1,    74,    -1,    75,    -1,   366,    -1,   225,    -1,
-     225,   357,    -1,   366,    -1,   371,    -1,   225,    -1,   225,
-     345,    -1,    -1,   131,   278,    -1,   107,   278,    -1,   164,
-      -1,   114,   279,   372,   115,    -1,    -1,   278,    -1,   280,
-     278,    -1,   279,   116,   278,    -1,   279,   116,   280,   278,
-      -1,   281,   130,    -1,   274,   130,    -1,   282,    -1,   281,
-     282,    -1,   113,   274,    -1,   111,   134,   164,   135,   112,
-      -1,   111,   134,   310,   135,   112,    -1,   111,   134,   163,
-      96,   163,   135,   112,    -1,   113,   111,   134,   146,   135,
-     112,    -1,   284,    -1,   231,   284,    -1,   283,   233,    -1,
-     283,   233,   227,    -1,   285,    -1,   227,   285,    -1,   284,
-     228,    -1,    75,   109,   292,   110,    -1,   287,   373,    -1,
-     286,   116,   287,   373,    -1,    -1,   289,   274,   288,   290,
-      -1,   225,   336,    -1,    33,    -1,    35,    -1,    34,    -1,
-      -1,   290,   291,    -1,   128,   274,   109,   292,   110,    -1,
-     128,   114,   134,   298,   115,    -1,   128,   109,   134,   286,
-     135,   110,   114,   134,   298,   115,   109,   292,   110,    -1,
-     276,    -1,   164,    -1,   292,   116,   276,    -1,   292,   116,
-     164,    -1,    33,   294,    -1,   232,    33,   294,    -1,   293,
-     116,   294,    -1,   295,   290,    -1,   295,   290,   131,   276,
-      -1,   274,    -1,   273,   109,   134,   286,   135,   110,    -1,
-      36,   274,   109,   134,   286,   135,   110,   114,   115,    -1,
-      -1,    36,   274,   109,   134,   286,   135,   110,   114,   297,
-     298,   115,    -1,   299,    -1,   298,   134,   299,    -1,   300,
-     135,   132,    -1,   301,   135,   132,    -1,   215,    -1,   217,
-      -1,   300,   135,   116,   134,   272,    -1,   225,   309,    -1,
-     301,   135,   116,   134,   309,    -1,    -1,   303,    -1,   305,
-      -1,   303,   134,   305,    -1,    -1,   303,    -1,   212,    -1,
-     307,    -1,   198,    -1,    -1,     5,    82,   306,   114,   304,
-     115,    -1,    40,   305,    -1,   308,    -1,   323,   173,    -1,
-     327,   134,   207,   173,    -1,   216,   173,    -1,   224,   323,
-     173,    -1,   227,   323,   173,    -1,   231,   323,   173,    -1,
-     231,   227,   323,   173,    -1,   224,   327,   134,   207,   173,
-      -1,   227,   327,   134,   207,   173,    -1,   231,   327,   134,
-     207,   173,    -1,   231,   227,   327,   134,   207,   173,    -1,
-     318,    -1,   331,    -1,   323,    -1,   163,   122,   163,    -1,
-      -1,    64,   109,   141,   110,   312,    -1,    -1,   313,    -1,
-     314,    -1,   313,   314,    -1,    39,   109,   109,   315,   110,
-     110,    -1,   316,    -1,   315,   116,   316,    -1,    -1,   317,
-      -1,   317,   109,   170,   110,    -1,   272,    -1,   234,    -1,
-     235,    -1,   228,    -1,   319,   312,    -1,   320,    -1,   321,
-     312,    -1,   322,   312,    -1,   137,    -1,   109,   319,   110,
-      -1,   149,   318,    -1,   149,   227,   318,    -1,   109,   320,
-     110,    -1,   319,   349,    -1,   109,   320,   110,   349,    -1,
-     109,   321,   110,   350,    -1,   109,   321,   110,    -1,   109,
-     320,   110,   109,   134,   264,   135,   110,    -1,   109,   322,
-     110,    -1,   324,   312,    -1,   325,    -1,   326,   312,    -1,
-     319,   109,   134,   264,   135,   110,    -1,   109,   325,   110,
-     109,   134,   264,   135,   110,    -1,   109,   324,   110,    -1,
-     149,   323,    -1,   149,   227,   323,    -1,   109,   325,   110,
-      -1,   109,   325,   110,   349,    -1,   109,   326,   110,   350,
-      -1,   109,   326,   110,    -1,   328,    -1,   329,    -1,   330,
-      -1,   319,   109,   271,   110,    -1,   109,   329,   110,   109,
-     271,   110,    -1,   109,   328,   110,    -1,   149,   327,    -1,
-     149,   227,   327,    -1,   109,   329,   110,    -1,   109,   329,
-     110,   349,    -1,   109,   330,   110,   350,    -1,   109,   330,
-     110,    -1,   332,   312,    -1,   333,    -1,   334,   312,    -1,
-     335,   312,    -1,   341,    -1,   109,   332,   110,    -1,   149,
-     331,    -1,   149,   227,   331,    -1,   109,   333,   110,    -1,
-     332,   349,    -1,   109,   333,   110,   349,    -1,   109,   334,
-     110,   350,    -1,   109,   334,   110,    -1,   332,   109,   134,
-     264,   135,   110,    -1,   109,   333,   110,   109,   134,   264,
-     135,   110,    -1,   109,   335,   110,    -1,   319,   312,    -1,
-     337,    -1,   338,   312,    -1,   339,   312,    -1,   149,   336,
-      -1,   149,   227,   336,    -1,   109,   337,   110,    -1,   319,
-     355,    -1,   109,   337,   110,   349,    -1,   109,   338,   110,
-     350,    -1,   109,   338,   110,    -1,   319,   109,   134,   264,
-     135,   110,    -1,   109,   337,   110,   109,   134,   264,   135,
-     110,    -1,   109,   339,   110,    -1,   341,   312,    -1,   342,
-      -1,   343,   312,    -1,   344,   312,    -1,    74,    -1,    75,
-      -1,   149,   340,    -1,   149,   227,   340,    -1,   109,   342,
-     110,    -1,   341,   355,    -1,   109,   342,   110,   355,    -1,
-     341,   109,   134,   264,   135,   110,    -1,   109,   342,   110,
-     109,   134,   264,   135,   110,    -1,   346,    -1,   347,   312,
-      -1,   348,   312,    -1,   149,    -1,   149,   227,    -1,   149,
-     345,    -1,   149,   227,   345,    -1,   109,   346,   110,    -1,
-     349,    -1,   109,   346,   110,   349,    -1,   109,   347,   110,
-     350,    -1,   109,   347,   110,    -1,   109,   134,   264,   135,
-     110,    -1,   109,   346,   110,   109,   134,   264,   135,   110,
-      -1,   109,   348,   110,    -1,   111,   112,    -1,   111,   112,
-     350,    -1,   350,    -1,   111,   134,   164,   135,   112,    -1,
-     111,   134,   117,   135,   112,    -1,   350,   111,   134,   164,
-     135,   112,    -1,   350,   111,   134,   117,   135,   112,    -1,
-     352,    -1,   353,   312,    -1,   354,   312,    -1,   149,    -1,
-     149,   227,    -1,   149,   351,    -1,   149,   227,   351,    -1,
-     109,   352,   110,    -1,   355,    -1,   109,   352,   110,   355,
-      -1,   109,   353,   110,   350,    -1,   109,   353,   110,    -1,
-     109,   134,   264,   135,   110,    -1,   109,   352,   110,   109,
-     134,   264,   135,   110,    -1,   109,   354,   110,    -1,   356,
-      -1,   356,   350,    -1,   350,    -1,   111,   112,    -1,   111,
-     134,   227,   117,   135,   112,    -1,   111,   134,   227,   135,
-     112,    -1,   111,   134,   227,   164,   135,   112,    -1,   111,
-     134,     7,   226,   164,   135,   112,    -1,   111,   134,   227,
-       7,   164,   135,   112,    -1,   358,    -1,   359,   312,    -1,
-     360,   312,    -1,   149,    -1,   149,   227,    -1,   149,   357,
-      -1,   149,   227,   357,    -1,   109,   358,   110,    -1,   349,
-      -1,   109,   358,   110,   349,    -1,   109,   359,   110,   350,
-      -1,   109,   359,   110,    -1,   109,   358,   110,   109,   134,
-     264,   135,   110,    -1,   109,   360,   110,    -1,   362,    -1,
-     370,    -1,   227,   370,    -1,   363,    -1,   364,    -1,   149,
-     225,    -1,   227,   149,   225,    -1,   149,   371,    -1,   227,
-     149,   371,    -1,   149,   361,    -1,   227,   149,   361,    -1,
-     111,   112,   225,    -1,   365,   225,    -1,   111,   112,   350,
-     225,    -1,   365,   350,   225,    -1,   350,   225,    -1,   111,
-     112,   363,    -1,   365,   363,    -1,   111,   112,   350,   363,
-      -1,   365,   350,   363,    -1,   350,   363,    -1,   111,   134,
-     227,   117,   135,   112,    -1,   111,   134,   227,   164,   135,
-     112,    -1,   111,   134,   231,   164,   135,   112,    -1,   111,
-     134,   231,   227,   164,   135,   112,    -1,   370,    -1,   227,
-     370,    -1,   367,    -1,   368,    -1,   369,    -1,   149,   225,
-      -1,   227,   149,   225,    -1,   149,   371,    -1,   227,   149,
-     371,    -1,   149,   366,    -1,   227,   149,   366,    -1,   111,
-     112,   225,    -1,   111,   112,   350,   225,    -1,   350,   225,
-      -1,   111,   112,   368,    -1,   111,   112,   350,   368,    -1,
-     350,   368,    -1,   111,   134,   263,   135,   112,    -1,   111,
-     112,   109,   260,   110,    -1,   370,   109,   134,   260,   135,
-     110,    -1,   218,   109,   134,   260,   135,   110,    -1,    -1,
-     116,    -1,    -1,   131,   164,    -1
-};
-
-/* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
+  /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
@@ -1051,53 +716,52 @@
     1258,  1263,  1264,  1273,  1274,  1279,  1280,  1285,  1287,  1289,
     1291,  1293,  1296,  1295,  1307,  1308,  1310,  1320,  1321,  1326,
-    1330,  1332,  1334,  1336,  1338,  1340,  1342,  1344,  1349,  1351,
-    1353,  1355,  1357,  1359,  1361,  1363,  1365,  1367,  1369,  1371,
-    1373,  1379,  1380,  1382,  1384,  1386,  1391,  1392,  1398,  1399,
-    1401,  1403,  1408,  1410,  1412,  1414,  1419,  1420,  1422,  1424,
-    1429,  1430,  1432,  1437,  1438,  1440,  1442,  1447,  1449,  1451,
-    1456,  1457,  1461,  1463,  1469,  1468,  1472,  1474,  1479,  1481,
-    1487,  1488,  1493,  1494,  1496,  1497,  1506,  1507,  1509,  1511,
-    1516,  1518,  1524,  1525,  1527,  1530,  1533,  1538,  1539,  1544,
-    1549,  1553,  1555,  1561,  1560,  1567,  1569,  1575,  1576,  1584,
-    1585,  1589,  1590,  1591,  1593,  1595,  1602,  1603,  1605,  1607,
-    1612,  1613,  1619,  1620,  1624,  1625,  1630,  1631,  1632,  1634,
-    1642,  1643,  1645,  1648,  1650,  1654,  1655,  1656,  1658,  1660,
-    1664,  1669,  1677,  1678,  1687,  1689,  1694,  1695,  1696,  1700,
-    1701,  1702,  1706,  1707,  1708,  1712,  1713,  1714,  1719,  1720,
-    1721,  1722,  1728,  1729,  1731,  1736,  1737,  1742,  1743,  1744,
-    1745,  1746,  1761,  1762,  1767,  1768,  1774,  1776,  1779,  1781,
-    1783,  1806,  1807,  1809,  1811,  1816,  1817,  1819,  1824,  1829,
-    1830,  1836,  1835,  1839,  1843,  1845,  1847,  1853,  1854,  1859,
-    1864,  1866,  1871,  1873,  1874,  1876,  1881,  1883,  1885,  1890,
-    1892,  1897,  1902,  1910,  1916,  1915,  1929,  1930,  1935,  1936,
-    1940,  1945,  1950,  1958,  1963,  1974,  1975,  1986,  1987,  1993,
-    1994,  1998,  1999,  2000,  2003,  2002,  2013,  2022,  2028,  2034,
-    2043,  2049,  2055,  2061,  2067,  2075,  2081,  2089,  2095,  2104,
-    2105,  2106,  2110,  2114,  2116,  2121,  2122,  2126,  2127,  2132,
-    2138,  2139,  2142,  2144,  2145,  2149,  2150,  2151,  2152,  2186,
-    2188,  2189,  2191,  2196,  2201,  2206,  2208,  2210,  2215,  2217,
-    2219,  2221,  2226,  2228,  2237,  2239,  2240,  2245,  2247,  2249,
-    2254,  2256,  2258,  2263,  2265,  2267,  2276,  2277,  2278,  2282,
-    2284,  2286,  2291,  2293,  2295,  2300,  2302,  2304,  2319,  2321,
-    2322,  2324,  2329,  2330,  2335,  2337,  2339,  2344,  2346,  2348,
-    2350,  2355,  2357,  2359,  2369,  2371,  2372,  2374,  2379,  2381,
-    2383,  2388,  2390,  2392,  2394,  2399,  2401,  2403,  2434,  2436,
-    2437,  2439,  2444,  2449,  2457,  2459,  2461,  2466,  2468,  2473,
-    2475,  2489,  2490,  2492,  2497,  2499,  2501,  2503,  2505,  2510,
-    2511,  2513,  2515,  2520,  2522,  2524,  2530,  2532,  2534,  2538,
-    2540,  2542,  2544,  2558,  2559,  2561,  2566,  2568,  2570,  2572,
-    2574,  2579,  2580,  2582,  2584,  2589,  2591,  2593,  2599,  2600,
-    2602,  2611,  2614,  2616,  2619,  2621,  2623,  2636,  2637,  2639,
-    2644,  2646,  2648,  2650,  2652,  2657,  2658,  2660,  2662,  2667,
-    2669,  2677,  2678,  2679,  2684,  2685,  2689,  2691,  2693,  2695,
-    2697,  2699,  2706,  2708,  2710,  2712,  2714,  2716,  2718,  2720,
-    2722,  2724,  2729,  2731,  2733,  2738,  2764,  2765,  2767,  2771,
-    2772,  2776,  2778,  2780,  2782,  2784,  2786,  2793,  2795,  2797,
-    2799,  2801,  2803,  2808,  2813,  2815,  2817,  2835,  2837,  2842,
-    2843
+    1328,  1330,  1332,  1334,  1336,  1338,  1340,  1345,  1347,  1349,
+    1351,  1353,  1355,  1357,  1359,  1361,  1363,  1365,  1367,  1369,
+    1375,  1376,  1378,  1380,  1382,  1387,  1388,  1394,  1395,  1397,
+    1399,  1404,  1406,  1408,  1410,  1415,  1416,  1418,  1420,  1425,
+    1426,  1428,  1433,  1434,  1436,  1438,  1443,  1445,  1447,  1452,
+    1453,  1457,  1459,  1465,  1464,  1468,  1470,  1475,  1477,  1483,
+    1484,  1489,  1490,  1492,  1493,  1502,  1503,  1505,  1507,  1512,
+    1514,  1520,  1521,  1523,  1526,  1529,  1534,  1535,  1540,  1545,
+    1549,  1551,  1557,  1556,  1563,  1565,  1571,  1572,  1580,  1581,
+    1585,  1586,  1587,  1589,  1591,  1598,  1599,  1601,  1603,  1608,
+    1609,  1615,  1616,  1620,  1621,  1626,  1627,  1628,  1630,  1638,
+    1639,  1641,  1644,  1646,  1650,  1651,  1652,  1654,  1656,  1660,
+    1665,  1673,  1674,  1683,  1685,  1690,  1691,  1692,  1696,  1697,
+    1698,  1702,  1703,  1704,  1708,  1709,  1710,  1715,  1716,  1717,
+    1718,  1724,  1725,  1727,  1732,  1733,  1738,  1739,  1740,  1741,
+    1742,  1757,  1758,  1763,  1764,  1770,  1772,  1775,  1777,  1779,
+    1802,  1803,  1805,  1807,  1812,  1813,  1815,  1820,  1825,  1826,
+    1832,  1831,  1835,  1839,  1841,  1843,  1849,  1850,  1855,  1860,
+    1862,  1867,  1869,  1870,  1872,  1877,  1879,  1881,  1886,  1888,
+    1893,  1898,  1906,  1912,  1911,  1925,  1926,  1931,  1932,  1936,
+    1941,  1946,  1954,  1959,  1970,  1971,  1976,  1977,  1983,  1984,
+    1988,  1989,  1990,  1993,  1992,  2003,  2012,  2018,  2024,  2033,
+    2039,  2045,  2051,  2057,  2065,  2071,  2079,  2085,  2094,  2095,
+    2096,  2100,  2104,  2106,  2111,  2112,  2116,  2117,  2122,  2128,
+    2129,  2132,  2134,  2135,  2139,  2140,  2141,  2142,  2176,  2178,
+    2179,  2181,  2186,  2191,  2196,  2198,  2200,  2205,  2207,  2209,
+    2211,  2216,  2218,  2227,  2229,  2230,  2235,  2237,  2239,  2244,
+    2246,  2248,  2253,  2255,  2257,  2266,  2267,  2268,  2272,  2274,
+    2276,  2281,  2283,  2285,  2290,  2292,  2294,  2309,  2311,  2312,
+    2314,  2319,  2320,  2325,  2327,  2329,  2334,  2336,  2338,  2340,
+    2345,  2347,  2349,  2359,  2361,  2362,  2364,  2369,  2371,  2373,
+    2378,  2380,  2382,  2384,  2389,  2391,  2393,  2424,  2426,  2427,
+    2429,  2434,  2439,  2447,  2449,  2451,  2456,  2458,  2463,  2465,
+    2479,  2480,  2482,  2487,  2489,  2491,  2493,  2495,  2500,  2501,
+    2503,  2505,  2510,  2512,  2514,  2520,  2522,  2524,  2528,  2530,
+    2532,  2534,  2548,  2549,  2551,  2556,  2558,  2560,  2562,  2564,
+    2569,  2570,  2572,  2574,  2579,  2581,  2583,  2589,  2590,  2592,
+    2601,  2604,  2606,  2609,  2611,  2613,  2626,  2627,  2629,  2634,
+    2636,  2638,  2640,  2642,  2647,  2648,  2650,  2652,  2657,  2659,
+    2667,  2668,  2669,  2674,  2675,  2679,  2681,  2683,  2685,  2687,
+    2689,  2696,  2698,  2700,  2702,  2704,  2706,  2708,  2710,  2712,
+    2714,  2719,  2721,  2723,  2728,  2754,  2755,  2757,  2761,  2762,
+    2766,  2768,  2770,  2772,  2774,  2776,  2783,  2785,  2787,  2789,
+    2791,  2793,  2798,  2803,  2805,  2807,  2825,  2827,  2832,  2833
 };
 #endif
 
-#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
+#if YYDEBUG || YYERROR_VERBOSE || 0
 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
@@ -1156,10 +820,9 @@
   "type_qualifier_list", "type_qualifier", "type_qualifier_name", "$@1",
   "declaration_qualifier_list", "storage_class_list", "storage_class",
-  "storage_class_name", "basic_type_name", "basic_declaration_specifier",
-  "basic_type_specifier", "direct_type_name", "indirect_type_name",
-  "sue_declaration_specifier", "sue_type_specifier",
-  "typedef_declaration_specifier", "typedef_type_specifier",
-  "elaborated_type_name", "aggregate_name", "$@2", "aggregate_key",
-  "field_declaration_list", "field_declaration",
+  "basic_type_name", "basic_declaration_specifier", "basic_type_specifier",
+  "direct_type_name", "indirect_type_name", "sue_declaration_specifier",
+  "sue_type_specifier", "typedef_declaration_specifier",
+  "typedef_type_specifier", "elaborated_type_name", "aggregate_name",
+  "$@2", "aggregate_key", "field_declaration_list", "field_declaration",
   "new_field_declaring_list", "field_declaring_list", "field_declarator",
   "bit_subrange_size_opt", "bit_subrange_size", "enum_key", "enum_name",
@@ -1208,11 +871,11 @@
   "new_abstract_declarator_no_tuple", "new_abstract_ptr",
   "new_abstract_array", "new_abstract_tuple", "new_abstract_function",
-  "comma_opt", "assignment_opt", 0
+  "comma_opt", "assignment_opt", YY_NULLPTR
 };
 #endif
 
 # ifdef YYPRINT
-/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
-   token YYLEX-NUM.  */
+/* YYTOKNUM[NUM] -- (External) token number corresponding to the
+   (internal) symbol number NUM (which must be that of a token).  */
 static const yytype_uint16 yytoknum[] =
 {
@@ -1234,5 +897,2767 @@
 # endif
 
-/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
+#define YYPACT_NINF -1317
+
+#define yypact_value_is_default(Yystate) \
+  (!!((Yystate) == (-1317)))
+
+#define YYTABLE_NINF -520
+
+#define yytable_value_is_error(Yytable_value) \
+  0
+
+  /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+     STATE-NUM.  */
+static const yytype_int16 yypact[] =
+{
+    7252,  8635, -1317,    -3, -1317, -1317, -1317, -1317, -1317, -1317,
+   -1317,    23, -1317, -1317, -1317, -1317, -1317, -1317, -1317, -1317,
+   -1317, -1317, -1317, -1317, -1317, -1317,    81,    81,    81,  1277,
+     970,   104,  7368,   277, -1317, -1317, -1317, -1317, -1317,   201,
+   -1317, -1317, -1317,  1047,   187, -1317, -1317, -1317, -1317,  5370,
+   -1317, -1317, -1317, -1317,    35,    48, -1317,  1328, -1317, -1317,
+   -1317, -1317,   235,  1663,   343,    98,  7484, -1317, -1317,  6174,
+    1066, -1317, -1317,   536,   376,  5540,   978,  1631,   536,  1775,
+   -1317, -1317,   477,   683, -1317,   536,  1892, -1317,   295, -1317,
+     422,   489, -1317, -1317, -1317, -1317,   346,    48,    81, -1317,
+      81, -1317, -1317, -1317, -1317,  9392,  1328, -1317, -1317,  1328,
+   -1317,   321, -1317,  9431, -1317, -1317,  2250,  9501, -1317,   668,
+     668,   668, -1317, -1317, -1317,    81, -1317, -1317, -1317,   373,
+     399,   410, -1317, -1317, -1317,   420, -1317, -1317, -1317, -1317,
+   -1317,   428,   450, -1317, -1317,    59,  8604,  2904,   144,   440,
+     493,   498,   531,   544,   560,  8522,  6772,   510,   580, -1317,
+    9114, -1317, -1317, -1317, -1317,   584, -1317,   153,  4280,  4280,
+   -1317,   570,   283, -1317, -1317, -1317, -1317,   596,   288,   303,
+     332,    81,   583, -1317, -1317,  1663,  2232,   648, -1317,    73,
+   -1317,    81,    81,    48, -1317, -1317,    80, -1317,    81,    81,
+   -1317,  3694,   599,   613,   668,  6565, -1317, -1317,   661,  5370,
+   -1317, -1317,   536, -1317, -1317, -1317,    48, -1317,  1328,    35,
+   -1317,  7675, -1317,   668,   668,   668,    48, -1317,  1277, -1317,
+    5446, -1317, -1317,   620,   668, -1317,   668, -1317,   201,  8604,
+   -1317,   673, -1317,   970,   692,   668, -1317,  1277,   697,   707,
+   -1317,  7368,   576, -1317, -1317, -1317,  4822, -1317, -1317,  9720,
+   -1317,   648,   165, 10347,  9501,  2250,  3694, -1317,   109, -1317,
+   -1317,  9431,  1328,   743,  7515, -1317, -1317,   306, -1317, 10675,
+     770,   800,  2676,   801, 10480, 10499, -1317,   813, -1317, -1317,
+   -1317, -1317, 10556, 10556,  8378,   795, -1317, -1317, -1317, -1317,
+   -1317, -1317,   842, -1317,   685,  1919,  8717, 10480, -1317,   652,
+     325,   507,   317,   581,   826,   820,   823,   861,   111, -1317,
+   -1317,   827,   703, -1317,   452, -1317, -1317,  2904, -1317, -1317,
+     278,   856, -1317,   636,   856,   866,   201, -1317, -1317,   872,
+    9392, -1317,   876,   887,  8830, -1317, -1317,  1020,  2049,  8093,
+    6565,   536, -1317,   536,   668,   668, -1317, -1317, -1317, -1317,
+   -1317, -1317,   668,  9392,  1328, -1317, -1317,  9540,  1233, -1317,
+    7824, -1317, -1317, -1317, -1317, -1317, -1317, -1317,   891,  4627,
+   10480, -1317, -1317, -1317, -1317, -1317, -1317, -1317, -1317, -1317,
+   -1317, -1317, -1317, -1317, -1317,  2250, -1317,   552,   901,   904,
+     912,   862,   920,   922,   924,  2232, -1317, -1317,   932,    35,
+     936, -1317, -1317,   939, -1317, -1317, -1317,  4822, -1317, -1317,
+   -1317, -1317, -1317,  3694, -1317,  8604,  8604, -1317,   668,  2250,
+    6684,  1328,  8166, -1317, -1317, -1317, -1317,  4822,   165, -1317,
+   -1317,   536,    48, -1317, -1317,  4822, -1317,  6449, -1317, -1317,
+     668,   668,   484,  8011,   938,   941,   931,   952,   668, -1317,
+   -1317, -1317, -1317,  9797, -1317,   578,  6327, -1317,    48,   955,
+   -1317,  2250, 10757, 10404, -1317, -1317, -1317, -1317,   881,  3694,
+   -1317,  8239,   648,  3545, -1317, -1317, -1317,  1641,   586,   827,
+     970,  7515,   592,  9431, -1317,  7515, -1317, -1317, -1317, -1317,
+     603, -1317,   967,   800,   215,  8378, -1317,  9570, -1317, -1317,
+    8378, -1317,  8491,  8378, -1317, -1317,   966, -1317,   617,   973,
+     839,   983, -1317, -1317,  9253,  6415, -1317,   247, -1317, -1317,
+   10347, -1317,   330, 10347, -1317, -1317, -1317, -1317, -1317, -1317,
+   -1317, -1317, -1317, -1317, -1317, 10347, -1317, -1317, 10480, 10480,
+   10480, 10480, 10480, 10480, 10480, 10480, 10480, 10480, 10480, 10480,
+   10480, 10480, 10480, 10480, 10480, 10480,  4526, 10347, -1317,   703,
+     751, -1317, -1317,    81,    81, -1317, -1317,  8604, -1317, -1317,
+     939,   576, -1317,   939, 10423, -1317, -1317, -1317,  8975,  6415,
+     968,   976, -1317,  9501, -1317, -1317,   584, -1317,   990,   769,
+     999,  3014,   124,   827, -1317,    81,    81,   827,   125, -1317,
+      81,    81,   939, -1317, -1317,    81,    81, -1317,   856,  9652,
+    1328, 10902,   151,   358,  9652, -1317,  9720, -1317,   827, -1317,
+    9392, -1317,   147,  7790,  7790,  7790,  1328, -1317,  5708,   982,
+     891,  1167,   995,   996, -1317,  1011,  4280,   230, -1317,  1103,
+    1328,  7790,   576,  2250,   576,   648,   671,   856, -1317, -1317,
+     694,   856, -1317, -1317, -1317,   800, -1317,   856,    48,  9797,
+   -1317,   621,  1024,   640,  1026, -1317,  1030,    48, -1317, -1317,
+    4822,    48,  1032,  9570,  1037, -1317,  1585, -1317,   335,   390,
+     970, -1317,   970,  1023, 10480, -1317,   970, 10902, -1317, -1317,
+    1034, -1317, -1317, -1317,   576, -1317, 10830,   887, -1317,  7790,
+     859,  8093, -1317, -1317,   584,  1025,  1036,  1641,  3247, -1317,
+   -1317,  7515, -1317, -1317,  1039, -1317, -1317,  1043, -1317,  1039,
+    1048, 10675, 10347,    67,  1027,   133,  1053,  1061,  1068,  1069,
+   -1317,  1072,  1074,  9362,  6534, -1317, 10347, -1317,   839,  2140,
+   -1317, -1317, -1317,    81,    81, 10290, 10347,  1070, -1317, -1317,
+     675, -1317, 10347, -1317, -1317,   644, -1317, -1317, -1317, -1317,
+     652,   652,   325,   325,   507,   507,   507,   507,   317,   317,
+     581,   826,   820,   823,   861, 10480,   333, -1317,  9797,  1079,
+    1080,  1081,   751, -1317, -1317, -1317, -1317, -1317,  9797,   700,
+    7790, -1317,  9392, -1317,  6891,  8943, -1317,  7824,  6772, -1317,
+   -1317,   769,  9797,   917,  1082,  1083,  1084,  1087,  1088,  1089,
+    1091, -1317,  4955,  3014, -1317, -1317, -1317, -1317, -1317, -1317,
+   -1317, -1317, -1317, -1317, -1317, -1317, -1317, -1317, -1317, -1317,
+   -1317,   939, -1317, -1317, -1317,   827, -1317, -1317, -1317, -1317,
+   -1317, -1317, -1317, -1317,  1098, -1317,  1099,  1101, -1317, -1317,
+      35,  1070,  5708, -1317, -1317, -1317,  4627,  1102, -1317, -1317,
+   -1317, -1317,   970,  5944,  1191, -1317, -1317, -1317, -1317,  1094,
+      35, -1317, -1317,   939, -1317, -1317,   939,    24,   939, -1317,
+   -1317, -1317, -1317, -1317, -1317,  9223, -1317,    48, -1317, -1317,
+     432,   441,  9540,  7010,  2348, 10480,  3377, -1317, -1317,  1092,
+      94,  1092, -1317,   970, -1317,    81, -1317, -1317,  8748,   931,
+   -1317, -1317, -1317,   941,  1116,  1111, -1317, -1317,  1118,  1119,
+   -1317,   859,  2430, -1317,   455, -1317,  3247,   827, -1317,  1122,
+    7515,  9682,  8604,  1125, -1317, -1317,  1130,  1135,  1124, -1317,
+   10480,   166,   222,  1132, -1317,  1138,   576,  1138, -1317, -1317,
+    1138,  1137, -1317,  1145,  1147,  1148,  2140, -1317, -1317, -1317,
+    4627, -1317, -1317, -1317, -1317,  1143, 10347,  1149,   576, -1317,
+   10347, -1317,   576, -1317, -1317, 10347, -1317,   721,   856, -1317,
+   -1317, -1317, -1317, -1317, -1317, -1317,   891,   887,  8830, -1317,
+   -1317,  7129,  1152, -1317,   731,   856, -1317,   745,   763,   856,
+   -1317,   668,  5561, -1317, -1317, -1317,  9797,  9797, -1317,  8166,
+    8166, -1317,  1154,  1156,  1153,  1155, -1317,  1168,   460,   196,
+    1070, -1317,   576, -1317,  4280, -1317, 10347,   474, -1317,  6296,
+    1159,  1170, 10233,  1172,  1175,   -14,     3,    11, 10347,  1179,
+      48, 10347, 10347,  1160,  1177,   282,  1161, -1317, -1317, -1317,
+    1180, -1317, -1317, -1317, -1317, -1317, -1317, -1317, -1317, -1317,
+     970,  1184, 10347, -1317,  9797,  9797,    81,  1188, -1317,  8861,
+   -1317, -1317,   809, -1317,  3377, -1317, -1317, -1317, -1317,  1585,
+   -1317, -1317,  1185, -1317, -1317, -1317, -1317,  1193,  2430, -1317,
+   -1317,  1176, -1317,  1039, -1317, -1317,  2250,  1196, -1317, -1317,
+   -1317,   709,  1198, -1317,   133,  1202, 10480,  1186,   133,   133,
+    1211,  9253,   789,   856, -1317, -1317,  1011, 10347,  1214,  1143,
+     505,   224,  1217, -1317, -1317,  1218,  1217, -1317, -1317,  1226,
+   -1317, -1317,   939,  1228,  1230,  6653,  1231,  1232,  1243, -1317,
+   -1317,  1246, -1317, -1317,   939, -1317, -1317, -1317, -1317,   939,
+   10347, 10347,   887,  1245, -1317, -1317, -1317, -1317, -1317, -1317,
+   -1317, -1317, -1317, -1317, -1317, -1317, 10480, 10480,  1247,  1251,
+    1217, -1317, -1317,   970, -1317, -1317, -1317,  4468,  9682, 10347,
+   10347,  1311, 10347, -1317,  1234, -1317,  1237, -1317,  1239, 10347,
+    1241, 10347,  1049,  1244,    26,    81,  9084,   750, -1317, -1317,
+    5944,  1267,   481, -1317, -1317, -1317, -1317, -1317, -1317, -1317,
+   -1317, -1317, 10053, -1317,  8239,  1274, -1317, -1317,  9682,   482,
+     512, -1317,  1272,  1259,   800,  1280, -1317,   245, -1317, -1317,
+   -1317, -1317,   939,  1279, -1317, -1317,  1287,   385,   444,   576,
+    1293, -1317,  1294, -1317,  9797, -1317, -1317, -1317, -1317, -1317,
+    1295, -1317,  9797,  9797,  9797, -1317, -1317,  1297, -1317,  1298,
+    1282,  1305,   511,  7863,  7978, -1317, -1317,   348, -1317,  1304,
+    1310, -1317,  8312,   712,   734,  1308,   739,  6143, -1317, -1317,
+   -1317,   515, -1317,   765,  1318,  1320,    48,  1371,   879, -1317,
+   -1317, 10347, -1317, 10233, 10347, -1317, -1317, -1317,  1322,  1329,
+   -1317, -1317, -1317,  1324, -1317, -1317, -1317, -1317, -1317, -1317,
+    9682,   800,   265, -1317,  1309,   800,  9797, -1317, -1317, -1317,
+   -1317, -1317, -1317, -1317, -1317, -1317, -1317, -1317, -1317, -1317,
+   -1317,  1330,  1331, -1317, -1317, -1317, -1317, -1317, -1317, -1317,
+    1334, -1317,  1333, -1317, -1317, 10233,   143, 10347, 10233, -1317,
+    1338, 10347, -1317,   259,  1354,  1356, -1317, -1317,  1346,  1347,
+    1326, -1317,   880, -1317, -1317, -1317,  1328,  2250,  1345,   842,
+     364, 10480, -1317,   774, -1317,   576,   576,  1352,  1355,  1357,
+    1360, -1317, -1317,  8166,  1358, -1317,  1436, 10480,  1349, -1317,
+   -1317, 10145, -1317,   783, -1317,  1350, 10233,  1359, -1317, -1317,
+    1378, -1317,  1379, -1317,  1394,  1396, -1317,  1361,  9682, -1317,
+   -1317, -1317,   800,   576,  1386,  1367,  1392,  1217,  1217, -1317,
+   -1317, -1317, -1317, -1317, 10233,   275, -1317,   384, -1317, -1317,
+    7600, -1317, -1317,  1375, 10347, -1317, 10347,  7600,    48,  9570,
+      48,  9570,  1393, -1317,  1398, -1317, -1317,  1395,   842, -1317,
+     798, -1317, -1317, -1317,  1399,  1401, -1317, 10480, 10480, -1317,
+   -1317,   964,   167, -1317, -1317,  1388, -1317,   964, -1317, -1317,
+    2461,   576, -1317, -1317,    48,  9570,    48,  9570,  1409,  1390,
+     576, -1317, -1317, -1317, -1317, 10145,  1410,   964,  5861, 10347,
+   10057,  1412,   964,  1414,  2461,  3613, -1317, -1317, -1317,  1420,
+   -1317, -1317, -1317, -1317,  8604, -1317, -1317, -1317,  9924, -1317,
+   10145, -1317, -1317,  1402,  9836, -1317, -1317, 10057,    48,  3613,
+      48,  1421,  1429,   817, -1317,  9924, -1317, -1317, -1317,  9836,
+   -1317, -1317, -1317,    48,    48, -1317, -1317, -1317, -1317, -1317,
+   -1317, -1317, -1317
+};
+
+  /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
+     Performed when YYTABLE does not specify something else to do.  Zero
+     means the default is an error.  */
+static const yytype_uint16 yydefact[] =
+{
+     291,   291,   311,   309,   312,   310,   313,   314,   297,   299,
+     298,     0,   300,   325,   317,   322,   320,   321,   319,   318,
+     323,   324,   329,   326,   327,   328,   544,   544,   544,     0,
+       0,     0,   291,   217,   301,   315,   316,     7,   356,     0,
+       8,    14,    15,     0,     2,    60,    61,   562,     9,   291,
+     522,   520,   244,     3,   451,     3,   257,     0,     3,     3,
+       3,   245,     3,     0,     0,     0,   292,   293,   295,   291,
+     304,   307,   337,   283,   330,   335,   284,   345,   285,   352,
+     349,   359,     0,     0,   360,   286,   470,   474,     3,     3,
+       0,     2,   516,   521,   526,   296,     0,     0,   544,   574,
+     544,     2,   585,   586,   587,   291,     0,   728,   729,     0,
+      12,     0,    13,   291,   267,   268,     0,   292,   287,   288,
+     289,   290,   523,   302,   389,   545,   546,   367,   368,    12,
+     442,   443,    11,   438,   441,     0,   500,   495,   486,   442,
+     443,     0,     0,   525,   218,     0,   291,     0,     0,     0,
+       0,     0,     0,     0,     0,   291,   291,     2,     0,   730,
+     292,   579,   591,   734,   727,   725,   732,     0,     0,     0,
+     251,     2,     0,   529,   436,   437,   435,     0,     0,     0,
+       0,   544,     0,   631,   632,     0,     0,   542,   538,   544,
+     559,   544,   544,   540,     2,   539,   544,   598,   544,   544,
+     601,     0,     0,     0,   291,   291,   309,   357,     2,   291,
+     258,   294,   305,   338,   350,   475,     0,     2,     0,   451,
+     259,   292,   331,   346,   353,   471,     0,     2,     0,   308,
+     332,   339,   340,     0,   347,   351,   354,   358,   443,   291,
+     369,   362,   366,     0,   391,   472,   476,     0,     0,     0,
+       1,   291,     2,   527,   573,   575,   291,     2,   738,   292,
+     741,   542,   542,     0,   292,     0,     0,   270,   544,   540,
+       2,   291,     0,     0,   291,   547,     2,   498,     2,   551,
+       0,     0,     0,     0,     0,     0,    18,    57,     4,     5,
+       6,    16,     0,     0,   291,     2,    62,    63,    64,    65,
+      45,    19,    46,    22,    44,    66,   291,     0,    69,    73,
+      76,    79,    84,    87,    89,    91,    93,    95,    97,   102,
+     492,   748,   449,   491,     0,   447,   448,     0,   563,   578,
+     581,   584,   590,   593,   596,   356,     0,     2,   736,     0,
+     291,   739,     2,    60,   291,     3,   423,     0,   431,   292,
+     291,   304,   330,   284,   345,   352,     3,     3,   405,   409,
+     419,   424,   470,   291,   425,   703,   704,   291,   426,   428,
+     291,     2,   580,   592,   726,     2,     2,   246,     2,   456,
+       0,   454,   453,   452,   138,     2,     2,   248,     2,     2,
+     247,     2,   278,     2,   279,     0,   277,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   564,   603,     0,   451,
+       2,   558,   567,   657,   560,   561,   530,   291,     2,   597,
+     606,   599,   600,     0,   273,   291,   291,   336,   292,     0,
+     292,     0,   291,   731,   735,   733,   531,   291,   542,   252,
+     260,   306,     0,     2,   532,   291,   496,   333,   334,   280,
+     348,   355,     0,   291,     0,   746,   396,     0,   473,   497,
+     249,   250,   517,   291,   433,     0,   291,   234,     0,     2,
+     236,     0,   292,     0,   254,     2,   255,   275,     0,     0,
+       2,   291,   542,   291,   483,   485,   484,     0,     0,   748,
+       0,   291,     0,   291,   487,   291,   557,   555,   556,   554,
+       0,   549,   552,     0,     0,   291,    52,   291,    66,    47,
+     291,    54,   291,   291,    50,    51,     2,   124,     0,     0,
+     445,     0,   444,   725,   118,   291,    17,     0,    29,    30,
+      35,     2,     0,    35,   108,   109,   110,   111,   112,   113,
+     114,   115,   116,   117,   107,     0,    48,    49,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   104,     2,
+     643,   450,   640,   544,   544,   648,   477,   291,     2,   582,
+     583,     0,   594,   595,     0,     2,   737,   740,   118,   291,
+       0,     2,   705,   292,   709,   700,   701,   707,     0,     2,
+       2,   665,   544,   748,   614,   544,   544,   748,   544,   628,
+     544,   544,   679,   432,   662,   544,   544,   670,   677,   291,
+     427,   292,     0,     0,   291,   715,   292,   720,   748,   712,
+     291,   717,   748,   291,   291,   291,     0,   118,     0,    18,
+       2,     0,    19,     0,   457,   746,     0,     0,   463,   238,
+       0,   291,     0,     0,     0,   542,   566,   570,   572,   602,
+     605,   609,   612,   565,   604,     0,   281,   655,     0,   291,
+     274,     0,     0,     0,     0,   272,     2,     0,   256,   533,
+     291,     0,     0,   291,     2,   361,   381,   370,     0,     0,
+     375,   369,   747,     0,     0,   394,     0,   292,     3,   412,
+       3,   416,   415,   588,     0,   528,   291,    60,     3,   291,
+     431,   292,     3,   425,   426,     2,     0,     0,     0,   482,
+     303,   291,   478,   480,     3,     2,     2,     0,   499,     3,
+       0,   551,   126,     0,     0,   219,     0,     0,     0,     0,
+      36,     0,     0,   118,   291,    20,     0,    21,     0,   689,
+     694,   446,   686,   544,   544,     0,   105,     3,     2,    27,
+       0,    33,     0,     2,    25,     0,   103,    70,    71,    72,
+      74,    75,    77,    78,    82,    83,    80,    81,    85,    86,
+      88,    90,    92,    94,    96,     0,     0,   749,   291,     0,
+       0,     0,   644,   645,   641,   642,   494,   493,   291,     0,
+     291,   711,   291,   716,   292,   291,   659,   291,   291,   702,
+     658,     2,   291,     0,     0,     0,     0,     0,     0,     0,
+       0,   680,     0,   666,   617,   633,   667,     2,   613,   620,
+     429,   615,   616,   430,     2,   627,   636,   629,   630,   663,
+     664,   678,   706,   710,   708,   748,   265,     2,   742,     2,
+     420,   714,   719,   421,     0,   399,     3,     3,     3,     3,
+     451,     3,     0,     2,   465,   462,   747,     0,   458,     2,
+     461,   464,     0,   291,   239,   261,     3,   269,   271,     0,
+     451,     2,   568,   569,     2,   607,   608,     0,   656,   534,
+       3,   342,   341,   344,   343,   291,   535,     0,   536,   369,
+       0,     0,   291,   291,     0,     0,   689,   379,   382,   386,
+     544,   386,   385,   378,   371,   544,   373,   376,   291,   396,
+     390,   101,   397,   746,     0,     0,   434,   237,     0,     0,
+       3,     2,   665,   427,     0,   524,     0,   748,   486,     0,
+     291,   291,   291,     0,   548,   550,   127,     0,     0,   212,
+       0,     0,     0,   220,   221,    53,     0,    55,    58,    59,
+       0,     2,   125,     0,     0,     0,   690,   691,   687,   688,
+     456,    67,    68,   106,   122,     3,   105,     0,     0,    24,
+      35,     3,     0,    32,    99,     0,     3,   647,   651,   654,
+     646,     3,   589,     3,   713,   718,     2,    60,   291,     3,
+       3,   292,     0,     3,   619,   623,   626,   635,   669,   673,
+     676,   291,     3,   618,   634,   668,   291,   291,   422,   291,
+     291,   743,     0,     0,     0,     0,   253,     0,   101,     0,
+       3,     3,     0,   459,     0,   455,     0,     0,   242,   291,
+       0,     0,   126,     0,     0,     0,     0,     0,   126,     0,
+       0,   105,   105,    18,     2,     0,     0,     3,   128,   129,
+       2,   140,   130,   131,   132,   133,   134,   135,   142,   144,
+       0,     0,     0,   282,   291,   291,   544,     0,   537,   291,
+     372,   374,     0,   388,   690,   383,   387,   384,   377,   381,
+     364,   395,     0,   576,     2,   661,   660,     0,   666,     2,
+     479,   481,   501,     3,   509,   510,     0,     2,   505,     3,
+       3,     0,     0,   553,   219,     0,     0,     0,   219,     0,
+       0,   118,   693,   697,   699,   692,   746,   105,     0,     3,
+     658,    39,     3,    37,    34,     0,     3,    98,   100,     0,
+       2,   649,   650,     0,     0,   291,     0,     0,     0,     3,
+     635,     0,     2,   621,   622,     2,   637,     2,   671,   672,
+       0,     0,    60,     0,     3,     3,     3,     3,   407,   406,
+     410,     2,     2,   745,   744,   119,     0,     0,     0,     0,
+       3,   460,     3,     0,   240,   143,     3,   292,   291,     0,
+       0,     0,     0,     2,     0,   188,     0,   186,     0,     0,
+       0,     0,     0,     0,     0,   544,   118,     0,   148,   145,
+     291,     0,     0,   264,   276,     3,     3,   543,   610,   365,
+     380,   393,   291,   263,   291,     0,   512,   489,   291,     0,
+       0,   488,   503,     0,     0,     0,   213,     0,   222,    56,
+       2,   695,   696,     0,   123,   120,     0,     0,     0,     0,
+       0,    23,     0,   652,   291,   577,   262,   721,   722,   723,
+       0,   674,   291,   291,   291,     3,     3,     0,   682,     0,
+       0,     0,     0,   291,   291,     3,   541,   119,   467,     0,
+       0,   243,   292,     0,     0,     0,     0,   291,   189,   187,
+     184,     0,   190,     0,     0,     0,     0,   194,   197,   195,
+     191,     0,   192,   126,    35,   141,   139,   241,     0,     0,
+     414,   418,   417,     0,   506,     2,   507,     2,   508,   502,
+     291,   225,     0,   223,     0,   225,   291,    31,   121,     2,
+      42,     2,    40,    38,    28,    26,     3,   724,     3,     3,
+       3,     0,     0,   681,   683,   624,   638,   266,     2,   404,
+       3,   403,     0,   469,   466,   126,     0,     0,   126,     3,
+       0,   126,   185,     0,     2,     2,   206,   196,     0,     0,
+       0,   137,     0,   571,   611,     2,     0,     0,     2,   226,
+       0,     0,   214,     0,     3,     0,     0,     0,     0,     0,
+       0,   684,   685,   291,     0,   468,   149,     0,     0,     2,
+     162,   126,   151,     0,   179,     0,   126,     0,     2,   153,
+       0,     2,     0,     2,     2,     2,   193,    32,   291,   511,
+     513,   504,     0,     0,     0,     0,     0,     3,     3,   653,
+     625,   639,   675,   408,   126,   155,   158,     0,   157,   161,
+       3,   164,   163,     0,   126,   181,   126,     3,     0,   291,
+       0,   291,     0,     2,     0,     2,   136,     2,   227,   228,
+       0,   224,   215,   698,     0,     0,   150,     0,     0,   160,
+     230,   165,     2,   232,   180,     0,   183,   169,   198,     3,
+     207,   211,   200,     3,     0,   291,     0,   291,     0,     0,
+       0,    43,    41,   156,   159,   126,     0,   166,   291,   126,
+     126,     0,   170,     0,     0,   689,   208,   209,   210,     0,
+     199,     3,   201,     3,   291,   216,   229,   146,   167,   152,
+     126,   233,   182,   177,   175,   171,   154,   126,     0,   690,
+       0,     0,     0,     0,   147,   168,   178,   172,   176,   175,
+     173,     3,     3,     0,     0,   490,   174,   202,   204,     3,
+       3,   203,   205
+};
+
+  /* YYPGOTO[NTERM-NUM].  */
+static const yytype_int16 yypgoto[] =
+{
+   -1317,  4344,  3244, -1317,   633, -1317,   172,   896,  -203, -1317,
+     487,  -518,  -482,  -910,  -211,  1511,     0, -1317,  1129,   534,
+     537,   615,   556,   984,   981,   988,   980,   989, -1317,     4,
+    -451,  4784,  -913, -1317,  -702,   571,    13,  -706,   419, -1317,
+     190, -1317,   345,  -964, -1317, -1317,    85, -1317, -1099, -1138,
+     197, -1317, -1317, -1317, -1317,    20, -1281, -1317, -1317, -1317,
+   -1317, -1317, -1317,   266, -1095,    50, -1317,  -472, -1317,   443,
+     239, -1317,   118, -1317,  -294, -1317, -1317, -1317,   496,  -829,
+   -1317, -1317,     8,  -952,    28,  2894, -1317, -1317, -1317,  -214,
+   -1317,   121,  1028,  -198,  1848,  3592, -1317, -1317,   127,   296,
+    1545,  1505, -1317,  1929, -1317, -1317,   137,  2139, -1317,  2574,
+     804, -1317, -1317, -1317,  -637, -1317,   886,   889,   490,   670,
+      52, -1317, -1317, -1317,   893,   666,  -510, -1317,  -116,    40,
+    1073, -1317, -1317,  -889,  -983,   933,  1377,  1006,   -11, -1317,
+    1351,   508,  -322,  -183,  -145,   623,   724, -1317,   944, -1317,
+    2701,   574,  -443,   875, -1317, -1317,   659, -1317,  -228, -1317,
+     -45, -1317, -1317, -1317, -1253,   370, -1317, -1317, -1317,  1120,
+   -1317,    33, -1317, -1317,  -828,  -100, -1316,  -170,  2264, -1317,
+    1914, -1317,   868, -1317,  -155,   129,  -181,  -180,  -175,     7,
+     -41,   -40,   -35,  1507,    37,    53,    57,   -29,  -172,  -163,
+    -158,  -150,  -293,  -500,  -490,  -485,  -542,  -284,  -525, -1317,
+   -1317,  -499,  1035,  1038,  1040,  1486,  4616,  -563,  -531,  -513,
+    -491,  -561, -1317,  -506,  -730,  -727,  -723,  -562,  -311,  -227,
+   -1317, -1317,   378,    19,   -93, -1317,  3633,   159,  -611,  -428
+};
+
+  /* YYDEFGOTO[NTERM-NUM].  */
+static const yytype_int16 yydefgoto[] =
+{
+      -1,   812,   467,   300,    47,   133,   134,   301,   302,   303,
+     304,   760,   761,  1132,  1133,   305,   380,   307,   308,   309,
+     310,   311,   312,   313,   314,   315,   316,   317,   318,   319,
+    1029,   517,   974,   545,   321,   975,   946,  1056,  1517,  1058,
+    1059,  1060,  1061,  1518,  1062,  1063,  1436,  1437,  1400,  1401,
+    1402,  1496,  1497,  1501,  1502,  1537,  1538,  1064,  1360,  1065,
+    1066,  1297,  1298,  1299,  1479,  1067,   145,   952,   953,   954,
+    1380,  1460,  1471,  1472,   468,   469,   873,   874,  1037,    51,
+      52,    53,    54,    55,   346,   158,    58,    59,    60,    61,
+      62,   348,    64,    65,   264,    67,    68,   274,   350,   351,
+      71,    72,    73,   118,    75,   204,   353,   119,    78,   120,
+      80,    81,   454,    82,   453,   687,   688,   689,   907,  1085,
+     908,    83,    84,   457,   455,   695,   854,   855,   856,   857,
+     698,   699,   700,   358,   359,   360,   361,   465,   339,   135,
+     136,   521,   323,   170,   644,   645,   646,   647,   648,    85,
+     121,    87,   488,   489,   938,   490,   277,   494,   324,    88,
+     137,   138,    89,  1320,  1107,  1108,  1109,  1110,    90,    91,
+     716,    92,   273,    93,    94,   187,  1031,   678,   411,   125,
+      95,   500,   501,   502,   188,   268,   190,   191,   192,   269,
+      98,    99,   100,   101,   102,   103,   104,   195,   196,   197,
+     198,   199,   824,   604,   605,   606,   607,   200,   609,   610,
+     611,   571,   572,   573,   574,   750,   105,   613,   614,   615,
+     616,   617,   618,   967,   752,   753,   754,   594,   364,   365,
+     366,   367,   325,   164,   107,   108,   109,   369,   693,   568
+};
+
+  /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
+     positive, shift that token.  If negative, reduce the rule whose
+     number is the opposite.  If YYTABLE_NINF, syntax error.  */
+static const yytype_int16 yytable[] =
+{
+      49,   113,   149,   150,   398,   399,   427,    97,   151,   114,
+     400,   452,   260,   401,   751,   765,   267,   409,   963,   106,
+     106,   964,   402,   382,   383,   965,   947,   403,    56,   115,
+     739,   406,    49,   595,   867,   404,   439,  1170,   826,    97,
+     356,   829,   470,   147,  1068,  1069,   177,   836,   724,    49,
+      50,   106,   729,   972,   918,   603,   161,   843,  1194,   825,
+      56,   722,   341,   186,   608,   143,   209,  1378,   818,    49,
+     193,   793,  1136,   216,   817,  1196,   226,   219,   504,   122,
+     152,  1438,    50,  1198,   398,   399,   819,  1186,   106,  1301,
+     400,   474,   476,   401,   210,   261,   153,   220,   262,   814,
+     154,   424,   402,   672,   674,   113,   526,   403,   820,   815,
+     280,   406,    31,   113,   816,   404,   266,   271,  1195,    31,
+      31,    63,  1180,   668,   858,   859,   202,    69,  1199,    96,
+    1168,  1169,   123,    31,  1076,  1197,   627,    76,  1203,  1204,
+     631,   876,   168,   677,   149,   150,   306,   147,    31,   526,
+     151,   681,  1438,    63,   161,   113,   344,   407,  1302,    69,
+     209,    96,   171,    31,    31,  1457,   169,   372,   281,    76,
+     713,   728,   148,   111,   963,   830,   203,   964,    96,   833,
+     912,   965,   252,   446,   410,   186,   186,  1397,  1398,   418,
+     741,   410,   189,   161,   719,    96,   357,   948,    96,   930,
+     850,   266,   459,   470,   853,   410,   565,   438,   166,    49,
+    1185,  -231,  -231,   142,  1244,   291,   161,   814,   480,  1525,
+     410,   209,   152,   470,   149,   150,   666,   815,   442,   408,
+     151,   470,   816,   827,   834,   600,   600,   407,   153,   306,
+     566,  1170,   154,   922,   950,   173,  1540,   587,   526,   440,
+     663,    49,   829,   252,   328,   797,   475,  1399,    97,   271,
+    1015,   482,  1079,   846,   271,   266,   266,   847,   499,   376,
+     106,   113,   166,   161,   475,  1116,    96,   341,   567,    56,
+     818,  1014,  -231,  1138,   462,   377,  1002,   253,   144,    96,
+     993,  1170,  1176,   990,   306,   655,    70,   526,   819,   155,
+     733,    50,  1442,  1397,  1398,   326,   306,   518,   595,  1247,
+     146,   814,  1092,   595,   397,   189,   356,   608,  1177,   110,
+     820,   815,   570,   670,   663,   734,   816,   147,    70,   675,
+      41,    42,  1117,  1495,   372,  1186,   177,  1248,    96,  1500,
+     113,   869,  1200,   641,   344,   735,   201,   526,   601,   619,
+      96,   181,  1118,   628,   286,  1324,  1483,   632,   758,  1520,
+     870,   803,   212,   624,  1527,    41,    42,   624,   435,   826,
+     113,  1467,    63,  1408,  1381,  1325,   664,   471,    69,  -287,
+      96,  1068,  1069,   416,  1168,  1169,   897,   578,    76,   410,
+    1511,   513,  1513,    76,   478,   266,  1442,  1177,   326,   386,
+     818,  1442,   110,   852,   389,   186,   436,   555,   556,   356,
+    1170,   247,   372,    41,    42,   387,   444,  1018,   819,   391,
+     390,  1442,   250,   266,   464,   306,   306,   163,  1442,   266,
+     435,   341,   624,   713,   492,   392,   843,   493,   671,   673,
+     820,   763,   557,   558,   551,   552,  1156,  1158,   393,   746,
+     664,   913,   263,   113,  1083,   252,    96,   110,  1361,  -466,
+    1125,  -466,   887,   985,   394,   166,   470,   914,    41,    42,
+     848,   266,   357,   356,   849,  1427,  1428,   602,  -466,   266,
+    1422,   624,   -10,    49,   519,   880,   372,   718,  1186,  -515,
+      97,   163,   927,   113,  1423,  1186,  1329,  1103,  1134,  1115,
+    1468,   868,   106,   597,  1433,   306,   915,   113,  -439,  1100,
+     306,    56,   306,   306,  1469,  1243,   110,   441,   518,  -440,
+     749,   712,   916,   518,   113,   344,   518,    41,    42,   276,
+    1013,   909,   951,    50,   189,  1015,  1524,   278,   471,   608,
+       2,   206,     4,     5,     6,     7,  1186,    70,   913,   110,
+     329,   139,   238,   878,    76,  1331,  1535,   915,   471,   279,
+      41,    42,   576,  1539,  1080,   357,   471,   848,   577,   570,
+     570,  1099,  -102,  1081,    76,   995,  -102,   306,  1125,   786,
+     803,  1359,    76,   912,   326,   326,   239,   434,   624,   344,
+    1183,   240,   713,   619,   682,   553,   554,  1183,  1315,   601,
+     577,   601,   710,   330,    63,    35,  1184,    36,   331,   845,
+      69,  1473,    96,  1307,  1316,  -119,   602,  -119,  1473,   624,
+      76,  -119,   370,  1347,   624,   860,   619,  1348,  1317,   357,
+     624,   746,   679,   624,   624,   624,  -119,  -119,   111,   875,
+     215,   332,  1233,  1013,  1318,   212,  1237,  1362,   110,   434,
+     341,   624,   326,   266,   333,  1407,   242,   911,   705,    41,
+      42,   252,   328,   410,   110,  1235,   139,   140,   803,  1521,
+     334,   326,   522,   559,   560,    41,    42,  1026,     8,     9,
+      10,    11,    12,   113,   163,   384,   906,   595,   703,   371,
+     176,   215,   356,   375,   704,   519,   720,  1073,   921,   759,
+     519,   725,   721,   519,   764,   388,   726,    31,   425,   624,
+     932,   619,   408,   730,  1111,   396,   805,   718,   718,   731,
+     499,  1033,   426,   398,   399,  1275,  1276,   745,   813,   400,
+     602,   891,   401,   746,   215,    34,   326,   746,  1475,   176,
+    1476,   402,   176,   113,   344,   581,   403,   410,   749,   749,
+     893,   406,   449,   464,   404,   110,   746,   139,   140,   983,
+     980,     8,     9,    10,    11,    12,    41,    42,   212,   548,
+     527,   528,   529,   431,   963,   549,   550,   964,   844,    70,
+     881,   965,   410,   597,   712,   979,  1372,  -363,   176,   984,
+      31,   980,   570,  1522,   530,   215,   531,   243,   532,   533,
+     624,   471,   624,   884,   998,   410,  -392,   624,   344,   341,
+     992,   601,   569,  1160,   410,   910,   704,    76,    34,  1231,
+      45,    46,  1355,   601,   877,   577,   879,   471,   746,   460,
+    1140,   690,   410,   215,   713,   527,   528,   529,   215,   461,
+    1152,    37,   410,    76,  1356,    40,   813,   602,   357,  1358,
+     746,   176,    41,    42,  1155,   746,   600,   483,   889,   530,
+     569,   531,   410,   532,  1304,   710,  1028,   896,    45,    46,
+     214,   898,  1157,   306,   600,  1363,   926,   407,   811,   503,
+     600,   746,   291,   522,  1425,   522,    45,    46,   522,  1181,
+    1422,   522,   106,  1443,   803,   624,    48,   112,  1240,   746,
+     410,    56,   113,   344,   906,   176,   906,   524,  1489,   921,
+     507,   951,   176,   713,  1490,   951,   951,   441,   113,   328,
+     410,   214,   512,   215,   526,   112,   112,  1545,    48,   663,
+    1424,   932,   932,   577,   909,   805,   718,  1368,  1369,    48,
+     813,   113,   306,   712,   561,    48,  1435,   562,   748,  1104,
+     410,   563,   602,    48,   921,   564,    45,    46,   567,    48,
+     106,  1086,    48,  1086,   214,    48,   749,   337,   931,  1105,
+     600,   418,   659,   410,  1507,  -436,    45,    46,   112,   112,
+     176,   585,     2,   206,     4,     5,     6,     7,   588,  1137,
+     480,   328,   410,   212,    63,  1417,   980,   176,   344,    -3,
+      69,   176,    48,   637,   215,    48,  1226,   212,  1397,  1398,
+      76,   656,    48,   736,   657,   737,  1493,  1435,   738,   624,
+     624,   742,   658,  1125,   710,   214,   827,   328,   600,   116,
+     660,  1322,   661,  1082,   662,   910,  1330,  1332,  1333,   306,
+    1028,   665,   110,    48,   139,   140,   215,    35,   667,    36,
+     257,    48,   691,    41,    42,   664,    48,   692,   106,  1167,
+     911,   690,   694,   214,   176,   602,   696,    56,   214,  -235,
+       2,   206,     4,     5,     6,     7,   732,   159,   743,   113,
+     806,    48,    48,   747,   906,   770,   771,  1078,   807,   906,
+     772,   773,    37,   755,   174,   175,    40,    48,   932,   228,
+     212,   326,   810,    41,    42,    48,   266,  1294,  1295,  1296,
+      -3,   821,   -12,   341,    48,   778,   779,    48,  1379,    37,
+     921,   624,  1379,    40,   112,   -13,   865,   866,  1120,   371,
+      41,    42,   872,   258,   892,    35,   894,    36,   920,   112,
+    -519,   159,   895,   112,  -413,   344,   899,    48,   112,   902,
+    1131,   935,   942,   214,  1131,   721,    43,   844,   944,   949,
+     471,    48,    48,   955,    45,    46,  1188,   215,    48,    70,
+     774,   775,   776,   777,   322,    48,    76,   956,   957,   958,
+     921,   921,   959,   338,   960,   712,   976,   271,   113,   987,
+     988,   989,  1004,  1005,  1006,   215,   219,  1007,  1008,  1009,
+     215,  1010,  1283,  1284,  1131,  1286,   113,   106,  1021,  -401,
+     306,  -400,  1291,   910,  1293,   210,   220,  1035,   910,  1458,
+    1070,   176,   905,    48,   624,  1072,  1093,  1094,   113,   106,
+    1095,  1096,  1102,   429,   214,  1112,  1104,   433,    56,   110,
+    1202,   139,   140,    48,    48,  1113,   746,   106,  1119,  1121,
+      41,    42,   970,   176,  1114,  1122,  1105,  1123,  1124,  1127,
+      48,  1130,  1150,  1173,    48,  1174,   710,   322,  1189,   176,
+    1171,   215,  1172,   624,   624,   642,   214,  1420,   863,  1190,
+    1175,  1192,   271,   176,  1193,   215,  1533,   306,  1201,  1206,
+    1205,    48,  1057,  1208,  1213,    -3,   690,   441,  1218,   433,
+    1221,    48,   487,  1223,   492,    37,   106,   174,   175,    40,
+     440,  1227,  1232,  1350,  1234,    56,    41,    42,  1236,    48,
+     113,  1239,   520,   398,   399,    48,  1245,    48,  1104,   400,
+    1251,    63,   401,  1249,   159,    70,  1253,    69,  1255,   106,
+    1256,   402,   375,  1257,  1258,   710,   403,    76,  1105,   129,
+     406,   130,   131,   132,   404,  1259,  1261,  1268,  1285,  1277,
+      41,    42,   112,  1278,   176,  1419,  1288,    48,   586,  1289,
+    1403,  1290,   592,  1292,   663,    48,  1300,   266,   215,    48,
+    1506,   141,  1306,    48,  1313,   921,   112,  1319,   112,  1321,
+    1323,   625,  1345,   624,  1327,   629,   701,   214,   338,  1328,
+      37,   921,   174,   175,    40,  1334,  1335,  1337,   471,  1343,
+    1344,    41,    42,   509,  1188,  1346,  1353,  1357,   113,  1131,
+    1131,  1131,  1354,   112,    76,   214,  1104,  1364,   112,  1365,
+     214,  1296,  1373,   241,   244,   546,   547,   106,  1375,  1374,
+     113,  1382,  1391,  1392,  -402,  1395,  1105,   113,  1406,   113,
+    1410,   113,  1412,   322,   322,  1414,  1415,   690,  1416,   106,
+    1421,  1191,  1429,   149,   150,  1430,   106,  1431,    56,   151,
+    1432,   921,   921,   546,  1348,    56,   407,   112,  1434,  1439,
+    1505,   686,  1444,   212,    48,   113,  1366,   113,  1448,  1450,
+    1452,  1446,  1454,  1456,   116,    48,  1461,    48,   113,  1462,
+     664,   214,  1463,  1484,  1505,  1505,    70,  1474,  1486,   546,
+    1488,  1491,   161,  1492,   306,   214,    48,   106,  1514,   487,
+    1499,   322,  1515,   487,  1528,  1519,    56,  1526,   176,  1505,
+    1530,  1543,    48,   520,  1536,   520,   372,   112,   520,  1544,
+     322,   520,  1207,   781,   783,   780,    48,  1129,   112,    48,
+     112,   782,   338,  1494,   784,  1305,   162,  1131,  1131,  1546,
+    1409,   471,  1238,  1367,  1383,  1477,  1212,  1188,   471,   900,
+     194,   213,   901,   217,  1188,   215,   227,    76,   441,  1220,
+     232,  1087,    48,    70,    76,  1091,   112,   799,   112,   923,
+    1034,   871,   112,  1126,   456,  1459,   937,  1101,  1314,   945,
+     112,     0,   701,   715,   789,   322,     0,   790,   214,   791,
+       0,     0,     0,    48,    48,   229,   801,     0,   230,   471,
+       0,   234,   213,   236,     0,  1188,     0,    48,     0,  1057,
+     245,     0,     0,   478,  -288,    76,     0,     0,  1478,     0,
+    1482,     8,     9,    10,    11,    12,     0,   842,     0,     0,
+       0,     0,   592,  1508,   162,     0,     0,    37,   851,   183,
+     184,    40,  1516,     0,     0,   213,     0,   373,    41,    42,
+      31,     0,     0,   326,  1510,   412,  1512,   767,   768,   769,
+       0,     0,   420,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   162,   904,     0,   410,     0,    34,     0,
+       0,     0,    45,    46,     0,     0,     0,    48,     0,     0,
+       0,   686,     0,    37,     0,   905,   162,    40,  1541,    48,
+    1542,   701,  1371,     0,    41,    42,   213,     0,   443,     0,
+     643,   701,     0,  1549,  1550,    37,    70,   183,   184,    40,
+       0,     0,   890,    70,     0,   701,    41,    42,     0,   487,
+     717,     0,     0,     0,   412,     0,     0,   229,    45,    46,
+       0,   215,   642,     0,   213,     0,     0,     0,   112,   213,
+       0,   338,   185,     0,  1396,     0,     0,  1404,  -289,     0,
+      45,    46,     0,     0,   498,     8,     9,    10,    11,    12,
+       0,    48,     0,   506,    70,   508,   511,     0,     0,     0,
+      48,     0,    48,   514,   515,   214,     0,     0,   575,   112,
+       0,     0,     0,     0,    31,     0,   579,   508,   508,   582,
+    1441,     0,     0,     0,   497,  1445,     0,  1481,     0,  1481,
+     994,     0,    48,     0,   373,   801,     0,     0,     0,   176,
+     702,   723,    34,   727,     0,     0,     0,     0,    66,   117,
+       0,     0,   112,  1466,   213,   508,   215,     0,     0,     0,
+       0,   986,     0,  1481,     0,  1481,   642,     0,     0,     0,
+       0,   991,     0,     0,   112,     0,     0,     0,   112,     0,
+      66,     0,     0,   412,   971,  1003,     0,   420,     0,     0,
+       0,   508,     0,     0,     0,  -290,   229,   160,   234,     0,
+       0,     0,     8,     9,    10,    11,    12,     0,     0,     0,
+       0,     0,   373,     0,     0,     0,     0,   221,     0,     0,
+       0,     0,     0,   801,     0,     0,     0,     0,   112,    74,
+     338,    31,     0,     0,     0,   213,     0,  1534,     0,     0,
+     126,   126,   126,  1534,     0,     0,   686,     0,     0,   701,
+     701,     0,   213,   259,  1534,     0,     0,     0,  1534,    34,
+       0,    74,     0,     0,   412,     0,   112,     0,   487,  1106,
+     322,     0,     0,     0,     0,     0,     0,   213,     0,     0,
+      48,     0,     0,     0,     0,    48,   229,     0,     0,     0,
+       0,   214,   864,     0,     0,   327,     0,     0,   222,     0,
+       0,     0,    48,   259,   349,     0,     0,   701,   701,   176,
+       0,     0,   126,     0,   126,     0,   534,   535,   536,   537,
+     538,   539,   540,   541,   542,   543,   842,     0,     0,     0,
+       0,     0,     0,     0,   405,     0,     0,     0,     0,   275,
+       0,   917,     0,   919,     0,     0,   702,   456,     0,   423,
+     544,     0,   428,   430,     0,   575,   575,   160,     0,   508,
+     508,   508,   508,   508,   508,   508,   508,   508,   508,   508,
+     508,   508,   508,   508,   508,   508,   508,     0,   447,   112,
+       0,     0,   450,     0,   451,   352,   214,     0,     0,  1165,
+    1166,     0,     0,   458,     0,   126,     0,     0,   213,    66,
+       0,     0,    48,   126,   472,   126,   126,   686,     0,     0,
+     126,     0,   126,   126,   479,     0,     0,     0,     0,     0,
+       0,    37,   430,   183,   184,    40,   213,   546,     0,     0,
+       0,   213,    41,    42,     0,     0,     0,     0,     0,    77,
+       0,     0,   882,   112,   112,   112,   885,  1215,  1216,   801,
+       8,     9,    10,    11,    12,  1311,     0,     0,   599,   448,
+     600,     0,     0,     0,     0,   702,    45,    46,   509,     0,
+       0,    77,     0,     0,     0,   702,     0,     0,     0,    31,
+      74,     0,   126,     0,     0,    74,     0,   701,   259,   702,
+       0,     0,   593,     0,     0,   701,   701,   701,   621,     0,
+       0,     0,   213,     0,     0,   508,     0,    34,   223,     0,
+       0,   626,     0,     0,     0,   626,   213,   643,   259,     0,
+       0,     0,     0,  1038,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   338,     0,   498,     0,     0,     0,
+       0,     0,     8,     9,    10,    11,    12,     0,     0,   748,
+       0,   410,     0,     0,     0,     0,  1106,    45,    46,   701,
+       0,     0,     0,     0,  1088,   472,   508,     0,     0,     0,
+       0,    31,    48,    48,     0,     0,   497,     0,   575,   222,
+     349,   112,   112,     0,     0,   472,     0,     0,     0,     0,
+     124,   127,   128,   472,     0,   354,   508,     0,     0,    34,
+       0,     0,     0,     0,    37,     0,   183,   184,    40,   213,
+       0,   697,     0,     0,   430,    41,    42,     0,     0,   112,
+       0,   643,    37,     0,   183,   184,    40,  1336,     0,   711,
+       0,    66,     0,    41,    42,  1338,  1339,  1340,     0,   430,
+       0,   185,     0,   430,     0,     0,    74,     0,  1106,    45,
+      46,     0,     0,     0,     0,     0,     0,     0,     0,   265,
+       0,   352,   254,     0,   255,     0,    74,    45,    46,     0,
+       0,     0,   259,   349,    74,     0,    48,   112,     0,     0,
+       0,     0,     0,     0,     0,     0,   112,     0,     0,     0,
+      77,     0,   352,   702,   702,    77,   412,     0,     0,  1384,
+      48,    48,     0,     0,     0,     0,     0,     0,     0,     0,
+     352,     0,    74,     0,     0,     0,   508,     0,   792,     0,
+      37,  1038,   183,   184,    40,    48,     0,     0,     0,     0,
+       0,    41,    42,     0,     0,     0,   626,   804,     0,     0,
+       8,     9,    10,    11,    12,   395,  1106,     0,     0,   823,
+       0,   702,   702,     0,   352,   414,   415,   904,     0,   410,
+     419,   508,   421,   422,     0,    45,    46,   593,     0,    31,
+       0,     0,   593,  1141,     0,     0,     0,  1480,   626,  1480,
+       0,   349,   349,   349,     0,     0,     0,   126,   126,   223,
+    1153,     0,     0,     0,     0,     0,   508,    34,     0,   349,
+       0,     0,     0,     0,     0,     0,   213,     0,     0,   508,
+       0,     0,     0,  1480,     0,  1480,   126,   697,   352,   126,
+     126,     0,   126,     0,   126,   126,     0,     0,   472,   126,
+     126,     0,     0,    37,  1281,   183,   184,    40,     0,   931,
+       0,   600,   322,     0,    41,    42,     0,    45,    46,     0,
+     508,     0,     0,     0,   472,     0,    77,   349,     0,     0,
+       0,     0,   352,   352,   352,     0,   936,     0,   412,   430,
+    1504,   354,   410,     0,    79,     0,    77,     0,    45,    46,
+     352,     0,     0,     0,    77,     0,     0,     0,     0,     0,
+       0,   259,   711,     0,     0,     0,     0,   966,   352,  1312,
+       0,     0,   354,     0,     0,     0,    79,     0,  1241,    74,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     354,     0,    77,     0,     0,     0,     0,   508,     0,     0,
+       0,   702,     0,     0,     0,    74,   697,     0,   352,   702,
+     702,   702,     0,   224,     0,     0,   697,     0,   349,     0,
+     626,     0,     0,  1001,     0,   626,   804,     0,     0,     0,
+     697,     0,     0,     0,   354,     0,     0,   126,   126,     0,
+    1012,     0,     0,   352,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   508,   508,     0,
+       0,     0,   213,     0,     0,     0,     0,     0,     0,     0,
+       0,    86,     0,   702,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   282,   283,     0,   284,   352,     0,     0,
+       0,    66,     0,     0,     0,     0,     0,   352,   354,   352,
+     355,     0,     0,    86,   222,     0,     0,   352,     0,     0,
+       0,   352,   285,   626,     0,     0,     0,     0,   286,     0,
+     259,   711,   287,     0,  1084,   288,   289,   290,   291,    41,
+      42,     0,   292,   293,     0,     0,     0,     0,     0,     0,
+     225,     0,   354,   354,   354,     0,     0,     0,     0,     0,
+    1098,     0,     0,     0,     0,   505,     0,   213,   430,   117,
+     354,     0,     0,    45,    46,   296,   297,   298,   299,     0,
+       0,     0,    74,     0,     0,     0,     0,     0,   354,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    77,
+       0,     0,     0,     0,   126,    79,     0,     0,     0,   126,
+      79,     0,   352,     0,     0,     0,     0,   794,   795,     0,
+       0,     0,     0,     0,     0,    77,   593,     0,   354,     0,
+       0,     0,     0,     0,     0,     0,     0,   362,     0,   428,
+       0,     0,     0,     0,   697,   697,   828,   349,   349,   831,
+     832,     0,   835,     0,   837,   838,     0,     0,     0,   839,
+     840,     0,     0,   354,     0,     0,     0,  1187,     0,     0,
+       0,     0,   508,     0,    57,    57,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   508,     0,
+       0,     0,     0,     0,     8,     9,    10,    11,    12,     0,
+       0,     0,   697,   697,   224,     0,    57,   354,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   354,     0,   354,
+       0,     0,     0,    31,   223,   352,   352,   354,   352,   352,
+       0,   354,    86,     0,     0,     0,     0,    86,     0,     0,
+      57,     0,     0,    57,     0,     0,     0,     0,    74,   626,
+       0,    34,     0,     0,     0,     0,    37,     0,   508,   508,
+      40,     0,     0,     0,     0,     0,     0,    41,    42,     0,
+     126,    79,     0,   711,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   352,   352,     0,   355,     0,     0,     0,
+       0,    79,    77,    43,     0,     0,     0,   968,   969,    79,
+       0,    45,    46,     0,     8,     9,    10,    11,    12,     0,
+       0,     0,     0,     0,     0,     0,  1282,   355,     0,     0,
+       0,     0,   354,     0,     0,     0,     0,     0,     0,     0,
+     347,   225,     0,    31,   259,   355,     0,    79,    66,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     697,     0,   711,     0,   352,     0,   117,     0,     0,     0,
+       0,    34,     0,     0,     0,     0,    37,     0,   183,   184,
+      40,     0,     0,     0,     0,     0,     0,    41,    42,   355,
+       0,     0,   697,     0,     0,     0,     0,     0,     0,     0,
+     697,   697,   697,     0,     0,    57,     0,   222,    86,   126,
+       0,   349,   349,   599,     0,   600,     0,     0,     0,     0,
+       0,    45,    46,   362,     0,  1187,     0,     0,    86,    74,
+       0,     0,     0,     0,     0,    57,    86,     0,     0,     0,
+       0,   352,     0,   352,     0,   354,   354,     0,   354,   354,
+       0,     0,     0,   355,   362,     0,     0,     0,   117,     0,
+       0,     0,     0,     0,   697,     0,     0,     0,    77,  1089,
+       0,     0,   362,   352,    86,     0,     0,     0,     0,     0,
+       0,   352,   352,   352,     0,     0,     0,     0,     0,     0,
+       0,     0,   352,   352,     0,     0,     0,   355,   355,   355,
+       0,     0,     0,   354,   354,     0,    74,     0,     0,     0,
+       0,     0,     0,     0,     0,   355,   362,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   349,     0,   355,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    79,   352,     0,     8,     9,    10,
+      11,    12,     0,     0,     0,     0,   117,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      79,     0,     0,   355,   354,     0,    31,     0,  1187,     0,
+     362,     0,     0,     0,     0,  1187,     0,   167,     0,   172,
+       0,     0,   178,   179,   180,     0,   182,     0,     0,     0,
+       0,     0,     0,     0,    34,     0,     0,     0,   355,    37,
+     233,     0,   352,    40,     0,     0,   347,   223,     0,     0,
+      41,    42,   248,   249,   362,   362,   362,     0,     0,     0,
+    1217,     0,     0,     0,     0,     0,  1187,     0,     0,    77,
+       0,     0,   362,  1529,     0,     0,   717,     0,     0,     0,
+       0,   354,   355,   354,    45,    46,     0,     0,     0,    74,
+     362,     0,   355,     0,   355,     0,    74,    57,     0,   224,
+       0,    86,   355,     0,     0,     0,   355,     8,     9,    10,
+      11,    12,     0,   354,     0,     0,     0,     0,     0,     0,
+       0,   354,   354,   354,     0,     0,     0,    86,     0,     0,
+     362,     0,   354,   354,     0,     0,    31,     0,     0,   347,
+       0,     0,     0,     0,     0,     0,    77,    74,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    34,   362,     0,    79,     0,    37,
+       0,   183,   184,    40,     0,     0,     0,     0,     0,     0,
+      41,    42,     0,     0,     0,   354,     0,     0,     0,  1303,
+       0,     0,     0,     0,     0,     0,     0,   355,     0,     0,
+       0,     0,     0,   347,     0,     0,   904,     0,   410,   362,
+       0,     0,     0,     0,    45,    46,     0,     0,     0,   362,
+       0,   362,     0,     0,     0,     0,   225,     0,     0,   362,
+       0,     0,     0,   362,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   347,   347,   347,
+       0,     0,   354,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   347,     0,     0,     1,     2,
+       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,    25,     0,    86,    26,    27,    28,    29,    77,
+       0,    30,     0,     0,    31,    32,    77,   590,     0,   598,
+     355,   355,     0,   355,   355,     0,     0,     0,     0,     0,
+     622,   623,     0,   347,   362,     0,     0,     0,     0,    33,
+       0,     0,    34,    79,    35,     0,    36,    37,     0,    38,
+      39,    40,     0,     8,     9,    10,    11,    12,    41,    42,
+       0,     0,     0,     0,     0,     0,     0,    77,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   355,   355,
+       0,     0,    31,     0,    43,     0,    44,     0,   211,     0,
+    -518,     0,    45,    46,     0,     0,     0,   231,     0,   235,
+       0,   237,     0,     0,     0,     0,     0,     0,   246,     0,
+      34,     0,   165,     0,     0,    37,     0,   183,   184,    40,
+       0,     0,     0,     0,   347,     0,    41,    42,     0,   218,
+       0,     0,   347,     0,     8,     9,    10,    11,    12,   211,
+       0,   235,   237,   246,     0,     0,     0,   362,   362,   355,
+     362,   362,  1504,     0,   410,     0,     0,     0,     0,     0,
+      45,    46,     0,    31,     0,     0,     0,     0,     0,     0,
+      86,     0,     0,     0,     0,     0,   165,     0,     0,     0,
+     272,     0,   211,     0,     0,     0,     0,     0,     0,     0,
+       0,    34,   224,     0,     0,     0,    37,    57,   183,   184,
+      40,     0,     0,     0,     0,   362,   362,    41,    42,   165,
+       0,     0,     0,     0,    79,     0,     0,     0,     0,   368,
+       0,     0,     0,   374,     0,     0,   355,     0,   355,     0,
+       0,     0,     0,   265,     0,     0,     0,     0,     0,     0,
+       0,    45,    46,   211,     0,   235,   237,   246,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   355,     0,
+       0,     0,     0,     0,     0,    57,   355,   355,   355,     0,
+       0,     0,   165,     0,     0,     0,   362,   355,   355,     0,
+       0,   211,     0,     0,   218,     0,   211,     0,     0,     0,
+       0,    79,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   496,   165,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   225,
+       0,     0,     0,     0,     0,     0,     0,   374,     0,     0,
+     355,     0,     0,     0,   165,     0,     0,     0,     0,     0,
+       0,    86,     0,   347,   347,     0,     0,     0,     0,   211,
+       0,     0,     0,   362,     0,   362,     0,   523,     0,     0,
+       0,     0,     0,    57,     0,     0,     0,     0,     0,   165,
+       0,   211,   924,     0,   925,     0,   235,   237,     0,     0,
+       0,   928,   929,     0,   246,   362,   934,     0,     0,     0,
+       0,     0,     0,   362,   362,   362,     0,   355,   939,     0,
+       0,     0,     0,   943,   362,   362,     0,   596,     0,     0,
+       0,     0,   620,     0,     0,     0,     0,     0,    86,     0,
+       0,     0,     0,     0,     0,     0,     0,   211,     0,     0,
+       0,   977,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    79,   211,     0,     0,     0,     0,
+     211,    79,   211,     0,     0,     0,     0,   362,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   211,
+       0,     0,   211,   211,     0,     0,     0,     0,     0,     0,
+     211,     0,     0,     0,     0,     0,     0,     0,   165,   165,
+       0,     0,     0,     0,   211,   368,     0,     0,     0,     0,
+       0,   211,    79,     0,     0,     0,     0,     0,     0,     0,
+       0,    57,    57,     0,     0,     0,   523,     0,     0,     0,
+       0,     0,     0,     0,   362,     0,     0,     0,     0,     0,
+    1022,  1023,  1024,  1025,    57,  1027,     0,     0,     0,     0,
+       0,     0,     0,     0,   714,     0,     0,     0,     0,     0,
+    1071,     0,    57,     0,     0,     0,   165,     0,     0,     0,
+       0,     0,     0,     0,  1077,     0,     0,     0,   523,     0,
+     523,    86,     0,   523,     0,   165,   523,     0,    86,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   368,     0,
+       0,     0,     0,     0,     0,     0,     0,   347,   347,     0,
+       0,     0,     0,     0,  1097,     0,    57,     0,     0,     0,
+       0,    57,     0,     0,     0,   211,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    86,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     165,     0,     0,   211,    57,     0,     0,     0,   211,  1128,
+       0,     0,   368,     0,     0,  1135,   809,     0,     0,     0,
+    1139,     0,     0,     0,     0,  1143,     0,  1144,     0,     0,
+       0,  1146,     0,  1147,  1148,     0,     0,  1151,     0,     0,
+       0,     0,   596,     0,     0,     0,  1163,   596,     0,     0,
+       0,     0,     0,     0,     0,     0,   368,   368,   368,     0,
+       0,     0,     0,     0,  1178,  1179,     0,     0,     0,     0,
+       0,     0,     0,     0,   368,     0,     0,   347,     0,   211,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,  1209,     0,   211,  1211,     0,     0,     0,     0,     0,
+       0,     0,    57,     0,     0,     0,   523,   282,   283,     0,
+     284,     0,     0,   496,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    57,     0,     0,     0,     0,     0,
+       0,    57,   368,     0,   933,     0,   285,  1225,     0,     0,
+       0,     0,   286,  1229,  1230,     0,   287,     0,     0,   288,
+     289,   290,   291,    41,    42,     0,   292,   293,     0,     0,
+       0,     0,     0,  1246,     0,     0,  1250,   714,     0,     0,
+    1252,     0,     0,     0,   211,     0,     0,     0,   156,   294,
+       0,   378,    57,  1260,   379,     0,   211,    45,    46,   296,
+     297,   298,   299,     0,     0,     0,  1267,     0,  1269,  1270,
+    1271,  1272,     0,     0,     0,   211,     0,     0,     0,     0,
+       0,     0,     0,     0,  1279,     0,  1280,     0,     0,     0,
+     172,     0,     0,   368,     0,   251,     0,   620,     0,     0,
+       0,   368,     0,     0,     0,   256,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,  1308,
+    1309,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   205,     2,   206,     4,     5,     6,     7,     8,     9,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
+      28,   156,     0,     0,     0,     0,     0,    31,     0,  1341,
+    1342,     0,     0,     0,     0,   385,     0,     0,     0,  1352,
+       0,     0,     0,     0,     0,     0,     0,     0,   211,     0,
+       0,     0,     0,     0,     0,    34,   714,    35,   417,    36,
+       0,     0,   207,    39,     0,     0,     0,     0,     0,     0,
+       0,   523,   432,     0,     0,     0,     0,     0,   211,     0,
+       0,   437,     0,   282,   283,     0,   284,     0,     0,     0,
+       0,   445,     0,     0,     0,   165,     0,     0,     0,   208,
+    1387,     0,  1388,  1389,  1390,    45,    46,     0,     0,     0,
+       0,     0,   285,   211,  1394,     0,   463,     0,   286,     0,
+       0,   473,   287,  1405,   211,   288,   289,   290,   291,    41,
+      42,     0,   292,   293,   481,     0,     0,     0,     0,     0,
+     491,     0,   495,     0,     0,     0,     0,     0,  1426,     0,
+       0,   596,     0,     0,     0,   294,     0,   378,     0,   525,
+       0,     0,     0,    45,    46,   296,   297,   298,   299,     0,
+       0,     0,   368,   368,     0,     0,   785,     0,     0,     0,
+       0,     0,     0,     0,   282,   283,     0,   284,     0,     0,
+       0,  1464,  1465,     0,     0,     0,   211,     0,     0,     0,
+       0,   584,     0,     0,  1470,     0,   589,     0,     0,     0,
+     211,  1470,     0,   285,     0,     0,     0,     0,     0,   639,
+       0,   139,   140,   287,     0,     0,   288,   289,   290,   291,
+      41,    42,   523,   292,   293,   634,     0,     0,     0,   635,
+     636,     0,   638,  1503,     0,     0,     0,  1509,     0,   649,
+     650,     0,   651,   652,     0,   653,   294,   654,   640,     0,
+     641,   379,     0,     0,    45,    46,   296,   297,   298,   299,
+       0,     0,     0,     0,   584,  1531,     0,  1532,     0,     0,
+       0,     0,   669,     0,     0,     0,     0,     0,     0,     0,
+       0,   340,   363,     0,     0,     0,     0,     0,   714,   211,
+       0,     0,     0,     0,     0,  1547,  1548,   680,     0,     0,
+       0,     0,     0,  1551,  1552,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   413,     0,     0,     0,     0,
+       0,     0,   413,   706,     0,     0,     0,     0,     0,   709,
+     218,     0,     0,     0,   463,   466,     2,   206,     4,     5,
+       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+       0,     0,    26,    27,    28,     0,     0,   714,     0,     0,
+     744,    31,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   211,   762,     0,     0,     0,     0,
+       0,     0,     0,     0,   413,     0,     0,     0,     0,    34,
+       0,    35,     0,    36,     0,     0,    38,    39,     0,     0,
+       0,     0,     0,     0,     0,     0,   368,   368,     0,     0,
+       0,     0,     0,   788,     0,   218,     0,     0,     0,     0,
+       0,     0,   798,     0,     0,     0,     0,     0,     0,   800,
+     320,     0,     0,     0,     0,   808,    -3,     0,   413,     0,
+     345,     0,     0,     0,   822,     0,   413,   580,     0,   413,
+     583,     0,   381,   381,     0,     0,     0,     0,     0,     0,
+     363,     0,  1011,     0,   612,     8,     9,    10,    11,    12,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   630,   862,     0,   340,     0,     0,     0,
+       0,     0,   282,   283,    31,   284,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   413,     0,     0,     0,   413,     0,     0,
+     808,   285,    34,   320,     0,     0,   368,   286,   903,     0,
+       0,   287,     0,     0,   288,   289,   290,   291,    41,    42,
+       0,   292,   293,     0,     0,     0,     0,   477,   363,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   251,
+       0,     0,     0,     0,   294,     0,   378,     0,     0,   940,
+     941,     0,   343,    46,   296,   297,   298,   299,     0,     0,
+       0,     0,   523,     0,   523,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   413,     0,     0,   363,     0,     0,
+       0,     0,   978,     0,     0,     0,     0,   982,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   523,     0,
+     523,   211,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   413,     0,     0,     0,
+     340,   363,     0,     0,     0,     0,     0,   165,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   381,     0,     0,     0,     0,     0,     0,
+       0,  1016,     0,     0,     0,     0,     0,     0,  1017,     0,
+       0,     0,     0,     0,     0,   413,   413,     0,     0,     0,
+       0,  1019,     0,  1020,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   802,   363,     0,  1032,     0,     0,
+       0,     0,     0,  1036,     0,   612,     0,   612,   612,     0,
+       0,     0,     0,     0,   612,  1074,     0,     0,  1075,     0,
+       0,     0,     0,     0,   841,   363,     0,     0,     0,     0,
+     363,     0,     0,     0,     0,     0,     0,     0,     0,   363,
+     363,   363,     0,     0,     0,     0,     0,   708,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   363,     0,     0,
+       0,     0,   413,   883,     0,     0,   413,   886,     0,     0,
+       0,     0,     0,   888,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   740,     0,     0,     0,
+       0,     0,   413,     0,     0,   589,     0,     0,     0,   757,
+       0,     0,     0,     0,   740,     0,     0,   740,     0,     0,
+       0,     0,     0,     0,     0,   363,   612,     0,     0,   766,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+    1145,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   787,     0,     0,     0,     0,     0,     0,     0,   340,
+     363,   796,     0,     0,   413,   413,     0,     0,   345,     0,
+       0,     0,     0,   757,     0,     0,     0,     0,     0,     0,
+       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,   525,     0,
+      26,    27,    28,     0,  1210,     0,     0,     0,   413,    31,
+       0,     0,     0,     0,     0,     0,   363,     0,     0,     0,
+       0,     0,   861,   802,   363,     0,     0,   612,     0,   612,
+     381,     0,     0,     0,     0,     0,     0,    34,  1222,   612,
+       0,     0,    37,  1224,    38,    39,    40,     0,     0,     0,
+       0,  1228,     0,    41,    42,     0,     8,     9,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    23,    24,    25,  -291,     0,     0,     0,     0,    43,
+       0,   157,     0,     0,  1254,    31,     0,    45,    46,     0,
+       0,     0,     0,     0,     0,     0,  1262,     0,     0,  1263,
+       0,  1264,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   802,     0,    34,     0,  1273,  1274,     0,   340,   363,
+     413,     0,   413,     0,  -291,     0,   413,     0,   757,     0,
+     962,     0,     0,     0,     0,     0,     0,  1287,     0,     0,
+     973,     0,     0,     0,     0,     0,   981,   612,   612,     0,
+       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,  1161,     0,
+       0,     8,     9,    10,    11,    12,     0,     0,     0,    31,
+       0,     0,   413,     0,  1326,     0,     0,     0,   999,  1000,
+       0,     0,   345,     0,     0,     0,     0,     0,   282,   283,
+      31,   284,     0,   413,  1142,     0,   345,    34,     0,     0,
+       0,     0,     0,     0,   363,     0,     0,     0,     0,     0,
+     413,  1154,     0,   612,   612,  1159,     0,   285,    34,     0,
+       0,     0,     0,   286,     0,   363,   363,   287,     0,     0,
+     288,   289,   290,   291,    41,    42,  1030,   292,   293,     0,
+     381,     0,     0,     0,     0,     0,     0,     0,     0,  1376,
+       0,  1377,     0,     0,     0,     0,     0,     0,     0,     0,
+     294,     0,   378,  1385,     0,  1386,     0,     0,  1162,    46,
+     296,   297,   298,   299,     0,     0,     0,   345,     0,     0,
+       0,     0,  1393,     0,     0,     0,     0,     0,   413,     0,
+     413,     0,     0,     0,     0,   413,     0,     0,  1411,  1413,
+       0,     0,     0,     0,   612,     0,     0,     0,     0,  1418,
+       0,     0,  1228,     0,     0,     0,   320,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   802,   413,  1242,
+       0,     0,     0,  1440,     0,   282,   283,     0,   284,     0,
+       0,     0,  1447,     0,   381,  1449,     0,  1451,  1453,  1455,
+     973,   363,     0,     0,   740,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   285,     0,     0,     0,     0,     0,
+     286,     0,     0,     0,   287,  1149,     0,   288,   289,   290,
+     291,    41,    42,     0,   292,   293,  1164,  1485,     0,  1487,
+       0,  1228,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,  1498,   294,   381,   378,
+    1182,     0,   340,     0,   756,    45,    46,   296,   297,   298,
+     299,     0,     0,     0,     0,   973,   973,     0,     0,     0,
+     363,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,  1214,     0,     0,     0,
+       0,     0,     0,     0,     1,     2,   206,     4,     5,     6,
+       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,    23,    24,    25,   363,
+     363,    26,    27,    28,    29,     0,     0,    30,     0,     0,
+      31,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   973,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    34,   861,
+      35,     0,    36,     0,     0,    38,    39,     0,     0,     0,
+       0,     0,     0,     0,  1265,  1266,     0,     1,     2,   206,
+       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,    25,    44,     0,    26,    27,    28,    29,    45,    46,
+      30,   282,   283,    31,  1039,  1040,     0,  1041,     0,     0,
+    1042,  1043,  1044,  1045,  1046,  1047,  1048,  1049,     0,     0,
+       0,  1050,     0,     0,     0,  1051,  1052,     0,    33,   363,
+     285,    34,     0,    35,     0,    36,  1053,     0,    38,    39,
+     287,     0,     0,   288,   289,   290,   291,    41,    42,     0,
+     292,   293,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   294,     0,  1054,     0,     0,   171,     0,
+       0,    45,    46,   296,   297,   298,   299,     0,     0,     0,
+       0,  1055,     0,     0,     0,     0,  -126,     0,     0,     0,
+       0,     0,     0,     0,     0,  1370,     0,     0,   740,     0,
+       0,     0,     0,     0,     0,     0,   413,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     413,   413,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   413,     1,     2,   206,     4,
+       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,     0,     0,    26,    27,    28,    29,     0,     0,    30,
+     282,   283,    31,   284,     8,     9,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,    25,     0,     0,    26,    27,    28,     0,     0,   285,
+      34,     0,    35,    31,    36,   286,     0,    38,    39,   287,
+       0,     0,   288,   289,   290,   291,    41,    42,     0,   292,
+     293,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    34,     0,     0,     0,     0,    37,     0,    38,    39,
+      40,     0,   294,     0,  1054,     0,     0,    41,    42,     0,
+      45,    46,   296,   297,   298,   299,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,  -126,     0,     0,     0,     0,
+       0,     0,     0,    43,     0,    44,     0,     0,     0,     0,
+       0,    45,    46,     0,     0,     0,     0,     0,   320,     1,
+       2,   206,     4,     5,     6,     7,     8,     9,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    23,    24,    25,     0,     0,    26,    27,    28,    29,
+       0,     0,    30,   282,   283,    31,   284,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
+       0,     0,   285,    34,     0,    35,    31,    36,   286,     0,
+      38,    39,   287,     0,     0,   288,   289,   290,   291,    41,
+      42,     0,   292,   293,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    34,     0,     0,     0,     0,   110,
+       0,    38,    39,     0,     0,   294,     0,    44,     0,     0,
+      41,    42,     0,    45,    46,   296,   297,   298,   299,     2,
+     206,     4,     5,     6,     7,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
+       0,     0,   282,   283,    31,   284,     0,     0,     0,     8,
+       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+      19,    20,    21,    22,    23,    24,    25,  -292,     0,     0,
+       0,   285,    34,     0,    35,     0,    36,   286,    31,    38,
+      39,   287,     0,     0,   288,   289,   290,   291,    41,    42,
+       0,   292,   293,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    34,     0,     0,     0,
+       0,     0,     0,     0,   294,     0,   342,  -292,     0,     0,
+       0,   756,   343,    46,   296,   297,   298,   299,     2,   206,
+       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,    25,     0,     0,    26,    27,    28,     0,     0,     0,
+       0,   282,   283,    31,   284,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
+     285,    34,     0,    35,    31,    36,   286,     0,    38,    39,
+     287,     0,     0,   288,   289,   290,   291,    41,    42,     0,
+     292,   293,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    34,     0,     0,     0,     0,     0,     0,    38,
+      39,     0,     0,   294,     0,   961,     0,     0,     0,     0,
+     756,   343,    46,   296,   297,   298,   299,     2,   206,     4,
+       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
+     282,   283,    31,   284,     8,     9,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,    25,     0,     0,    26,    27,    28,     0,     0,   285,
+      34,     0,    35,    31,    36,   286,     0,    38,    39,   287,
+       0,     0,   288,   289,   290,   291,    41,    42,     0,   292,
+     293,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    34,     0,     0,     0,     0,     0,     0,   207,    39,
+       0,     0,   294,     0,   961,     0,     0,     0,     0,   756,
+      45,    46,   296,   297,   298,   299,     2,   206,     4,     5,
+       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+       0,     0,    26,    27,    28,     0,     0,     0,     0,   282,
+     283,    31,   284,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   285,    34,
+       0,    35,     0,    36,   286,     0,    38,    39,   287,     0,
+       0,   288,   289,   290,   291,    41,    42,     0,   292,   293,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   294,     0,   342,     0,     0,     0,     0,     0,   343,
+      46,   296,   297,   298,   299,     2,   206,     4,     5,     6,
+       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
+       0,    26,    27,    28,     0,     0,     0,     0,   282,   283,
+      31,   284,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   285,    34,     0,
+      35,     0,    36,   286,     0,   207,    39,   287,     0,     0,
+     288,   289,   290,   291,    41,    42,     0,   292,   293,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     294,     0,   996,     0,     0,     0,     0,     0,   997,    46,
+     296,   297,   298,   299,     2,   206,     4,     5,     6,     7,
+       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
+      26,    27,    28,     0,     0,     0,     0,   282,   283,    31,
+     284,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   285,    34,     0,    35,
+       0,    36,   286,     0,    38,    39,   287,     0,     0,   288,
+     289,   290,   291,    41,    42,     0,   292,   293,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   294,
+       0,   961,     0,     0,     0,     0,     0,   343,    46,   296,
+     297,   298,   299,     2,   206,     4,     5,     6,     7,     8,
+       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+      19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
+      27,    28,     0,     0,     0,     0,   282,   283,    31,   284,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   285,    34,     0,    35,     0,
+      36,   286,     0,   207,    39,   287,     0,     0,   288,   289,
+     290,   291,    41,    42,     0,   292,   293,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   294,     0,
+     378,     0,     0,     0,     0,     0,    45,    46,   296,   297,
+     298,   299,  -514,     0,     0,     1,     2,     3,     4,     5,
+       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+       0,     0,    26,    27,    28,    29,     0,     0,    30,     0,
+       0,    31,    32,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    33,     0,     0,    34,
+       0,    35,     0,    36,    37,     0,    38,    39,    40,     0,
+       0,     0,     0,     0,     0,    41,    42,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    43,     0,    44,     0,     0,     0,     0,     0,    45,
+      46,     1,     2,     3,     4,     5,     6,     7,     8,     9,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
+      28,    29,     0,     0,    30,     0,     0,    31,    32,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    33,     0,     0,    34,     0,    35,     0,    36,
+      37,     0,    38,    39,    40,     0,     0,     0,     0,     0,
+       0,    41,    42,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    43,     0,    44,
+       0,     0,     0,     0,     0,    45,    46,   205,     2,   206,
+       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,    25,     0,     0,    26,    27,    28,     0,     0,     0,
+       0,     0,     0,    31,     0,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,    25,     0,     0,    26,    27,    28,   484,   485,
+     486,    34,     0,    35,    31,    36,    37,     0,   207,    39,
+      40,     0,     0,     0,     0,     0,     0,    41,    42,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    34,     0,     0,     0,     0,     0,     0,    38,
+      39,     0,     0,    43,     0,   208,     0,     0,     0,     0,
+       0,    45,    46,     1,     2,   206,     4,     5,     6,     7,
+       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,  -291,     0,
+      26,    27,    28,    29,     0,     0,    30,     0,     0,    31,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    34,     0,    35,
+       0,    36,     0,     0,    38,    39,     0,     0,  -291,     2,
+     206,     4,     5,     6,     7,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
+       0,    44,     0,     0,    31,     0,     0,    45,    46,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    34,     0,    35,     0,    36,    37,     0,   207,
+      39,    40,     0,     0,     0,     0,     0,     0,    41,    42,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    43,     0,   208,     0,     0,     0,
+       0,     0,    45,    46,     2,   206,     4,     5,     6,     7,
+       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
+      26,    27,    28,     0,     0,     0,     0,     0,     0,    31,
+       0,     0,     0,     0,     8,     9,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,    25,     0,     0,    26,    27,    28,    34,     0,    35,
+       0,    36,     0,    31,    38,    39,     0,     2,   206,     4,
+       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    34,     0,    26,    27,    28,     0,     0,    38,    39,
+    -398,   676,    31,     0,     0,     0,     0,    45,    46,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      34,     0,    35,   633,    36,   337,     0,    38,    39,     0,
+       0,    45,    46,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,  1349,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   676,     0,     0,     0,     0,     0,
+      45,    46,     2,   206,     4,     5,     6,     7,     8,     9,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
+      28,     0,     0,     0,     0,     0,     0,    31,     0,     0,
+       0,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
+       0,    26,    27,    28,     0,    34,     0,    35,     0,    36,
+      31,   683,    38,    39,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,  1351,     0,     0,     0,    34,     0,
+       0,     0,     0,     0,     0,    38,    39,     0,     0,   676,
+       0,     0,     0,     0,     0,    45,    46,     2,   206,     4,
+       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,     0,   684,    26,    27,    28,   685,     0,    45,    46,
+       0,     0,    31,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      34,     0,    35,     0,    36,     0,     0,   207,    39,     0,
+       2,   206,     4,     5,     6,     7,     8,     9,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    23,    24,    25,     0,     0,    26,    27,    28,     0,
+       0,     0,     0,     0,   270,    31,     0,     0,     0,     0,
+      45,    46,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    34,     0,    35,     0,    36,     0,     0,
+      38,    39,     0,     2,   206,     4,     5,     6,     7,     8,
+       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+      19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
+      27,    28,     0,     0,     0,     0,     0,   676,    31,     0,
+       0,     0,     0,    45,    46,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    34,     0,    35,     0,
+      36,     0,     0,    38,    39,     0,     2,   206,     4,     5,
+       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+       0,     0,    26,    27,    28,     0,     0,     0,     0,     0,
+     591,    31,     0,     0,     0,     0,    45,    46,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    34,
+       0,    35,     0,    36,     0,     0,   207,    39,     8,     9,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
+      28,     0,     0,     0,     0,   282,   283,    31,   284,     0,
+       0,     0,     0,   208,     0,     0,     0,     0,     0,    45,
+      46,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   285,    34,     0,     0,     0,     0,
+     286,     0,    38,    39,   287,     0,     0,   288,   289,   290,
+     291,    41,    42,     0,   292,   293,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   294,     0,   516,
+       0,     0,   171,     0,     0,    45,    46,   296,   297,   298,
+     299,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
+       0,    26,    27,    28,     0,     0,     0,     0,   282,   283,
+      31,   284,     8,     9,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+       0,     0,    26,    27,    28,     0,     0,   285,    34,     0,
+       0,    31,     0,   286,     0,    38,    39,   287,     0,     0,
+     288,   289,   290,   291,    41,    42,     0,   292,   293,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    34,
+       0,     0,     0,     0,    37,     0,   335,   336,    40,     0,
+     294,   -35,   295,     0,     0,    41,    42,     0,    45,    46,
+     296,   297,   298,   299,     8,     9,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,    25,     0,   337,    26,    27,    28,     0,     0,    45,
+      46,   282,   283,    31,   284,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
+     285,    34,     0,     0,    31,     0,   286,     0,    38,    39,
+     287,     0,     0,   288,   289,   290,   291,    41,    42,     0,
+     292,   293,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    34,     0,     0,     0,     0,   110,     0,    38,
+      39,     0,     0,   294,     0,   295,     0,     0,    41,    42,
+       0,    45,    46,   296,   297,   298,   299,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,     0,    44,    26,    27,    28,
+       0,     0,    45,    46,   282,   283,    31,   284,     8,     9,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
+      28,     0,     0,   285,    34,     0,     0,    31,   683,   286,
+       0,    38,    39,   287,     0,     0,   288,   289,   290,   291,
+      41,    42,     0,   292,   293,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    34,     0,     0,     0,     0,
+       0,     0,    38,    39,     0,     0,   294,     0,   157,     0,
+       0,     0,     0,     0,    45,    46,   296,   297,   298,   299,
+       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,     0,   684,
+      26,    27,    28,  1090,     0,    45,    46,   282,   283,    31,
+     284,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
+       0,    26,    27,    28,     0,     0,   285,    34,     0,     0,
+      31,   683,   286,     0,    38,    39,   287,     0,     0,   288,
+     289,   290,   291,    41,    42,     0,   292,   293,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    34,     0,
+       0,     0,     0,     0,     0,    38,    39,     0,     0,   294,
+       0,   591,     0,     0,     0,     0,     0,    45,    46,   296,
+     297,   298,   299,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,     0,   684,    26,    27,    28,  1219,     0,    45,    46,
+     282,   283,    31,   284,     0,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,    25,  -291,     0,    26,    27,    28,     0,   285,
+      34,     0,     0,     0,    31,   286,     0,    38,    39,   287,
+       0,     0,   288,   289,   290,   291,    41,    42,     0,   292,
+     293,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    34,     0,     0,     0,     0,    37,     0,   335,
+     336,    40,   294,  -291,   378,     0,     0,     0,    41,    42,
+      45,    46,   296,   297,   298,   299,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   633,     0,   337,     0,     0,     0,
+       0,     0,    45,    46,     8,     9,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,    25,  -291,     0,    26,    27,    28,     0,     0,     0,
+       0,     0,     0,    31,     8,     9,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,    25,     0,     0,    26,    27,    28,     0,     0,     0,
+       0,    34,     0,    31,     0,     0,    37,     0,   335,   336,
+      40,     0,  -291,     0,     0,     0,     0,    41,    42,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    34,     0,     0,     0,     0,    37,     0,   207,    39,
+      40,     0,     0,     0,     0,   337,     0,    41,    42,     0,
+       0,    45,    46,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    43,     0,   270,     0,     0,     0,     0,
+       0,    45,    46,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
+       0,     0,    31,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,  -291,     0,    26,    27,    28,     0,     0,     0,     0,
+      34,     0,    31,     0,     0,    37,     0,   335,   336,    40,
+       0,     0,     0,     0,     0,     0,    41,    42,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      34,     0,     0,     0,     0,     0,     0,    38,    39,     0,
+       0,  -291,   633,     0,   337,     0,     0,     0,     0,     0,
+      45,    46,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   633,     0,   337,     0,     0,     0,     0,     0,
+      45,    46,     8,     9,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+    -291,     0,    26,    27,    28,     0,     0,     0,     0,     0,
+       0,    31,     8,     9,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+       0,     0,    26,    27,    28,     0,     0,     0,     0,    34,
+       0,    31,     0,     0,     0,     0,    38,    39,     0,     0,
+    -291,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,    23,    24,    25,    34,
+       0,    26,    27,    28,     0,     0,    38,    39,     0,     0,
+      31,     0,     0,   337,     0,     0,     0,     0,     0,    45,
+      46,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    34,     0,
+       0,     0,     0,   257,     0,    38,    39,     0,     0,    45,
+      46,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
+       0,    26,    27,    28,     0,     0,     0,     0,     0,     0,
+      31,     0,   157,     0,     0,     0,     0,     0,    45,    46,
+       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,    34,     0,
+      26,    27,    28,     0,     0,   207,    39,     0,     0,    31,
+       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
+      26,    27,    28,     0,     0,     0,     0,    34,     0,    31,
+       0,     0,   270,     0,    38,    39,     0,     0,    45,    46,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    34,     0,     0,
+       0,     0,     0,     0,    38,    39,     0,     0,     0,     0,
+       0,   337,     0,     0,     0,     0,     0,    45,    46,     0,
+       0,     0,     8,     9,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+       0,   684,    26,    27,    28,     0,     0,    45,    46,     0,
+       0,    31,     8,     9,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+       0,     0,    26,    27,    28,     0,     0,     0,     0,    34,
+       0,    31,     0,     0,     0,     0,    38,    39,     0,     0,
+       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,     0,    34,
+      26,    27,    28,     0,     0,     0,    38,    39,     0,    31,
+       0,     0,     0,   591,     0,     0,     0,     0,     0,    45,
+      46,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    34,     0,     0,
+       0,     0,     0,    44,   207,    39,     0,     0,     0,    45,
+      46,     2,   206,     4,     5,     6,     7,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
+       0,     0,     0,     0,     0,     0,    31,    45,    46,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    34,     0,    35,     0,    36,     0,
+       0,    38,    39,   282,   283,     0,   284,  1040,     0,  1041,
+       0,     0,  1042,  1043,  1044,  1045,  1046,  1047,  1048,  1049,
+       0,     0,  1523,  1050,     0,     0,     0,  1051,  1052,     0,
+      33,     0,   285,     0,     0,     0,     0,  -411,  1053,     0,
+       0,     0,   287,     0,     0,   288,   289,   290,   291,    41,
+      42,     0,   292,   293,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   294,     0,   378,     0,     0,
+     171,     0,     0,    45,    46,   296,   297,   298,   299,     0,
+       0,   282,   283,  1055,   284,  1040,     0,  1041,  -126,     0,
+    1042,  1043,  1044,  1045,  1046,  1047,  1048,  1049,     0,     0,
+       0,  1050,     0,     0,     0,  1051,  1052,     0,    33,     0,
+     285,     0,     0,     0,     0,     0,  1053,     0,     0,     0,
+     287,     0,     0,   288,   289,   290,   291,    41,    42,     0,
+     292,   293,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   294,     0,   378,     0,     0,   171,     0,
+       0,    45,    46,   296,   297,   298,   299,     0,     0,     0,
+       0,  1055,     0,     0,     0,     0,  -126,     2,   206,     4,
+       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
+       0,     0,    31,     0,   282,   283,     0,   284,  1040,     0,
+    1041,  1397,  1398,  1042,  1043,  1044,  1045,  1046,  1047,  1048,
+    1049,     0,     0,  1523,  1050,     0,     0,     0,  1051,  1052,
+      34,    33,    35,   285,    36,     0,     0,    38,    39,  1053,
+       0,     0,     0,   287,     0,     0,   288,   289,   290,   291,
+      41,    42,     0,   292,   293,     0,     0,     0,     0,  1310,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   294,     0,   378,     0,
+       0,   171,     0,     0,    45,    46,   296,   297,   298,   299,
+       0,     0,   282,   283,  1055,   284,  1040,     0,  1041,  1397,
+    1398,  1042,  1043,  1044,  1045,  1046,  1047,  1048,  1049,     0,
+       0,     0,  1050,     0,     0,     0,  1051,  1052,     0,    33,
+       0,   285,     0,     0,     0,     0,     0,  1053,     0,     0,
+       0,   287,     0,     0,   288,   289,   290,   291,    41,    42,
+       0,   292,   293,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   294,     0,   378,     0,     0,   171,
+       0,     0,    45,    46,   296,   297,   298,   299,     0,     0,
+     282,   283,  1055,   284,  1040,     0,  1041,     0,     0,  1042,
+    1043,  1044,  1045,  1046,  1047,  1048,  1049,     0,     0,     0,
+    1050,     0,     0,     0,  1051,  1052,     0,    33,     0,   285,
+       0,     0,     0,     0,     0,  1053,     0,     0,     0,   287,
+       0,     0,   288,   289,   290,   291,    41,    42,     0,   292,
+     293,     0,     0,     0,     0,     0,     0,   282,   283,     0,
+     284,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   294,     0,   378,     0,     0,   171,     0,     0,
+      45,    46,   296,   297,   298,   299,   285,     0,     0,     0,
+    1055,     0,   286,     0,     0,     0,   287,     0,     0,   288,
+     289,   290,   291,    41,    42,     0,   292,   293,     0,     0,
+       0,     0,     0,     0,   282,   283,     0,   284,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   294,
+       0,   378,     0,     0,   970,     0,     0,    45,    46,   296,
+     297,   298,   299,   285,     0,     0,     0,     0,     0,   286,
+       0,     0,     0,   287,     0,     0,   288,   289,   290,   291,
+      41,    42,     0,   292,   293,     0,     0,     0,     0,     0,
+       0,   282,   283,     0,   284,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   294,     0,   378,     0,
+     282,   283,     0,   284,    45,    46,   296,   297,   298,   299,
+     285,     0,     0,     0,     0,     0,   286,     0,     0,     0,
+     287,     0,     0,   288,   289,   290,   291,    41,    42,   285,
+     292,   293,     0,     0,     0,   286,     0,     0,     0,   287,
+       0,     0,   288,   289,   290,   291,    41,    42,     0,   292,
+     293,     0,     0,   294,     0,   378,     0,   282,   283,     0,
+     284,   707,    46,   296,   297,   298,   299,     0,     0,     0,
+       0,     0,   294,     0,   378,     0,   282,   283,     0,   284,
+     343,    46,   296,   297,   298,   299,   285,     0,     0,     0,
+       0,     0,   286,     0,     0,     0,   287,     0,     0,   288,
+     289,   290,   291,    41,    42,   285,   292,   293,     0,     0,
+       0,   286,     0,     0,     0,   287,     0,     0,   288,   289,
+     290,   291,    41,    42,     0,   292,   293,     0,     0,   294,
+       0,     0,     0,   282,   283,     0,   284,    45,    46,   296,
+     297,   298,   299,     0,     0,     0,     0,     0,   510,     0,
+       0,     0,     0,     0,     0,     0,    45,    46,   296,   297,
+     298,   299,   285,     0,     0,     0,     0,     0,   286,     0,
+       0,     0,   287,     0,     0,   288,   289,   290,   291,    41,
+      42,     0,   292,   293,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   513,     0,     0,     0,     0,
+       0,     0,     0,    45,    46,   296,   297,   298,   299,     2,
+     206,     4,     5,     6,     7,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,    25,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    31,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    34,     0,    35,     0,    36,    37,     0,   174,
+     175,    40,     0,     0,     0,     0,     0,     0,    41,    42,
+     205,     2,   206,     4,     5,     6,     7,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
+       0,     0,     0,     0,     0,     0,    31,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    34,     0,    35,     0,    36,     0,
+       0,   207,    39,   466,     2,   206,     4,     5,     6,     7,
+       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
+      26,    27,    28,     0,     0,     0,     0,     0,     0,    31,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    34,     0,    35,
+       0,    36,     0,     0,    38,    39,     2,   206,     4,     5,
+       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+       0,     0,    26,    27,    28,     0,     0,     0,     0,     0,
+       0,    31,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    34,
+       0,    35,     0,    36,     0,     0,   207,    39
+};
+
+static const yytype_int16 yycheck[] =
+{
+       0,     1,    43,    43,   185,   185,   204,     0,    43,     1,
+     185,   239,   105,   185,   520,   533,   116,   187,   748,     0,
+       1,   748,   185,   168,   169,   748,   732,   185,     0,     1,
+     512,   186,    32,   344,   645,   185,   219,  1020,   601,    32,
+     156,   602,   256,    43,   873,   873,    57,   608,   491,    49,
+       0,    32,   495,   755,   691,   348,    49,   619,    72,   601,
+      32,   489,   155,    63,   348,    32,    66,  1320,   599,    69,
+      63,   570,   982,    66,   599,    72,    69,    69,   281,    82,
+      43,  1397,    32,    72,   265,   265,   599,  1039,    69,    63,
+     265,   261,   262,   265,    66,   106,    43,    69,   109,   599,
+      43,   201,   265,   425,   426,   105,    82,   265,   599,   599,
+      51,   266,    39,   113,   599,   265,   116,   117,   132,    39,
+      39,     0,  1032,   417,   634,   635,    28,     0,   117,     0,
+    1019,  1020,   109,    39,   110,   132,   363,     0,  1051,  1052,
+     367,   651,   107,   437,   185,   185,   146,   147,    39,    82,
+     185,   445,  1468,    32,   147,   155,   156,   186,   132,    32,
+     160,    32,   114,    39,    39,  1418,   131,   160,   109,    32,
+     481,   493,    43,     1,   904,   603,    78,   904,    49,   607,
+     686,   904,   109,   228,   111,   185,   186,    44,    45,   109,
+     512,   111,    63,   186,   487,    66,   156,   130,    69,   709,
+     628,   201,   247,   417,   632,   111,    95,   218,    49,   209,
+    1039,    44,    45,   109,  1127,    82,   209,   717,   109,  1500,
+     111,   221,   185,   437,   265,   265,   409,   717,   221,    64,
+     265,   445,   717,   109,   109,   111,   111,   266,   185,   239,
+     129,  1224,   185,   694,   111,    55,  1527,   340,    82,   221,
+     405,   251,   813,   109,   110,   577,   109,   114,   251,   259,
+     823,   272,   899,   112,   264,   265,   266,   116,   279,   116,
+     251,   271,   113,   266,   109,   109,   147,   370,   131,   251,
+     811,   823,   115,   985,   251,   132,   811,    97,    11,   160,
+     800,  1274,    96,   792,   294,   395,     0,    82,   811,   112,
+     503,   251,  1401,    44,    45,   146,   306,   294,   619,    85,
+     109,   811,   923,   624,   185,   186,   432,   601,   122,    72,
+     811,   811,   322,   423,   479,   110,   811,   327,    32,   429,
+      83,    84,   110,  1471,   327,  1287,   347,   113,   209,  1477,
+     340,   111,  1048,   113,   344,   130,     3,    82,   348,   349,
+     221,   116,   130,   364,    72,   110,  1451,   368,   111,  1497,
+     130,   588,    66,   363,  1502,    83,    84,   367,   209,   932,
+     370,    96,   251,   114,   109,   130,   405,   256,   251,     3,
+     251,  1210,  1210,   193,  1273,  1274,   680,   109,   251,   111,
+    1485,   109,  1487,   256,   265,   395,  1495,   122,   239,   116,
+     931,  1500,    72,   630,   116,   405,   216,    90,    91,   525,
+    1393,   116,   405,    83,    84,   132,   226,   845,   931,   116,
+     132,  1520,     0,   423,   252,   425,   426,    49,  1527,   429,
+     271,   524,   432,   744,   128,   132,   998,   131,   425,   426,
+     931,   111,   125,   126,   119,   120,  1007,  1008,   116,   116,
+     479,   116,   131,   453,   905,   109,   327,    72,  1287,   111,
+     966,   113,   665,   130,   132,   306,   680,   132,    83,    84,
+     112,   471,   432,   589,   116,  1385,  1386,   348,   130,   479,
+     116,   481,   109,   483,   294,   655,   479,   487,  1440,     0,
+     483,   113,   706,   493,   130,  1447,   111,   940,   980,   950,
+     116,   646,   483,   344,  1393,   505,   116,   507,   109,   937,
+     510,   483,   512,   513,   130,  1126,    72,   221,   505,   109,
+     520,   481,   132,   510,   524,   525,   513,    83,    84,   109,
+     823,   686,   735,   483,   405,  1098,  1500,   109,   417,   823,
+       4,     5,     6,     7,     8,     9,  1498,   251,   116,    72,
+     110,    74,    75,   653,   417,   111,  1520,   116,   437,   109,
+      83,    84,   110,  1527,   132,   525,   445,   112,   116,   569,
+     570,   116,   112,   132,   437,   802,   116,   577,  1084,   566,
+     807,  1287,   445,  1089,   425,   426,   109,   209,   588,   589,
+     116,   114,   903,   593,   110,    88,    89,   116,   116,   599,
+     116,   601,   481,   110,   483,    69,   132,    71,   110,   620,
+     483,  1440,   483,   132,   132,   110,   487,   112,  1447,   619,
+     483,   116,   112,   112,   624,   636,   626,   116,   116,   589,
+     630,   116,   442,   633,   634,   635,   131,   132,   466,   650,
+      66,   110,  1114,   936,   132,   349,  1118,   132,    72,   271,
+     743,   651,   493,   653,   110,  1361,    82,   686,   468,    83,
+      84,   109,   110,   111,    72,  1116,    74,    75,   895,  1498,
+     110,   512,   294,    92,    93,    83,    84,   860,    10,    11,
+      12,    13,    14,   683,   306,   115,   686,   998,   110,   109,
+      57,   117,   808,   109,   116,   505,   110,   880,   694,   527,
+     510,   109,   116,   513,   532,   109,   114,    39,   109,   709,
+     710,   711,    64,   110,   942,   132,   589,   717,   718,   116,
+     731,   866,   109,   904,   904,  1176,  1177,   110,   599,   904,
+     601,   110,   904,   116,   160,    67,   577,   116,  1444,   106,
+    1446,   904,   109,   743,   744,   109,   904,   111,   748,   749,
+     110,   906,   132,   581,   904,    72,   116,    74,    75,   115,
+     116,    10,    11,    12,    13,    14,    83,    84,   472,   117,
+      85,    86,    87,   112,  1504,   123,   124,  1504,   619,   483,
+     109,  1504,   111,   624,   744,   110,  1304,   114,   155,   785,
+      39,   116,   792,  1499,   109,   221,   111,   114,   113,   114,
+     800,   680,   802,   109,   804,   111,   114,   807,   808,   902,
+     110,   811,   109,  1011,   111,   686,   116,   680,    67,   110,
+     117,   118,   110,   823,   652,   116,   654,   706,   116,   132,
+     109,   453,   111,   259,  1145,    85,    86,    87,   264,   132,
+     109,    72,   111,   706,   110,    76,   717,   718,   808,   110,
+     116,   218,    83,    84,   109,   116,   111,   114,   668,   109,
+     109,   111,   111,   113,   114,   744,   862,   677,   117,   118,
+      66,   681,   109,   873,   111,   110,   704,   906,   109,   109,
+     111,   116,    82,   505,   110,   507,   117,   118,   510,  1034,
+     116,   513,   873,   110,  1121,   895,     0,     1,   109,   116,
+     111,   873,   902,   903,   904,   272,   906,   112,   110,   905,
+     109,  1114,   279,  1224,   116,  1118,  1119,   621,   918,   110,
+     111,   117,   109,   349,    82,    29,    30,   110,    32,  1084,
+    1381,   931,   932,   116,  1089,   808,   936,    58,    59,    43,
+     811,   941,   942,   903,   118,    49,  1397,   127,   109,   941,
+     111,   128,   823,    57,   950,    94,   117,   118,   131,    63,
+     941,   909,    66,   911,   160,    69,   966,   111,   109,   941,
+     111,   109,   110,   111,  1480,   109,   117,   118,    82,    83,
+     347,   109,     4,     5,     6,     7,     8,     9,   112,   985,
+     109,   110,   111,   697,   873,   115,   116,   364,   998,   112,
+     873,   368,   106,   112,   430,   109,  1106,   711,    44,    45,
+     873,   110,   116,   505,   110,   507,  1467,  1468,   510,  1019,
+    1020,   513,   110,  1529,   903,   221,   109,   110,   111,     1,
+     110,  1234,   110,   904,   110,   906,  1247,  1248,  1249,  1039,
+    1036,   109,    72,   147,    74,    75,   472,    69,   112,    71,
+     111,   155,   114,    83,    84,  1084,   160,   116,  1039,  1019,
+    1089,   683,   131,   259,   431,   936,   114,  1039,   264,   114,
+       4,     5,     6,     7,     8,     9,   109,    49,   112,  1079,
+     112,   185,   186,   110,  1084,   551,   552,   897,   112,  1089,
+     553,   554,    72,   110,    74,    75,    76,   201,  1098,    33,
+     804,   942,   112,    83,    84,   209,  1106,    58,    59,    60,
+     132,   112,   130,  1206,   218,   559,   560,   221,  1321,    72,
+    1116,  1121,  1325,    76,   228,   130,   130,   116,   956,   109,
+      83,    84,    29,   105,   110,    69,   110,    71,   115,   243,
+     115,   113,   112,   247,   110,  1145,   114,   251,   252,   112,
+     978,   115,   109,   349,   982,   116,   109,   998,   110,   132,
+    1039,   265,   266,   110,   117,   118,  1039,   593,   272,   873,
+     555,   556,   557,   558,   146,   279,  1039,   116,   110,   110,
+    1176,  1177,   110,   155,   110,  1145,   116,  1187,  1188,   110,
+     110,   110,   110,   110,   110,   621,  1188,   110,   110,   110,
+     626,   110,  1189,  1190,  1032,  1192,  1206,  1188,   110,   110,
+    1210,   110,  1199,  1084,  1201,  1187,  1188,   115,  1089,  1422,
+      29,   588,   130,   327,  1224,   131,   110,   116,  1228,  1210,
+     112,   112,   110,   205,   430,   110,  1228,   209,  1210,    72,
+    1050,    74,    75,   347,   348,   110,   116,  1228,   116,   112,
+      83,    84,   114,   620,   130,   110,  1228,   110,   110,   116,
+     364,   112,   110,   110,   368,   110,  1145,   239,   109,   636,
+     116,   697,   116,  1273,  1274,   379,   472,  1377,   111,   109,
+     112,   109,  1282,   650,   109,   711,  1514,  1287,   109,   112,
+     130,   395,   873,   132,   110,   115,   918,  1001,   110,   271,
+     115,   405,   274,   110,   128,    72,  1287,    74,    75,    76,
+    1282,   115,   114,  1273,   112,  1287,    83,    84,   132,   423,
+    1320,   110,   294,  1504,  1504,   429,   112,   431,  1320,  1504,
+     112,  1210,  1504,   116,   306,  1039,   110,  1210,   110,  1320,
+     110,  1504,   109,   112,   112,  1224,  1504,  1210,  1320,    72,
+    1505,    74,    75,    76,  1504,   112,   110,   112,    47,   112,
+      83,    84,   466,   112,   731,  1376,   132,   471,   340,   132,
+    1357,   132,   344,   132,  1529,   479,   132,  1377,   804,   483,
+    1480,    30,   115,   487,   110,  1381,   490,   115,   492,   130,
+     110,   363,   110,  1393,   115,   367,   463,   593,   370,   112,
+      72,  1397,    74,    75,    76,   112,   112,   112,  1287,   112,
+     112,    83,    84,   284,  1287,   110,   112,   109,  1418,  1247,
+    1248,  1249,   112,   527,  1287,   621,  1418,   109,   532,   109,
+     626,    60,   110,    82,    83,   306,   307,  1418,   114,   110,
+    1440,   132,   112,   112,   110,   112,  1418,  1447,   110,  1449,
+      96,  1451,    96,   425,   426,   109,   109,  1079,   132,  1440,
+     115,  1042,   110,  1504,  1504,   110,  1447,   110,  1440,  1504,
+     110,  1467,  1468,   344,   116,  1447,  1505,   581,    42,   130,
+    1480,   453,   132,  1187,   588,  1485,  1296,  1487,   110,   110,
+      96,   132,    96,   132,   466,   599,   110,   601,  1498,   132,
+    1529,   697,   110,   110,  1504,  1505,  1210,   132,   110,   380,
+     115,   112,  1505,   112,  1514,   711,   620,  1498,   109,   491,
+     132,   493,   132,   495,   110,   115,  1498,   115,   895,  1529,
+     110,   110,   636,   505,   132,   507,  1529,   641,   510,   110,
+     512,   513,  1055,   562,   564,   561,   650,   976,   652,   653,
+     654,   563,   524,  1468,   565,  1210,    49,  1385,  1386,  1539,
+    1363,  1440,  1119,  1297,  1325,  1447,  1070,  1440,  1447,   683,
+      63,    66,   683,    66,  1447,  1001,    69,  1440,  1282,  1089,
+      75,   911,   686,  1287,  1447,   919,   690,   581,   692,   696,
+     866,   647,   696,   970,   243,  1423,   721,   938,  1228,   731,
+     704,    -1,   669,   483,   569,   577,    -1,   569,   804,   569,
+      -1,    -1,    -1,   717,   718,    70,   588,    -1,    73,  1498,
+      -1,    76,   117,    78,    -1,  1498,    -1,   731,    -1,  1210,
+      85,    -1,    -1,  1504,     3,  1498,    -1,    -1,  1448,    -1,
+    1450,    10,    11,    12,    13,    14,    -1,   619,    -1,    -1,
+      -1,    -1,   624,  1481,   147,    -1,    -1,    72,   630,    74,
+      75,    76,  1490,    -1,    -1,   160,    -1,   160,    83,    84,
+      39,    -1,    -1,  1514,  1484,   189,  1486,   548,   549,   550,
+      -1,    -1,   196,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   186,   109,    -1,   111,    -1,    67,    -1,
+      -1,    -1,   117,   118,    -1,    -1,    -1,   811,    -1,    -1,
+      -1,   683,    -1,    72,    -1,   130,   209,    76,  1528,   823,
+    1530,   788,  1303,    -1,    83,    84,   221,    -1,   221,    -1,
+     379,   798,    -1,  1543,  1544,    72,  1440,    74,    75,    76,
+      -1,    -1,   669,  1447,    -1,   812,    83,    84,    -1,   721,
+     109,    -1,    -1,    -1,   268,    -1,    -1,   212,   117,   118,
+      -1,  1187,   866,    -1,   259,    -1,    -1,    -1,   872,   264,
+      -1,   743,   109,    -1,  1355,    -1,    -1,  1358,     3,    -1,
+     117,   118,    -1,    -1,   279,    10,    11,    12,    13,    14,
+      -1,   895,    -1,   282,  1498,   284,   285,    -1,    -1,    -1,
+     904,    -1,   906,   292,   293,  1001,    -1,    -1,   322,   913,
+      -1,    -1,    -1,    -1,    39,    -1,   330,   306,   307,   333,
+    1401,    -1,    -1,    -1,   279,  1406,    -1,  1449,    -1,  1451,
+     802,    -1,   936,    -1,   327,   807,    -1,    -1,    -1,  1206,
+     463,   490,    67,   492,    -1,    -1,    -1,    -1,     0,     1,
+      -1,    -1,   956,  1434,   349,   344,  1282,    -1,    -1,    -1,
+      -1,   788,    -1,  1485,    -1,  1487,   970,    -1,    -1,    -1,
+      -1,   798,    -1,    -1,   978,    -1,    -1,    -1,   982,    -1,
+      32,    -1,    -1,   397,   755,   812,    -1,   401,    -1,    -1,
+      -1,   380,    -1,    -1,    -1,     3,   351,    49,   353,    -1,
+      -1,    -1,    10,    11,    12,    13,    14,    -1,    -1,    -1,
+      -1,    -1,   405,    -1,    -1,    -1,    -1,    69,    -1,    -1,
+      -1,    -1,    -1,   895,    -1,    -1,    -1,    -1,  1032,     0,
+     902,    39,    -1,    -1,    -1,   430,    -1,  1518,    -1,    -1,
+      26,    27,    28,  1524,    -1,    -1,   918,    -1,    -1,  1016,
+    1017,    -1,   447,   105,  1535,    -1,    -1,    -1,  1539,    67,
+      -1,    32,    -1,    -1,   478,    -1,  1070,    -1,   940,   941,
+     942,    -1,    -1,    -1,    -1,    -1,    -1,   472,    -1,    -1,
+    1084,    -1,    -1,    -1,    -1,  1089,   441,    -1,    -1,    -1,
+      -1,  1187,   641,    -1,    -1,   147,    -1,    -1,    69,    -1,
+      -1,    -1,  1106,   155,   156,    -1,    -1,  1074,  1075,  1376,
+      -1,    -1,    98,    -1,   100,    -1,    97,    98,    99,   100,
+     101,   102,   103,   104,   105,   106,   998,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   186,    -1,    -1,    -1,    -1,   125,
+      -1,   690,    -1,   692,    -1,    -1,   669,   696,    -1,   201,
+     131,    -1,   204,   205,    -1,   569,   570,   209,    -1,   548,
+     549,   550,   551,   552,   553,   554,   555,   556,   557,   558,
+     559,   560,   561,   562,   563,   564,   565,    -1,   230,  1183,
+      -1,    -1,   234,    -1,   236,   156,  1282,    -1,    -1,  1016,
+    1017,    -1,    -1,   245,    -1,   181,    -1,    -1,   593,   251,
+      -1,    -1,  1206,   189,   256,   191,   192,  1079,    -1,    -1,
+     196,    -1,   198,   199,   266,    -1,    -1,    -1,    -1,    -1,
+      -1,    72,   274,    74,    75,    76,   621,   998,    -1,    -1,
+      -1,   626,    83,    84,    -1,    -1,    -1,    -1,    -1,     0,
+      -1,    -1,   656,  1247,  1248,  1249,   660,  1074,  1075,  1121,
+      10,    11,    12,    13,    14,  1222,    -1,    -1,   109,   230,
+     111,    -1,    -1,    -1,    -1,   788,   117,   118,  1039,    -1,
+      -1,    32,    -1,    -1,    -1,   798,    -1,    -1,    -1,    39,
+     251,    -1,   268,    -1,    -1,   256,    -1,  1254,   340,   812,
+      -1,    -1,   344,    -1,    -1,  1262,  1263,  1264,   350,    -1,
+      -1,    -1,   697,    -1,    -1,   694,    -1,    67,    69,    -1,
+      -1,   363,    -1,    -1,    -1,   367,   711,   866,   370,    -1,
+      -1,    -1,    -1,   872,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,  1206,    -1,   731,    -1,    -1,    -1,
+      -1,    -1,    10,    11,    12,    13,    14,    -1,    -1,   109,
+      -1,   111,    -1,    -1,    -1,    -1,  1228,   117,   118,  1326,
+      -1,    -1,    -1,    -1,   913,   417,   755,    -1,    -1,    -1,
+      -1,    39,  1376,  1377,    -1,    -1,   731,    -1,   792,   350,
+     432,  1385,  1386,    -1,    -1,   437,    -1,    -1,    -1,    -1,
+      26,    27,    28,   445,    -1,   156,   785,    -1,    -1,    67,
+      -1,    -1,    -1,    -1,    72,    -1,    74,    75,    76,   804,
+      -1,   463,    -1,    -1,   466,    83,    84,    -1,    -1,  1423,
+      -1,   970,    72,    -1,    74,    75,    76,  1254,    -1,   481,
+      -1,   483,    -1,    83,    84,  1262,  1263,  1264,    -1,   491,
+      -1,   109,    -1,   495,    -1,    -1,   417,    -1,  1320,   117,
+     118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,
+      -1,   432,    98,    -1,   100,    -1,   437,   117,   118,    -1,
+      -1,    -1,   524,   525,   445,    -1,  1480,  1481,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,  1490,    -1,    -1,    -1,
+     251,    -1,   463,  1016,  1017,   256,   910,    -1,    -1,  1326,
+    1504,  1505,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     481,    -1,   483,    -1,    -1,    -1,   905,    -1,   570,    -1,
+      72,  1070,    74,    75,    76,  1529,    -1,    -1,    -1,    -1,
+      -1,    83,    84,    -1,    -1,    -1,   588,   589,    -1,    -1,
+      10,    11,    12,    13,    14,   181,  1418,    -1,    -1,   601,
+      -1,  1074,  1075,    -1,   525,   191,   192,   109,    -1,   111,
+     196,   950,   198,   199,    -1,   117,   118,   619,    -1,    39,
+      -1,    -1,   624,   987,    -1,    -1,    -1,  1449,   630,  1451,
+      -1,   633,   634,   635,    -1,    -1,    -1,   573,   574,   350,
+    1004,    -1,    -1,    -1,    -1,    -1,   985,    67,    -1,   651,
+      -1,    -1,    -1,    -1,    -1,    -1,  1001,    -1,    -1,   998,
+      -1,    -1,    -1,  1485,    -1,  1487,   602,   669,   589,   605,
+     606,    -1,   608,    -1,   610,   611,    -1,    -1,   680,   615,
+     616,    -1,    -1,    72,  1183,    74,    75,    76,    -1,   109,
+      -1,   111,  1514,    -1,    83,    84,    -1,   117,   118,    -1,
+    1039,    -1,    -1,    -1,   706,    -1,   417,   709,    -1,    -1,
+      -1,    -1,   633,   634,   635,    -1,   718,    -1,  1082,   721,
+     109,   432,   111,    -1,     0,    -1,   437,    -1,   117,   118,
+     651,    -1,    -1,    -1,   445,    -1,    -1,    -1,    -1,    -1,
+      -1,   743,   744,    -1,    -1,    -1,    -1,   749,   669,  1222,
+      -1,    -1,   463,    -1,    -1,    -1,    32,    -1,  1122,   680,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     481,    -1,   483,    -1,    -1,    -1,    -1,  1116,    -1,    -1,
+      -1,  1254,    -1,    -1,    -1,   706,   788,    -1,   709,  1262,
+    1263,  1264,    -1,    69,    -1,    -1,   798,    -1,   800,    -1,
+     802,    -1,    -1,   805,    -1,   807,   808,    -1,    -1,    -1,
+     812,    -1,    -1,    -1,   525,    -1,    -1,   753,   754,    -1,
+     822,    -1,    -1,   744,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1176,  1177,    -1,
+      -1,    -1,  1187,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,     0,    -1,  1326,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    37,    38,    -1,    40,   788,    -1,    -1,
+      -1,   873,    -1,    -1,    -1,    -1,    -1,   798,   589,   800,
+     156,    -1,    -1,    32,   805,    -1,    -1,   808,    -1,    -1,
+      -1,   812,    66,   895,    -1,    -1,    -1,    -1,    72,    -1,
+     902,   903,    76,    -1,   906,    79,    80,    81,    82,    83,
+      84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,
+      69,    -1,   633,   634,   635,    -1,    -1,    -1,    -1,    -1,
+     932,    -1,    -1,    -1,    -1,   109,    -1,  1282,   940,   941,
+     651,    -1,    -1,   117,   118,   119,   120,   121,   122,    -1,
+      -1,    -1,   873,    -1,    -1,    -1,    -1,    -1,   669,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   680,
+      -1,    -1,    -1,    -1,   910,   251,    -1,    -1,    -1,   915,
+     256,    -1,   903,    -1,    -1,    -1,    -1,   573,   574,    -1,
+      -1,    -1,    -1,    -1,    -1,   706,   998,    -1,   709,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   156,    -1,  1011,
+      -1,    -1,    -1,    -1,  1016,  1017,   602,  1019,  1020,   605,
+     606,    -1,   608,    -1,   610,   611,    -1,    -1,    -1,   615,
+     616,    -1,    -1,   744,    -1,    -1,    -1,  1039,    -1,    -1,
+      -1,    -1,  1381,    -1,     0,     1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1397,    -1,
+      -1,    -1,    -1,    -1,    10,    11,    12,    13,    14,    -1,
+      -1,    -1,  1074,  1075,   350,    -1,    32,   788,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   798,    -1,   800,
+      -1,    -1,    -1,    39,   805,  1016,  1017,   808,  1019,  1020,
+      -1,   812,   251,    -1,    -1,    -1,    -1,   256,    -1,    -1,
+      66,    -1,    -1,    69,    -1,    -1,    -1,    -1,  1039,  1121,
+      -1,    67,    -1,    -1,    -1,    -1,    72,    -1,  1467,  1468,
+      76,    -1,    -1,    -1,    -1,    -1,    -1,    83,    84,    -1,
+    1076,   417,    -1,  1145,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,  1074,  1075,    -1,   432,    -1,    -1,    -1,
+      -1,   437,   873,   109,    -1,    -1,    -1,   753,   754,   445,
+      -1,   117,   118,    -1,    10,    11,    12,    13,    14,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,  1188,   463,    -1,    -1,
+      -1,    -1,   903,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     156,   350,    -1,    39,  1206,   481,    -1,   483,  1210,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    1222,    -1,  1224,    -1,  1145,    -1,  1228,    -1,    -1,    -1,
+      -1,    67,    -1,    -1,    -1,    -1,    72,    -1,    74,    75,
+      76,    -1,    -1,    -1,    -1,    -1,    -1,    83,    84,   525,
+      -1,    -1,  1254,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    1262,  1263,  1264,    -1,    -1,   221,    -1,  1188,   417,  1205,
+      -1,  1273,  1274,   109,    -1,   111,    -1,    -1,    -1,    -1,
+      -1,   117,   118,   432,    -1,  1287,    -1,    -1,   437,  1210,
+      -1,    -1,    -1,    -1,    -1,   251,   445,    -1,    -1,    -1,
+      -1,  1222,    -1,  1224,    -1,  1016,  1017,    -1,  1019,  1020,
+      -1,    -1,    -1,   589,   463,    -1,    -1,    -1,  1320,    -1,
+      -1,    -1,    -1,    -1,  1326,    -1,    -1,    -1,  1039,   915,
+      -1,    -1,   481,  1254,   483,    -1,    -1,    -1,    -1,    -1,
+      -1,  1262,  1263,  1264,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,  1273,  1274,    -1,    -1,    -1,   633,   634,   635,
+      -1,    -1,    -1,  1074,  1075,    -1,  1287,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   651,   525,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,  1393,    -1,   669,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   680,  1326,    -1,    10,    11,    12,
+      13,    14,    -1,    -1,    -1,    -1,  1418,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     706,    -1,    -1,   709,  1145,    -1,    39,    -1,  1440,    -1,
+     589,    -1,    -1,    -1,    -1,  1447,    -1,    53,    -1,    55,
+      -1,    -1,    58,    59,    60,    -1,    62,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,   744,    72,
+      76,    -1,  1393,    76,    -1,    -1,   432,  1188,    -1,    -1,
+      83,    84,    88,    89,   633,   634,   635,    -1,    -1,    -1,
+    1076,    -1,    -1,    -1,    -1,    -1,  1498,    -1,    -1,  1210,
+      -1,    -1,   651,  1505,    -1,    -1,   109,    -1,    -1,    -1,
+      -1,  1222,   788,  1224,   117,   118,    -1,    -1,    -1,  1440,
+     669,    -1,   798,    -1,   800,    -1,  1447,   483,    -1,   805,
+      -1,   680,   808,    -1,    -1,    -1,   812,    10,    11,    12,
+      13,    14,    -1,  1254,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,  1262,  1263,  1264,    -1,    -1,    -1,   706,    -1,    -1,
+     709,    -1,  1273,  1274,    -1,    -1,    39,    -1,    -1,   525,
+      -1,    -1,    -1,    -1,    -1,    -1,  1287,  1498,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    67,   744,    -1,   873,    -1,    72,
+      -1,    74,    75,    76,    -1,    -1,    -1,    -1,    -1,    -1,
+      83,    84,    -1,    -1,    -1,  1326,    -1,    -1,    -1,  1205,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   903,    -1,    -1,
+      -1,    -1,    -1,   589,    -1,    -1,   109,    -1,   111,   788,
+      -1,    -1,    -1,    -1,   117,   118,    -1,    -1,    -1,   798,
+      -1,   800,    -1,    -1,    -1,    -1,   805,    -1,    -1,   808,
+      -1,    -1,    -1,   812,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   633,   634,   635,
+      -1,    -1,  1393,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   651,    -1,    -1,     3,     4,
+       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    27,    -1,   873,    30,    31,    32,    33,  1440,
+      -1,    36,    -1,    -1,    39,    40,  1447,   343,    -1,   345,
+    1016,  1017,    -1,  1019,  1020,    -1,    -1,    -1,    -1,    -1,
+     356,   357,    -1,   709,   903,    -1,    -1,    -1,    -1,    64,
+      -1,    -1,    67,  1039,    69,    -1,    71,    72,    -1,    74,
+      75,    76,    -1,    10,    11,    12,    13,    14,    83,    84,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1498,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1074,  1075,
+      -1,    -1,    39,    -1,   109,    -1,   111,    -1,    66,    -1,
+     115,    -1,   117,   118,    -1,    -1,    -1,    75,    -1,    77,
+      -1,    79,    -1,    -1,    -1,    -1,    -1,    -1,    86,    -1,
+      67,    -1,    49,    -1,    -1,    72,    -1,    74,    75,    76,
+      -1,    -1,    -1,    -1,   800,    -1,    83,    84,    -1,    66,
+      -1,    -1,   808,    -1,    10,    11,    12,    13,    14,   117,
+      -1,   119,   120,   121,    -1,    -1,    -1,  1016,  1017,  1145,
+    1019,  1020,   109,    -1,   111,    -1,    -1,    -1,    -1,    -1,
+     117,   118,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,
+    1039,    -1,    -1,    -1,    -1,    -1,   113,    -1,    -1,    -1,
+     117,    -1,   160,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    67,  1188,    -1,    -1,    -1,    72,   873,    74,    75,
+      76,    -1,    -1,    -1,    -1,  1074,  1075,    83,    84,   146,
+      -1,    -1,    -1,    -1,  1210,    -1,    -1,    -1,    -1,   156,
+      -1,    -1,    -1,   160,    -1,    -1,  1222,    -1,  1224,    -1,
+      -1,    -1,    -1,   109,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   117,   118,   221,    -1,   223,   224,   225,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1254,    -1,
+      -1,    -1,    -1,    -1,    -1,   941,  1262,  1263,  1264,    -1,
+      -1,    -1,   209,    -1,    -1,    -1,  1145,  1273,  1274,    -1,
+      -1,   259,    -1,    -1,   221,    -1,   264,    -1,    -1,    -1,
+      -1,  1287,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   279,   239,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1188,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   264,    -1,    -1,
+    1326,    -1,    -1,    -1,   271,    -1,    -1,    -1,    -1,    -1,
+      -1,  1210,    -1,  1019,  1020,    -1,    -1,    -1,    -1,   327,
+      -1,    -1,    -1,  1222,    -1,  1224,    -1,   294,    -1,    -1,
+      -1,    -1,    -1,  1039,    -1,    -1,    -1,    -1,    -1,   306,
+      -1,   349,   698,    -1,   700,    -1,   354,   355,    -1,    -1,
+      -1,   707,   708,    -1,   362,  1254,   712,    -1,    -1,    -1,
+      -1,    -1,    -1,  1262,  1263,  1264,    -1,  1393,   724,    -1,
+      -1,    -1,    -1,   729,  1273,  1274,    -1,   344,    -1,    -1,
+      -1,    -1,   349,    -1,    -1,    -1,    -1,    -1,  1287,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   405,    -1,    -1,
+      -1,   757,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,  1440,   423,    -1,    -1,    -1,    -1,
+     428,  1447,   430,    -1,    -1,    -1,    -1,  1326,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   447,
+      -1,    -1,   450,   451,    -1,    -1,    -1,    -1,    -1,    -1,
+     458,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   425,   426,
+      -1,    -1,    -1,    -1,   472,   432,    -1,    -1,    -1,    -1,
+      -1,   479,  1498,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,  1187,  1188,    -1,    -1,    -1,   453,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,  1393,    -1,    -1,    -1,    -1,    -1,
+     856,   857,   858,   859,  1210,   861,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   481,    -1,    -1,    -1,    -1,    -1,
+     876,    -1,  1228,    -1,    -1,    -1,   493,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   890,    -1,    -1,    -1,   505,    -1,
+     507,  1440,    -1,   510,    -1,   512,   513,    -1,  1447,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   525,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1273,  1274,    -1,
+      -1,    -1,    -1,    -1,   930,    -1,  1282,    -1,    -1,    -1,
+      -1,  1287,    -1,    -1,    -1,   593,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1498,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     577,    -1,    -1,   621,  1320,    -1,    -1,    -1,   626,   975,
+      -1,    -1,   589,    -1,    -1,   981,   593,    -1,    -1,    -1,
+     986,    -1,    -1,    -1,    -1,   991,    -1,   993,    -1,    -1,
+      -1,   997,    -1,   999,  1000,    -1,    -1,  1003,    -1,    -1,
+      -1,    -1,   619,    -1,    -1,    -1,  1012,   624,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   633,   634,   635,    -1,
+      -1,    -1,    -1,    -1,  1030,  1031,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   651,    -1,    -1,  1393,    -1,   697,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,  1057,    -1,   711,  1060,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,  1418,    -1,    -1,    -1,   683,    37,    38,    -1,
+      40,    -1,    -1,   731,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,  1440,    -1,    -1,    -1,    -1,    -1,
+      -1,  1447,   709,    -1,   711,    -1,    66,  1103,    -1,    -1,
+      -1,    -1,    72,  1109,  1110,    -1,    76,    -1,    -1,    79,
+      80,    81,    82,    83,    84,    -1,    86,    87,    -1,    -1,
+      -1,    -1,    -1,  1129,    -1,    -1,  1132,   744,    -1,    -1,
+    1136,    -1,    -1,    -1,   792,    -1,    -1,    -1,    44,   109,
+      -1,   111,  1498,  1149,   114,    -1,   804,   117,   118,   119,
+     120,   121,   122,    -1,    -1,    -1,  1162,    -1,  1164,  1165,
+    1166,  1167,    -1,    -1,    -1,   823,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,  1180,    -1,  1182,    -1,    -1,    -1,
+    1186,    -1,    -1,   800,    -1,    91,    -1,   804,    -1,    -1,
+      -1,   808,    -1,    -1,    -1,   101,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1215,
+    1216,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,     3,     4,     5,     6,     7,     8,     9,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
+      32,   157,    -1,    -1,    -1,    -1,    -1,    39,    -1,  1265,
+    1266,    -1,    -1,    -1,    -1,   171,    -1,    -1,    -1,  1275,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   936,    -1,
+      -1,    -1,    -1,    -1,    -1,    67,   903,    69,   194,    71,
+      -1,    -1,    74,    75,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   918,   208,    -1,    -1,    -1,    -1,    -1,   966,    -1,
+      -1,   217,    -1,    37,    38,    -1,    40,    -1,    -1,    -1,
+      -1,   227,    -1,    -1,    -1,   942,    -1,    -1,    -1,   111,
+    1336,    -1,  1338,  1339,  1340,   117,   118,    -1,    -1,    -1,
+      -1,    -1,    66,  1001,  1350,    -1,   252,    -1,    72,    -1,
+      -1,   257,    76,  1359,  1012,    79,    80,    81,    82,    83,
+      84,    -1,    86,    87,   270,    -1,    -1,    -1,    -1,    -1,
+     276,    -1,   278,    -1,    -1,    -1,    -1,    -1,  1384,    -1,
+      -1,   998,    -1,    -1,    -1,   109,    -1,   111,    -1,   295,
+      -1,    -1,    -1,   117,   118,   119,   120,   121,   122,    -1,
+      -1,    -1,  1019,  1020,    -1,    -1,   130,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    37,    38,    -1,    40,    -1,    -1,
+      -1,  1427,  1428,    -1,    -1,    -1,  1084,    -1,    -1,    -1,
+      -1,   337,    -1,    -1,  1440,    -1,   342,    -1,    -1,    -1,
+    1098,  1447,    -1,    66,    -1,    -1,    -1,    -1,    -1,    72,
+      -1,    74,    75,    76,    -1,    -1,    79,    80,    81,    82,
+      83,    84,  1079,    86,    87,   371,    -1,    -1,    -1,   375,
+     376,    -1,   378,  1479,    -1,    -1,    -1,  1483,    -1,   385,
+     386,    -1,   388,   389,    -1,   391,   109,   393,   111,    -1,
+     113,   114,    -1,    -1,   117,   118,   119,   120,   121,   122,
+      -1,    -1,    -1,    -1,   410,  1511,    -1,  1513,    -1,    -1,
+      -1,    -1,   418,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   155,   156,    -1,    -1,    -1,    -1,    -1,  1145,  1187,
+      -1,    -1,    -1,    -1,    -1,  1541,  1542,   443,    -1,    -1,
+      -1,    -1,    -1,  1549,  1550,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   189,    -1,    -1,    -1,    -1,
+      -1,    -1,   196,   469,    -1,    -1,    -1,    -1,    -1,   475,
+    1187,    -1,    -1,    -1,   480,     3,     4,     5,     6,     7,
+       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
+      -1,    -1,    30,    31,    32,    -1,    -1,  1224,    -1,    -1,
+     516,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,  1282,   531,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   268,    -1,    -1,    -1,    -1,    67,
+      -1,    69,    -1,    71,    -1,    -1,    74,    75,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,  1273,  1274,    -1,    -1,
+      -1,    -1,    -1,   569,    -1,  1282,    -1,    -1,    -1,    -1,
+      -1,    -1,   578,    -1,    -1,    -1,    -1,    -1,    -1,   585,
+     146,    -1,    -1,    -1,    -1,   591,   114,    -1,   322,    -1,
+     156,    -1,    -1,    -1,   600,    -1,   330,   331,    -1,   333,
+     334,    -1,   168,   169,    -1,    -1,    -1,    -1,    -1,    -1,
+     344,    -1,     7,    -1,   348,    10,    11,    12,    13,    14,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   367,   640,    -1,   370,    -1,    -1,    -1,
+      -1,    -1,    37,    38,    39,    40,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   397,    -1,    -1,    -1,   401,    -1,    -1,
+     676,    66,    67,   239,    -1,    -1,  1393,    72,   684,    -1,
+      -1,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
+      -1,    86,    87,    -1,    -1,    -1,    -1,   263,   432,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   715,
+      -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,   725,
+     726,    -1,   117,   118,   119,   120,   121,   122,    -1,    -1,
+      -1,    -1,  1449,    -1,  1451,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   478,    -1,    -1,   481,    -1,    -1,
+      -1,    -1,   758,    -1,    -1,    -1,    -1,   763,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1485,    -1,
+    1487,  1529,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   520,    -1,    -1,    -1,
+     524,   525,    -1,    -1,    -1,    -1,    -1,  1514,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   379,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   827,    -1,    -1,    -1,    -1,    -1,    -1,   834,    -1,
+      -1,    -1,    -1,    -1,    -1,   569,   570,    -1,    -1,    -1,
+      -1,   847,    -1,   849,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   588,   589,    -1,   863,    -1,    -1,
+      -1,    -1,    -1,   869,    -1,   599,    -1,   601,   602,    -1,
+      -1,    -1,    -1,    -1,   608,   881,    -1,    -1,   884,    -1,
+      -1,    -1,    -1,    -1,   618,   619,    -1,    -1,    -1,    -1,
+     624,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   633,
+     634,   635,    -1,    -1,    -1,    -1,    -1,   473,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   651,    -1,    -1,
+      -1,    -1,   656,   657,    -1,    -1,   660,   661,    -1,    -1,
+      -1,    -1,    -1,   667,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   512,    -1,    -1,    -1,
+      -1,    -1,   686,    -1,    -1,   961,    -1,    -1,    -1,   525,
+      -1,    -1,    -1,    -1,   530,    -1,    -1,   533,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   709,   710,    -1,    -1,   545,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     996,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   567,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   743,
+     744,   577,    -1,    -1,   748,   749,    -1,    -1,   584,    -1,
+      -1,    -1,    -1,   589,    -1,    -1,    -1,    -1,    -1,    -1,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,    26,    27,  1054,    -1,
+      30,    31,    32,    -1,  1060,    -1,    -1,    -1,   792,    39,
+      -1,    -1,    -1,    -1,    -1,    -1,   800,    -1,    -1,    -1,
+      -1,    -1,   638,   807,   808,    -1,    -1,   811,    -1,   813,
+     646,    -1,    -1,    -1,    -1,    -1,    -1,    67,  1094,   823,
+      -1,    -1,    72,  1099,    74,    75,    76,    -1,    -1,    -1,
+      -1,  1107,    -1,    83,    84,    -1,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,    25,    26,    27,    28,    -1,    -1,    -1,    -1,   109,
+      -1,   111,    -1,    -1,  1140,    39,    -1,   117,   118,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,  1152,    -1,    -1,  1155,
+      -1,  1157,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   895,    -1,    67,    -1,  1171,  1172,    -1,   902,   903,
+     904,    -1,   906,    -1,    78,    -1,   910,    -1,   744,    -1,
+     746,    -1,    -1,    -1,    -1,    -1,    -1,  1193,    -1,    -1,
+     756,    -1,    -1,    -1,    -1,    -1,   762,   931,   932,    -1,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,    26,    27,     7,    -1,
+      -1,    10,    11,    12,    13,    14,    -1,    -1,    -1,    39,
+      -1,    -1,   966,    -1,  1240,    -1,    -1,    -1,   804,   805,
+      -1,    -1,   808,    -1,    -1,    -1,    -1,    -1,    37,    38,
+      39,    40,    -1,   987,   988,    -1,   822,    67,    -1,    -1,
+      -1,    -1,    -1,    -1,   998,    -1,    -1,    -1,    -1,    -1,
+    1004,  1005,    -1,  1007,  1008,  1009,    -1,    66,    67,    -1,
+      -1,    -1,    -1,    72,    -1,  1019,  1020,    76,    -1,    -1,
+      79,    80,    81,    82,    83,    84,   862,    86,    87,    -1,
+     866,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1315,
+      -1,  1317,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     109,    -1,   111,  1329,    -1,  1331,    -1,    -1,   117,   118,
+     119,   120,   121,   122,    -1,    -1,    -1,   903,    -1,    -1,
+      -1,    -1,  1348,    -1,    -1,    -1,    -1,    -1,  1082,    -1,
+    1084,    -1,    -1,    -1,    -1,  1089,    -1,    -1,  1364,  1365,
+      -1,    -1,    -1,    -1,  1098,    -1,    -1,    -1,    -1,  1375,
+      -1,    -1,  1378,    -1,    -1,    -1,   942,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1121,  1122,  1123,
+      -1,    -1,    -1,  1399,    -1,    37,    38,    -1,    40,    -1,
+      -1,    -1,  1408,    -1,   970,  1411,    -1,  1413,  1414,  1415,
+     976,  1145,    -1,    -1,   980,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    66,    -1,    -1,    -1,    -1,    -1,
+      72,    -1,    -1,    -1,    76,  1001,    -1,    79,    80,    81,
+      82,    83,    84,    -1,    86,    87,  1012,  1453,    -1,  1455,
+      -1,  1457,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,  1472,   109,  1034,   111,
+    1036,    -1,  1206,    -1,   116,   117,   118,   119,   120,   121,
+     122,    -1,    -1,    -1,    -1,  1051,  1052,    -1,    -1,    -1,
+    1224,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,  1072,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,     3,     4,     5,     6,     7,     8,
+       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+      19,    20,    21,    22,    23,    24,    25,    26,    27,  1273,
+    1274,    30,    31,    32,    33,    -1,    -1,    36,    -1,    -1,
+      39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,  1127,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,  1145,
+      69,    -1,    71,    -1,    -1,    74,    75,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,  1160,  1161,    -1,     3,     4,     5,
+       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+      26,    27,   111,    -1,    30,    31,    32,    33,   117,   118,
+      36,    37,    38,    39,    40,    41,    -1,    43,    -1,    -1,
+      46,    47,    48,    49,    50,    51,    52,    53,    -1,    -1,
+      -1,    57,    -1,    -1,    -1,    61,    62,    -1,    64,  1393,
+      66,    67,    -1,    69,    -1,    71,    72,    -1,    74,    75,
+      76,    -1,    -1,    79,    80,    81,    82,    83,    84,    -1,
+      86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   109,    -1,   111,    -1,    -1,   114,    -1,
+      -1,   117,   118,   119,   120,   121,   122,    -1,    -1,    -1,
+      -1,   127,    -1,    -1,    -1,    -1,   132,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,  1301,    -1,    -1,  1304,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,  1480,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    1504,  1505,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,  1529,     3,     4,     5,     6,
+       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
+      27,    -1,    -1,    30,    31,    32,    33,    -1,    -1,    36,
+      37,    38,    39,    40,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+      26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    66,
+      67,    -1,    69,    39,    71,    72,    -1,    74,    75,    76,
+      -1,    -1,    79,    80,    81,    82,    83,    84,    -1,    86,
+      87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    67,    -1,    -1,    -1,    -1,    72,    -1,    74,    75,
+      76,    -1,   109,    -1,   111,    -1,    -1,    83,    84,    -1,
+     117,   118,   119,   120,   121,   122,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   132,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,    -1,
+      -1,   117,   118,    -1,    -1,    -1,    -1,    -1,  1514,     3,
+       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,    25,    26,    27,    -1,    -1,    30,    31,    32,    33,
+      -1,    -1,    36,    37,    38,    39,    40,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,    25,    26,    27,    -1,    -1,    30,    31,    32,
+      -1,    -1,    66,    67,    -1,    69,    39,    71,    72,    -1,
+      74,    75,    76,    -1,    -1,    79,    80,    81,    82,    83,
+      84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,    72,
+      -1,    74,    75,    -1,    -1,   109,    -1,   111,    -1,    -1,
+      83,    84,    -1,   117,   118,   119,   120,   121,   122,     4,
+       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
+      -1,    -1,    37,    38,    39,    40,    -1,    -1,    -1,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,    26,    27,    28,    -1,    -1,
+      -1,    66,    67,    -1,    69,    -1,    71,    72,    39,    74,
+      75,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
+      -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   109,    -1,   111,    78,    -1,    -1,
+      -1,   116,   117,   118,   119,   120,   121,   122,     4,     5,
+       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+      26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,
+      -1,    37,    38,    39,    40,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
+      66,    67,    -1,    69,    39,    71,    72,    -1,    74,    75,
+      76,    -1,    -1,    79,    80,    81,    82,    83,    84,    -1,
+      86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,
+      75,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,    -1,
+     116,   117,   118,   119,   120,   121,   122,     4,     5,     6,
+       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
+      27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
+      37,    38,    39,    40,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+      26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    66,
+      67,    -1,    69,    39,    71,    72,    -1,    74,    75,    76,
+      -1,    -1,    79,    80,    81,    82,    83,    84,    -1,    86,
+      87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,
+      -1,    -1,   109,    -1,   111,    -1,    -1,    -1,    -1,   116,
+     117,   118,   119,   120,   121,   122,     4,     5,     6,     7,
+       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
+      -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,    37,
+      38,    39,    40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    66,    67,
+      -1,    69,    -1,    71,    72,    -1,    74,    75,    76,    -1,
+      -1,    79,    80,    81,    82,    83,    84,    -1,    86,    87,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   109,    -1,   111,    -1,    -1,    -1,    -1,    -1,   117,
+     118,   119,   120,   121,   122,     4,     5,     6,     7,     8,
+       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
+      -1,    30,    31,    32,    -1,    -1,    -1,    -1,    37,    38,
+      39,    40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    66,    67,    -1,
+      69,    -1,    71,    72,    -1,    74,    75,    76,    -1,    -1,
+      79,    80,    81,    82,    83,    84,    -1,    86,    87,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     109,    -1,   111,    -1,    -1,    -1,    -1,    -1,   117,   118,
+     119,   120,   121,   122,     4,     5,     6,     7,     8,     9,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
+      30,    31,    32,    -1,    -1,    -1,    -1,    37,    38,    39,
+      40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    66,    67,    -1,    69,
+      -1,    71,    72,    -1,    74,    75,    76,    -1,    -1,    79,
+      80,    81,    82,    83,    84,    -1,    86,    87,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,
+      -1,   111,    -1,    -1,    -1,    -1,    -1,   117,   118,   119,
+     120,   121,   122,     4,     5,     6,     7,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
+      31,    32,    -1,    -1,    -1,    -1,    37,    38,    39,    40,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    66,    67,    -1,    69,    -1,
+      71,    72,    -1,    74,    75,    76,    -1,    -1,    79,    80,
+      81,    82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,
+     111,    -1,    -1,    -1,    -1,    -1,   117,   118,   119,   120,
+     121,   122,     0,    -1,    -1,     3,     4,     5,     6,     7,
+       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
+      -1,    -1,    30,    31,    32,    33,    -1,    -1,    36,    -1,
+      -1,    39,    40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    64,    -1,    -1,    67,
+      -1,    69,    -1,    71,    72,    -1,    74,    75,    76,    -1,
+      -1,    -1,    -1,    -1,    -1,    83,    84,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   109,    -1,   111,    -1,    -1,    -1,    -1,    -1,   117,
+     118,     3,     4,     5,     6,     7,     8,     9,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
+      32,    33,    -1,    -1,    36,    -1,    -1,    39,    40,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    64,    -1,    -1,    67,    -1,    69,    -1,    71,
+      72,    -1,    74,    75,    76,    -1,    -1,    -1,    -1,    -1,
+      -1,    83,    84,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,   111,
+      -1,    -1,    -1,    -1,    -1,   117,   118,     3,     4,     5,
+       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+      26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,
+      -1,    -1,    -1,    39,    -1,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    27,    -1,    -1,    30,    31,    32,    33,    34,
+      35,    67,    -1,    69,    39,    71,    72,    -1,    74,    75,
+      76,    -1,    -1,    -1,    -1,    -1,    -1,    83,    84,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,
+      75,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,    -1,
+      -1,   117,   118,     3,     4,     5,     6,     7,     8,     9,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,    26,    27,    28,    -1,
+      30,    31,    32,    33,    -1,    -1,    36,    -1,    -1,    39,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    69,
+      -1,    71,    -1,    -1,    74,    75,    -1,    -1,    78,     4,
+       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
+      -1,   111,    -1,    -1,    39,    -1,    -1,   117,   118,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    67,    -1,    69,    -1,    71,    72,    -1,    74,
+      75,    76,    -1,    -1,    -1,    -1,    -1,    -1,    83,    84,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,
+      -1,    -1,   117,   118,     4,     5,     6,     7,     8,     9,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
+      30,    31,    32,    -1,    -1,    -1,    -1,    -1,    -1,    39,
+      -1,    -1,    -1,    -1,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+      26,    27,    -1,    -1,    30,    31,    32,    67,    -1,    69,
+      -1,    71,    -1,    39,    74,    75,    -1,     4,     5,     6,
+       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
+      27,    67,    -1,    30,    31,    32,    -1,    -1,    74,    75,
+     110,   111,    39,    -1,    -1,    -1,    -1,   117,   118,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      67,    -1,    69,   109,    71,   111,    -1,    74,    75,    -1,
+      -1,   117,   118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    96,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
+     117,   118,     4,     5,     6,     7,     8,     9,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
+      32,    -1,    -1,    -1,    -1,    -1,    -1,    39,    -1,    -1,
+      -1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
+      -1,    30,    31,    32,    -1,    67,    -1,    69,    -1,    71,
+      39,    40,    74,    75,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    96,    -1,    -1,    -1,    67,    -1,
+      -1,    -1,    -1,    -1,    -1,    74,    75,    -1,    -1,   111,
+      -1,    -1,    -1,    -1,    -1,   117,   118,     4,     5,     6,
+       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
+      27,    -1,   111,    30,    31,    32,   115,    -1,   117,   118,
+      -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      67,    -1,    69,    -1,    71,    -1,    -1,    74,    75,    -1,
+       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,    25,    26,    27,    -1,    -1,    30,    31,    32,    -1,
+      -1,    -1,    -1,    -1,   111,    39,    -1,    -1,    -1,    -1,
+     117,   118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    67,    -1,    69,    -1,    71,    -1,    -1,
+      74,    75,    -1,     4,     5,     6,     7,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
+      31,    32,    -1,    -1,    -1,    -1,    -1,   111,    39,    -1,
+      -1,    -1,    -1,   117,   118,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    69,    -1,
+      71,    -1,    -1,    74,    75,    -1,     4,     5,     6,     7,
+       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
+      -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,
+     111,    39,    -1,    -1,    -1,    -1,   117,   118,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,
+      -1,    69,    -1,    71,    -1,    -1,    74,    75,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
+      32,    -1,    -1,    -1,    -1,    37,    38,    39,    40,    -1,
+      -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,   117,
+     118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    66,    67,    -1,    -1,    -1,    -1,
+      72,    -1,    74,    75,    76,    -1,    -1,    79,    80,    81,
+      82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,   111,
+      -1,    -1,   114,    -1,    -1,   117,   118,   119,   120,   121,
+     122,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
+      -1,    30,    31,    32,    -1,    -1,    -1,    -1,    37,    38,
+      39,    40,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
+      -1,    -1,    30,    31,    32,    -1,    -1,    66,    67,    -1,
+      -1,    39,    -1,    72,    -1,    74,    75,    76,    -1,    -1,
+      79,    80,    81,    82,    83,    84,    -1,    86,    87,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,
+      -1,    -1,    -1,    -1,    72,    -1,    74,    75,    76,    -1,
+     109,   110,   111,    -1,    -1,    83,    84,    -1,   117,   118,
+     119,   120,   121,   122,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+      26,    27,    -1,   111,    30,    31,    32,    -1,    -1,   117,
+     118,    37,    38,    39,    40,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
+      66,    67,    -1,    -1,    39,    -1,    72,    -1,    74,    75,
+      76,    -1,    -1,    79,    80,    81,    82,    83,    84,    -1,
+      86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    67,    -1,    -1,    -1,    -1,    72,    -1,    74,
+      75,    -1,    -1,   109,    -1,   111,    -1,    -1,    83,    84,
+      -1,   117,   118,   119,   120,   121,   122,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,    25,    26,    27,    -1,   111,    30,    31,    32,
+      -1,    -1,   117,   118,    37,    38,    39,    40,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
+      32,    -1,    -1,    66,    67,    -1,    -1,    39,    40,    72,
+      -1,    74,    75,    76,    -1,    -1,    79,    80,    81,    82,
+      83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,
+      -1,    -1,    74,    75,    -1,    -1,   109,    -1,   111,    -1,
+      -1,    -1,    -1,    -1,   117,   118,   119,   120,   121,   122,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,    26,    27,    -1,   111,
+      30,    31,    32,   115,    -1,   117,   118,    37,    38,    39,
+      40,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
+      -1,    30,    31,    32,    -1,    -1,    66,    67,    -1,    -1,
+      39,    40,    72,    -1,    74,    75,    76,    -1,    -1,    79,
+      80,    81,    82,    83,    84,    -1,    86,    87,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,
+      -1,    -1,    -1,    -1,    -1,    74,    75,    -1,    -1,   109,
+      -1,   111,    -1,    -1,    -1,    -1,    -1,   117,   118,   119,
+     120,   121,   122,    10,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
+      27,    -1,   111,    30,    31,    32,   115,    -1,   117,   118,
+      37,    38,    39,    40,    -1,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    27,    28,    -1,    30,    31,    32,    -1,    66,
+      67,    -1,    -1,    -1,    39,    72,    -1,    74,    75,    76,
+      -1,    -1,    79,    80,    81,    82,    83,    84,    -1,    86,
+      87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    67,    -1,    -1,    -1,    -1,    72,    -1,    74,
+      75,    76,   109,    78,   111,    -1,    -1,    -1,    83,    84,
+     117,   118,   119,   120,   121,   122,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,
+      -1,    -1,   117,   118,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+      26,    27,    28,    -1,    30,    31,    32,    -1,    -1,    -1,
+      -1,    -1,    -1,    39,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+      26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,
+      -1,    67,    -1,    39,    -1,    -1,    72,    -1,    74,    75,
+      76,    -1,    78,    -1,    -1,    -1,    -1,    83,    84,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    67,    -1,    -1,    -1,    -1,    72,    -1,    74,    75,
+      76,    -1,    -1,    -1,    -1,   111,    -1,    83,    84,    -1,
+      -1,   117,   118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,    -1,
+      -1,   117,   118,    10,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
+      27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
+      -1,    -1,    39,    10,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
+      27,    28,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
+      67,    -1,    39,    -1,    -1,    72,    -1,    74,    75,    76,
+      -1,    -1,    -1,    -1,    -1,    -1,    83,    84,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,    -1,
+      -1,    78,   109,    -1,   111,    -1,    -1,    -1,    -1,    -1,
+     117,   118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   109,    -1,   111,    -1,    -1,    -1,    -1,    -1,
+     117,   118,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
+      28,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,
+      -1,    39,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
+      -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,    67,
+      -1,    39,    -1,    -1,    -1,    -1,    74,    75,    -1,    -1,
+      78,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+      19,    20,    21,    22,    23,    24,    25,    26,    27,    67,
+      -1,    30,    31,    32,    -1,    -1,    74,    75,    -1,    -1,
+      39,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,   117,
+     118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,
+      -1,    -1,    -1,   111,    -1,    74,    75,    -1,    -1,   117,
+     118,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
+      -1,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,    -1,
+      39,    -1,   111,    -1,    -1,    -1,    -1,    -1,   117,   118,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,    26,    27,    67,    -1,
+      30,    31,    32,    -1,    -1,    74,    75,    -1,    -1,    39,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
+      30,    31,    32,    -1,    -1,    -1,    -1,    67,    -1,    39,
+      -1,    -1,   111,    -1,    74,    75,    -1,    -1,   117,   118,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,
+      -1,    -1,    -1,    -1,    74,    75,    -1,    -1,    -1,    -1,
+      -1,   111,    -1,    -1,    -1,    -1,    -1,   117,   118,    -1,
+      -1,    -1,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
+      -1,   111,    30,    31,    32,    -1,    -1,   117,   118,    -1,
+      -1,    39,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
+      -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,    67,
+      -1,    39,    -1,    -1,    -1,    -1,    74,    75,    -1,    -1,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,    26,    27,    -1,    67,
+      30,    31,    32,    -1,    -1,    -1,    74,    75,    -1,    39,
+      -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,   117,
+     118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,
+      -1,    -1,    -1,   111,    74,    75,    -1,    -1,    -1,   117,
+     118,     4,     5,     6,     7,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,    25,    26,    27,    -1,    -1,    30,    31,    32,
+      -1,    -1,    -1,    -1,    -1,    -1,    39,   117,   118,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    67,    -1,    69,    -1,    71,    -1,
+      -1,    74,    75,    37,    38,    -1,    40,    41,    -1,    43,
+      -1,    -1,    46,    47,    48,    49,    50,    51,    52,    53,
+      -1,    -1,    56,    57,    -1,    -1,    -1,    61,    62,    -1,
+      64,    -1,    66,    -1,    -1,    -1,    -1,   110,    72,    -1,
+      -1,    -1,    76,    -1,    -1,    79,    80,    81,    82,    83,
+      84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,
+     114,    -1,    -1,   117,   118,   119,   120,   121,   122,    -1,
+      -1,    37,    38,   127,    40,    41,    -1,    43,   132,    -1,
+      46,    47,    48,    49,    50,    51,    52,    53,    -1,    -1,
+      -1,    57,    -1,    -1,    -1,    61,    62,    -1,    64,    -1,
+      66,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,
+      76,    -1,    -1,    79,    80,    81,    82,    83,    84,    -1,
+      86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   109,    -1,   111,    -1,    -1,   114,    -1,
+      -1,   117,   118,   119,   120,   121,   122,    -1,    -1,    -1,
+      -1,   127,    -1,    -1,    -1,    -1,   132,     4,     5,     6,
+       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
+      27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
+      -1,    -1,    39,    -1,    37,    38,    -1,    40,    41,    -1,
+      43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
+      53,    -1,    -1,    56,    57,    -1,    -1,    -1,    61,    62,
+      67,    64,    69,    66,    71,    -1,    -1,    74,    75,    72,
+      -1,    -1,    -1,    76,    -1,    -1,    79,    80,    81,    82,
+      83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,    96,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,   111,    -1,
+      -1,   114,    -1,    -1,   117,   118,   119,   120,   121,   122,
+      -1,    -1,    37,    38,   127,    40,    41,    -1,    43,    44,
+      45,    46,    47,    48,    49,    50,    51,    52,    53,    -1,
+      -1,    -1,    57,    -1,    -1,    -1,    61,    62,    -1,    64,
+      -1,    66,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,
+      -1,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
+      -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,   114,
+      -1,    -1,   117,   118,   119,   120,   121,   122,    -1,    -1,
+      37,    38,   127,    40,    41,    -1,    43,    -1,    -1,    46,
+      47,    48,    49,    50,    51,    52,    53,    -1,    -1,    -1,
+      57,    -1,    -1,    -1,    61,    62,    -1,    64,    -1,    66,
+      -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,
+      -1,    -1,    79,    80,    81,    82,    83,    84,    -1,    86,
+      87,    -1,    -1,    -1,    -1,    -1,    -1,    37,    38,    -1,
+      40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   109,    -1,   111,    -1,    -1,   114,    -1,    -1,
+     117,   118,   119,   120,   121,   122,    66,    -1,    -1,    -1,
+     127,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    79,
+      80,    81,    82,    83,    84,    -1,    86,    87,    -1,    -1,
+      -1,    -1,    -1,    -1,    37,    38,    -1,    40,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,
+      -1,   111,    -1,    -1,   114,    -1,    -1,   117,   118,   119,
+     120,   121,   122,    66,    -1,    -1,    -1,    -1,    -1,    72,
+      -1,    -1,    -1,    76,    -1,    -1,    79,    80,    81,    82,
+      83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,
+      -1,    37,    38,    -1,    40,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,   111,    -1,
+      37,    38,    -1,    40,   117,   118,   119,   120,   121,   122,
+      66,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,
+      76,    -1,    -1,    79,    80,    81,    82,    83,    84,    66,
+      86,    87,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,
+      -1,    -1,    79,    80,    81,    82,    83,    84,    -1,    86,
+      87,    -1,    -1,   109,    -1,   111,    -1,    37,    38,    -1,
+      40,   117,   118,   119,   120,   121,   122,    -1,    -1,    -1,
+      -1,    -1,   109,    -1,   111,    -1,    37,    38,    -1,    40,
+     117,   118,   119,   120,   121,   122,    66,    -1,    -1,    -1,
+      -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    79,
+      80,    81,    82,    83,    84,    66,    86,    87,    -1,    -1,
+      -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    79,    80,
+      81,    82,    83,    84,    -1,    86,    87,    -1,    -1,   109,
+      -1,    -1,    -1,    37,    38,    -1,    40,   117,   118,   119,
+     120,   121,   122,    -1,    -1,    -1,    -1,    -1,   109,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   117,   118,   119,   120,
+     121,   122,    66,    -1,    -1,    -1,    -1,    -1,    72,    -1,
+      -1,    -1,    76,    -1,    -1,    79,    80,    81,    82,    83,
+      84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   109,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   117,   118,   119,   120,   121,   122,     4,
+       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    27,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    67,    -1,    69,    -1,    71,    72,    -1,    74,
+      75,    76,    -1,    -1,    -1,    -1,    -1,    -1,    83,    84,
+       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,    25,    26,    27,    -1,    -1,    30,    31,    32,
+      -1,    -1,    -1,    -1,    -1,    -1,    39,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    67,    -1,    69,    -1,    71,    -1,
+      -1,    74,    75,     3,     4,     5,     6,     7,     8,     9,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
+      30,    31,    32,    -1,    -1,    -1,    -1,    -1,    -1,    39,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    69,
+      -1,    71,    -1,    -1,    74,    75,     4,     5,     6,     7,
+       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
+      -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,
+      -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,
+      -1,    69,    -1,    71,    -1,    -1,    74,    75
+};
+
+  /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+     symbol of state STATE-NUM.  */
+static const yytype_uint16 yystos[] =
+{
+       0,     3,     4,     5,     6,     7,     8,     9,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    23,    24,    25,    26,    27,    30,    31,    32,    33,
+      36,    39,    40,    64,    67,    69,    71,    72,    74,    75,
+      76,    83,    84,   109,   111,   117,   118,   137,   140,   149,
+     198,   212,   213,   214,   215,   216,   217,   218,   219,   220,
+     221,   222,   223,   224,   225,   226,   227,   228,   229,   231,
+     232,   233,   234,   235,   236,   237,   239,   240,   241,   242,
+     243,   244,   246,   254,   255,   282,   283,   284,   292,   295,
+     301,   302,   304,   306,   307,   313,   318,   322,   323,   324,
+     325,   326,   327,   328,   329,   349,   366,   367,   368,   369,
+      72,   139,   140,   149,   215,   217,   225,   227,   236,   240,
+     242,   283,    82,   109,   311,   312,   313,   311,   311,    72,
+      74,    75,    76,   138,   139,   272,   273,   293,   294,    74,
+      75,   273,   109,   304,    11,   199,   109,   149,   318,   323,
+     324,   325,   327,   328,   329,   112,   134,   111,   218,   225,
+     227,   322,   326,   365,   366,   369,   370,   135,   107,   131,
+     276,   114,   135,   173,    74,    75,   137,   271,   135,   135,
+     135,   116,   135,    74,    75,   109,   149,   308,   317,   318,
+     319,   320,   321,   322,   326,   330,   331,   332,   333,   334,
+     340,     3,    28,    78,   238,     3,     5,    74,   111,   149,
+     217,   228,   232,   234,   243,   284,   322,   326,   369,   215,
+     217,   227,   236,   240,   242,   283,   322,   326,    33,   233,
+     233,   228,   234,   135,   233,   228,   233,   228,    75,   109,
+     114,   273,   284,   114,   273,   233,   228,   116,   135,   135,
+       0,   134,   109,   173,   311,   311,   134,   111,   225,   227,
+     367,   271,   271,   131,   227,   109,   149,   308,   318,   322,
+     111,   149,   369,   305,   230,   313,   109,   289,   109,   109,
+      51,   109,    37,    38,    40,    66,    72,    76,    79,    80,
+      81,    82,    86,    87,   109,   111,   119,   120,   121,   122,
+     136,   140,   141,   142,   143,   148,   149,   150,   151,   152,
+     153,   154,   155,   156,   157,   158,   159,   160,   161,   162,
+     164,   167,   225,   275,   291,   365,   370,   227,   110,   110,
+     110,   110,   110,   110,   110,    74,    75,   111,   225,   271,
+     349,   367,   111,   117,   149,   164,   217,   218,   224,   227,
+     231,   232,   236,   239,   240,   242,   261,   262,   266,   267,
+     268,   269,   283,   349,   361,   362,   363,   364,   369,   370,
+     112,   109,   322,   326,   369,   109,   116,   132,   111,   114,
+     149,   164,   277,   277,   115,   134,   116,   132,   109,   116,
+     132,   116,   132,   116,   132,   311,   132,   318,   319,   320,
+     321,   331,   332,   333,   334,   227,   317,   330,    64,   310,
+     111,   311,   348,   349,   311,   311,   173,   134,   109,   311,
+     348,   311,   311,   227,   308,   109,   109,   226,   227,   225,
+     227,   112,   134,   225,   365,   370,   173,   134,   271,   276,
+     217,   232,   322,   326,   173,   134,   293,   227,   236,   132,
+     227,   227,   291,   247,   245,   257,   273,   256,   227,   293,
+     132,   132,   304,   134,   139,   270,     3,   135,   207,   208,
+     222,   224,   227,   134,   310,   109,   310,   164,   318,   227,
+     109,   134,   271,   114,    33,    34,    35,   225,   285,   286,
+     288,   134,   128,   131,   290,   134,   228,   233,   234,   271,
+     314,   315,   316,   109,   141,   109,   148,   109,   148,   151,
+     109,   148,   109,   109,   148,   148,   111,   164,   169,   173,
+     225,   274,   365,   369,   112,   134,    82,    85,    86,    87,
+     109,   111,   113,   114,    97,    98,    99,   100,   101,   102,
+     103,   104,   105,   106,   131,   166,   151,   151,   117,   123,
+     124,   119,   120,    88,    89,    90,    91,   125,   126,    92,
+      93,   118,   127,   128,    94,    95,   129,   131,   372,   109,
+     149,   344,   345,   346,   347,   348,   110,   116,   109,   348,
+     349,   109,   348,   349,   134,   109,   225,   367,   112,   134,
+     135,   111,   225,   227,   360,   361,   369,   370,   135,   109,
+     111,   149,   318,   335,   336,   337,   338,   339,   340,   341,
+     342,   343,   349,   350,   351,   352,   353,   354,   355,   149,
+     369,   227,   135,   135,   149,   225,   227,   362,   271,   225,
+     349,   362,   271,   109,   134,   134,   134,   112,   134,    72,
+     111,   113,   140,   273,   277,   278,   279,   280,   281,   134,
+     134,   134,   134,   134,   134,   308,   110,   110,   110,   110,
+     110,   110,   110,   317,   330,   109,   276,   112,   207,   134,
+     308,   169,   275,   169,   275,   308,   111,   207,   310,   173,
+     134,   207,   110,    40,   111,   115,   225,   248,   249,   250,
+     365,   114,   116,   371,   131,   258,   114,   227,   263,   264,
+     265,   268,   269,   110,   116,   173,   134,   117,   164,   134,
+     224,   227,   262,   361,   369,   302,   303,   109,   149,   335,
+     110,   116,   372,   273,   285,   109,   114,   273,   275,   285,
+     110,   116,   109,   141,   110,   130,   274,   274,   274,   145,
+     164,   275,   274,   112,   134,   110,   116,   110,   109,   149,
+     348,   356,   357,   358,   359,   110,   116,   164,   111,   139,
+     144,   145,   134,   111,   139,   144,   164,   151,   151,   151,
+     152,   152,   153,   153,   154,   154,   154,   154,   155,   155,
+     156,   157,   158,   159,   160,   130,   169,   164,   134,   345,
+     346,   347,   227,   344,   311,   311,   164,   275,   134,   270,
+     134,   225,   349,   362,   227,   231,   112,   112,   134,   369,
+     112,   109,   134,   318,   336,   337,   338,   341,   351,   352,
+     353,   112,   134,   227,   335,   339,   350,   109,   311,   354,
+     372,   311,   311,   372,   109,   311,   354,   311,   311,   311,
+     311,   349,   225,   360,   370,   271,   112,   116,   112,   116,
+     372,   225,   362,   372,   259,   260,   261,   262,   259,   259,
+     271,   164,   134,   111,   273,   130,   116,   371,   277,   111,
+     130,   281,    29,   209,   210,   271,   259,   139,   308,   139,
+     310,   109,   348,   349,   109,   348,   349,   141,   349,   173,
+     263,   110,   110,   110,   110,   112,   173,   207,   173,   114,
+     249,   250,   112,   134,   109,   130,   149,   251,   253,   317,
+     318,   330,   356,   116,   132,   116,   132,   273,   247,   273,
+     115,   162,   163,   257,   135,   135,   139,   222,   135,   135,
+     259,   109,   149,   369,   135,   115,   227,   286,   287,   135,
+     134,   134,   109,   135,   110,   315,   169,   170,   130,   132,
+     111,   141,   200,   201,   202,   110,   116,   110,   110,   110,
+     110,   111,   164,   357,   358,   359,   227,   356,   311,   311,
+     114,   151,   167,   164,   165,   168,   116,   135,   134,   110,
+     116,   164,   134,   115,   162,   130,   263,   110,   110,   110,
+     344,   263,   110,   259,   225,   362,   111,   117,   149,   164,
+     164,   227,   341,   263,   110,   110,   110,   110,   110,   110,
+     110,     7,   227,   335,   339,   350,   134,   134,   372,   134,
+     134,   110,   135,   135,   135,   135,   276,   135,   162,   163,
+     164,   309,   134,   277,   279,   115,   134,   211,   273,    40,
+      41,    43,    46,    47,    48,    49,    50,    51,    52,    53,
+      57,    61,    62,    72,   111,   127,   170,   171,   172,   173,
+     174,   175,   177,   178,   190,   192,   193,   198,   212,   307,
+      29,   135,   131,   276,   134,   134,   110,   135,   173,   247,
+     132,   132,   318,   163,   227,   252,   253,   252,   273,   311,
+     115,   258,   371,   110,   116,   112,   112,   135,   227,   116,
+     372,   289,   110,   285,   215,   217,   225,   297,   298,   299,
+     300,   291,   110,   110,   130,   163,   109,   110,   130,   116,
+     139,   112,   110,   110,   110,   356,   278,   116,   135,   168,
+     112,   139,   146,   147,   145,   135,   146,   162,   167,   135,
+     109,   348,   349,   135,   135,   134,   135,   135,   135,   164,
+     110,   135,   109,   348,   349,   109,   354,   109,   354,   349,
+     226,     7,   117,   135,   164,   263,   263,   262,   266,   266,
+     267,   116,   116,   110,   110,   112,    96,   122,   135,   135,
+     146,   277,   164,   116,   132,   212,   216,   227,   231,   109,
+     109,   171,   109,   109,    72,   132,    72,   132,    72,   117,
+     170,   109,   173,   165,   165,   130,   112,   143,   132,   135,
+     134,   135,   211,   110,   164,   263,   263,   311,   110,   115,
+     251,   115,   134,   110,   134,   135,   308,   115,   134,   135,
+     135,   110,   114,   200,   112,   163,   132,   200,   202,   110,
+     109,   348,   349,   371,   165,   112,   135,    85,   113,   116,
+     135,   112,   135,   110,   134,   110,   110,   112,   112,   112,
+     135,   110,   134,   134,   134,   164,   164,   135,   112,   135,
+     135,   135,   135,   134,   134,   163,   163,   112,   112,   135,
+     135,   273,   227,   169,   169,    47,   169,   134,   132,   132,
+     132,   169,   132,   169,    58,    59,    60,   194,   195,   196,
+     132,    63,   132,   311,   114,   175,   115,   132,   135,   135,
+      96,   268,   269,   110,   298,   116,   132,   116,   132,   115,
+     296,   130,   141,   110,   110,   130,   134,   115,   112,   111,
+     147,   111,   147,   147,   112,   112,   263,   112,   263,   263,
+     263,   135,   135,   112,   112,   110,   110,   112,   116,    96,
+     262,    96,   135,   112,   112,   110,   110,   109,   110,   170,
+     191,   212,   132,   110,   109,   109,   173,   196,    58,    59,
+     164,   171,   144,   110,   110,   114,   134,   134,   297,   141,
+     203,   109,   132,   203,   263,   134,   134,   135,   135,   135,
+     135,   112,   112,   134,   135,   112,   171,    44,    45,   114,
+     181,   182,   183,   169,   171,   135,   110,   170,   114,   183,
+      96,   134,    96,   134,   109,   109,   132,   115,   134,   271,
+     308,   115,   116,   130,   163,   110,   135,   146,   146,   110,
+     110,   110,   110,   266,    42,   163,   179,   180,   309,   130,
+     134,   171,   181,   110,   132,   171,   132,   134,   110,   134,
+     110,   134,    96,   134,    96,   134,   132,   297,   141,   139,
+     204,   110,   132,   110,   135,   135,   171,    96,   116,   130,
+     135,   205,   206,   212,   132,   170,   170,   205,   173,   197,
+     225,   365,   173,   197,   110,   134,   110,   134,   115,   110,
+     116,   112,   112,   163,   179,   182,   184,   185,   134,   132,
+     182,   186,   187,   135,   109,   149,   308,   356,   139,   135,
+     173,   197,   173,   197,   109,   132,   139,   171,   176,   115,
+     182,   212,   170,    56,   176,   189,   115,   182,   110,   227,
+     110,   135,   135,   291,   171,   176,   132,   188,   189,   176,
+     189,   173,   173,   110,   110,   110,   188,   135,   135,   173,
+     173,   135,   135
+};
+
+  /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint16 yyr1[] =
 {
@@ -1268,52 +3693,51 @@
      225,   226,   226,   227,   227,   228,   228,   229,   229,   229,
      229,   229,   230,   229,   231,   231,   231,   232,   232,   233,
-     234,   234,   234,   234,   234,   234,   234,   234,   235,   235,
-     235,   235,   235,   235,   235,   235,   235,   235,   235,   235,
-     235,   236,   236,   236,   236,   236,   237,   237,   238,   238,
-     238,   238,   239,   239,   239,   239,   240,   240,   240,   240,
-     241,   241,   241,   242,   242,   242,   242,   243,   243,   243,
-     244,   244,   245,   245,   246,   245,   245,   245,   247,   247,
-     248,   248,   249,   249,   249,   249,   250,   250,   250,   250,
-     251,   251,   252,   252,   252,   252,   252,   253,   253,   254,
-     255,   256,   256,   257,   256,   258,   258,   259,   259,   260,
-     260,   261,   261,   261,   261,   261,   262,   262,   262,   262,
-     263,   263,   264,   264,   265,   265,   266,   266,   266,   266,
-     267,   267,   267,   267,   267,   268,   268,   268,   268,   268,
-     269,   269,   270,   270,   271,   271,   272,   272,   272,   273,
-     273,   273,   274,   274,   274,   275,   275,   275,   276,   276,
-     276,   276,   277,   277,   277,   278,   278,   279,   279,   279,
-     279,   279,   280,   280,   281,   281,   282,   282,   282,   282,
-     282,   283,   283,   283,   283,   284,   284,   284,   285,   286,
-     286,   288,   287,   287,   289,   289,   289,   290,   290,   291,
-     291,   291,   292,   292,   292,   292,   293,   293,   293,   294,
-     294,   295,   295,   296,   297,   296,   298,   298,   299,   299,
-     300,   300,   300,   301,   301,   302,   302,   303,   303,   304,
-     304,   305,   305,   305,   306,   305,   305,   307,   307,   307,
-     308,   308,   308,   308,   308,   308,   308,   308,   308,   309,
-     309,   309,   310,   311,   311,   312,   312,   313,   313,   314,
-     315,   315,   316,   316,   316,   317,   317,   317,   317,   318,
-     318,   318,   318,   319,   319,   320,   320,   320,   321,   321,
-     321,   321,   322,   322,   323,   323,   323,   324,   324,   324,
-     325,   325,   325,   326,   326,   326,   327,   327,   327,   328,
-     328,   328,   329,   329,   329,   330,   330,   330,   331,   331,
-     331,   331,   332,   332,   333,   333,   333,   334,   334,   334,
-     334,   335,   335,   335,   336,   336,   336,   336,   337,   337,
-     337,   338,   338,   338,   338,   339,   339,   339,   340,   340,
-     340,   340,   341,   341,   342,   342,   342,   343,   343,   344,
-     344,   345,   345,   345,   346,   346,   346,   346,   346,   347,
-     347,   347,   347,   348,   348,   348,   349,   349,   349,   350,
-     350,   350,   350,   351,   351,   351,   352,   352,   352,   352,
-     352,   353,   353,   353,   353,   354,   354,   354,   355,   355,
-     355,   356,   356,   356,   356,   356,   356,   357,   357,   357,
-     358,   358,   358,   358,   358,   359,   359,   359,   359,   360,
-     360,   361,   361,   361,   362,   362,   363,   363,   363,   363,
-     363,   363,   364,   364,   364,   364,   364,   364,   364,   364,
-     364,   364,   365,   365,   365,   365,   366,   366,   366,   367,
-     367,   368,   368,   368,   368,   368,   368,   369,   369,   369,
-     369,   369,   369,   370,   371,   371,   371,   372,   372,   373,
-     373
+     233,   233,   233,   233,   233,   233,   233,   234,   234,   234,
+     234,   234,   234,   234,   234,   234,   234,   234,   234,   234,
+     235,   235,   235,   235,   235,   236,   236,   237,   237,   237,
+     237,   238,   238,   238,   238,   239,   239,   239,   239,   240,
+     240,   240,   241,   241,   241,   241,   242,   242,   242,   243,
+     243,   244,   244,   245,   244,   244,   244,   246,   246,   247,
+     247,   248,   248,   248,   248,   249,   249,   249,   249,   250,
+     250,   251,   251,   251,   251,   251,   252,   252,   253,   254,
+     255,   255,   256,   255,   257,   257,   258,   258,   259,   259,
+     260,   260,   260,   260,   260,   261,   261,   261,   261,   262,
+     262,   263,   263,   264,   264,   265,   265,   265,   265,   266,
+     266,   266,   266,   266,   267,   267,   267,   267,   267,   268,
+     268,   269,   269,   270,   270,   271,   271,   271,   272,   272,
+     272,   273,   273,   273,   274,   274,   274,   275,   275,   275,
+     275,   276,   276,   276,   277,   277,   278,   278,   278,   278,
+     278,   279,   279,   280,   280,   281,   281,   281,   281,   281,
+     282,   282,   282,   282,   283,   283,   283,   284,   285,   285,
+     287,   286,   286,   288,   288,   288,   289,   289,   290,   290,
+     290,   291,   291,   291,   291,   292,   292,   292,   293,   293,
+     294,   294,   295,   296,   295,   297,   297,   298,   298,   299,
+     299,   299,   300,   300,   301,   301,   302,   302,   303,   303,
+     304,   304,   304,   305,   304,   304,   306,   306,   306,   307,
+     307,   307,   307,   307,   307,   307,   307,   307,   308,   308,
+     308,   309,   310,   310,   311,   311,   312,   312,   313,   314,
+     314,   315,   315,   315,   316,   316,   316,   316,   317,   317,
+     317,   317,   318,   318,   319,   319,   319,   320,   320,   320,
+     320,   321,   321,   322,   322,   322,   323,   323,   323,   324,
+     324,   324,   325,   325,   325,   326,   326,   326,   327,   327,
+     327,   328,   328,   328,   329,   329,   329,   330,   330,   330,
+     330,   331,   331,   332,   332,   332,   333,   333,   333,   333,
+     334,   334,   334,   335,   335,   335,   335,   336,   336,   336,
+     337,   337,   337,   337,   338,   338,   338,   339,   339,   339,
+     339,   340,   340,   341,   341,   341,   342,   342,   343,   343,
+     344,   344,   344,   345,   345,   345,   345,   345,   346,   346,
+     346,   346,   347,   347,   347,   348,   348,   348,   349,   349,
+     349,   349,   350,   350,   350,   351,   351,   351,   351,   351,
+     352,   352,   352,   352,   353,   353,   353,   354,   354,   354,
+     355,   355,   355,   355,   355,   355,   356,   356,   356,   357,
+     357,   357,   357,   357,   358,   358,   358,   358,   359,   359,
+     360,   360,   360,   361,   361,   362,   362,   362,   362,   362,
+     362,   363,   363,   363,   363,   363,   363,   363,   363,   363,
+     363,   364,   364,   364,   364,   365,   365,   365,   366,   366,
+     367,   367,   367,   367,   367,   367,   368,   368,   368,   368,
+     368,   368,   369,   370,   370,   370,   371,   371,   372,   372
 };
 
-/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
+  /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
 static const yytype_uint8 yyr2[] =
 {
@@ -1351,2867 +3775,83 @@
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     2,     2,     3,     3,     1,     3,     1,     2,
-       2,     2,     4,     4,     4,     4,     1,     2,     2,     3,
-       1,     2,     2,     1,     2,     2,     3,     1,     2,     2,
-       1,     1,     4,     2,     0,     6,     7,     2,     2,     2,
-       0,     2,     2,     3,     2,     3,     1,     2,     3,     2,
-       2,     4,     0,     1,     2,     2,     1,     0,     1,     2,
-       2,     5,     2,     0,     7,     2,     4,     0,     2,     0,
-       1,     1,     1,     5,     5,     5,     1,     5,     5,     9,
-       1,     5,     0,     1,     1,     5,     1,     1,     5,     5,
-       1,     3,     3,     4,     1,     1,     1,     1,     2,     1,
-       3,     3,     1,     2,     1,     3,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     2,     1,     1,
-       1,     2,     0,     2,     2,     1,     4,     0,     1,     2,
-       3,     4,     2,     2,     1,     2,     2,     5,     5,     7,
-       6,     1,     2,     2,     3,     1,     2,     2,     4,     2,
-       4,     0,     4,     2,     1,     1,     1,     0,     2,     5,
-       5,    13,     1,     1,     3,     3,     2,     3,     3,     2,
-       4,     1,     6,     9,     0,    11,     1,     3,     3,     3,
-       1,     1,     5,     2,     5,     0,     1,     1,     3,     0,
-       1,     1,     1,     1,     0,     6,     2,     1,     2,     4,
-       2,     3,     3,     3,     4,     5,     5,     5,     6,     1,
-       1,     1,     3,     0,     5,     0,     1,     1,     2,     6,
-       1,     3,     0,     1,     4,     1,     1,     1,     1,     2,
-       1,     2,     2,     1,     3,     2,     3,     3,     2,     4,
-       4,     3,     8,     3,     2,     1,     2,     6,     8,     3,
-       2,     3,     3,     4,     4,     3,     1,     1,     1,     4,
-       6,     3,     2,     3,     3,     4,     4,     3,     2,     1,
+       1,     2,     2,     3,     3,     1,     3,     1,     2,     2,
+       2,     4,     4,     4,     4,     1,     2,     2,     3,     1,
+       2,     2,     1,     2,     2,     3,     1,     2,     2,     1,
+       1,     4,     2,     0,     6,     7,     2,     2,     2,     0,
+       2,     2,     3,     2,     3,     1,     2,     3,     2,     2,
+       4,     0,     1,     2,     2,     1,     0,     1,     2,     2,
+       5,     2,     0,     7,     2,     4,     0,     2,     0,     1,
+       1,     1,     5,     5,     5,     1,     5,     5,     9,     1,
+       5,     0,     1,     1,     5,     1,     1,     5,     5,     1,
+       3,     3,     4,     1,     1,     1,     1,     2,     1,     3,
+       3,     1,     2,     1,     3,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     2,     1,     1,     1,
+       2,     0,     2,     2,     1,     4,     0,     1,     2,     3,
+       4,     2,     2,     1,     2,     2,     5,     5,     7,     6,
+       1,     2,     2,     3,     1,     2,     2,     4,     2,     4,
+       0,     4,     2,     1,     1,     1,     0,     2,     5,     5,
+      13,     1,     1,     3,     3,     2,     3,     3,     2,     4,
+       1,     6,     9,     0,    11,     1,     3,     3,     3,     1,
+       1,     5,     2,     5,     0,     1,     1,     3,     0,     1,
+       1,     1,     1,     0,     6,     2,     1,     2,     4,     2,
+       3,     3,     3,     4,     5,     5,     5,     6,     1,     1,
+       1,     3,     0,     5,     0,     1,     1,     2,     6,     1,
+       3,     0,     1,     4,     1,     1,     1,     1,     2,     1,
        2,     2,     1,     3,     2,     3,     3,     2,     4,     4,
-       3,     6,     8,     3,     2,     1,     2,     2,     2,     3,
-       3,     2,     4,     4,     3,     6,     8,     3,     2,     1,
-       2,     2,     1,     1,     2,     3,     3,     2,     4,     6,
-       8,     1,     2,     2,     1,     2,     2,     3,     3,     1,
-       4,     4,     3,     5,     8,     3,     2,     3,     1,     5,
-       5,     6,     6,     1,     2,     2,     1,     2,     2,     3,
-       3,     1,     4,     4,     3,     5,     8,     3,     1,     2,
-       1,     2,     6,     5,     6,     7,     7,     1,     2,     2,
-       1,     2,     2,     3,     3,     1,     4,     4,     3,     8,
-       3,     1,     1,     2,     1,     1,     2,     3,     2,     3,
-       2,     3,     3,     2,     4,     3,     2,     3,     2,     4,
-       3,     2,     6,     6,     6,     7,     1,     2,     1,     1,
-       1,     2,     3,     2,     3,     2,     3,     3,     4,     2,
-       3,     4,     2,     5,     5,     6,     6,     0,     1,     0,
-       2
+       3,     8,     3,     2,     1,     2,     6,     8,     3,     2,
+       3,     3,     4,     4,     3,     1,     1,     1,     4,     6,
+       3,     2,     3,     3,     4,     4,     3,     2,     1,     2,
+       2,     1,     3,     2,     3,     3,     2,     4,     4,     3,
+       6,     8,     3,     2,     1,     2,     2,     2,     3,     3,
+       2,     4,     4,     3,     6,     8,     3,     2,     1,     2,
+       2,     1,     1,     2,     3,     3,     2,     4,     6,     8,
+       1,     2,     2,     1,     2,     2,     3,     3,     1,     4,
+       4,     3,     5,     8,     3,     2,     3,     1,     5,     5,
+       6,     6,     1,     2,     2,     1,     2,     2,     3,     3,
+       1,     4,     4,     3,     5,     8,     3,     1,     2,     1,
+       2,     6,     5,     6,     7,     7,     1,     2,     2,     1,
+       2,     2,     3,     3,     1,     4,     4,     3,     8,     3,
+       1,     1,     2,     1,     1,     2,     3,     2,     3,     2,
+       3,     3,     2,     4,     3,     2,     3,     2,     4,     3,
+       2,     6,     6,     6,     7,     1,     2,     1,     1,     1,
+       2,     3,     2,     3,     2,     3,     3,     4,     2,     3,
+       4,     2,     5,     5,     6,     6,     0,     1,     0,     2
 };
 
-/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM.
-   Performed when YYTABLE doesn't specify something else to do.  Zero
-   means the default is an error.  */
-static const yytype_uint16 yydefact[] =
-{
-     291,   291,   312,   310,   313,   311,   314,   315,   297,   299,
-     298,     0,   300,   326,   318,   323,   321,   322,   320,   319,
-     324,   325,   330,   327,   328,   329,   545,   545,   545,     0,
-       0,     0,   291,   217,   301,   316,   317,     7,   357,     0,
-       8,    14,    15,     0,     2,    60,    61,   563,     9,   291,
-     523,   521,   244,     3,   452,     3,   257,     0,     3,     3,
-       3,   245,     3,     0,     0,     0,   292,   293,   295,   291,
-     304,   307,   309,   338,   283,   331,   336,   284,   346,   285,
-     353,   350,   360,     0,     0,   361,   286,   471,   475,     3,
-       3,     0,     2,   517,   522,   527,   296,     0,     0,   545,
-     575,   545,     2,   586,   587,   588,   291,     0,   729,   730,
-       0,    12,     0,    13,   291,   267,   268,     0,   292,   287,
-     288,   289,   290,   524,   302,   390,   546,   547,   368,   369,
-      12,   443,   444,    11,   439,   442,     0,   501,   496,   487,
-     443,   444,     0,     0,   526,   218,     0,   291,     0,     0,
-       0,     0,     0,     0,     0,     0,   291,   291,     2,     0,
-     731,   292,   580,   592,   735,   728,   726,   733,     0,     0,
-       0,   251,     2,     0,   530,   437,   438,   436,     0,     0,
-       0,     0,   545,     0,   632,   633,     0,     0,   543,   539,
-     545,   560,   545,   545,   541,     2,   540,   545,   599,   545,
-     545,   602,     0,     0,     0,   291,   291,   310,   358,     2,
-     291,   258,   294,   305,   339,   351,   476,     0,     2,     0,
-     452,   259,   292,   332,   347,   354,   472,     0,     2,     0,
-     308,   333,   340,   341,     0,   348,   352,   355,   359,   444,
-     291,   370,   363,   367,     0,   392,   473,   477,     0,     0,
-       0,     1,   291,     2,   528,   574,   576,   291,     2,   739,
-     292,   742,   543,   543,     0,   292,     0,     0,   270,   545,
-     541,     2,   291,     0,     0,   291,   548,     2,   499,     2,
-     552,     0,     0,     0,     0,     0,     0,    18,    57,     4,
-       5,     6,    16,     0,     0,   291,     2,    62,    63,    64,
-      65,    45,    19,    46,    22,    44,    66,   291,     0,    69,
-      73,    76,    79,    84,    87,    89,    91,    93,    95,    97,
-     102,   493,   749,   450,   492,     0,   448,   449,     0,   564,
-     579,   582,   585,   591,   594,   597,   357,     0,     2,   737,
-       0,   291,   740,     2,    60,   291,     3,   424,     0,   432,
-     292,   291,   304,   331,   284,   346,   353,     3,     3,   406,
-     410,   420,   425,   471,   291,   426,   704,   705,   291,   427,
-     429,   291,     2,   581,   593,   727,     2,     2,   246,     2,
-     457,     0,   455,   454,   453,   138,     2,     2,   248,     2,
-       2,   247,     2,   278,     2,   279,     0,   277,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   565,   604,     0,
-     452,     2,   559,   568,   658,   561,   562,   531,   291,     2,
-     598,   607,   600,   601,     0,   273,   291,   291,   337,   292,
-       0,   292,     0,   291,   732,   736,   734,   532,   291,   543,
-     252,   260,   306,     0,     2,   533,   291,   497,   334,   335,
-     280,   349,   356,     0,   291,     0,   747,   397,     0,   474,
-     498,   249,   250,   518,   291,   434,     0,   291,   234,     0,
-       2,   236,     0,   292,     0,   254,     2,   255,   275,     0,
-       0,     2,   291,   543,   291,   484,   486,   485,     0,     0,
-     749,     0,   291,     0,   291,   488,   291,   558,   556,   557,
-     555,     0,   550,   553,     0,     0,   291,    52,   291,    66,
-      47,   291,    54,   291,   291,    50,    51,     2,   124,     0,
-       0,   446,     0,   445,   726,   118,   291,    17,     0,    29,
-      30,    35,     2,     0,    35,   108,   109,   110,   111,   112,
-     113,   114,   115,   116,   117,   107,     0,    48,    49,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   104,
-       2,   644,   451,   641,   545,   545,   649,   478,   291,     2,
-     583,   584,     0,   595,   596,     0,     2,   738,   741,   118,
-     291,     0,     2,   706,   292,   710,   701,   702,   708,     0,
-       2,     2,   666,   545,   749,   615,   545,   545,   749,   545,
-     629,   545,   545,   680,   433,   663,   545,   545,   671,   678,
-     291,   428,   292,     0,     0,   291,   716,   292,   721,   749,
-     713,   291,   718,   749,   291,   291,   291,     0,   118,     0,
-      18,     2,     0,    19,     0,   458,   747,     0,     0,   464,
-     238,     0,   291,     0,     0,     0,   543,   567,   571,   573,
-     603,   606,   610,   613,   566,   605,     0,   281,   656,     0,
-     291,   274,     0,     0,     0,     0,   272,     2,     0,   256,
-     534,   291,     0,     0,   291,     2,   362,   382,   371,     0,
-       0,   376,   370,   748,     0,     0,   395,     0,   292,     3,
-     413,     3,   417,   416,   589,     0,   529,   291,    60,     3,
-     291,   432,   292,     3,   426,   427,     2,     0,     0,     0,
-     483,   303,   291,   479,   481,     3,     2,     2,     0,   500,
-       3,     0,   552,   126,     0,     0,   219,     0,     0,     0,
-       0,    36,     0,     0,   118,   291,    20,     0,    21,     0,
-     690,   695,   447,   687,   545,   545,     0,   105,     3,     2,
-      27,     0,    33,     0,     2,    25,     0,   103,    70,    71,
-      72,    74,    75,    77,    78,    82,    83,    80,    81,    85,
-      86,    88,    90,    92,    94,    96,     0,     0,   750,   291,
-       0,     0,     0,   645,   646,   642,   643,   495,   494,   291,
-       0,   291,   712,   291,   717,   292,   291,   660,   291,   291,
-     703,   659,     2,   291,     0,     0,     0,     0,     0,     0,
-       0,     0,   681,     0,   667,   618,   634,   668,     2,   614,
-     621,   430,   616,   617,   431,     2,   628,   637,   630,   631,
-     664,   665,   679,   707,   711,   709,   749,   265,     2,   743,
-       2,   421,   715,   720,   422,     0,   400,     3,     3,     3,
-       3,   452,     3,     0,     2,   466,   463,   748,     0,   459,
-       2,   462,   465,     0,   291,   239,   261,     3,   269,   271,
-       0,   452,     2,   569,   570,     2,   608,   609,     0,   657,
-     535,     3,   343,   342,   345,   344,   291,   536,     0,   537,
-     370,     0,     0,   291,   291,     0,     0,   690,   380,   383,
-     387,   545,   387,   386,   379,   372,   545,   374,   377,   291,
-     397,   391,   101,   398,   747,     0,     0,   435,   237,     0,
-       0,     3,     2,   666,   428,     0,   525,     0,   749,   487,
-       0,   291,   291,   291,     0,   549,   551,   127,     0,     0,
-     212,     0,     0,     0,   220,   221,    53,     0,    55,    58,
-      59,     0,     2,   125,     0,     0,     0,   691,   692,   688,
-     689,   457,    67,    68,   106,   122,     3,   105,     0,     0,
-      24,    35,     3,     0,    32,    99,     0,     3,   648,   652,
-     655,   647,     3,   590,     3,   714,   719,     2,    60,   291,
-       3,     3,   292,     0,     3,   620,   624,   627,   636,   670,
-     674,   677,   291,     3,   619,   635,   669,   291,   291,   423,
-     291,   291,   744,     0,     0,     0,     0,   253,     0,   101,
-       0,     3,     3,     0,   460,     0,   456,     0,     0,   242,
-     291,     0,     0,   126,     0,     0,     0,     0,     0,   126,
-       0,     0,   105,   105,    18,     2,     0,     0,     3,   128,
-     129,     2,   140,   130,   131,   132,   133,   134,   135,   142,
-     144,     0,     0,     0,   282,   291,   291,   545,     0,   538,
-     291,   373,   375,     0,   389,   691,   384,   388,   385,   378,
-     382,   365,   396,     0,   577,     2,   662,   661,     0,   667,
-       2,   480,   482,   502,     3,   510,   511,     0,     2,   506,
-       3,     3,     0,     0,   554,   219,     0,     0,     0,   219,
-       0,     0,   118,   694,   698,   700,   693,   747,   105,     0,
-       3,   659,    39,     3,    37,    34,     0,     3,    98,   100,
-       0,     2,   650,   651,     0,     0,   291,     0,     0,     0,
-       3,   636,     0,     2,   622,   623,     2,   638,     2,   672,
-     673,     0,     0,    60,     0,     3,     3,     3,     3,   408,
-     407,   411,     2,     2,   746,   745,   119,     0,     0,     0,
-       0,     3,   461,     3,     0,   240,   143,     3,   292,   291,
-       0,     0,     0,     0,     2,     0,   188,     0,   186,     0,
-       0,     0,     0,     0,     0,     0,   545,   118,     0,   148,
-     145,   291,     0,     0,   264,   276,     3,     3,   544,   611,
-     366,   381,   394,   291,   263,   291,     0,   513,   490,   291,
-       0,     0,   489,   504,     0,     0,     0,   213,     0,   222,
-      56,     2,   696,   697,     0,   123,   120,     0,     0,     0,
-       0,     0,    23,     0,   653,   291,   578,   262,   722,   723,
-     724,     0,   675,   291,   291,   291,     3,     3,     0,   683,
-       0,     0,     0,     0,   291,   291,     3,   542,   119,   468,
-       0,     0,   243,   292,     0,     0,     0,     0,   291,   189,
-     187,   184,     0,   190,     0,     0,     0,     0,   194,   197,
-     195,   191,     0,   192,   126,    35,   141,   139,   241,     0,
-       0,   415,   419,   418,     0,   507,     2,   508,     2,   509,
-     503,   291,   225,     0,   223,     0,   225,   291,    31,   121,
-       2,    42,     2,    40,    38,    28,    26,     3,   725,     3,
-       3,     3,     0,     0,   682,   684,   625,   639,   266,     2,
-     405,     3,   404,     0,   470,   467,   126,     0,     0,   126,
-       3,     0,   126,   185,     0,     2,     2,   206,   196,     0,
-       0,     0,   137,     0,   572,   612,     2,     0,     0,     2,
-     226,     0,     0,   214,     0,     3,     0,     0,     0,     0,
-       0,     0,   685,   686,   291,     0,   469,   149,     0,     0,
-       2,   162,   126,   151,     0,   179,     0,   126,     0,     2,
-     153,     0,     2,     0,     2,     2,     2,   193,    32,   291,
-     512,   514,   505,     0,     0,     0,     0,     0,     3,     3,
-     654,   626,   640,   676,   409,   126,   155,   158,     0,   157,
-     161,     3,   164,   163,     0,   126,   181,   126,     3,     0,
-     291,     0,   291,     0,     2,     0,     2,   136,     2,   227,
-     228,     0,   224,   215,   699,     0,     0,   150,     0,     0,
-     160,   230,   165,     2,   232,   180,     0,   183,   169,   198,
-       3,   207,   211,   200,     3,     0,   291,     0,   291,     0,
-       0,     0,    43,    41,   156,   159,   126,     0,   166,   291,
-     126,   126,     0,   170,     0,     0,   690,   208,   209,   210,
-       0,   199,     3,   201,     3,   291,   216,   229,   146,   167,
-     152,   126,   233,   182,   177,   175,   171,   154,   126,     0,
-     691,     0,     0,     0,     0,   147,   168,   178,   172,   176,
-     175,   173,     3,     3,     0,     0,   491,   174,   202,   204,
-       3,     3,   203,   205
-};
-
-/* YYDEFGOTO[NTERM-NUM].  */
-static const yytype_int16 yydefgoto[] =
-{
-      -1,   813,   468,   301,    47,   134,   135,   302,   303,   304,
-     305,   761,   762,  1133,  1134,   306,   381,   308,   309,   310,
-     311,   312,   313,   314,   315,   316,   317,   318,   319,   320,
-    1030,   518,   975,   546,   322,   976,   947,  1057,  1518,  1059,
-    1060,  1061,  1062,  1519,  1063,  1064,  1437,  1438,  1401,  1402,
-    1403,  1497,  1498,  1502,  1503,  1538,  1539,  1065,  1361,  1066,
-    1067,  1298,  1299,  1300,  1480,  1068,   146,   953,   954,   955,
-    1381,  1461,  1472,  1473,   469,   470,   874,   875,  1038,    51,
-      52,    53,    54,    55,   347,   159,    58,    59,    60,    61,
-      62,   349,    64,    65,   265,    67,    68,   275,   351,   352,
-      71,    72,    73,    74,   119,    76,   205,   354,   120,    79,
-     121,    81,    82,   455,    83,   454,   688,   689,   690,   908,
-    1086,   909,    84,    85,   458,   456,   696,   855,   856,   857,
-     858,   699,   700,   701,   359,   360,   361,   362,   466,   340,
-     136,   137,   522,   324,   171,   645,   646,   647,   648,   649,
-      86,   122,    88,   489,   490,   939,   491,   278,   495,   325,
-      89,   138,   139,    90,  1321,  1108,  1109,  1110,  1111,    91,
-      92,   717,    93,   274,    94,    95,   188,  1032,   679,   412,
-     126,    96,   501,   502,   503,   189,   269,   191,   192,   193,
-     270,    99,   100,   101,   102,   103,   104,   105,   196,   197,
-     198,   199,   200,   825,   605,   606,   607,   608,   201,   610,
-     611,   612,   572,   573,   574,   575,   751,   106,   614,   615,
-     616,   617,   618,   619,   968,   753,   754,   755,   595,   365,
-     366,   367,   368,   326,   165,   108,   109,   110,   370,   694,
-     569
-};
-
-/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
-   STATE-NUM.  */
-#define YYPACT_NINF -1310
-static const yytype_int16 yypact[] =
-{
-    7316,  8697, -1310,    16, -1310, -1310, -1310, -1310, -1310, -1310,
-   -1310,    22, -1310, -1310, -1310, -1310, -1310, -1310, -1310, -1310,
-   -1310, -1310, -1310, -1310, -1310, -1310,   101,   101,   101,  1152,
-     941,    64,  7548,   141, -1310, -1310, -1310, -1310, -1310,    87,
-   -1310, -1310, -1310,   868,   134, -1310, -1310, -1310, -1310,  9158,
-   -1310, -1310, -1310, -1310,   149,   144, -1310,  1337, -1310, -1310,
-   -1310, -1310,   139,   935,   260,   102,  2892, -1310, -1310,  9196,
-     790, -1310, -1310, -1310,   904,   293,  5512,   547,   778,   904,
-    1166, -1310, -1310,   554,   624, -1310,   904,  1343, -1310,   187,
-   -1310,   308,   336, -1310, -1310, -1310, -1310,   251,   144,   101,
-   -1310,   101, -1310, -1310, -1310, -1310,  8923,  1337, -1310, -1310,
-    1337, -1310,   337, -1310,  9043, -1310, -1310,  1053,  9381, -1310,
-    1729,  1729,  1729, -1310, -1310, -1310,   101, -1310, -1310, -1310,
-     410,   413,   418, -1310, -1310, -1310,   433, -1310, -1310, -1310,
-   -1310, -1310,   468,   477, -1310, -1310,    37,  8666,  2607,   742,
-     369,   496,   509,   523,   530,   535,  8584,  6836,   536,   546,
-   -1310,  9234, -1310, -1310, -1310, -1310,   561, -1310,   245,  4633,
-    4633, -1310,   562,   361, -1310, -1310, -1310, -1310,   574,   383,
-     408,   429,   101,   577, -1310, -1310,   935,  3015,   664, -1310,
-      86, -1310,   101,   101,   144, -1310, -1310,    89, -1310,   101,
-     101, -1310,  3541,   634,   653,  1729,  6748, -1310, -1310,   623,
-    9158, -1310, -1310,   904, -1310, -1310, -1310,   144, -1310,  1337,
-     149, -1310,  7737, -1310,  1729,  1729,  1729,   144, -1310,  1152,
-   -1310,  5996, -1310, -1310,   642,  1729, -1310,  1729, -1310,    87,
-    8666, -1310,   672, -1310,   941,   697,  1729, -1310,  1152,   699,
-     702, -1310,  7548,   567, -1310, -1310, -1310,  9125, -1310, -1310,
-    4167, -1310,   664,    10,  5116,  9381,  1053,  3541, -1310,    94,
-   -1310, -1310,  9043,  1337,   715, 10741, -1310, -1310,    11, -1310,
-   10483,   740,   772, 10231,   759, 10288, 10307, -1310,   763, -1310,
-   -1310, -1310, -1310, 10364, 10364,  8440,   765, -1310, -1310, -1310,
-   -1310, -1310, -1310,   799, -1310,   616,  2256,  8779, 10288, -1310,
-     475,   860,   810,   276,   913,   766,   767,   793,   832,    41,
-   -1310, -1310,   807,   704, -1310,   331, -1310, -1310,  2607, -1310,
-   -1310,   242,   835, -1310,   421,   835,   841,    87, -1310, -1310,
-     846,  8923, -1310,   847,   857,  8892, -1310, -1310,  1352,  2069,
-    8155,  6748,   904, -1310,   904,  1729,  1729, -1310, -1310, -1310,
-   -1310, -1310, -1310,  1729,  8923,  1337, -1310, -1310,  9419,  1457,
-   -1310,  7886, -1310, -1310, -1310, -1310, -1310, -1310, -1310,   875,
-   10098, 10288, -1310, -1310, -1310, -1310, -1310, -1310, -1310, -1310,
-   -1310, -1310, -1310, -1310, -1310, -1310,  1053, -1310,   928,   862,
-     891,   893,  1023,   916,   937,   951,  3015, -1310, -1310,   942,
-     149,   958, -1310, -1310,   970, -1310, -1310, -1310,  9125, -1310,
-   -1310, -1310, -1310, -1310,  3541, -1310,  8666,  8666, -1310,  1729,
-    1053,  6867,  1337,  8228, -1310, -1310, -1310, -1310,  9125,    10,
-   -1310, -1310,   904,   144, -1310, -1310,  9125, -1310,  6513, -1310,
-   -1310,  1729,  1729,   382,  5342,   969,   972,   960,  1031,  1729,
-   -1310, -1310, -1310, -1310,  9605, -1310,   450,  6629, -1310,   144,
-    1033, -1310,  1053, 10565, 10155, -1310, -1310, -1310, -1310,  1039,
-    3541, -1310,  8301,   664,  7432, -1310, -1310, -1310,   984,   626,
-     807,   941, 10741,   606,  9043, -1310, 10741, -1310, -1310, -1310,
-   -1310,   690, -1310,  1044,   772,   255,  8440, -1310,  9457, -1310,
-   -1310,  8440, -1310,  8553,  8440, -1310, -1310,  1042, -1310,   722,
-    1047,   818,  1048, -1310, -1310,  9310,  6479, -1310,   321, -1310,
-   -1310,  5116, -1310,   602,  5116, -1310, -1310, -1310, -1310, -1310,
-   -1310, -1310, -1310, -1310, -1310, -1310,  5116, -1310, -1310, 10288,
-   10288, 10288, 10288, 10288, 10288, 10288, 10288, 10288, 10288, 10288,
-   10288, 10288, 10288, 10288, 10288, 10288, 10288,  2426,  5116, -1310,
-     704,   830, -1310, -1310,   101,   101, -1310, -1310,  8666, -1310,
-   -1310,   970,   567, -1310,   970, 10212, -1310, -1310, -1310,  4524,
-    6479,  1049,  1054, -1310,  9381, -1310, -1310,   561, -1310,  1056,
-     774,  1073,  2515,    95,   807, -1310,   101,   101,   807,    98,
-   -1310,   101,   101,   970, -1310, -1310,   101,   101, -1310,   835,
-    9490,  1337, 10710,   283,   326,  9490, -1310,  4167, -1310,   807,
-   -1310,  8923, -1310,    80,  7852,  7852,  7852,  1337, -1310,  4787,
-    1065,   875,   744,  1066,  1067, -1310,  1070,  4633,   333, -1310,
-    1134,  1337,  7852,   567,  1053,   567,   664,   494,   835, -1310,
-   -1310,   584,   835, -1310, -1310, -1310,   772, -1310,   835,   144,
-    9605, -1310,   737,  1083,   750,  1090, -1310,  1089,   144, -1310,
-   -1310,  9125,   144,  1088,  9457,  1092, -1310,  1677, -1310,   441,
-     448,   941, -1310,   941,  1091, 10288, -1310,   941, 10710, -1310,
-   -1310,  1098, -1310, -1310, -1310,   567, -1310, 10638,   857, -1310,
-    7852,   853,  8155, -1310, -1310,   561,  1095,  1097,   984,  3316,
-   -1310, -1310, 10741, -1310, -1310,  1099, -1310, -1310,  1105, -1310,
-    1099,  1111, 10483,  5116,    62,  1102,   167,  1113,  1121,  1129,
-    1130, -1310,  1131,  1132,  9348,  6598, -1310,  5116, -1310,   818,
-     978, -1310, -1310, -1310,   101,   101,  5540,  5116,  1135, -1310,
-   -1310,   757, -1310,  5116, -1310, -1310,   914, -1310, -1310, -1310,
-   -1310,   475,   475,   860,   860,   810,   810,   810,   810,   276,
-     276,   913,   766,   767,   793,   832, 10288,   282, -1310,  9605,
-    1136,  1137,  1140,   830, -1310, -1310, -1310, -1310, -1310,  9605,
-     779,  7852, -1310,  8923, -1310,  6955,  9005, -1310,  7886,  6836,
-   -1310, -1310,   774,  9605,  1063,  1142,  1143,  1145,  1146,  1147,
-    1148,  1154, -1310,  3759,  2515, -1310, -1310, -1310, -1310, -1310,
-   -1310, -1310, -1310, -1310, -1310, -1310, -1310, -1310, -1310, -1310,
-   -1310, -1310,   970, -1310, -1310, -1310,   807, -1310, -1310, -1310,
-   -1310, -1310, -1310, -1310, -1310,  1156, -1310,  1159,  1160, -1310,
-   -1310,   149,  1135,  4787, -1310, -1310, -1310, 10098,  1157, -1310,
-   -1310, -1310, -1310,   941,  6225,  1247, -1310, -1310, -1310, -1310,
-    1150,   149, -1310, -1310,   970, -1310, -1310,   970,   137,   970,
-   -1310, -1310, -1310, -1310, -1310, -1310,  9272, -1310,   144, -1310,
-   -1310,   451,   452,  9419,  7074,  2178, 10288,  3429, -1310, -1310,
-    1149,    39,  1149, -1310,   941, -1310,   101, -1310, -1310,  8073,
-     960, -1310, -1310, -1310,   972,  1168,  1169, -1310, -1310,  1170,
-    1172, -1310,   853,  1305, -1310,   359, -1310,  3316,   807, -1310,
-    1177, 10741,  9528,  8666,  1180, -1310, -1310,  1175,  1182,  1164,
-   -1310, 10288,    56,   233,  1179, -1310,  1183,   567,  1183, -1310,
-   -1310,  1183,  1184, -1310,  1189,  1190,  1192,   978, -1310, -1310,
-   -1310, 10098, -1310, -1310, -1310, -1310,  1188,  5116,  1193,   567,
-   -1310,  5116, -1310,   567, -1310, -1310,  5116, -1310,   595,   835,
-   -1310, -1310, -1310, -1310, -1310, -1310, -1310,   875,   857,  8892,
-   -1310, -1310,  7193,  1196, -1310,   622,   835, -1310,   644,   649,
-     835, -1310,  1729,  4053, -1310, -1310, -1310,  9605,  9605, -1310,
-    8228,  8228, -1310,  1194,  1195,  1198,  1199, -1310,  1200,   531,
-      27,  1135, -1310,   567, -1310,  4633, -1310,  5116,   453, -1310,
-    6359,  1213,  1217, 10041,  1222,  1223,    43,    49,   106,  5116,
-    1228,   144,  5116,  5116,  1208,  1237,   142,  1218, -1310, -1310,
-   -1310,  1236, -1310, -1310, -1310, -1310, -1310, -1310, -1310, -1310,
-   -1310,   941,  1249,  5116, -1310,  9605,  9605,   101,  1252, -1310,
-    8810, -1310, -1310,   987, -1310,  3429, -1310, -1310, -1310, -1310,
-    1677, -1310, -1310,  1253, -1310, -1310, -1310, -1310,  1254,  1305,
-   -1310, -1310,  1239, -1310,  1099, -1310, -1310,  1053,  1258, -1310,
-   -1310, -1310,   806,  1262, -1310,   167,  1267, 10288,  1248,   167,
-     167,  1273,  9310,   693,   835, -1310, -1310,  1070,  5116,  1274,
-    1188,   208,   157,  1269, -1310, -1310,  1278,  1269, -1310, -1310,
-    1282, -1310, -1310,   970,  1286,  1288,  6717,  1287,  1289,  1291,
-   -1310, -1310,  1290, -1310, -1310,   970, -1310, -1310, -1310, -1310,
-     970,  5116,  5116,   857,  1292, -1310, -1310, -1310, -1310, -1310,
-   -1310, -1310, -1310, -1310, -1310, -1310, -1310, 10288, 10288,  1294,
-    1295,  1269, -1310, -1310,   941, -1310, -1310, -1310,  5073,  9528,
-    5116,  5116,  1370,  5116, -1310,  1298, -1310,  1299, -1310,  1302,
-    5116,  1306,  5116,  1123,  1307,    30,   101,  5821,  1435, -1310,
-   -1310,  6225,  1303,   456, -1310, -1310, -1310, -1310, -1310, -1310,
-   -1310, -1310, -1310,  9861, -1310,  8301,  1330, -1310, -1310,  9528,
-     463,   481, -1310,  1328,  1314,   772,  1341, -1310,   306, -1310,
-   -1310, -1310, -1310,   970,  1332, -1310, -1310,  1342,   753,   834,
-     567,  1345, -1310,  1350, -1310,  9605, -1310, -1310, -1310, -1310,
-   -1310,  1351, -1310,  9605,  9605,  9605, -1310, -1310,  1359, -1310,
-    1362,  1365,  1366,   557,  7925,  8040, -1310, -1310,   420, -1310,
-    1368,  1371, -1310,  8374,   815,   844,  1346,   866,  6094, -1310,
-   -1310, -1310,   485, -1310,   888,  1369,  1375,   144,  1417,  1051,
-   -1310, -1310,  5116, -1310, 10041,  5116, -1310, -1310, -1310,  1377,
-    1379, -1310, -1310, -1310,  1376, -1310, -1310, -1310, -1310, -1310,
-   -1310,  9528,   772,   195, -1310,  1353,   772,  9605, -1310, -1310,
-   -1310, -1310, -1310, -1310, -1310, -1310, -1310, -1310, -1310, -1310,
-   -1310, -1310,  1384,  1388, -1310, -1310, -1310, -1310, -1310, -1310,
-   -1310,  1394, -1310,  1397, -1310, -1310, 10041,   217,  5116, 10041,
-   -1310,  1400,  5116, -1310,   289,  1421,  1423, -1310, -1310,  1403,
-    1415,  1393, -1310,  1001, -1310, -1310, -1310,  1337,  1053,  1412,
-     799,   323, 10288, -1310,   953, -1310,   567,   567,  1418,  1425,
-    1426,  1428, -1310, -1310,  8228,  1427, -1310,  1497, 10288,  1420,
-   -1310, -1310,  9953, -1310,   955, -1310,  1419, 10041,  1424, -1310,
-   -1310,  1442, -1310,  1445, -1310,  1461,  1462, -1310,  1430,  9528,
-   -1310, -1310, -1310,   772,   567,  1453,  1436,  1459,  1269,  1269,
-   -1310, -1310, -1310, -1310, -1310, 10041,   204, -1310,   370, -1310,
-   -1310,  3684, -1310, -1310,  1439,  5116, -1310,  5116,  3684,   144,
-    9457,   144,  9457,  1463, -1310,  1465, -1310, -1310,  1464,   799,
-   -1310,   968, -1310, -1310, -1310,  1460,  1466, -1310, 10288, 10288,
-   -1310, -1310,  1075,   122, -1310, -1310,  1444, -1310,  1075, -1310,
-   -1310,  2191,   567, -1310, -1310,   144,  9457,   144,  9457,  1472,
-    1450,   567, -1310, -1310, -1310, -1310,  9953,  1469,  1075,  7664,
-    5116,  9865,  1470,  1075,  1479,  2191,  3509, -1310, -1310, -1310,
-    1482, -1310, -1310, -1310, -1310,  8666, -1310, -1310, -1310,  9732,
-   -1310,  9953, -1310, -1310,  1468,  9644, -1310, -1310,  9865,   144,
-    3509,   144,  1484,  1486,   976, -1310,  9732, -1310, -1310, -1310,
-    9644, -1310, -1310, -1310,   144,   144, -1310, -1310, -1310, -1310,
-   -1310, -1310, -1310, -1310
-};
-
-/* YYPGOTO[NTERM-NUM].  */
-static const yytype_int16 yypgoto[] =
-{
-   -1310,  4585,  3220, -1310,  1680, -1310,    79,   965,  -162, -1310,
-     542,  -525,  -472,  -928,   -58,  5006,     0, -1310,   115,   571,
-     588,   220,   578,  1041,  1045,  1037,  1040,  1043, -1310,   682,
-    -568,  4467,  -949, -1310,  -743,   627,  -136,  -680,   399, -1310,
-     364, -1310,   400, -1052, -1310, -1310,   143, -1310, -1280, -1058,
-     249, -1310, -1310, -1310, -1310,    74, -1199, -1310, -1310, -1310,
-   -1310, -1310, -1310,   317, -1213,    36, -1310,  -398, -1310,   501,
-     296, -1310,   175, -1310,  -322, -1310, -1310, -1310,   558,  -827,
-   -1310, -1310,    14,  -963,    60,  1949, -1310, -1310, -1310,   -66,
-   -1310,    19,  1219,  -202,  1852,  4238, -1310, -1310,    54,    75,
-     689,  -242,  1416, -1310,  1975, -1310, -1310,   158,  2131, -1310,
-    2701,  1038, -1310, -1310, -1310,  -621, -1310,   944,   946,   541,
-     713,  -254, -1310, -1310, -1310,   938,   714,  -169, -1310,  -117,
-    -134,  1167, -1310, -1310,  -857,  -878,   837,   910,  1055,    25,
-   -1310,   900,   597,   -39,  -190,  -145,   668,   773, -1310,   993,
-   -1310,  2728,  1561,  -434,   920, -1310, -1310,   708, -1310,  -238,
-   -1310,   241, -1310, -1310, -1310, -1226,   414, -1310, -1310, -1310,
-    1165, -1310,    35, -1310, -1310,  -830,  -111, -1309,  -151,  3288,
-   -1310,  3069, -1310,   921, -1310,  -170,   169,  -182,  -181,  -166,
-       7,   -35,   -33,   -32,   813,     2,    29,    44,  -122,  -165,
-    -164,  -158,  -153,  -314,  -519,  -491,  -490,  -538,  -301,  -501,
-   -1310, -1310,  -512,  1078,  1084,  1085,  2540,  5063,  -571,  -588,
-    -558,  -543,  -557, -1310,  -503,  -733,  -723,  -722,  -570,  -311,
-    -274, -1310, -1310,   240,   176,   -77, -1310,  3991,   136,  -632,
-    -222
-};
-
-/* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
-   positive, shift that token.  If negative, reduce the rule which
-   number is the opposite.  If YYTABLE_NINF, syntax error.  */
-#define YYTABLE_NINF -521
-static const yytype_int16 yytable[] =
-{
-      49,   114,   453,   428,   399,   400,   268,    98,   150,   766,
-     151,   152,   819,   973,   868,   115,   964,   407,   752,    63,
-     401,   402,   403,   358,   383,   384,   965,   966,   404,   261,
-     440,   827,    49,   405,   596,   604,    50,   410,   498,    98,
-     357,   740,   820,   148,  1070,   153,   830,  1069,   609,    49,
-     844,    63,   837,   948,    69,  1137,   162,   821,   725,   794,
-      56,   116,   730,   187,   826,   408,   210,   144,    50,    49,
-     194,   919,   154,   217,   409,    70,   227,  1187,    31,   342,
-     112,   815,   178,   220,   399,   400,    69,   155,   281,  1439,
-     628,   425,    56,  1302,   632,  1379,   669,   407,   123,   818,
-     401,   402,   403,  1204,  1205,  1181,   114,    70,   404,   816,
-     817,   475,   477,   405,   114,  1195,   678,   267,   272,   476,
-     505,  1197,  1443,  1177,   682,    31,   211,   923,    31,   221,
-     203,   124,   262,    31,    31,   263,   566,    31,   527,   493,
-      31,   213,   494,  1171,   527,   408,   282,   307,   148,  1178,
-     411,   150,   145,   151,   152,   162,   114,   345,    77,   519,
-    1439,   210,  1303,  1169,  1170,  1117,  -231,  -231,   373,    97,
-     567,   714,   964,   143,   720,  1196,   107,   107,  1199,  1245,
-     204,  1198,   965,   966,   913,   167,   187,   187,   153,   476,
-      77,   471,   949,  1458,   162,   253,   147,   411,   419,   815,
-     411,    97,   267,   481,   828,   411,   601,   835,   107,   601,
-      49,   568,   149,  1186,   287,   154,  1443,   162,    97,   527,
-     667,  1443,   210,  1200,   819,    41,    42,   816,   817,   443,
-     155,   150,   190,   151,   152,    97,   664,  -231,    97,  1484,
-     307,  1443,  1248,  1139,   439,   107,   156,  1077,  1443,   292,
-     167,   514,    49,  1016,   820,   182,   169,   830,   172,    98,
-     272,  1398,  1399,   202,   588,   272,   267,   267,   723,   821,
-    1249,    63,   114,  1512,   162,  1514,   472,   527,   951,  1080,
-     170,   991,   441,   327,   665,   656,  1015,   463,    50,   164,
-     672,   674,  1093,   815,   342,   307,  -287,   442,   483,   358,
-    1468,   609,  1526,   248,  1382,   500,    69,   307,   251,   596,
-     664,  1003,    56,   671,   596,   804,   357,    97,  -119,   676,
-    -119,   816,   817,   571,  -119,  1187,  1178,    70,   148,  1541,
-      97,  1400,   465,  1398,  1399,   373,  -516,   527,  1084,  -119,
-    -119,   114,   734,  1118,   819,   345,   436,  1171,   713,   602,
-     620,   579,   471,   411,   164,   398,   190,   853,   665,   898,
-     253,   377,   827,  1119,   625,   735,   556,   557,   625,  1201,
-     519,   114,   471,   178,   820,   519,   327,   378,   519,    97,
-     471,  1070,   831,  1116,  1069,   736,   834,   673,   675,   821,
-     629,    97,   358,   111,   633,   847,   267,  1171,   747,   848,
-     510,   558,   559,  1409,    41,    42,   187,   851,   436,   357,
-      77,   854,   986,   373,  1496,    77,  1325,  1169,  1170,   174,
-    1501,    97,   547,   548,   267,   213,   307,   307,   107,   844,
-     267,   787,   759,   625,   714,   479,  1326,   472,   849,  1423,
-    1521,   577,   850,   167,   870,  1528,   642,   578,   342,  1525,
-     435,  1157,  1159,  1424,   114,   729,   358,   472,  1428,  1429,
-     547,  1362,   254,   871,  1126,   472,   859,   860,   264,  1536,
-     447,   849,   267,   357,   742,  1100,  1540,   387,  1187,   330,
-     267,   598,   625,   877,    49,  1187,  1469,   373,   719,   460,
-     498,    98,   683,   388,   114,  1244,   547,    97,   578,   390,
-    1470,   711,   869,    63,   888,   881,   307,  1104,   114,  1135,
-    1014,   307,   435,   307,   307,   391,  1171,   910,   603,   -10,
-      50,   750,  -440,   609,   392,   114,   345,  -441,  1016,   996,
-     582,  -467,   411,  -467,   804,   523,  1187,  1434,    69,   798,
-     393,   931,   277,   879,    56,   394,   112,   164,   213,  1236,
-    -467,     2,   207,     4,     5,     6,     7,   914,   417,    70,
-     704,   395,   327,   327,   916,   912,   705,   914,   916,  1184,
-     571,   571,  1184,   915,   952,   190,    77,   279,   307,  1316,
-     917,   437,  1126,  1081,  1082,  1185,   280,   913,  1308,   625,
-     345,   445,   549,   714,   620,  1317,    77,  1318,   550,   551,
-     602,   747,   602,   882,    77,   411,   331,   760,  1360,  1276,
-    1277,   713,   765,  1319,  1474,   471,    35,  1363,    36,   332,
-     625,  1474,   804,  1014,  1019,   625,   111,   620,   140,   239,
-     327,   625,   994,   333,   625,   625,   625,    41,    42,   111,
-     334,   928,    77,  -102,   806,   335,   846,  -102,   371,   327,
-      41,    42,   625,    97,   267,   372,  1087,   603,  1087,   520,
-     107,   465,   861,   240,   768,   769,   770,   342,   241,  1348,
-     376,  1027,  1522,  1349,   111,   358,   876,   385,   111,    -3,
-     140,   141,  1408,   389,   114,    41,    42,   907,   596,    41,
-      42,  1074,   357,   885,   691,   411,   111,   442,   140,   141,
-     472,   528,   529,   530,  1141,  1112,   411,    41,    42,   397,
-     625,   933,   620,   764,   327,   726,  1101,  1234,   719,   719,
-     727,  1238,  1034,   399,   400,   531,   472,   532,   409,   533,
-     534,  1153,   878,   411,   880,   432,   721,   407,   244,   401,
-     402,   403,   722,   426,   114,   345,   523,   404,   523,   750,
-     750,   523,   405,  1156,   523,   601,   845,   500,  1158,   230,
-     601,   598,   427,   231,   711,  1476,   235,  1477,   237,   814,
-     713,   603,   964,   213,   450,   246,   775,   776,   777,   778,
-    1373,  -288,   965,   966,   927,   408,  -364,   213,     8,     9,
-      10,    11,    12,   571,     2,   207,     4,     5,     6,     7,
-     731,   625,  1241,   625,   411,   999,   732,   680,   625,   345,
-    1161,  -393,   602,   570,  1425,   411,   111,    31,   140,   141,
-    1523,    45,    46,   229,   602,   111,   342,    41,    42,   484,
-    1436,   461,   746,   706,   462,   714,    41,    42,   747,    77,
-       8,     9,    10,    11,    12,    34,    37,   892,   804,   504,
-      40,   253,   329,   747,   292,   864,   911,    41,    42,    35,
-     894,    36,   163,   806,  1330,    77,   747,   980,   508,    31,
-     520,   972,   513,   981,   307,   520,   195,   525,   520,   218,
-     213,   527,   228,   812,   562,   601,  1168,   814,   603,   993,
-    1182,    45,    46,    63,   563,   705,   625,    34,   554,   555,
-    1494,  1436,   230,   114,   345,   907,   111,   907,     2,   207,
-       4,     5,     6,     7,   714,   664,  1232,    41,    42,   114,
-     910,   564,   578,   711,   691,  1356,   565,   749,    69,   411,
-     142,   747,   933,   933,    56,    45,    46,   719,   568,   570,
-      37,   411,   114,   307,    40,  1332,   338,    45,    46,    70,
-    -437,    41,    42,   952,  1357,   586,  1105,   952,   952,   589,
-     747,   163,   932,   665,   601,    48,   113,   750,   912,    -3,
-      45,    46,   657,    35,   374,    36,  1359,    43,  1508,   552,
-     553,   814,   747,   242,   245,    45,    46,   638,     8,     9,
-      10,    11,    12,   603,   113,   113,  1227,    48,  1364,   345,
-     163,   658,  1106,   659,   747,   560,   561,    37,    48,   184,
-     185,    40,   713,   111,    48,   140,   141,    31,    41,    42,
-     625,   625,    48,   163,    41,    42,   661,  1126,    48,   984,
-     981,    48,    77,   890,    48,   444,  1121,   253,   329,   411,
-     307,   230,   897,   235,   186,    34,   899,   662,   113,   113,
-     107,   666,    45,    46,  1284,  1285,    37,  1287,  1132,   472,
-      40,   663,  1132,  1426,  1292,  1444,  1294,    41,    42,  1423,
-     668,   747,    48,  1323,  1083,    48,   911,   442,  1490,   327,
-     114,   258,    48,   692,  1491,   907,  1546,   749,   693,   411,
-     907,   695,   578,   718,  1189,    45,    46,   329,   411,   933,
-      56,    45,    46,   737,   215,   738,   603,   267,   739,  1369,
-    1370,   743,  1132,    48,   547,    70,  1418,   981,   107,  1398,
-    1399,    48,   625,   771,   772,    37,    48,   184,   185,    40,
-     342,   230,   419,   660,   411,   845,    41,    42,   779,   780,
-    1351,   374,   773,   774,   457,   697,   345,  -235,   481,   329,
-     411,    48,    48,   733,   744,   510,   215,   748,   756,   691,
-    1380,   807,   266,   873,  1380,   711,   808,    48,   811,  -289,
-      45,    46,   828,   329,   601,    48,     8,     9,    10,    11,
-      12,  1295,  1296,  1297,    48,   822,   867,    48,   272,   114,
-    1331,  1333,  1334,   893,   113,   -12,   -13,   866,    77,   215,
-     895,   896,   900,   220,   903,    31,   921,   114,  -414,   113,
-    -520,   307,   936,   113,   943,   722,   107,    48,   113,   374,
-     117,   945,  1404,   956,   130,   625,   131,   132,   133,   114,
-      63,    48,    48,    34,   950,    41,    42,   957,    48,   958,
-     959,   960,   961,  1105,   711,    48,   988,   989,   211,   221,
-     990,   977,  1005,  1006,   911,  1007,  1008,  1009,  1010,   911,
-     215,  1459,  1079,   213,  1011,    69,  1022,  1421,   160,  -402,
-    -401,    56,  1036,  1058,   625,   625,  1071,  1534,  1094,   906,
-     644,  1073,  1096,   272,  1097,  1095,    70,  1103,   307,  1106,
-    1113,   747,  1114,    48,  1115,  1120,  1122,   971,   215,  1123,
-    1124,   702,  1125,   215,  1128,  1131,  1151,   472,  1174,  1175,
-    1172,  1173,  1176,    48,    48,     8,     9,    10,    11,    12,
-     691,   114,  1190,   399,   400,   259,  1191,  1132,  1132,  1132,
-      48,  1193,  1194,   160,    48,  1105,   407,  1202,  1206,   401,
-     402,   403,  1189,   441,    31,   643,  -290,   404,    56,  1207,
-    1209,    -3,   405,     8,     9,    10,    11,    12,   442,  1214,
-     664,    48,  1219,    70,  1224,   107,   323,   493,  1222,    77,
-    1507,    48,    34,  1228,   703,   339,  1233,   922,   267,  1235,
-    1237,  1106,    31,  1240,   408,  1250,  1246,   107,   215,    48,
-    1252,   724,  1254,   728,   625,    48,  1256,    48,  1257,  1258,
-    1262,  1259,  1420,  1260,  1269,   107,  1278,  1279,   665,    37,
-      34,   175,   176,    40,   932,  1203,   601,  1286,  1307,   114,
-      41,    42,    45,    46,    37,   430,   175,   176,    40,   434,
-    1289,  1290,   113,  1105,  1291,    41,    42,    48,  1293,  1301,
-    1314,   114,  1192,  1320,  1322,    48,    77,  1328,   114,    48,
-     114,  1324,   114,    48,  1329,  1358,   113,  1335,   113,   323,
-     472,   372,  1336,  1338,   107,  1132,  1132,   472,   985,   215,
-     150,  1344,   151,   152,  1345,  1346,  1347,  1297,  1365,  1106,
-    1354,  1506,   214,  1355,  1366,  1383,   114,  1374,   114,  1375,
-    1376,   434,   233,   113,   488,  1189,  1392,   107,   113,   114,
-    1393,    56,  1189,  1460,  -403,  1506,  1506,   702,    56,  1396,
-    1407,   215,  1415,   162,   521,   307,    70,  1411,   472,  1413,
-     528,   529,   530,    70,  1416,  1417,   160,  1422,  1430,    37,
-    1506,   175,   176,    40,   214,  1431,  1432,   373,  1433,  1435,
-      41,    42,   865,  1349,   531,  1029,   532,   113,   533,  1305,
-    1440,  1445,  1449,  1189,    48,  1451,  1447,  1453,  1455,    56,
-     587,  1509,  1457,  1462,   593,    48,   376,    48,  1463,  1464,
-    1517,  1475,  1492,  1485,    70,  1487,  1500,   214,  1493,  1489,
-     703,  1515,  1516,   626,  1520,  1527,    48,   630,   922,  1529,
-     339,   918,  1531,   920,  1544,   107,  1545,   457,  1208,    77,
-    1537,   783,    48,   781,  1130,   784,    77,   113,   782,   785,
-    1058,  1306,  1495,  1410,  1547,  1368,    48,   107,   113,    48,
-     113,  1239,  1384,  1478,   107,  1088,   702,   216,   901,  1213,
-     902,  1221,   215,   922,  1092,   924,   702,   800,   214,  1127,
-    1035,   872,   938,  1315,   243,   323,   323,  1102,   790,   716,
-     702,   327,    48,   946,   791,   792,   113,    77,   113,     0,
-     215,  1367,   113,     0,     0,   215,     0,     0,  1138,     0,
-     113,     0,     0,   687,   479,   107,   214,     0,     0,   216,
-       0,   214,     0,    48,    48,     0,   117,     0,     0,     0,
-    1482,     0,  1482,     0,     0,     0,   499,    48,     0,   703,
-       0,     0,     0,  1372,     0,     0,     0,     0,     0,   703,
-       0,   488,     0,   323,     0,   488,     0,     0,     0,  1029,
-       0,     0,   216,   703,     0,   521,  1482,   521,  1482,     0,
-     521,     0,   323,   521,     0,     0,   215,   177,     0,     8,
-       9,    10,    11,    12,   339,     0,     0,     0,     0,    37,
-     215,   184,   185,    40,     0,  1397,     0,     0,  1405,     0,
-      41,    42,     0,     0,     0,     0,   214,   644,    31,     0,
-       0,     0,     0,  1039,     0,     0,     0,    48,     0,     0,
-       0,     0,     0,   216,     0,     0,   905,   177,   411,    48,
-     177,     0,     0,     0,    45,    46,    34,   323,     0,   922,
-       0,  1442,     0,     0,     0,     0,  1446,   906,   802,     0,
-       0,     0,     0,  1479,  1089,  1483,     0,     0,     0,     0,
-       0,   216,     0,     0,     0,     0,   216,     0,     0,     0,
-       0,     0,   643,     0,  1467,     0,   177,   891,   113,   843,
-       0,     0,     0,   215,   593,     0,     0,   214,     0,  1511,
-     852,  1513,    66,   118,   702,   702,     0,     0,     0,   922,
-     922,    48,     0,     0,   214,     0,     0,     0,     0,     0,
-      48,   644,    48,     0,     0,     0,     0,     0,     0,   113,
-       0,     0,     0,     0,    66,     0,     0,     0,     0,   214,
-       0,     0,     0,  1542,     0,  1543,     0,     0,     0,   177,
-       0,   161,    48,   687,     0,     0,     0,     0,  1550,  1551,
-       0,   216,   702,   702,     0,     0,     0,     0,  1535,     0,
-       0,   222,   113,     0,  1535,     0,     0,   703,   703,     0,
-       0,     0,     0,     0,     0,  1535,   643,     0,     0,  1535,
-       0,   488,     0,     0,   113,     0,     0,     0,   113,    57,
-      57,     0,     0,   177,     0,     0,   987,     0,   260,     0,
-     177,     0,     0,   339,     0,     0,   992,     0,     0,     0,
-       0,  1039,     0,     0,     0,    75,     0,     0,     0,     0,
-    1004,    57,     0,     0,     0,   703,   703,     0,     0,     0,
-       0,     0,   216,     0,     0,     0,     0,     0,   113,     0,
-     328,     0,     0,     0,     0,     0,     0,    75,   260,   350,
-     214,     0,     0,     0,     0,    57,     0,     0,    57,     0,
-       0,     0,   995,     0,     0,     0,     0,   802,   177,     0,
-       0,     0,     0,     0,   216,     0,   113,     0,   214,   406,
-     215,     0,     0,   214,   223,   177,     0,     0,     0,   177,
-      48,     0,     0,     0,   424,    48,     0,   429,   431,     0,
-    1312,     0,   161,     0,   922,     0,     0,     0,     0,     0,
-       0,     0,    48,     0,     0,     0,     0,     0,     0,     0,
-     922,     0,     0,   448,  1282,     0,     0,   451,     0,   452,
-       0,     0,   702,     0,     0,     0,     0,     0,   459,     0,
-     702,   702,   702,     0,    66,     0,   348,     0,     0,   473,
-       0,     0,   177,     0,   214,   802,     0,     0,     0,   480,
-       0,     0,   339,     0,     0,     0,     0,   431,   214,     0,
-       0,    78,   353,  1313,     0,     0,     0,     0,   687,     0,
-       0,    37,     0,   184,   185,    40,     0,     0,   499,   113,
-     922,   922,    41,    42,     0,   216,     0,     0,     0,     0,
-     488,  1107,   323,    78,   702,   703,     0,     0,     0,     0,
-       0,    57,    48,   703,   703,   703,     0,     0,   600,     0,
-     601,     0,     0,   216,  1166,  1167,    45,    46,   216,     0,
-       0,     0,     0,   260,     0,     0,     0,   594,     0,     0,
-     224,    57,     0,   622,     0,     0,   449,     0,     0,     0,
-       0,     0,     0,   113,   113,   113,   627,     0,   843,     0,
-     627,   214,     0,   260,     0,     0,   215,    75,     0,     0,
-       0,     0,    75,     0,     0,     0,     0,   703,     0,     0,
-       0,     0,  1216,  1217,     0,     0,     0,     0,     0,     0,
-      37,     0,   184,   185,    40,     0,     0,     0,     0,   216,
-       0,    41,    42,    37,     0,   184,   185,    40,     0,   177,
-     473,     0,     0,   216,    41,    42,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   350,     0,   905,   355,   411,
-     473,     0,     0,     0,     0,    45,    46,     0,   473,   687,
-    1505,   177,   411,     0,     0,     0,     0,     0,    45,    46,
-       0,     0,     0,     0,     0,     0,   698,   177,     0,   431,
-       0,   215,     0,     0,     0,     0,   223,     0,     0,     0,
-       0,   177,     0,     0,   712,     0,    66,     0,     0,     0,
-       0,   802,    48,    48,   431,     0,     0,     0,   431,     0,
-       0,   113,   113,   535,   536,   537,   538,   539,   540,   541,
-     542,   543,   544,     0,     0,     0,   216,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   260,   350,     0,
-       0,     0,   348,    78,     0,     0,     0,   545,    78,   113,
-       0,     0,     0,    75,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   353,     0,
-       0,     0,   177,    75,     0,     0,     0,     0,   214,     0,
-       0,    75,  1337,   793,     0,     0,   339,     0,     0,     0,
-    1339,  1340,  1341,    57,     0,     0,     0,     0,     0,   353,
-       0,   627,   805,     0,     0,     0,    48,   113,  1107,     0,
-       0,     0,     0,     0,   824,     0,   113,   353,     0,    75,
-       0,     0,     0,   283,   284,     0,   285,     0,     0,     0,
-      48,    48,   594,     0,     0,   348,     0,   594,     0,     0,
-       0,     0,   224,   627,     0,     0,   350,   350,   350,     0,
-       0,     0,   286,     0,  1385,    48,     0,     0,   287,     0,
-       0,   353,   288,     0,   350,   289,   290,   291,   292,    41,
-      42,     0,   293,   294,     0,     0,     0,     0,     0,     0,
-       0,     0,   698,     0,     0,     8,     9,    10,    11,    12,
-       0,     0,     0,   473,     0,   295,     0,   379,     0,   348,
-    1107,     0,     0,    45,    46,   297,   298,   299,   300,    78,
-       0,     0,     0,     0,    31,     0,   786,     0,     0,   473,
-       0,     0,   350,   216,   355,   353,     0,     0,     0,    78,
-       0,   937,     0,     0,   431,     0,   177,    78,     0,     0,
-       0,     0,    34,   348,   348,   348,     0,    37,     0,   184,
-     185,    40,     0,     0,     0,   355,   260,   712,    41,    42,
-       0,   348,   967,     0,   214,     0,     0,     0,     0,   353,
-     353,   353,     0,   355,     0,    78,     0,     8,     9,    10,
-      11,    12,     0,     0,   600,     0,   601,   353,     0,     0,
-       0,     0,    45,    46,     0,     0,     0,     0,  1107,     0,
-       0,   698,     0,     0,     0,   353,    31,     0,     0,     0,
-       0,   698,     0,   350,     0,   627,    75,   355,  1002,   348,
-     627,   805,     0,     0,     0,   698,     0,     0,     0,  1481,
-       0,  1481,     0,     0,    34,  1013,     0,     0,     0,    37,
-       0,     0,    75,    40,     0,   353,     0,     0,     0,     0,
-      41,    42,     0,     0,     0,     0,     0,     0,     0,   214,
-       0,    80,     0,     0,     0,  1481,     0,  1481,     0,     0,
-       0,     0,     0,     0,     0,     0,    43,     0,     0,     0,
-     353,   355,     0,     0,    45,    46,    66,     0,    87,     0,
-     413,     0,     0,    80,   323,     0,     0,   421,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   627,   216,
-     348,     0,     0,     0,     0,   260,   712,     0,   348,  1085,
-      87,     0,     0,     0,   353,   355,   355,   355,     0,     0,
-     225,     0,     0,     0,   353,     0,   353,     0,     0,     0,
-       0,   223,     0,   355,   353,  1099,     0,     0,   353,     0,
-       0,     0,     0,   431,   118,     0,     0,   226,     0,     0,
-       0,   355,     0,     0,     0,     0,     0,     0,     0,   413,
-       0,     0,    78,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    57,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    78,     0,
-       0,   355,     0,     0,   216,     0,     0,     0,     0,    75,
-       0,   594,     0,     0,     0,     0,     0,     0,   356,     0,
-       0,     0,     0,   576,   429,     0,     0,     0,     0,   698,
-     698,   580,   350,   350,   583,     0,   355,     0,     0,   353,
-       0,     0,     0,     0,     0,   363,     0,   177,     0,     0,
-       0,    57,  1188,     0,     0,   206,     2,   207,     4,     5,
-       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
-      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-     355,     0,    26,    27,    28,     0,     0,   698,   698,     0,
-     355,    31,   355,     0,     0,     0,     0,   224,   413,     0,
-     355,     0,   421,     0,   355,     0,     0,     0,     0,     0,
-       0,     0,     0,    80,     0,     0,     0,     0,    80,    34,
-       0,    35,     0,    36,    37,     0,   208,    39,    40,   348,
-     348,     0,     0,     0,   627,    41,    42,     0,     0,     0,
-      87,     0,     0,     0,     0,    87,     0,     0,     0,    57,
-       0,     0,   353,   353,     0,   353,   353,     0,   712,     0,
-       0,    43,     0,   209,     0,    78,     0,     0,     0,    45,
-      46,     0,     0,     0,     0,    75,     0,     0,     0,   413,
-       0,     0,     0,     0,     0,     8,     9,    10,    11,    12,
-       0,     0,     0,     0,     0,   355,     0,     0,     0,     0,
-       0,  1283,     0,     0,     0,     0,     0,     0,     0,     0,
-     353,   353,   225,     0,    31,     0,     0,   177,     0,   260,
-       0,     0,     0,    66,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   698,     0,   712,     0,   226,
-       0,   118,    34,     0,     0,     0,     0,    37,     0,   184,
-     185,    40,     0,     0,     0,   127,   127,   127,    41,    42,
-       0,     0,     0,     0,     0,     0,     0,   698,     0,     0,
-     576,   576,     0,     0,     0,   698,   698,   698,     0,    80,
-       0,   353,     0,     0,   186,     0,   350,   350,     0,     0,
-       0,     0,    45,    46,   356,     0,     0,    57,    57,    80,
-    1188,     0,     0,     0,     0,     0,    87,    80,   355,   355,
-       0,   355,   355,     0,     0,     0,     0,     0,     0,     0,
-      57,   363,     0,     0,   223,   356,    87,     0,   127,     0,
-     127,    78,     0,   118,    87,     0,     0,     0,    57,   698,
-       0,     0,     0,   356,     0,    80,    75,     0,     0,     0,
-       0,     0,   363,     0,     0,   276,     0,   883,   353,     0,
-     353,   886,     0,     0,     0,     0,   355,   355,     0,     0,
-     363,     0,    87,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   348,   348,     0,     0,   356,     0,     0,
-     353,     0,    57,     0,     0,     0,     0,    57,   353,   353,
-     353,     0,     0,     0,     0,     0,   350,     0,     0,   353,
-     353,   127,     0,     0,   363,     0,     0,     0,     0,   127,
-       0,   127,   127,    75,     0,     0,   127,     0,   127,   127,
-      57,   118,     0,   168,     0,   173,     0,   355,   179,   180,
-     181,     0,   183,     0,     0,     0,     0,     0,     0,     0,
-       0,   356,     0,  1188,     0,     0,     0,   234,     0,     0,
-    1188,     0,   353,     0,     0,     0,     0,     0,     0,   249,
-     250,     0,     0,     0,   125,   128,   129,     0,   363,     0,
-     224,     0,     0,     0,     0,     0,     8,     9,    10,    11,
-      12,     0,     0,   576,     0,   356,   356,   356,   127,     0,
-       0,     0,    78,   348,     0,     0,     0,     0,     0,     0,
-       0,  1188,     0,   356,   355,    31,   355,     0,  1530,     0,
-       0,     0,   363,   363,   363,     0,     0,     0,    57,   353,
-       0,   356,     0,     0,     0,     0,     0,     0,     0,     0,
-     363,     0,    80,    34,     0,     0,   355,   255,    37,   256,
-      57,     0,    40,     0,   355,   355,   355,    57,   363,    41,
-      42,     0,     0,     0,     0,   355,   355,     0,    80,    87,
-       0,   356,     0,     0,     0,     0,    75,     0,     0,    78,
-       0,     0,     0,    75,     0,   718,     0,     0,     0,     0,
-       0,     0,     0,    45,    46,    87,     0,     0,   363,     8,
-       9,    10,    11,    12,     0,     0,   356,     0,    57,     0,
-       0,   413,     0,     0,     0,     0,     0,     0,   355,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    31,     0,
-     396,     0,     0,   363,    75,     0,     0,     0,     0,     0,
-     415,   416,     0,     0,     0,   420,     0,   422,   423,     0,
-     356,     0,     0,     0,     0,     0,    34,     0,     0,     0,
-     356,    37,   356,   184,   185,    40,     0,   225,     0,     0,
-     356,     0,    41,    42,   356,     0,     0,   363,     0,     8,
-       9,    10,    11,    12,     0,   355,     0,   363,  1142,   363,
-       0,     0,     0,     0,   226,     0,     0,   363,   905,     0,
-     411,   363,     0,     0,     0,  1154,    45,    46,    31,     0,
-       0,     8,     9,    10,    11,    12,     0,     0,     0,     0,
-       0,     0,     0,     0,   591,     0,   599,     0,     0,     0,
-       0,     0,    78,     0,     0,    80,    34,   623,   624,    78,
-      31,    37,     0,   184,   185,    40,     0,     0,     0,     0,
-       0,     0,    41,    42,     0,     0,     0,     0,     0,     0,
-       0,     0,    87,     0,     0,   356,     0,     0,    34,     0,
-       0,     0,     0,    37,     0,   184,   185,    40,  1505,     0,
-     411,     0,     0,   413,    41,    42,    45,    46,     0,     0,
-      78,     0,   363,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   127,   127,     0,     0,     0,     0,     0,
-     266,     0,     0,     0,     0,     0,     0,     0,    45,    46,
-       0,     0,     0,  1242,     0,     0,     0,     0,     0,     0,
-       0,     0,   127,     0,     0,   127,   127,     0,   127,     0,
-     127,   127,     0,     0,     0,   127,   127,     1,     2,   207,
-       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-      24,    25,  -291,     0,    26,    27,    28,    29,   356,   356,
-      30,   356,   356,    31,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    80,     0,     0,     0,   363,   363,     0,   363,   363,
-       0,    34,     0,    35,     0,    36,     0,     0,    38,    39,
-       0,     0,  -291,     0,     0,     0,  1012,     0,    87,     8,
-       9,    10,    11,    12,     0,     0,   356,   356,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    44,   283,   284,    31,   285,
-       0,    45,    46,   363,   363,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   127,   127,   286,    34,     0,     0,     0,
-       0,   287,     0,     0,     0,   288,     0,     0,   289,   290,
-     291,   292,    41,    42,     0,   293,   294,   356,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   795,   796,     0,     0,     0,     0,   295,     0,
-     379,     0,     0,     0,   363,     0,   344,    46,   297,   298,
-     299,   300,     0,     0,     0,     0,     0,     0,     0,     0,
-     225,   829,     0,     0,   832,   833,     0,   836,     0,   838,
-     839,     0,     0,     0,   840,   841,     0,     0,     0,     0,
-       0,     0,    80,     0,     0,     0,     0,   226,     0,   925,
-       0,   926,     0,     0,   356,     0,   356,     0,   929,   930,
-       0,     0,     0,   935,     0,     0,     0,     0,     0,    87,
-       0,     0,     0,     0,     0,   940,     0,     0,     0,     0,
-     944,   363,     0,   363,     0,     0,   356,     0,     0,     0,
-       0,     0,     0,     0,   356,   356,   356,     0,     0,     0,
-       0,     0,     0,     0,     0,   356,   356,     0,   978,     0,
-     127,     0,     0,   363,     0,   127,     0,     0,     0,    80,
-       0,   363,   363,   363,     0,     0,     0,     0,     0,     0,
-       0,     0,   363,   363,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    87,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   356,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     166,     0,   969,   970,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   363,     0,   219,     0,     0,
-    1162,     0,     0,     8,     9,    10,    11,    12,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,  1023,  1024,  1025,
-    1026,     0,  1028,     0,     0,     0,     0,     0,     0,     0,
-     283,   284,    31,   285,     0,   356,     0,  1072,     0,     0,
-       0,     0,     0,     0,     0,   166,     0,     0,     0,   273,
-       0,  1078,     0,     0,     0,     0,     0,     0,     0,   286,
-      34,     0,   363,     0,     0,   287,     0,     0,     0,   288,
-       0,     0,   289,   290,   291,   292,    41,    42,   166,   293,
-     294,     0,    80,     0,     0,     0,   127,     0,   369,    80,
-       0,  1098,   375,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   295,     0,   379,     0,     0,     0,     0,    87,
-    1163,    46,   297,   298,   299,   300,    87,     8,     9,    10,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,    23,    24,    25,     0,  1129,    26,    27,    28,
-      80,   166,  1136,     0,  1090,     0,    31,  1140,     0,     0,
-       0,     0,  1144,   219,  1145,     0,     0,     0,  1147,     0,
-    1148,  1149,     0,     0,  1152,     0,     0,    87,     0,     0,
-       0,   166,     0,  1164,    34,     0,     0,     0,     0,     0,
-       0,   208,    39,     0,     0,     0,     0,     0,     0,     0,
-       0,  1179,  1180,     0,     0,     0,   375,     0,     0,     0,
-       0,     0,     0,   166,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   127,     0,     0,  1210,     0,
-       0,  1212,     0,     0,    45,    46,   524,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   166,     0,
-       0,     0,     0,     0,   212,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   232,     0,   236,     0,   238,     0,
-       0,     0,     0,     0,  1226,   247,     0,     0,     0,     0,
-    1230,  1231,     0,     0,     0,     0,   597,     0,     0,     0,
-       0,   621,     0,     0,     0,     0,     0,     0,     0,     0,
-    1247,     0,     0,  1251,     0,     0,   212,  1253,   236,   238,
-     247,     0,     0,     0,     0,  1218,     0,     0,     0,     0,
-    1261,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,  1268,     0,  1270,  1271,  1272,  1273,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   212,
-       0,  1280,     0,  1281,     0,     0,     0,   173,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   166,   166,     0,
-       0,     0,     0,     0,   369,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,  1309,  1310,     0,     0,
-       0,     0,     0,     0,     0,   524,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     212,     0,   236,   238,   247,     0,     0,     0,     0,     0,
-       0,     0,     0,   715,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   166,  1342,  1343,     0,     0,
-       0,     0,     0,     0,  1304,     0,  1353,   524,   212,   524,
-       0,     0,   524,   212,   166,   524,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   369,   497,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     8,     9,    10,    11,    12,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-      24,    25,  -291,     0,    26,    27,    28,  1388,     0,  1389,
-    1390,  1391,     0,    31,     0,     0,   212,     0,     0,   166,
-       0,  1395,     0,     0,     0,     0,     0,     0,     0,     0,
-    1406,   369,     0,     0,     0,   810,     0,     0,   212,     0,
-       0,    34,     0,   236,   238,     0,    37,     0,   336,   337,
-      40,   247,  -291,     0,     0,  1427,     0,    41,    42,     0,
-       0,   597,     0,     0,   321,     0,   597,     0,     0,     0,
-       0,     0,     0,     0,   346,   369,   369,   369,     0,   157,
-       0,     0,     0,   634,     0,   338,   382,   382,     0,     0,
-       0,    45,    46,   369,   212,     0,     0,     0,  1465,  1466,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,  1471,   212,     0,     0,     0,     0,   212,  1471,   212,
-     283,   284,     0,   285,     0,   524,     0,   252,     0,     0,
-       0,     0,     0,     0,     0,     0,   212,   257,     0,   212,
-     212,     0,     0,     0,     0,     0,     0,   212,     0,   286,
-    1504,   369,     0,   934,  1510,   287,     0,   321,     0,   288,
-       0,   212,   289,   290,   291,   292,    41,    42,   212,   293,
-     294,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   478,  1532,     0,  1533,     0,   715,     0,     0,     0,
-       0,     0,   295,   157,   379,     0,     0,   380,     0,     0,
-      45,    46,   297,   298,   299,   300,     0,   386,     0,     0,
-       0,     0,  1548,  1549,     0,     0,     0,     0,     0,     0,
-    1552,  1553,     0,     0,     0,     0,     0,     0,     0,     0,
-     418,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   369,     0,   433,     0,   621,     0,     0,     0,
-     369,     0,     0,   438,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   446,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   283,   284,     0,   285,     0,     0,
-       0,     0,   212,     0,     0,     0,     0,     0,   464,     0,
-       0,     0,     0,   474,     0,     0,     0,   382,     0,     0,
-       0,     0,     0,   286,     0,     0,   482,     0,     0,   287,
-     212,     0,   492,   288,   496,   212,   289,   290,   291,   292,
-      41,    42,     0,   293,   294,     0,     0,     0,     0,     0,
-       0,   526,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   715,   295,     0,   379,     0,
-       0,     0,     0,   757,    45,    46,   297,   298,   299,   300,
-     524,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   585,     0,     0,     0,     0,   590,     0,
-       0,     0,     0,     0,   166,     0,   212,     0,     0,     0,
-       0,   709,     0,     0,     0,     0,     0,     0,     0,     0,
-     212,     0,     0,     0,     0,     0,     0,   635,     0,     0,
-       0,   636,   637,     0,   639,     0,     0,     0,     0,     0,
-     497,   650,   651,     0,   652,   653,     0,   654,     0,   655,
-     741,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     597,     0,     0,   758,     0,     0,   585,     0,   741,     0,
-       0,   741,     0,     0,   670,     0,     0,     0,     0,     0,
-       0,   369,   369,   767,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   681,
-       0,   212,     0,     0,     0,   788,     0,     0,     0,     0,
-       0,     0,     0,   212,     0,   797,     0,     0,     0,     0,
-       0,     0,   346,     0,     0,   707,     0,   758,     0,     0,
-       0,   710,   212,     0,     0,     0,   464,     0,     0,     0,
-       0,   524,     0,     0,     0,     0,   206,     2,   207,     4,
-       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-      25,     0,   745,    26,    27,    28,   862,     0,     0,     0,
-       0,     0,    31,     0,   382,     0,     0,   763,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   715,     0,     0,
-      34,     0,    35,     0,    36,     0,     0,   208,    39,     0,
-       0,     0,     0,   283,   284,   789,   285,     0,     0,     0,
-       0,     0,     0,     0,   799,     0,     0,     0,     0,     0,
-       0,   801,     0,     0,     0,   212,     0,   809,     0,   219,
-       0,     0,   286,     0,   209,     0,   823,     0,   287,     0,
-      45,    46,   288,     0,     0,   289,   290,   291,   292,    41,
-      42,     0,   293,   294,     0,   212,     0,     0,     0,     0,
-       0,     0,   758,     0,   963,     0,   715,     0,     0,   341,
-     364,     0,     0,     0,   974,   295,   863,   379,     0,     0,
-     982,     0,     0,    45,    46,   297,   298,   299,   300,     0,
-     212,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   212,     0,   414,     0,     0,     0,     0,     0,     0,
-     414,     0,   809,     0,     0,   369,   369,     0,     0,     0,
-     904,     0,  1000,  1001,   219,     0,   346,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   507,
-     346,   509,   512,     0,     0,     0,     0,     0,     0,   515,
-     516,   252,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   941,   942,   509,   509,     0,     0,     0,     0,     0,
-       0,     0,     0,   212,     0,     0,     0,     0,     0,     0,
-    1031,     0,   414,     0,   382,     0,     0,   212,     0,     0,
-       0,     0,     0,     0,   979,     0,     0,     0,     0,   983,
-       0,   509,     8,     9,    10,    11,    12,    13,    14,    15,
-      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-       0,   346,    26,    27,    28,     0,     0,     0,     0,     0,
-       0,    31,   684,     0,     0,   369,   414,   509,     0,     0,
-       0,     0,     0,     0,   414,   581,     0,   414,   584,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   364,    34,
-     321,     0,   613,  1017,     0,     0,    38,    39,     0,     0,
-    1018,     0,     0,     0,     0,     0,   212,     0,     0,     0,
-       0,   631,     0,  1020,   341,  1021,     0,     0,   382,     0,
-       0,   524,     0,   524,   974,     0,     0,     0,   741,  1033,
-       0,     0,     0,   685,     0,  1037,     0,   686,     0,    45,
-      46,   414,     0,     0,     0,   414,     0,  1075,     0,  1150,
-    1076,     0,     0,     0,     0,     0,     0,   524,     0,   524,
-    1165,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   364,     0,     0,     0,
-       0,     0,   382,     0,  1183,     0,   166,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   974,
-     974,   212,     8,     9,    10,    11,    12,    13,    14,    15,
-      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-    1215,     0,   414,     0,     0,   364,     0,   590,     0,     0,
-       0,    31,     0,     0,     0,   509,   509,   509,   509,   509,
-     509,   509,   509,   509,   509,   509,   509,   509,   509,   509,
-     509,   509,   509,     0,     0,     0,     0,   283,   284,    34,
-     285,     0,  1146,     0,   414,     0,     0,     0,   341,   364,
-       0,     0,     0,     0,     0,   974,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   286,     0,     0,     0,
-       0,     0,   287,   862,     0,     0,   288,     0,     0,   289,
-     290,   291,   292,    41,    42,     0,   293,   294,  1266,  1267,
-       0,     0,     0,   414,   414,     0,     0,     0,     0,     0,
-     526,     0,     0,     0,     0,     0,  1211,     0,     0,   295,
-       0,   379,   803,   364,   971,     0,     0,    45,    46,   297,
-     298,   299,   300,   613,     0,   613,   613,     0,     0,     0,
-       0,     0,   613,     0,     0,     0,     0,     0,     0,     0,
-    1223,     0,   842,   364,     0,  1225,     0,     0,   364,     0,
-       0,     0,     0,  1229,     0,     0,     0,   364,   364,   364,
-       0,   509,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   364,     0,     0,     0,     0,
-     414,   884,     0,     0,   414,   887,  1255,     0,     0,     0,
-       0,   889,     0,     0,     0,     0,     0,     0,  1263,     0,
-       0,  1264,     0,  1265,     0,     0,     0,     0,     0,     0,
-     414,     0,     0,     0,     0,     0,     0,  1274,  1275,     0,
-       0,     0,   509,     0,     0,     0,     0,     0,   212,  1371,
-       0,     0,   741,   364,   613,     0,     0,     0,     0,  1288,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   509,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   341,   364,     0,
-       0,     0,   414,   414,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,  1327,     0,     0,     0,
-       0,     8,     9,    10,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,    20,    21,    22,    23,    24,    25,  -291,
-       0,    26,    27,    28,     0,     0,   414,     0,     0,     0,
-      31,     0,     0,     0,   364,     0,     0,     0,     0,     0,
-       0,   803,   364,     0,     0,   613,     0,   613,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   613,    34,     0,
-       0,     0,     0,    37,     0,   336,   337,    40,     0,  -291,
-       0,  1377,     0,  1378,    41,    42,     0,     0,     0,     0,
-       0,     0,   509,     0,     0,  1386,     0,  1387,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   338,     0,  1394,     0,     0,     0,    45,    46,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-    1412,  1414,     0,     0,     0,     0,     0,   509,     0,   803,
-       0,  1419,     0,     0,  1229,     0,   341,   364,   414,     0,
-     414,     0,     0,     0,   414,     0,     0,     0,     0,     0,
-       0,     0,   321,     0,     0,  1441,     0,     0,     0,     0,
-       0,     0,   509,     0,  1448,   613,   613,  1450,     0,  1452,
-    1454,  1456,     0,     0,     0,   509,     8,     9,    10,    11,
-      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-      22,    23,    24,    25,  -291,     0,     0,     0,     0,     0,
-     414,     0,     0,     0,     0,    31,     0,     0,     0,  1486,
-       0,  1488,     0,  1229,     0,     0,   509,     0,     0,     0,
-       0,   414,  1143,     0,     0,     0,     0,     0,  1499,     0,
-       0,     0,   364,    34,     0,     0,     0,     0,   414,  1155,
-       0,   613,   613,  1160,  -291,     0,     0,     0,     0,     0,
-       0,     0,     0,   364,   364,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     1,     2,   207,
-       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-      24,    25,     0,   509,    26,    27,    28,    29,     0,     0,
-      30,   283,   284,    31,   285,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   414,     0,   414,     0,
-       0,     0,     0,   414,     0,     0,     0,     0,     0,     0,
-     286,    34,   613,    35,     0,    36,   287,     0,    38,    39,
-     288,     0,     0,   289,   290,   291,   292,    41,    42,     0,
-     293,   294,     0,   509,   509,   803,   414,  1243,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   295,     0,  1055,     0,     0,     0,   364,
-       0,    45,    46,   297,   298,   299,   300,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,  -126,     0,     1,     2,
-     207,     4,     5,     6,     7,     8,     9,    10,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,     0,     0,    26,    27,    28,    29,     0,
-       0,    30,   283,   284,    31,  1040,  1041,     0,  1042,     0,
-     341,  1043,  1044,  1045,  1046,  1047,  1048,  1049,  1050,     0,
-       0,     0,  1051,     0,     0,     0,  1052,  1053,   364,    33,
-       0,   286,    34,     0,    35,     0,    36,  1054,     0,    38,
-      39,   288,     0,     0,   289,   290,   291,   292,    41,    42,
-       0,   293,   294,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   295,     0,  1055,   364,   364,   172,
-       0,     0,    45,    46,   297,   298,   299,   300,     0,     0,
-       0,     0,  1056,     0,     0,     0,     0,  -126,     0,     0,
-       0,     0,     1,     2,   207,     4,     5,     6,     7,     8,
-       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-      19,    20,    21,    22,    23,    24,    25,     0,   509,    26,
-      27,    28,    29,     0,     0,    30,   283,   284,    31,   285,
-       0,     0,     0,     0,   509,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   286,    34,     0,    35,     0,
-      36,   287,     0,    38,    39,   288,     0,     0,   289,   290,
-     291,   292,    41,    42,     0,   293,   294,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   364,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   295,     0,
-      44,     0,     0,     0,   509,   509,    45,    46,   297,   298,
-     299,   300,     0,     2,   207,     4,     5,     6,     7,     8,
-       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-      19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
-      27,    28,     0,     0,     0,     0,   283,   284,    31,   285,
-       0,     0,     0,     8,     9,    10,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-      25,  -292,     0,     0,   414,   286,    34,     0,    35,     0,
-      36,   287,    31,    38,    39,   288,     0,     0,   289,   290,
-     291,   292,    41,    42,     0,   293,   294,     0,   414,   414,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      34,     0,     0,     0,     0,     0,     0,     0,   295,     0,
-     343,  -292,     0,   414,     0,   757,   344,    46,   297,   298,
-     299,   300,     2,   207,     4,     5,     6,     7,     8,     9,
-      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
-      20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
-      28,     0,     0,     0,     0,   283,   284,    31,   285,     8,
-       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-      19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
-      27,    28,     0,     0,   286,    34,     0,    35,    31,    36,
-     287,     0,    38,    39,   288,     0,     0,   289,   290,   291,
-     292,    41,    42,     0,   293,   294,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    34,     0,     0,     0,
-       0,   111,     0,    38,    39,     0,     0,   295,     0,   962,
-       0,     0,    41,    42,   757,   344,    46,   297,   298,   299,
-     300,     2,   207,     4,     5,     6,     7,     8,     9,    10,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
-       0,     0,     0,     0,   283,   284,    31,   285,     8,     9,
-      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
-      20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
-      28,     0,     0,   286,    34,     0,    35,    31,    36,   287,
-       0,    38,    39,   288,     0,     0,   289,   290,   291,   292,
-      41,    42,     0,   293,   294,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    34,     0,     0,     0,     0,
-       0,     0,    38,    39,     0,     0,   295,     0,   962,     0,
-       0,     0,     0,   757,    45,    46,   297,   298,   299,   300,
-       2,   207,     4,     5,     6,     7,     8,     9,    10,    11,
-      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-      22,    23,    24,    25,     0,     0,    26,    27,    28,     0,
-       0,     0,     0,   283,   284,    31,   285,     8,     9,    10,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
-       0,     0,   286,    34,     0,    35,    31,    36,   287,     0,
-      38,    39,   288,     0,     0,   289,   290,   291,   292,    41,
-      42,     0,   293,   294,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    34,     0,     0,     0,     0,     0,
-       0,   208,    39,     0,     0,   295,     0,   343,     0,     0,
-       0,     0,     0,   344,    46,   297,   298,   299,   300,     2,
-     207,     4,     5,     6,     7,     8,     9,    10,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
-       0,     0,   283,   284,    31,   285,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   286,    34,     0,    35,     0,    36,   287,     0,   208,
-      39,   288,     0,     0,   289,   290,   291,   292,    41,    42,
-       0,   293,   294,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   295,     0,   997,     0,     0,     0,
-       0,     0,   998,    46,   297,   298,   299,   300,     2,   207,
-       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-      24,    25,     0,     0,    26,    27,    28,     0,     0,     0,
-       0,   283,   284,    31,   285,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     286,    34,     0,    35,     0,    36,   287,     0,    38,    39,
-     288,     0,     0,   289,   290,   291,   292,    41,    42,     0,
-     293,   294,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   295,     0,   962,     0,     0,     0,     0,
-       0,   344,    46,   297,   298,   299,   300,     2,   207,     4,
-       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-      25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
-     283,   284,    31,   285,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   286,
-      34,     0,    35,     0,    36,   287,     0,   208,    39,   288,
-       0,     0,   289,   290,   291,   292,    41,    42,     0,   293,
-     294,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   295,     0,   379,     0,     0,     0,     0,     0,
-      45,    46,   297,   298,   299,   300,  -515,     0,     0,     1,
-       2,     3,     4,     5,     6,     7,     8,     9,    10,    11,
-      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-      22,    23,    24,    25,     0,     0,    26,    27,    28,    29,
-       0,     0,    30,     0,     0,    31,    32,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      33,     0,     0,    34,     0,    35,     0,    36,    37,     0,
-      38,    39,    40,     0,     0,     0,     0,     0,     0,    41,
-      42,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    43,     0,    44,     0,     0,
-       0,     0,     0,    45,    46,     1,     2,     3,     4,     5,
-       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
-      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-       0,     0,    26,    27,    28,    29,     0,     0,    30,     0,
-       0,    31,    32,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    33,     0,     0,    34,
-       0,    35,     0,    36,    37,     0,    38,    39,    40,     0,
-       0,     0,     0,     0,     0,    41,    42,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    43,     0,    44,     0,     0,     0,  -519,     0,    45,
-      46,     1,     2,     3,     4,     5,     6,     7,     8,     9,
-      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
-      20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
-      28,    29,     0,     0,    30,     0,     0,    31,    32,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    33,     0,     0,    34,     0,    35,     0,    36,
-      37,     0,    38,    39,    40,     0,     0,     0,     0,     0,
-       0,    41,    42,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    43,     0,    44,
-       0,     0,     0,     0,     0,    45,    46,     1,     2,   207,
-       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-      24,    25,     0,     0,    26,    27,    28,    29,     0,     0,
-      30,     0,     0,    31,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    34,     0,    35,     0,    36,     0,     0,    38,    39,
-       0,     2,   207,     4,     5,     6,     7,     8,     9,    10,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
-       0,     0,     0,     0,     0,    44,    31,     0,     0,     0,
-       0,    45,    46,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    34,     0,    35,     0,    36,    37,
-       0,   208,    39,    40,     0,     0,     0,     0,     0,     0,
-      41,    42,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    43,     0,   209,     0,
-       0,     0,     0,     0,    45,    46,     2,   207,     4,     5,
-       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
-      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-       0,     0,    26,    27,    28,     0,     0,     0,     0,     0,
-       0,    31,     0,     0,     0,     0,     8,     9,    10,    11,
-      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-      22,    23,    24,    25,     0,     0,    26,    27,    28,    34,
-       0,    35,     0,    36,     0,    31,    38,    39,     0,     2,
-     207,     4,     5,     6,     7,     8,     9,    10,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,    34,     0,    26,    27,    28,     0,     0,
-      38,    39,  -399,   677,    31,     0,     0,     0,     0,    45,
-      46,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    34,     0,    35,   634,    36,   338,     0,    38,
-      39,     0,     0,    45,    46,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,  1350,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   677,     0,     0,     0,
-       0,     0,    45,    46,     2,   207,     4,     5,     6,     7,
-       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
-      18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
-      26,    27,    28,     0,     0,     0,     0,     0,     0,    31,
-       0,     0,     0,     8,     9,    10,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-      25,     0,     0,    26,    27,    28,     0,    34,     0,    35,
-       0,    36,    31,   684,    38,    39,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,  1352,     0,     0,     0,
-      34,     0,     0,     0,     0,     0,     0,    38,    39,     0,
-       0,   677,     0,     0,     0,     0,     0,    45,    46,     2,
-     207,     4,     5,     6,     7,     8,     9,    10,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,     0,   685,    26,    27,    28,  1091,     0,
-      45,    46,     0,     0,    31,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    34,     0,    35,     0,    36,     0,     0,   208,
-      39,     0,     2,   207,     4,     5,     6,     7,     8,     9,
-      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
-      20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
-      28,     0,     0,     0,     0,     0,   271,    31,     0,     0,
-       0,     0,    45,    46,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    34,     0,    35,     0,    36,
-       0,     0,    38,    39,     0,     2,   207,     4,     5,     6,
-       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
-       0,    26,    27,    28,     0,     0,     0,     0,     0,   677,
-      31,     0,     0,     0,     0,    45,    46,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    34,     0,
-      35,     0,    36,     0,     0,    38,    39,     0,     2,   207,
-       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-      24,    25,     0,     0,    26,    27,    28,     0,     0,     0,
-       0,     0,   592,    31,     0,     0,     0,     0,    45,    46,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    34,     0,    35,     0,    36,     0,     0,   208,    39,
-       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
-      18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
-      26,    27,    28,     0,     0,     0,     0,   283,   284,    31,
-     285,     0,     0,     0,     0,   209,     0,     0,     0,     0,
-       0,    45,    46,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   286,    34,     0,     0,
-       0,     0,   287,     0,    38,    39,   288,     0,     0,   289,
-     290,   291,   292,    41,    42,     0,   293,   294,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   295,
-       0,   517,     0,     0,   172,     0,     0,    45,    46,   297,
-     298,   299,   300,     8,     9,    10,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-      25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
-     283,   284,    31,   285,     8,     9,    10,    11,    12,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-      24,    25,     0,     0,    26,    27,    28,     0,     0,   286,
-      34,     0,     0,    31,     0,   287,     0,    38,    39,   288,
-       0,     0,   289,   290,   291,   292,    41,    42,     0,   293,
-     294,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    34,     0,     0,     0,     0,    37,     0,   336,   337,
-      40,     0,   295,   -35,   296,     0,     0,    41,    42,     0,
-      45,    46,   297,   298,   299,   300,     8,     9,    10,    11,
-      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-      22,    23,    24,    25,     0,   338,    26,    27,    28,     0,
-       0,    45,    46,   283,   284,    31,   285,     8,     9,    10,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
-       0,     0,   286,    34,     0,     0,    31,     0,   287,     0,
-      38,    39,   288,     0,     0,   289,   290,   291,   292,    41,
-      42,     0,   293,   294,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    34,     0,     0,     0,     0,   111,
-       0,    38,    39,     0,     0,   295,     0,   296,     0,     0,
-      41,    42,     0,    45,    46,   297,   298,   299,   300,     8,
-       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-      19,    20,    21,    22,    23,    24,    25,     0,    44,    26,
-      27,    28,     0,     0,    45,    46,   283,   284,    31,   285,
-       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
-      18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
-      26,    27,    28,     0,     0,   286,    34,     0,     0,    31,
-     684,   287,     0,    38,    39,   288,     0,     0,   289,   290,
-     291,   292,    41,    42,     0,   293,   294,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    34,     0,     0,
-       0,     0,     0,     0,    38,    39,     0,     0,   295,     0,
-     158,     0,     0,     0,     0,     0,    45,    46,   297,   298,
-     299,   300,     8,     9,    10,    11,    12,    13,    14,    15,
-      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-       0,   685,    26,    27,    28,  1220,     0,    45,    46,   283,
-     284,    31,   285,     8,     9,    10,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-      25,     0,     0,    26,    27,    28,     0,     0,   286,    34,
-       0,     0,    31,     0,   287,     0,    38,    39,   288,     0,
-       0,   289,   290,   291,   292,    41,    42,     0,   293,   294,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      34,     0,     0,     0,     0,     0,     0,    38,    39,     0,
-       0,   295,     0,   592,     0,     0,     0,     0,     0,    45,
-      46,   297,   298,   299,   300,     8,     9,    10,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,     0,   258,    26,    27,    28,     0,     0,
-      45,    46,   283,   284,    31,   285,     0,     0,     0,     0,
-       0,     0,     0,     8,     9,    10,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-      25,   286,    34,    26,    27,    28,     0,   287,     0,    38,
-      39,   288,    31,     0,   289,   290,   291,   292,    41,    42,
-       0,   293,   294,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      34,     0,     0,     0,   295,     0,   379,    38,    39,     0,
-       0,     0,    45,    46,   297,   298,   299,   300,   467,     2,
-     207,     4,     5,     6,     7,     8,     9,    10,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,     0,   158,    26,    27,    28,     0,     0,
-      45,    46,     0,     0,    31,     0,     0,     0,     8,     9,
-      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
-      20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
-      28,     0,    34,     0,    35,     0,    36,    31,     0,    38,
-      39,     0,     0,     0,     0,     0,     8,     9,    10,    11,
-      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-      22,    23,    24,    25,     0,    34,    26,    27,    28,     0,
-      37,     0,    38,    39,    40,    31,     0,     0,     0,    -3,
-       0,    41,    42,     0,     8,     9,    10,    11,    12,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-      24,    25,     0,    34,    26,    27,    28,    43,    37,   158,
-      38,    39,    40,    31,     0,    45,    46,     0,     0,    41,
-      42,     0,     8,     9,    10,    11,    12,    13,    14,    15,
-      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-       0,    34,    26,    27,    28,    43,    37,    44,   208,    39,
-      40,    31,     0,    45,    46,     0,     0,    41,    42,     0,
-       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
-      18,    19,    20,    21,    22,    23,    24,    25,  -291,    34,
-      26,    27,    28,    43,    37,   271,   336,   337,    40,    31,
-       0,    45,    46,     0,     0,    41,    42,     0,     8,     9,
-      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
-      20,    21,    22,    23,    24,    25,  -291,    34,    26,    27,
-      28,   634,     0,   338,    38,    39,     0,    31,  -291,    45,
-      46,     8,     9,    10,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
-       0,    26,    27,    28,     0,    34,     0,     0,     0,   634,
-      31,   338,    38,    39,     0,     0,  -291,    45,    46,     8,
-       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-      19,    20,    21,    22,    23,    24,    25,     0,    34,    26,
-      27,    28,     0,     0,     0,   208,    39,     0,    31,   338,
-       0,     0,     0,     0,     0,    45,    46,     8,     9,    10,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,    23,    24,    25,     0,    34,    26,    27,    28,
-       0,     0,   271,    38,    39,     0,    31,     0,    45,    46,
-       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
-      18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
-      26,    27,    28,     0,    34,     0,     0,     0,     0,    31,
-     338,    38,    39,     0,     0,     0,    45,    46,     8,     9,
-      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
-      20,    21,    22,    23,    24,    25,     0,    34,    26,    27,
-      28,     0,     0,     0,    38,    39,     0,    31,   685,     0,
-       0,     0,     0,     0,    45,    46,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    34,     0,     0,     0,     0,
-       0,   592,    38,    39,     0,     0,     0,    45,    46,     2,
-     207,     4,     5,     6,     7,     8,     9,    10,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,     0,     0,    26,    27,    28,     0,    44,
-       0,     0,     0,     0,    31,    45,    46,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    34,     0,    35,     0,    36,     0,     0,    38,
-      39,   283,   284,     0,   285,  1041,     0,  1042,     0,     0,
-    1043,  1044,  1045,  1046,  1047,  1048,  1049,  1050,     0,     0,
-    1524,  1051,     0,     0,     0,  1052,  1053,     0,    33,     0,
-     286,     0,     0,     0,     0,  -412,  1054,     0,     0,     0,
-     288,     0,     0,   289,   290,   291,   292,    41,    42,     0,
-     293,   294,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   295,     0,   379,     0,     0,   172,     0,
-       0,    45,    46,   297,   298,   299,   300,     0,     0,   283,
-     284,  1056,   285,  1041,     0,  1042,  -126,     0,  1043,  1044,
-    1045,  1046,  1047,  1048,  1049,  1050,     0,     0,     0,  1051,
-       0,     0,     0,  1052,  1053,     0,    33,     0,   286,     0,
-       0,     0,     0,     0,  1054,     0,     0,     0,   288,     0,
-       0,   289,   290,   291,   292,    41,    42,     0,   293,   294,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   295,     0,   379,     0,     0,   172,     0,     0,    45,
-      46,   297,   298,   299,   300,     0,     0,     0,     0,  1056,
-       0,     0,     0,     0,  -126,     2,   207,     4,     5,     6,
-       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
-       0,    26,    27,    28,     0,     0,     0,     0,     0,     0,
-      31,     0,   283,   284,     0,   285,  1041,     0,  1042,  1398,
-    1399,  1043,  1044,  1045,  1046,  1047,  1048,  1049,  1050,     0,
-       0,  1524,  1051,     0,     0,     0,  1052,  1053,    34,    33,
-      35,   286,    36,     0,     0,    38,    39,  1054,     0,     0,
-       0,   288,     0,     0,   289,   290,   291,   292,    41,    42,
-       0,   293,   294,     0,     0,     0,     0,  1311,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   295,     0,   379,     0,     0,   172,
-       0,     0,    45,    46,   297,   298,   299,   300,     0,     0,
-     283,   284,  1056,   285,  1041,     0,  1042,  1398,  1399,  1043,
-    1044,  1045,  1046,  1047,  1048,  1049,  1050,     0,     0,     0,
-    1051,     0,     0,     0,  1052,  1053,     0,    33,     0,   286,
-       0,     0,     0,     0,     0,  1054,     0,     0,     0,   288,
-       0,     0,   289,   290,   291,   292,    41,    42,     0,   293,
-     294,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   295,     0,   379,     0,     0,   172,     0,     0,
-      45,    46,   297,   298,   299,   300,     0,     0,   283,   284,
-    1056,   285,  1041,     0,  1042,     0,     0,  1043,  1044,  1045,
-    1046,  1047,  1048,  1049,  1050,     0,     0,     0,  1051,     0,
-       0,     0,  1052,  1053,     0,    33,     0,   286,     0,     0,
-       0,     0,     0,  1054,     0,     0,     0,   288,     0,     0,
-     289,   290,   291,   292,    41,    42,     0,   293,   294,     0,
-       0,     0,     0,     0,     0,   283,   284,     0,   285,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     295,     0,   379,     0,     0,   172,     0,     0,    45,    46,
-     297,   298,   299,   300,   286,     0,     0,     0,  1056,     0,
-     640,     0,   140,   141,   288,     0,     0,   289,   290,   291,
-     292,    41,    42,     0,   293,   294,     0,     0,     0,     0,
-       0,     0,   283,   284,     0,   285,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   295,     0,   641,
-       0,   642,   380,     0,     0,    45,    46,   297,   298,   299,
-     300,   286,     0,     0,     0,     0,     0,   287,     0,     0,
-       0,   288,     0,     0,   289,   290,   291,   292,    41,    42,
-       0,   293,   294,     0,     0,     0,     0,     0,     0,   283,
-     284,     0,   285,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   295,     0,   379,     0,   283,   284,
-       0,   285,   708,    46,   297,   298,   299,   300,   286,     0,
-       0,     0,     0,     0,   287,     0,     0,     0,   288,     0,
-       0,   289,   290,   291,   292,    41,    42,   286,   293,   294,
-       0,     0,     0,   287,     0,     0,     0,   288,     0,     0,
-     289,   290,   291,   292,    41,    42,     0,   293,   294,     0,
-       0,   295,     0,   379,     0,   283,   284,     0,   285,   344,
-      46,   297,   298,   299,   300,     0,     0,     0,     0,     0,
-     506,     0,     0,     0,   283,   284,     0,   285,    45,    46,
-     297,   298,   299,   300,   286,     0,     0,     0,     0,     0,
-     287,     0,     0,     0,   288,     0,     0,   289,   290,   291,
-     292,    41,    42,   286,   293,   294,     0,     0,     0,   287,
-       0,     0,     0,   288,     0,     0,   289,   290,   291,   292,
-      41,    42,     0,   293,   294,     0,     0,   295,     0,     0,
-       0,   283,   284,     0,   285,    45,    46,   297,   298,   299,
-     300,     0,     0,     0,     0,     0,   511,     0,     0,     0,
-       0,     0,     0,     0,    45,    46,   297,   298,   299,   300,
-     286,     0,     0,     0,     0,     0,   287,     0,     0,     0,
-     288,     0,     0,   289,   290,   291,   292,    41,    42,     0,
-     293,   294,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   514,     0,     0,     0,     0,     0,     0,
-       0,    45,    46,   297,   298,   299,   300,     2,   207,     4,
-       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-      25,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    31,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      34,     0,    35,     0,    36,    37,     0,   175,   176,    40,
-       0,     0,     0,     0,     0,     0,    41,    42,   206,     2,
-     207,     4,     5,     6,     7,     8,     9,    10,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
-       0,     0,     0,     0,    31,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    34,     0,    35,     0,    36,     0,     0,   208,
-      39,   467,     2,   207,     4,     5,     6,     7,     8,     9,
-      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
-      20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
-      28,     0,     0,     0,     0,     0,     0,    31,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    34,     0,    35,     0,    36,
-       0,     0,    38,    39,     2,   207,     4,     5,     6,     7,
-       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
-      18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
-      26,    27,    28,     0,     0,     0,     0,     0,     0,    31,
-       0,     8,     9,    10,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
-       0,    26,    27,    28,   485,   486,   487,    34,     0,    35,
-      31,    36,     0,     0,   208,    39,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    34,     0,
-       0,     0,     0,     0,     0,    38,    39
-};
-
-#define yypact_value_is_default(yystate) \
-  ((yystate) == (-1310))
-
-#define yytable_value_is_error(yytable_value) \
-  YYID (0)
-
-static const yytype_int16 yycheck[] =
-{
-       0,     1,   240,   205,   186,   186,   117,     0,    43,   534,
-      43,    43,   600,   756,   646,     1,   749,   187,   521,     0,
-     186,   186,   186,   157,   169,   170,   749,   749,   186,   106,
-     220,   602,    32,   186,   345,   349,     0,   188,   280,    32,
-     157,   513,   600,    43,   874,    43,   603,   874,   349,    49,
-     620,    32,   609,   733,     0,   983,    49,   600,   492,   571,
-       0,     1,   496,    63,   602,   187,    66,    32,    32,    69,
-      63,   692,    43,    66,    64,     0,    69,  1040,    39,   156,
-       1,   600,    57,    69,   266,   266,    32,    43,    51,  1398,
-     364,   202,    32,    63,   368,  1321,   418,   267,    82,   600,
-     266,   266,   266,  1052,  1053,  1033,   106,    32,   266,   600,
-     600,   262,   263,   266,   114,    72,   438,   117,   118,   109,
-     282,    72,  1402,    96,   446,    39,    66,   695,    39,    69,
-      28,   109,   107,    39,    39,   110,    95,    39,    82,   128,
-      39,    66,   131,  1021,    82,   267,   109,   147,   148,   122,
-     111,   186,    11,   186,   186,   148,   156,   157,     0,   295,
-    1469,   161,   132,  1020,  1021,   109,    44,    45,   161,     0,
-     129,   482,   905,   109,   488,   132,     0,     1,    72,  1128,
-      78,   132,   905,   905,   687,    49,   186,   187,   186,   109,
-      32,   257,   130,  1419,   187,   109,   109,   111,   109,   718,
-     111,    32,   202,   109,   109,   111,   111,   109,    32,   111,
-     210,   131,    43,  1040,    72,   186,  1496,   210,    49,    82,
-     410,  1501,   222,   117,   812,    83,    84,   718,   718,   222,
-     186,   266,    63,   266,   266,    66,   406,   115,    69,  1452,
-     240,  1521,    85,   986,   219,    69,   112,   110,  1528,    82,
-     114,   109,   252,   824,   812,   116,   107,   814,   114,   252,
-     260,    44,    45,     3,   341,   265,   266,   267,   490,   812,
-     113,   252,   272,  1486,   267,  1488,   257,    82,   111,   900,
-     131,   793,   222,   147,   406,   396,   824,   252,   252,    49,
-     426,   427,   924,   812,   371,   295,     3,   222,   273,   433,
-      96,   602,  1501,   116,   109,   280,   252,   307,     0,   620,
-     480,   812,   252,   424,   625,   589,   433,   148,   110,   430,
-     112,   812,   812,   323,   116,  1288,   122,   252,   328,  1528,
-     161,   114,   253,    44,    45,   328,     0,    82,   906,   131,
-     132,   341,   504,   110,   932,   345,   210,  1225,   482,   349,
-     350,   109,   418,   111,   114,   186,   187,   631,   480,   681,
-     109,   116,   933,   130,   364,   110,    90,    91,   368,  1049,
-     506,   371,   438,   348,   932,   511,   240,   132,   514,   210,
-     446,  1211,   604,   951,  1211,   130,   608,   426,   427,   932,
-     365,   222,   526,    72,   369,   112,   396,  1275,   116,   116,
-     285,   125,   126,   114,    83,    84,   406,   629,   272,   526,
-     252,   633,   130,   406,  1472,   257,   110,  1274,  1275,    55,
-    1478,   252,   307,   308,   424,   350,   426,   427,   252,   999,
-     430,   567,   111,   433,   745,   266,   130,   418,   112,   116,
-    1498,   110,   116,   307,   111,  1503,   113,   116,   525,  1501,
-     210,  1008,  1009,   130,   454,   494,   590,   438,  1386,  1387,
-     345,  1288,    98,   130,   967,   446,   635,   636,   131,  1521,
-     229,   112,   472,   590,   513,   116,  1528,   116,  1441,   110,
-     480,   345,   482,   652,   484,  1448,   116,   480,   488,   248,
-     732,   484,   110,   132,   494,  1127,   381,   328,   116,   116,
-     130,   482,   647,   484,   666,   656,   506,   941,   508,   981,
-     824,   511,   272,   513,   514,   132,  1394,   687,   349,   109,
-     484,   521,   109,   824,   116,   525,   526,   109,  1099,   803,
-     109,   111,   111,   113,   808,   295,  1499,  1394,   484,   578,
-     132,   710,   109,   654,   484,   116,   467,   307,   473,  1117,
-     130,     4,     5,     6,     7,     8,     9,   116,   194,   484,
-     110,   132,   426,   427,   116,   687,   116,   116,   116,   116,
-     570,   571,   116,   132,   736,   406,   418,   109,   578,   116,
-     132,   217,  1085,   132,   132,   132,   109,  1090,   132,   589,
-     590,   227,   117,   904,   594,   132,   438,   116,   123,   124,
-     600,   116,   602,   109,   446,   111,   110,   528,  1288,  1177,
-    1178,   745,   533,   132,  1441,   681,    69,   132,    71,   110,
-     620,  1448,   896,   937,   846,   625,    72,   627,    74,    75,
-     494,   631,   801,   110,   634,   635,   636,    83,    84,    72,
-     110,   707,   484,   112,   590,   110,   621,   116,   112,   513,
-      83,    84,   652,   484,   654,   109,   910,   488,   912,   295,
-     484,   582,   637,   109,   549,   550,   551,   744,   114,   112,
-     109,   861,  1499,   116,    72,   809,   651,   115,    72,   132,
-      74,    75,  1362,   109,   684,    83,    84,   687,   999,    83,
-      84,   881,   809,   109,   454,   111,    72,   622,    74,    75,
-     681,    85,    86,    87,   109,   943,   111,    83,    84,   132,
-     710,   711,   712,   111,   578,   109,   938,  1115,   718,   719,
-     114,  1119,   867,   905,   905,   109,   707,   111,    64,   113,
-     114,   109,   653,   111,   655,   112,   110,   907,   114,   905,
-     905,   905,   116,   109,   744,   745,   506,   905,   508,   749,
-     750,   511,   905,   109,   514,   111,   620,   732,   109,    70,
-     111,   625,   109,    74,   745,  1445,    77,  1447,    79,   600,
-     904,   602,  1505,   698,   132,    86,   556,   557,   558,   559,
-    1305,     3,  1505,  1505,   705,   907,   114,   712,    10,    11,
-      12,    13,    14,   793,     4,     5,     6,     7,     8,     9,
-     110,   801,   109,   803,   111,   805,   116,   443,   808,   809,
-    1012,   114,   812,   109,  1382,   111,    72,    39,    74,    75,
-    1500,   117,   118,    33,   824,    72,   903,    83,    84,   114,
-    1398,   132,   110,   469,   132,  1146,    83,    84,   116,   681,
-      10,    11,    12,    13,    14,    67,    72,   110,  1122,   109,
-      76,   109,   110,   116,    82,   111,   687,    83,    84,    69,
-     110,    71,    49,   809,   111,   707,   116,   110,   109,    39,
-     506,   756,   109,   116,   874,   511,    63,   112,   514,    66,
-     805,    82,    69,   109,   118,   111,  1020,   718,   719,   110,
-    1035,   117,   118,   874,   127,   116,   896,    67,    88,    89,
-    1468,  1469,   213,   903,   904,   905,    72,   907,     4,     5,
-       6,     7,     8,     9,  1225,  1085,   110,    83,    84,   919,
-    1090,   128,   116,   904,   684,   110,    94,   109,   874,   111,
-      30,   116,   932,   933,   874,   117,   118,   937,   131,   109,
-      72,   111,   942,   943,    76,   111,   111,   117,   118,   874,
-     109,    83,    84,  1115,   110,   109,   942,  1119,  1120,   112,
-     116,   148,   109,  1085,   111,     0,     1,   967,  1090,   112,
-     117,   118,   110,    69,   161,    71,   110,   109,  1481,   119,
-     120,   812,   116,    83,    84,   117,   118,   112,    10,    11,
-      12,    13,    14,   824,    29,    30,  1107,    32,   110,   999,
-     187,   110,   942,   110,   116,    92,    93,    72,    43,    74,
-      75,    76,  1146,    72,    49,    74,    75,    39,    83,    84,
-    1020,  1021,    57,   210,    83,    84,   110,  1530,    63,   115,
-     116,    66,   874,   669,    69,   222,   957,   109,   110,   111,
-    1040,   352,   678,   354,   109,    67,   682,   110,    83,    84,
-     874,   109,   117,   118,  1190,  1191,    72,  1193,   979,  1040,
-      76,   110,   983,   110,  1200,   110,  1202,    83,    84,   116,
-     112,   116,   107,  1235,   905,   110,   907,  1002,   110,   943,
-    1080,   111,   117,   114,   116,  1085,   110,   109,   116,   111,
-    1090,   131,   116,   109,  1040,   117,   118,   110,   111,  1099,
-    1040,   117,   118,   506,    66,   508,   937,  1107,   511,    58,
-      59,   514,  1033,   148,   999,  1040,   115,   116,   942,    44,
-      45,   156,  1122,   552,   553,    72,   161,    74,    75,    76,
-    1207,   442,   109,   110,   111,   999,    83,    84,   560,   561,
-    1274,   328,   554,   555,   244,   114,  1146,   114,   109,   110,
-     111,   186,   187,   109,   112,  1040,   118,   110,   110,   919,
-    1322,   112,   109,    29,  1326,  1146,   112,   202,   112,     3,
-     117,   118,   109,   110,   111,   210,    10,    11,    12,    13,
-      14,    58,    59,    60,   219,   112,   116,   222,  1188,  1189,
-    1248,  1249,  1250,   110,   229,   130,   130,   130,  1040,   161,
-     110,   112,   114,  1189,   112,    39,   115,  1207,   110,   244,
-     115,  1211,   115,   248,   109,   116,  1040,   252,   253,   406,
-       1,   110,  1358,   110,    72,  1225,    74,    75,    76,  1229,
-    1211,   266,   267,    67,   132,    83,    84,   116,   273,   110,
-     110,   110,   110,  1229,  1225,   280,   110,   110,  1188,  1189,
-     110,   116,   110,   110,  1085,   110,   110,   110,   110,  1090,
-     222,  1423,   898,  1188,   110,  1211,   110,  1378,    49,   110,
-     110,  1211,   115,   874,  1274,  1275,    29,  1515,   110,   130,
-     380,   131,   112,  1283,   112,   116,  1211,   110,  1288,  1229,
-     110,   116,   110,   328,   130,   116,   112,   114,   260,   110,
-     110,   464,   110,   265,   116,   112,   110,  1288,   110,   110,
-     116,   116,   112,   348,   349,    10,    11,    12,    13,    14,
-    1080,  1321,   109,  1505,  1505,   106,   109,  1248,  1249,  1250,
-     365,   109,   109,   114,   369,  1321,  1506,   109,   130,  1505,
-    1505,  1505,  1288,  1283,    39,   380,     3,  1505,  1288,   112,
-     132,   115,  1505,    10,    11,    12,    13,    14,  1283,   110,
-    1530,   396,   110,  1288,   110,  1189,   147,   128,   115,  1211,
-    1481,   406,    67,   115,   464,   156,   114,   695,  1378,   112,
-     132,  1321,    39,   110,  1506,   116,   112,  1211,   350,   424,
-     112,   491,   110,   493,  1394,   430,   110,   432,   110,   112,
-     110,   112,  1377,   112,   112,  1229,   112,   112,  1530,    72,
-      67,    74,    75,    76,   109,  1051,   111,    47,   115,  1419,
-      83,    84,   117,   118,    72,   206,    74,    75,    76,   210,
-     132,   132,   467,  1419,   132,    83,    84,   472,   132,   132,
-     110,  1441,  1043,   115,   130,   480,  1288,   115,  1448,   484,
-    1450,   110,  1452,   488,   112,   109,   491,   112,   493,   240,
-    1441,   109,   112,   112,  1288,  1386,  1387,  1448,   786,   431,
-    1505,   112,  1505,  1505,   112,   110,   110,    60,   109,  1419,
-     112,  1481,    66,   112,   109,   132,  1486,   110,  1488,   110,
-     114,   272,    76,   528,   275,  1441,   112,  1321,   533,  1499,
-     112,  1441,  1448,  1424,   110,  1505,  1506,   670,  1448,   112,
-     110,   473,   109,  1506,   295,  1515,  1441,    96,  1499,    96,
-      85,    86,    87,  1448,   109,   132,   307,   115,   110,    72,
-    1530,    74,    75,    76,   118,   110,   110,  1530,   110,    42,
-      83,    84,   642,   116,   109,   863,   111,   582,   113,   114,
-     130,   132,   110,  1499,   589,   110,   132,    96,    96,  1499,
-     341,  1482,   132,   110,   345,   600,   109,   602,   132,   110,
-    1491,   132,   112,   110,  1499,   110,   132,   161,   112,   115,
-     670,   109,   132,   364,   115,   115,   621,   368,   906,   110,
-     371,   691,   110,   693,   110,  1419,   110,   697,  1056,  1441,
-     132,   564,   637,   562,   977,   565,  1448,   642,   563,   566,
-    1211,  1211,  1469,  1364,  1540,  1298,   651,  1441,   653,   654,
-     655,  1120,  1326,  1448,  1448,   912,   789,    66,   684,  1071,
-     684,  1090,   594,   951,   920,   697,   799,   582,   222,   971,
-     867,   648,   722,  1229,    83,   426,   427,   939,   570,   484,
-     813,  1515,   687,   732,   570,   570,   691,  1499,   693,    -1,
-     622,  1297,   697,    -1,    -1,   627,    -1,    -1,   986,    -1,
-     705,    -1,    -1,   454,  1505,  1499,   260,    -1,    -1,   118,
-      -1,   265,    -1,   718,   719,    -1,   467,    -1,    -1,    -1,
-    1450,    -1,  1452,    -1,    -1,    -1,   280,   732,    -1,   789,
-      -1,    -1,    -1,  1304,    -1,    -1,    -1,    -1,    -1,   799,
-      -1,   492,    -1,   494,    -1,   496,    -1,    -1,    -1,  1037,
-      -1,    -1,   161,   813,    -1,   506,  1486,   508,  1488,    -1,
-     511,    -1,   513,   514,    -1,    -1,   698,    57,    -1,    10,
-      11,    12,    13,    14,   525,    -1,    -1,    -1,    -1,    72,
-     712,    74,    75,    76,    -1,  1356,    -1,    -1,  1359,    -1,
-      83,    84,    -1,    -1,    -1,    -1,   350,   867,    39,    -1,
-      -1,    -1,    -1,   873,    -1,    -1,    -1,   812,    -1,    -1,
-      -1,    -1,    -1,   222,    -1,    -1,   109,   107,   111,   824,
-     110,    -1,    -1,    -1,   117,   118,    67,   578,    -1,  1117,
-      -1,  1402,    -1,    -1,    -1,    -1,  1407,   130,   589,    -1,
-      -1,    -1,    -1,  1449,   914,  1451,    -1,    -1,    -1,    -1,
-      -1,   260,    -1,    -1,    -1,    -1,   265,    -1,    -1,    -1,
-      -1,    -1,   867,    -1,  1435,    -1,   156,   670,   873,   620,
-      -1,    -1,    -1,   805,   625,    -1,    -1,   431,    -1,  1485,
-     631,  1487,     0,     1,  1017,  1018,    -1,    -1,    -1,  1177,
-    1178,   896,    -1,    -1,   448,    -1,    -1,    -1,    -1,    -1,
-     905,   971,   907,    -1,    -1,    -1,    -1,    -1,    -1,   914,
-      -1,    -1,    -1,    -1,    32,    -1,    -1,    -1,    -1,   473,
-      -1,    -1,    -1,  1529,    -1,  1531,    -1,    -1,    -1,   219,
-      -1,    49,   937,   684,    -1,    -1,    -1,    -1,  1544,  1545,
-      -1,   350,  1075,  1076,    -1,    -1,    -1,    -1,  1519,    -1,
-      -1,    69,   957,    -1,  1525,    -1,    -1,  1017,  1018,    -1,
-      -1,    -1,    -1,    -1,    -1,  1536,   971,    -1,    -1,  1540,
-      -1,   722,    -1,    -1,   979,    -1,    -1,    -1,   983,     0,
-       1,    -1,    -1,   273,    -1,    -1,   789,    -1,   106,    -1,
-     280,    -1,    -1,   744,    -1,    -1,   799,    -1,    -1,    -1,
-      -1,  1071,    -1,    -1,    -1,     0,    -1,    -1,    -1,    -1,
-     813,    32,    -1,    -1,    -1,  1075,  1076,    -1,    -1,    -1,
-      -1,    -1,   431,    -1,    -1,    -1,    -1,    -1,  1033,    -1,
-     148,    -1,    -1,    -1,    -1,    -1,    -1,    32,   156,   157,
-     594,    -1,    -1,    -1,    -1,    66,    -1,    -1,    69,    -1,
-      -1,    -1,   803,    -1,    -1,    -1,    -1,   808,   348,    -1,
-      -1,    -1,    -1,    -1,   473,    -1,  1071,    -1,   622,   187,
-    1002,    -1,    -1,   627,    69,   365,    -1,    -1,    -1,   369,
-    1085,    -1,    -1,    -1,   202,  1090,    -1,   205,   206,    -1,
-    1223,    -1,   210,    -1,  1382,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,  1107,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    1398,    -1,    -1,   231,  1184,    -1,    -1,   235,    -1,   237,
-      -1,    -1,  1255,    -1,    -1,    -1,    -1,    -1,   246,    -1,
-    1263,  1264,  1265,    -1,   252,    -1,   157,    -1,    -1,   257,
-      -1,    -1,   432,    -1,   698,   896,    -1,    -1,    -1,   267,
-      -1,    -1,   903,    -1,    -1,    -1,    -1,   275,   712,    -1,
-      -1,     0,   157,  1223,    -1,    -1,    -1,    -1,   919,    -1,
-      -1,    72,    -1,    74,    75,    76,    -1,    -1,   732,  1184,
-    1468,  1469,    83,    84,    -1,   594,    -1,    -1,    -1,    -1,
-     941,   942,   943,    32,  1327,  1255,    -1,    -1,    -1,    -1,
-      -1,   222,  1207,  1263,  1264,  1265,    -1,    -1,   109,    -1,
-     111,    -1,    -1,   622,  1017,  1018,   117,   118,   627,    -1,
-      -1,    -1,    -1,   341,    -1,    -1,    -1,   345,    -1,    -1,
-      69,   252,    -1,   351,    -1,    -1,   231,    -1,    -1,    -1,
-      -1,    -1,    -1,  1248,  1249,  1250,   364,    -1,   999,    -1,
-     368,   805,    -1,   371,    -1,    -1,  1188,   252,    -1,    -1,
-      -1,    -1,   257,    -1,    -1,    -1,    -1,  1327,    -1,    -1,
-      -1,    -1,  1075,  1076,    -1,    -1,    -1,    -1,    -1,    -1,
-      72,    -1,    74,    75,    76,    -1,    -1,    -1,    -1,   698,
-      -1,    83,    84,    72,    -1,    74,    75,    76,    -1,   589,
-     418,    -1,    -1,   712,    83,    84,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   433,    -1,   109,   157,   111,
-     438,    -1,    -1,    -1,    -1,   117,   118,    -1,   446,  1080,
-     109,   621,   111,    -1,    -1,    -1,    -1,    -1,   117,   118,
-      -1,    -1,    -1,    -1,    -1,    -1,   464,   637,    -1,   467,
-      -1,  1283,    -1,    -1,    -1,    -1,   351,    -1,    -1,    -1,
-      -1,   651,    -1,    -1,   482,    -1,   484,    -1,    -1,    -1,
-      -1,  1122,  1377,  1378,   492,    -1,    -1,    -1,   496,    -1,
-      -1,  1386,  1387,    97,    98,    99,   100,   101,   102,   103,
-     104,   105,   106,    -1,    -1,    -1,   805,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   525,   526,    -1,
-      -1,    -1,   433,   252,    -1,    -1,    -1,   131,   257,  1424,
-      -1,    -1,    -1,   418,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   433,    -1,
-      -1,    -1,   732,   438,    -1,    -1,    -1,    -1,  1002,    -1,
-      -1,   446,  1255,   571,    -1,    -1,  1207,    -1,    -1,    -1,
-    1263,  1264,  1265,   484,    -1,    -1,    -1,    -1,    -1,   464,
-      -1,   589,   590,    -1,    -1,    -1,  1481,  1482,  1229,    -1,
-      -1,    -1,    -1,    -1,   602,    -1,  1491,   482,    -1,   484,
-      -1,    -1,    -1,    37,    38,    -1,    40,    -1,    -1,    -1,
-    1505,  1506,   620,    -1,    -1,   526,    -1,   625,    -1,    -1,
-      -1,    -1,   351,   631,    -1,    -1,   634,   635,   636,    -1,
-      -1,    -1,    66,    -1,  1327,  1530,    -1,    -1,    72,    -1,
-      -1,   526,    76,    -1,   652,    79,    80,    81,    82,    83,
-      84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   670,    -1,    -1,    10,    11,    12,    13,    14,
-      -1,    -1,    -1,   681,    -1,   109,    -1,   111,    -1,   590,
-    1321,    -1,    -1,   117,   118,   119,   120,   121,   122,   418,
-      -1,    -1,    -1,    -1,    39,    -1,   130,    -1,    -1,   707,
-      -1,    -1,   710,  1002,   433,   590,    -1,    -1,    -1,   438,
-      -1,   719,    -1,    -1,   722,    -1,   896,   446,    -1,    -1,
-      -1,    -1,    67,   634,   635,   636,    -1,    72,    -1,    74,
-      75,    76,    -1,    -1,    -1,   464,   744,   745,    83,    84,
-      -1,   652,   750,    -1,  1188,    -1,    -1,    -1,    -1,   634,
-     635,   636,    -1,   482,    -1,   484,    -1,    10,    11,    12,
-      13,    14,    -1,    -1,   109,    -1,   111,   652,    -1,    -1,
-      -1,    -1,   117,   118,    -1,    -1,    -1,    -1,  1419,    -1,
-      -1,   789,    -1,    -1,    -1,   670,    39,    -1,    -1,    -1,
-      -1,   799,    -1,   801,    -1,   803,   681,   526,   806,   710,
-     808,   809,    -1,    -1,    -1,   813,    -1,    -1,    -1,  1450,
-      -1,  1452,    -1,    -1,    67,   823,    -1,    -1,    -1,    72,
-      -1,    -1,   707,    76,    -1,   710,    -1,    -1,    -1,    -1,
-      83,    84,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1283,
-      -1,     0,    -1,    -1,    -1,  1486,    -1,  1488,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,    -1,    -1,
-     745,   590,    -1,    -1,   117,   118,   874,    -1,     0,    -1,
-     190,    -1,    -1,    32,  1515,    -1,    -1,   197,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   896,  1188,
-     801,    -1,    -1,    -1,    -1,   903,   904,    -1,   809,   907,
-      32,    -1,    -1,    -1,   789,   634,   635,   636,    -1,    -1,
-      69,    -1,    -1,    -1,   799,    -1,   801,    -1,    -1,    -1,
-      -1,   806,    -1,   652,   809,   933,    -1,    -1,   813,    -1,
-      -1,    -1,    -1,   941,   942,    -1,    -1,    69,    -1,    -1,
-      -1,   670,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   269,
-      -1,    -1,   681,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   874,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   707,    -1,
-      -1,   710,    -1,    -1,  1283,    -1,    -1,    -1,    -1,   874,
-      -1,   999,    -1,    -1,    -1,    -1,    -1,    -1,   157,    -1,
-      -1,    -1,    -1,   323,  1012,    -1,    -1,    -1,    -1,  1017,
-    1018,   331,  1020,  1021,   334,    -1,   745,    -1,    -1,   904,
-      -1,    -1,    -1,    -1,    -1,   157,    -1,  1207,    -1,    -1,
-      -1,   942,  1040,    -1,    -1,     3,     4,     5,     6,     7,
-       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
-      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
-     789,    -1,    30,    31,    32,    -1,    -1,  1075,  1076,    -1,
-     799,    39,   801,    -1,    -1,    -1,    -1,   806,   398,    -1,
-     809,    -1,   402,    -1,   813,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   252,    -1,    -1,    -1,    -1,   257,    67,
-      -1,    69,    -1,    71,    72,    -1,    74,    75,    76,  1020,
-    1021,    -1,    -1,    -1,  1122,    83,    84,    -1,    -1,    -1,
-     252,    -1,    -1,    -1,    -1,   257,    -1,    -1,    -1,  1040,
-      -1,    -1,  1017,  1018,    -1,  1020,  1021,    -1,  1146,    -1,
-      -1,   109,    -1,   111,    -1,   874,    -1,    -1,    -1,   117,
-     118,    -1,    -1,    -1,    -1,  1040,    -1,    -1,    -1,   479,
-      -1,    -1,    -1,    -1,    -1,    10,    11,    12,    13,    14,
-      -1,    -1,    -1,    -1,    -1,   904,    -1,    -1,    -1,    -1,
-      -1,  1189,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    1075,  1076,   351,    -1,    39,    -1,    -1,  1377,    -1,  1207,
-      -1,    -1,    -1,  1211,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,  1223,    -1,  1225,    -1,   351,
-      -1,  1229,    67,    -1,    -1,    -1,    -1,    72,    -1,    74,
-      75,    76,    -1,    -1,    -1,    26,    27,    28,    83,    84,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1255,    -1,    -1,
-     570,   571,    -1,    -1,    -1,  1263,  1264,  1265,    -1,   418,
-      -1,  1146,    -1,    -1,   109,    -1,  1274,  1275,    -1,    -1,
-      -1,    -1,   117,   118,   433,    -1,    -1,  1188,  1189,   438,
-    1288,    -1,    -1,    -1,    -1,    -1,   418,   446,  1017,  1018,
-      -1,  1020,  1021,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    1211,   433,    -1,    -1,  1189,   464,   438,    -1,    99,    -1,
-     101,  1040,    -1,  1321,   446,    -1,    -1,    -1,  1229,  1327,
-      -1,    -1,    -1,   482,    -1,   484,  1211,    -1,    -1,    -1,
-      -1,    -1,   464,    -1,    -1,   126,    -1,   657,  1223,    -1,
-    1225,   661,    -1,    -1,    -1,    -1,  1075,  1076,    -1,    -1,
-     482,    -1,   484,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,  1274,  1275,    -1,    -1,   526,    -1,    -1,
-    1255,    -1,  1283,    -1,    -1,    -1,    -1,  1288,  1263,  1264,
-    1265,    -1,    -1,    -1,    -1,    -1,  1394,    -1,    -1,  1274,
-    1275,   182,    -1,    -1,   526,    -1,    -1,    -1,    -1,   190,
-      -1,   192,   193,  1288,    -1,    -1,   197,    -1,   199,   200,
-    1321,  1419,    -1,    53,    -1,    55,    -1,  1146,    58,    59,
-      60,    -1,    62,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   590,    -1,  1441,    -1,    -1,    -1,    77,    -1,    -1,
-    1448,    -1,  1327,    -1,    -1,    -1,    -1,    -1,    -1,    89,
-      90,    -1,    -1,    -1,    26,    27,    28,    -1,   590,    -1,
-    1189,    -1,    -1,    -1,    -1,    -1,    10,    11,    12,    13,
-      14,    -1,    -1,   793,    -1,   634,   635,   636,   269,    -1,
-      -1,    -1,  1211,  1394,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,  1499,    -1,   652,  1223,    39,  1225,    -1,  1506,    -1,
-      -1,    -1,   634,   635,   636,    -1,    -1,    -1,  1419,  1394,
-      -1,   670,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     652,    -1,   681,    67,    -1,    -1,  1255,    99,    72,   101,
-    1441,    -1,    76,    -1,  1263,  1264,  1265,  1448,   670,    83,
-      84,    -1,    -1,    -1,    -1,  1274,  1275,    -1,   707,   681,
-      -1,   710,    -1,    -1,    -1,    -1,  1441,    -1,    -1,  1288,
-      -1,    -1,    -1,  1448,    -1,   109,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   117,   118,   707,    -1,    -1,   710,    10,
-      11,    12,    13,    14,    -1,    -1,   745,    -1,  1499,    -1,
-      -1,   911,    -1,    -1,    -1,    -1,    -1,    -1,  1327,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    39,    -1,
-     182,    -1,    -1,   745,  1499,    -1,    -1,    -1,    -1,    -1,
-     192,   193,    -1,    -1,    -1,   197,    -1,   199,   200,    -1,
-     789,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,
-     799,    72,   801,    74,    75,    76,    -1,   806,    -1,    -1,
-     809,    -1,    83,    84,   813,    -1,    -1,   789,    -1,    10,
-      11,    12,    13,    14,    -1,  1394,    -1,   799,   988,   801,
-      -1,    -1,    -1,    -1,   806,    -1,    -1,   809,   109,    -1,
-     111,   813,    -1,    -1,    -1,  1005,   117,   118,    39,    -1,
-      -1,    10,    11,    12,    13,    14,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   344,    -1,   346,    -1,    -1,    -1,
-      -1,    -1,  1441,    -1,    -1,   874,    67,   357,   358,  1448,
-      39,    72,    -1,    74,    75,    76,    -1,    -1,    -1,    -1,
-      -1,    -1,    83,    84,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   874,    -1,    -1,   904,    -1,    -1,    67,    -1,
-      -1,    -1,    -1,    72,    -1,    74,    75,    76,   109,    -1,
-     111,    -1,    -1,  1083,    83,    84,   117,   118,    -1,    -1,
-    1499,    -1,   904,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   574,   575,    -1,    -1,    -1,    -1,    -1,
-     109,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   117,   118,
-      -1,    -1,    -1,  1123,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   603,    -1,    -1,   606,   607,    -1,   609,    -1,
-     611,   612,    -1,    -1,    -1,   616,   617,     3,     4,     5,
-       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
-      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-      26,    27,    28,    -1,    30,    31,    32,    33,  1017,  1018,
-      36,  1020,  1021,    39,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,  1040,    -1,    -1,    -1,  1017,  1018,    -1,  1020,  1021,
-      -1,    67,    -1,    69,    -1,    71,    -1,    -1,    74,    75,
-      -1,    -1,    78,    -1,    -1,    -1,     7,    -1,  1040,    10,
-      11,    12,    13,    14,    -1,    -1,  1075,  1076,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   111,    37,    38,    39,    40,
-      -1,   117,   118,  1075,  1076,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   754,   755,    66,    67,    -1,    -1,    -1,
-      -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    79,    80,
-      81,    82,    83,    84,    -1,    86,    87,  1146,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   574,   575,    -1,    -1,    -1,    -1,   109,    -1,
-     111,    -1,    -1,    -1,  1146,    -1,   117,   118,   119,   120,
-     121,   122,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    1189,   603,    -1,    -1,   606,   607,    -1,   609,    -1,   611,
-     612,    -1,    -1,    -1,   616,   617,    -1,    -1,    -1,    -1,
-      -1,    -1,  1211,    -1,    -1,    -1,    -1,  1189,    -1,   699,
-      -1,   701,    -1,    -1,  1223,    -1,  1225,    -1,   708,   709,
-      -1,    -1,    -1,   713,    -1,    -1,    -1,    -1,    -1,  1211,
-      -1,    -1,    -1,    -1,    -1,   725,    -1,    -1,    -1,    -1,
-     730,  1223,    -1,  1225,    -1,    -1,  1255,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,  1263,  1264,  1265,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,  1274,  1275,    -1,   758,    -1,
-     911,    -1,    -1,  1255,    -1,   916,    -1,    -1,    -1,  1288,
-      -1,  1263,  1264,  1265,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,  1274,  1275,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,  1288,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1327,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      49,    -1,   754,   755,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,  1327,    -1,    66,    -1,    -1,
-       7,    -1,    -1,    10,    11,    12,    13,    14,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   857,   858,   859,
-     860,    -1,   862,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      37,    38,    39,    40,    -1,  1394,    -1,   877,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   114,    -1,    -1,    -1,   118,
-      -1,   891,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    66,
-      67,    -1,  1394,    -1,    -1,    72,    -1,    -1,    -1,    76,
-      -1,    -1,    79,    80,    81,    82,    83,    84,   147,    86,
-      87,    -1,  1441,    -1,    -1,    -1,  1077,    -1,   157,  1448,
-      -1,   931,   161,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   109,    -1,   111,    -1,    -1,    -1,    -1,  1441,
-     117,   118,   119,   120,   121,   122,  1448,    10,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,    26,    27,    -1,   976,    30,    31,    32,
-    1499,   210,   982,    -1,   916,    -1,    39,   987,    -1,    -1,
-      -1,    -1,   992,   222,   994,    -1,    -1,    -1,   998,    -1,
-    1000,  1001,    -1,    -1,  1004,    -1,    -1,  1499,    -1,    -1,
-      -1,   240,    -1,  1013,    67,    -1,    -1,    -1,    -1,    -1,
-      -1,    74,    75,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,  1031,  1032,    -1,    -1,    -1,   265,    -1,    -1,    -1,
-      -1,    -1,    -1,   272,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,  1206,    -1,    -1,  1058,    -1,
-      -1,  1061,    -1,    -1,   117,   118,   295,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   307,    -1,
-      -1,    -1,    -1,    -1,    66,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    76,    -1,    78,    -1,    80,    -1,
-      -1,    -1,    -1,    -1,  1104,    87,    -1,    -1,    -1,    -1,
-    1110,  1111,    -1,    -1,    -1,    -1,   345,    -1,    -1,    -1,
-      -1,   350,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    1130,    -1,    -1,  1133,    -1,    -1,   118,  1137,   120,   121,
-     122,    -1,    -1,    -1,    -1,  1077,    -1,    -1,    -1,    -1,
-    1150,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,  1163,    -1,  1165,  1166,  1167,  1168,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   161,
-      -1,  1181,    -1,  1183,    -1,    -1,    -1,  1187,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   426,   427,    -1,
-      -1,    -1,    -1,    -1,   433,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,  1216,  1217,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   454,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     222,    -1,   224,   225,   226,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   482,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   494,  1266,  1267,    -1,    -1,
-      -1,    -1,    -1,    -1,  1206,    -1,  1276,   506,   260,   508,
-      -1,    -1,   511,   265,   513,   514,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   526,   280,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    10,    11,    12,    13,    14,    15,
-      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-      26,    27,    28,    -1,    30,    31,    32,  1337,    -1,  1339,
-    1340,  1341,    -1,    39,    -1,    -1,   328,    -1,    -1,   578,
-      -1,  1351,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    1360,   590,    -1,    -1,    -1,   594,    -1,    -1,   350,    -1,
-      -1,    67,    -1,   355,   356,    -1,    72,    -1,    74,    75,
-      76,   363,    78,    -1,    -1,  1385,    -1,    83,    84,    -1,
-      -1,   620,    -1,    -1,   147,    -1,   625,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   157,   634,   635,   636,    -1,    44,
-      -1,    -1,    -1,   109,    -1,   111,   169,   170,    -1,    -1,
-      -1,   117,   118,   652,   406,    -1,    -1,    -1,  1428,  1429,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,  1441,   424,    -1,    -1,    -1,    -1,   429,  1448,   431,
-      37,    38,    -1,    40,    -1,   684,    -1,    92,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   448,   102,    -1,   451,
-     452,    -1,    -1,    -1,    -1,    -1,    -1,   459,    -1,    66,
-    1480,   710,    -1,   712,  1484,    72,    -1,   240,    -1,    76,
-      -1,   473,    79,    80,    81,    82,    83,    84,   480,    86,
-      87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   264,  1512,    -1,  1514,    -1,   745,    -1,    -1,    -1,
-      -1,    -1,   109,   158,   111,    -1,    -1,   114,    -1,    -1,
-     117,   118,   119,   120,   121,   122,    -1,   172,    -1,    -1,
-      -1,    -1,  1542,  1543,    -1,    -1,    -1,    -1,    -1,    -1,
-    1550,  1551,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     195,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   801,    -1,   209,    -1,   805,    -1,    -1,    -1,
-     809,    -1,    -1,   218,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   228,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    37,    38,    -1,    40,    -1,    -1,
-      -1,    -1,   594,    -1,    -1,    -1,    -1,    -1,   253,    -1,
-      -1,    -1,    -1,   258,    -1,    -1,    -1,   380,    -1,    -1,
-      -1,    -1,    -1,    66,    -1,    -1,   271,    -1,    -1,    72,
-     622,    -1,   277,    76,   279,   627,    79,    80,    81,    82,
-      83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,
-      -1,   296,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   904,   109,    -1,   111,    -1,
-      -1,    -1,    -1,   116,   117,   118,   119,   120,   121,   122,
-     919,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   338,    -1,    -1,    -1,    -1,   343,    -1,
-      -1,    -1,    -1,    -1,   943,    -1,   698,    -1,    -1,    -1,
-      -1,   474,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     712,    -1,    -1,    -1,    -1,    -1,    -1,   372,    -1,    -1,
-      -1,   376,   377,    -1,   379,    -1,    -1,    -1,    -1,    -1,
-     732,   386,   387,    -1,   389,   390,    -1,   392,    -1,   394,
-     513,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     999,    -1,    -1,   526,    -1,    -1,   411,    -1,   531,    -1,
-      -1,   534,    -1,    -1,   419,    -1,    -1,    -1,    -1,    -1,
-      -1,  1020,  1021,   546,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   444,
-      -1,   793,    -1,    -1,    -1,   568,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   805,    -1,   578,    -1,    -1,    -1,    -1,
-      -1,    -1,   585,    -1,    -1,   470,    -1,   590,    -1,    -1,
-      -1,   476,   824,    -1,    -1,    -1,   481,    -1,    -1,    -1,
-      -1,  1080,    -1,    -1,    -1,    -1,     3,     4,     5,     6,
-       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
-      27,    -1,   517,    30,    31,    32,   639,    -1,    -1,    -1,
-      -1,    -1,    39,    -1,   647,    -1,    -1,   532,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1146,    -1,    -1,
-      67,    -1,    69,    -1,    71,    -1,    -1,    74,    75,    -1,
-      -1,    -1,    -1,    37,    38,   570,    40,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   579,    -1,    -1,    -1,    -1,    -1,
-      -1,   586,    -1,    -1,    -1,   937,    -1,   592,    -1,  1188,
-      -1,    -1,    66,    -1,   111,    -1,   601,    -1,    72,    -1,
-     117,   118,    76,    -1,    -1,    79,    80,    81,    82,    83,
-      84,    -1,    86,    87,    -1,   967,    -1,    -1,    -1,    -1,
-      -1,    -1,   745,    -1,   747,    -1,  1225,    -1,    -1,   156,
-     157,    -1,    -1,    -1,   757,   109,   641,   111,    -1,    -1,
-     763,    -1,    -1,   117,   118,   119,   120,   121,   122,    -1,
-    1002,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,  1013,    -1,   190,    -1,    -1,    -1,    -1,    -1,    -1,
-     197,    -1,   677,    -1,    -1,  1274,  1275,    -1,    -1,    -1,
-     685,    -1,   805,   806,  1283,    -1,   809,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   283,
-     823,   285,   286,    -1,    -1,    -1,    -1,    -1,    -1,   293,
-     294,   716,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   726,   727,   307,   308,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,  1085,    -1,    -1,    -1,    -1,    -1,    -1,
-     863,    -1,   269,    -1,   867,    -1,    -1,  1099,    -1,    -1,
-      -1,    -1,    -1,    -1,   759,    -1,    -1,    -1,    -1,   764,
-      -1,   345,    10,    11,    12,    13,    14,    15,    16,    17,
-      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
-      -1,   904,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,
-      -1,    39,    40,    -1,    -1,  1394,   323,   381,    -1,    -1,
-      -1,    -1,    -1,    -1,   331,   332,    -1,   334,   335,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   345,    67,
-     943,    -1,   349,   828,    -1,    -1,    74,    75,    -1,    -1,
-     835,    -1,    -1,    -1,    -1,    -1,  1188,    -1,    -1,    -1,
-      -1,   368,    -1,   848,   371,   850,    -1,    -1,   971,    -1,
-      -1,  1450,    -1,  1452,   977,    -1,    -1,    -1,   981,   864,
-      -1,    -1,    -1,   111,    -1,   870,    -1,   115,    -1,   117,
-     118,   398,    -1,    -1,    -1,   402,    -1,   882,    -1,  1002,
-     885,    -1,    -1,    -1,    -1,    -1,    -1,  1486,    -1,  1488,
-    1013,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   433,    -1,    -1,    -1,
-      -1,    -1,  1035,    -1,  1037,    -1,  1515,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1052,
-    1053,  1283,    10,    11,    12,    13,    14,    15,    16,    17,
-      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
-    1073,    -1,   479,    -1,    -1,   482,    -1,   962,    -1,    -1,
-      -1,    39,    -1,    -1,    -1,   549,   550,   551,   552,   553,
-     554,   555,   556,   557,   558,   559,   560,   561,   562,   563,
-     564,   565,   566,    -1,    -1,    -1,    -1,    37,    38,    67,
-      40,    -1,   997,    -1,   521,    -1,    -1,    -1,   525,   526,
-      -1,    -1,    -1,    -1,    -1,  1128,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    66,    -1,    -1,    -1,
-      -1,    -1,    72,  1146,    -1,    -1,    76,    -1,    -1,    79,
-      80,    81,    82,    83,    84,    -1,    86,    87,  1161,  1162,
-      -1,    -1,    -1,   570,   571,    -1,    -1,    -1,    -1,    -1,
-    1055,    -1,    -1,    -1,    -1,    -1,  1061,    -1,    -1,   109,
-      -1,   111,   589,   590,   114,    -1,    -1,   117,   118,   119,
-     120,   121,   122,   600,    -1,   602,   603,    -1,    -1,    -1,
-      -1,    -1,   609,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    1095,    -1,   619,   620,    -1,  1100,    -1,    -1,   625,    -1,
-      -1,    -1,    -1,  1108,    -1,    -1,    -1,   634,   635,   636,
-      -1,   695,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   652,    -1,    -1,    -1,    -1,
-     657,   658,    -1,    -1,   661,   662,  1141,    -1,    -1,    -1,
-      -1,   668,    -1,    -1,    -1,    -1,    -1,    -1,  1153,    -1,
-      -1,  1156,    -1,  1158,    -1,    -1,    -1,    -1,    -1,    -1,
-     687,    -1,    -1,    -1,    -1,    -1,    -1,  1172,  1173,    -1,
-      -1,    -1,   756,    -1,    -1,    -1,    -1,    -1,  1530,  1302,
-      -1,    -1,  1305,   710,   711,    -1,    -1,    -1,    -1,  1194,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   786,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   744,   745,    -1,
-      -1,    -1,   749,   750,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,  1241,    -1,    -1,    -1,
-      -1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
-      -1,    30,    31,    32,    -1,    -1,   793,    -1,    -1,    -1,
-      39,    -1,    -1,    -1,   801,    -1,    -1,    -1,    -1,    -1,
-      -1,   808,   809,    -1,    -1,   812,    -1,   814,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   824,    67,    -1,
-      -1,    -1,    -1,    72,    -1,    74,    75,    76,    -1,    78,
-      -1,  1316,    -1,  1318,    83,    84,    -1,    -1,    -1,    -1,
-      -1,    -1,   906,    -1,    -1,  1330,    -1,  1332,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   111,    -1,  1349,    -1,    -1,    -1,   117,   118,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    1365,  1366,    -1,    -1,    -1,    -1,    -1,   951,    -1,   896,
-      -1,  1376,    -1,    -1,  1379,    -1,   903,   904,   905,    -1,
-     907,    -1,    -1,    -1,   911,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,  1515,    -1,    -1,  1400,    -1,    -1,    -1,    -1,
-      -1,    -1,   986,    -1,  1409,   932,   933,  1412,    -1,  1414,
-    1415,  1416,    -1,    -1,    -1,   999,    10,    11,    12,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-      24,    25,    26,    27,    28,    -1,    -1,    -1,    -1,    -1,
-     967,    -1,    -1,    -1,    -1,    39,    -1,    -1,    -1,  1454,
-      -1,  1456,    -1,  1458,    -1,    -1,  1040,    -1,    -1,    -1,
-      -1,   988,   989,    -1,    -1,    -1,    -1,    -1,  1473,    -1,
-      -1,    -1,   999,    67,    -1,    -1,    -1,    -1,  1005,  1006,
-      -1,  1008,  1009,  1010,    78,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,  1020,  1021,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,     3,     4,     5,
-       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
-      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-      26,    27,    -1,  1117,    30,    31,    32,    33,    -1,    -1,
-      36,    37,    38,    39,    40,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,  1083,    -1,  1085,    -1,
-      -1,    -1,    -1,  1090,    -1,    -1,    -1,    -1,    -1,    -1,
-      66,    67,  1099,    69,    -1,    71,    72,    -1,    74,    75,
-      76,    -1,    -1,    79,    80,    81,    82,    83,    84,    -1,
-      86,    87,    -1,  1177,  1178,  1122,  1123,  1124,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,  1146,
-      -1,   117,   118,   119,   120,   121,   122,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   132,    -1,     3,     4,
-       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-      25,    26,    27,    -1,    -1,    30,    31,    32,    33,    -1,
-      -1,    36,    37,    38,    39,    40,    41,    -1,    43,    -1,
-    1207,    46,    47,    48,    49,    50,    51,    52,    53,    -1,
-      -1,    -1,    57,    -1,    -1,    -1,    61,    62,  1225,    64,
-      -1,    66,    67,    -1,    69,    -1,    71,    72,    -1,    74,
-      75,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
-      -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   109,    -1,   111,  1274,  1275,   114,
-      -1,    -1,   117,   118,   119,   120,   121,   122,    -1,    -1,
-      -1,    -1,   127,    -1,    -1,    -1,    -1,   132,    -1,    -1,
-      -1,    -1,     3,     4,     5,     6,     7,     8,     9,    10,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,    23,    24,    25,    26,    27,    -1,  1382,    30,
-      31,    32,    33,    -1,    -1,    36,    37,    38,    39,    40,
-      -1,    -1,    -1,    -1,  1398,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    66,    67,    -1,    69,    -1,
-      71,    72,    -1,    74,    75,    76,    -1,    -1,    79,    80,
-      81,    82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1394,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,
-     111,    -1,    -1,    -1,  1468,  1469,   117,   118,   119,   120,
-     121,   122,    -1,     4,     5,     6,     7,     8,     9,    10,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
-      31,    32,    -1,    -1,    -1,    -1,    37,    38,    39,    40,
-      -1,    -1,    -1,    10,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
-      27,    28,    -1,    -1,  1481,    66,    67,    -1,    69,    -1,
-      71,    72,    39,    74,    75,    76,    -1,    -1,    79,    80,
-      81,    82,    83,    84,    -1,    86,    87,    -1,  1505,  1506,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      67,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,
-     111,    78,    -1,  1530,    -1,   116,   117,   118,   119,   120,
-     121,   122,     4,     5,     6,     7,     8,     9,    10,    11,
-      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-      22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
-      32,    -1,    -1,    -1,    -1,    37,    38,    39,    40,    10,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
-      31,    32,    -1,    -1,    66,    67,    -1,    69,    39,    71,
-      72,    -1,    74,    75,    76,    -1,    -1,    79,    80,    81,
-      82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,
-      -1,    72,    -1,    74,    75,    -1,    -1,   109,    -1,   111,
-      -1,    -1,    83,    84,   116,   117,   118,   119,   120,   121,
-     122,     4,     5,     6,     7,     8,     9,    10,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,    26,    27,    -1,    -1,    30,    31,    32,
-      -1,    -1,    -1,    -1,    37,    38,    39,    40,    10,    11,
-      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-      22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
-      32,    -1,    -1,    66,    67,    -1,    69,    39,    71,    72,
-      -1,    74,    75,    76,    -1,    -1,    79,    80,    81,    82,
-      83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,
-      -1,    -1,    74,    75,    -1,    -1,   109,    -1,   111,    -1,
-      -1,    -1,    -1,   116,   117,   118,   119,   120,   121,   122,
-       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-      24,    25,    26,    27,    -1,    -1,    30,    31,    32,    -1,
-      -1,    -1,    -1,    37,    38,    39,    40,    10,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,    26,    27,    -1,    -1,    30,    31,    32,
-      -1,    -1,    66,    67,    -1,    69,    39,    71,    72,    -1,
-      74,    75,    76,    -1,    -1,    79,    80,    81,    82,    83,
-      84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,
-      -1,    74,    75,    -1,    -1,   109,    -1,   111,    -1,    -1,
-      -1,    -1,    -1,   117,   118,   119,   120,   121,   122,     4,
-       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
-      -1,    -1,    37,    38,    39,    40,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    66,    67,    -1,    69,    -1,    71,    72,    -1,    74,
-      75,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
-      -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,
-      -1,    -1,   117,   118,   119,   120,   121,   122,     4,     5,
-       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
-      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-      26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,
-      -1,    37,    38,    39,    40,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      66,    67,    -1,    69,    -1,    71,    72,    -1,    74,    75,
-      76,    -1,    -1,    79,    80,    81,    82,    83,    84,    -1,
-      86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,    -1,
-      -1,   117,   118,   119,   120,   121,   122,     4,     5,     6,
-       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
-      27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
-      37,    38,    39,    40,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    66,
-      67,    -1,    69,    -1,    71,    72,    -1,    74,    75,    76,
-      -1,    -1,    79,    80,    81,    82,    83,    84,    -1,    86,
-      87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   109,    -1,   111,    -1,    -1,    -1,    -1,    -1,
-     117,   118,   119,   120,   121,   122,     0,    -1,    -1,     3,
-       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-      24,    25,    26,    27,    -1,    -1,    30,    31,    32,    33,
-      -1,    -1,    36,    -1,    -1,    39,    40,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      64,    -1,    -1,    67,    -1,    69,    -1,    71,    72,    -1,
-      74,    75,    76,    -1,    -1,    -1,    -1,    -1,    -1,    83,
-      84,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,
-      -1,    -1,    -1,   117,   118,     3,     4,     5,     6,     7,
-       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
-      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
-      -1,    -1,    30,    31,    32,    33,    -1,    -1,    36,    -1,
-      -1,    39,    40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    64,    -1,    -1,    67,
-      -1,    69,    -1,    71,    72,    -1,    74,    75,    76,    -1,
-      -1,    -1,    -1,    -1,    -1,    83,    84,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   109,    -1,   111,    -1,    -1,    -1,   115,    -1,   117,
-     118,     3,     4,     5,     6,     7,     8,     9,    10,    11,
-      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-      22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
-      32,    33,    -1,    -1,    36,    -1,    -1,    39,    40,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    64,    -1,    -1,    67,    -1,    69,    -1,    71,
-      72,    -1,    74,    75,    76,    -1,    -1,    -1,    -1,    -1,
-      -1,    83,    84,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,   111,
-      -1,    -1,    -1,    -1,    -1,   117,   118,     3,     4,     5,
-       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
-      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-      26,    27,    -1,    -1,    30,    31,    32,    33,    -1,    -1,
-      36,    -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    67,    -1,    69,    -1,    71,    -1,    -1,    74,    75,
-      -1,     4,     5,     6,     7,     8,     9,    10,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,    26,    27,    -1,    -1,    30,    31,    32,
-      -1,    -1,    -1,    -1,    -1,   111,    39,    -1,    -1,    -1,
-      -1,   117,   118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    67,    -1,    69,    -1,    71,    72,
-      -1,    74,    75,    76,    -1,    -1,    -1,    -1,    -1,    -1,
-      83,    84,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,   111,    -1,
-      -1,    -1,    -1,    -1,   117,   118,     4,     5,     6,     7,
-       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
-      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
-      -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,
-      -1,    39,    -1,    -1,    -1,    -1,    10,    11,    12,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-      24,    25,    26,    27,    -1,    -1,    30,    31,    32,    67,
-      -1,    69,    -1,    71,    -1,    39,    74,    75,    -1,     4,
-       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-      25,    26,    27,    67,    -1,    30,    31,    32,    -1,    -1,
-      74,    75,   110,   111,    39,    -1,    -1,    -1,    -1,   117,
-     118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    67,    -1,    69,   109,    71,   111,    -1,    74,
-      75,    -1,    -1,   117,   118,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    96,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,
-      -1,    -1,   117,   118,     4,     5,     6,     7,     8,     9,
-      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
-      20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
-      30,    31,    32,    -1,    -1,    -1,    -1,    -1,    -1,    39,
-      -1,    -1,    -1,    10,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
-      27,    -1,    -1,    30,    31,    32,    -1,    67,    -1,    69,
-      -1,    71,    39,    40,    74,    75,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    96,    -1,    -1,    -1,
-      67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,    -1,
-      -1,   111,    -1,    -1,    -1,    -1,    -1,   117,   118,     4,
-       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-      25,    26,    27,    -1,   111,    30,    31,    32,   115,    -1,
-     117,   118,    -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    67,    -1,    69,    -1,    71,    -1,    -1,    74,
-      75,    -1,     4,     5,     6,     7,     8,     9,    10,    11,
-      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-      22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
-      32,    -1,    -1,    -1,    -1,    -1,   111,    39,    -1,    -1,
-      -1,    -1,   117,   118,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    67,    -1,    69,    -1,    71,
-      -1,    -1,    74,    75,    -1,     4,     5,     6,     7,     8,
-       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
-      -1,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,   111,
-      39,    -1,    -1,    -1,    -1,   117,   118,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,
-      69,    -1,    71,    -1,    -1,    74,    75,    -1,     4,     5,
-       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
-      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-      26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,
-      -1,    -1,   111,    39,    -1,    -1,    -1,    -1,   117,   118,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    67,    -1,    69,    -1,    71,    -1,    -1,    74,    75,
-      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
-      20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
-      30,    31,    32,    -1,    -1,    -1,    -1,    37,    38,    39,
-      40,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,
-      -1,   117,   118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    66,    67,    -1,    -1,
-      -1,    -1,    72,    -1,    74,    75,    76,    -1,    -1,    79,
-      80,    81,    82,    83,    84,    -1,    86,    87,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,
-      -1,   111,    -1,    -1,   114,    -1,    -1,   117,   118,   119,
-     120,   121,   122,    10,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
-      27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
-      37,    38,    39,    40,    10,    11,    12,    13,    14,    15,
-      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-      26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    66,
-      67,    -1,    -1,    39,    -1,    72,    -1,    74,    75,    76,
-      -1,    -1,    79,    80,    81,    82,    83,    84,    -1,    86,
-      87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    67,    -1,    -1,    -1,    -1,    72,    -1,    74,    75,
-      76,    -1,   109,   110,   111,    -1,    -1,    83,    84,    -1,
-     117,   118,   119,   120,   121,   122,    10,    11,    12,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-      24,    25,    26,    27,    -1,   111,    30,    31,    32,    -1,
-      -1,   117,   118,    37,    38,    39,    40,    10,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,    26,    27,    -1,    -1,    30,    31,    32,
-      -1,    -1,    66,    67,    -1,    -1,    39,    -1,    72,    -1,
-      74,    75,    76,    -1,    -1,    79,    80,    81,    82,    83,
-      84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,    72,
-      -1,    74,    75,    -1,    -1,   109,    -1,   111,    -1,    -1,
-      83,    84,    -1,   117,   118,   119,   120,   121,   122,    10,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,    23,    24,    25,    26,    27,    -1,   111,    30,
-      31,    32,    -1,    -1,   117,   118,    37,    38,    39,    40,
-      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
-      20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
-      30,    31,    32,    -1,    -1,    66,    67,    -1,    -1,    39,
-      40,    72,    -1,    74,    75,    76,    -1,    -1,    79,    80,
-      81,    82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,
-      -1,    -1,    -1,    -1,    74,    75,    -1,    -1,   109,    -1,
-     111,    -1,    -1,    -1,    -1,    -1,   117,   118,   119,   120,
-     121,   122,    10,    11,    12,    13,    14,    15,    16,    17,
-      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
-      -1,   111,    30,    31,    32,   115,    -1,   117,   118,    37,
-      38,    39,    40,    10,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
-      27,    -1,    -1,    30,    31,    32,    -1,    -1,    66,    67,
-      -1,    -1,    39,    -1,    72,    -1,    74,    75,    76,    -1,
-      -1,    79,    80,    81,    82,    83,    84,    -1,    86,    87,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,    -1,
-      -1,   109,    -1,   111,    -1,    -1,    -1,    -1,    -1,   117,
-     118,   119,   120,   121,   122,    10,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-      25,    26,    27,    -1,   111,    30,    31,    32,    -1,    -1,
-     117,   118,    37,    38,    39,    40,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    10,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
-      27,    66,    67,    30,    31,    32,    -1,    72,    -1,    74,
-      75,    76,    39,    -1,    79,    80,    81,    82,    83,    84,
-      -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      67,    -1,    -1,    -1,   109,    -1,   111,    74,    75,    -1,
-      -1,    -1,   117,   118,   119,   120,   121,   122,     3,     4,
-       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-      25,    26,    27,    -1,   111,    30,    31,    32,    -1,    -1,
-     117,   118,    -1,    -1,    39,    -1,    -1,    -1,    10,    11,
-      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-      22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
-      32,    -1,    67,    -1,    69,    -1,    71,    39,    -1,    74,
-      75,    -1,    -1,    -1,    -1,    -1,    10,    11,    12,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-      24,    25,    26,    27,    -1,    67,    30,    31,    32,    -1,
-      72,    -1,    74,    75,    76,    39,    -1,    -1,    -1,   114,
-      -1,    83,    84,    -1,    10,    11,    12,    13,    14,    15,
-      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-      26,    27,    -1,    67,    30,    31,    32,   109,    72,   111,
-      74,    75,    76,    39,    -1,   117,   118,    -1,    -1,    83,
-      84,    -1,    10,    11,    12,    13,    14,    15,    16,    17,
-      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
-      -1,    67,    30,    31,    32,   109,    72,   111,    74,    75,
-      76,    39,    -1,   117,   118,    -1,    -1,    83,    84,    -1,
-      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
-      20,    21,    22,    23,    24,    25,    26,    27,    28,    67,
-      30,    31,    32,   109,    72,   111,    74,    75,    76,    39,
-      -1,   117,   118,    -1,    -1,    83,    84,    -1,    10,    11,
-      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-      22,    23,    24,    25,    26,    27,    28,    67,    30,    31,
-      32,   109,    -1,   111,    74,    75,    -1,    39,    78,   117,
-     118,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
-      -1,    30,    31,    32,    -1,    67,    -1,    -1,    -1,   109,
-      39,   111,    74,    75,    -1,    -1,    78,   117,   118,    10,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,    23,    24,    25,    26,    27,    -1,    67,    30,
-      31,    32,    -1,    -1,    -1,    74,    75,    -1,    39,   111,
-      -1,    -1,    -1,    -1,    -1,   117,   118,    10,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,    26,    27,    -1,    67,    30,    31,    32,
-      -1,    -1,   111,    74,    75,    -1,    39,    -1,   117,   118,
-      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
-      20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
-      30,    31,    32,    -1,    67,    -1,    -1,    -1,    -1,    39,
-     111,    74,    75,    -1,    -1,    -1,   117,   118,    10,    11,
-      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-      22,    23,    24,    25,    26,    27,    -1,    67,    30,    31,
-      32,    -1,    -1,    -1,    74,    75,    -1,    39,   111,    -1,
-      -1,    -1,    -1,    -1,   117,   118,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,
-      -1,   111,    74,    75,    -1,    -1,    -1,   117,   118,     4,
-       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,   111,
-      -1,    -1,    -1,    -1,    39,   117,   118,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    67,    -1,    69,    -1,    71,    -1,    -1,    74,
-      75,    37,    38,    -1,    40,    41,    -1,    43,    -1,    -1,
-      46,    47,    48,    49,    50,    51,    52,    53,    -1,    -1,
-      56,    57,    -1,    -1,    -1,    61,    62,    -1,    64,    -1,
-      66,    -1,    -1,    -1,    -1,   110,    72,    -1,    -1,    -1,
-      76,    -1,    -1,    79,    80,    81,    82,    83,    84,    -1,
-      86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   109,    -1,   111,    -1,    -1,   114,    -1,
-      -1,   117,   118,   119,   120,   121,   122,    -1,    -1,    37,
-      38,   127,    40,    41,    -1,    43,   132,    -1,    46,    47,
-      48,    49,    50,    51,    52,    53,    -1,    -1,    -1,    57,
-      -1,    -1,    -1,    61,    62,    -1,    64,    -1,    66,    -1,
-      -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,
-      -1,    79,    80,    81,    82,    83,    84,    -1,    86,    87,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   109,    -1,   111,    -1,    -1,   114,    -1,    -1,   117,
-     118,   119,   120,   121,   122,    -1,    -1,    -1,    -1,   127,
-      -1,    -1,    -1,    -1,   132,     4,     5,     6,     7,     8,
-       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
-      -1,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,    -1,
-      39,    -1,    37,    38,    -1,    40,    41,    -1,    43,    44,
-      45,    46,    47,    48,    49,    50,    51,    52,    53,    -1,
-      -1,    56,    57,    -1,    -1,    -1,    61,    62,    67,    64,
-      69,    66,    71,    -1,    -1,    74,    75,    72,    -1,    -1,
-      -1,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
-      -1,    86,    87,    -1,    -1,    -1,    -1,    96,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,   114,
-      -1,    -1,   117,   118,   119,   120,   121,   122,    -1,    -1,
-      37,    38,   127,    40,    41,    -1,    43,    44,    45,    46,
-      47,    48,    49,    50,    51,    52,    53,    -1,    -1,    -1,
-      57,    -1,    -1,    -1,    61,    62,    -1,    64,    -1,    66,
-      -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,
-      -1,    -1,    79,    80,    81,    82,    83,    84,    -1,    86,
-      87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   109,    -1,   111,    -1,    -1,   114,    -1,    -1,
-     117,   118,   119,   120,   121,   122,    -1,    -1,    37,    38,
-     127,    40,    41,    -1,    43,    -1,    -1,    46,    47,    48,
-      49,    50,    51,    52,    53,    -1,    -1,    -1,    57,    -1,
-      -1,    -1,    61,    62,    -1,    64,    -1,    66,    -1,    -1,
-      -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,
-      79,    80,    81,    82,    83,    84,    -1,    86,    87,    -1,
-      -1,    -1,    -1,    -1,    -1,    37,    38,    -1,    40,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     109,    -1,   111,    -1,    -1,   114,    -1,    -1,   117,   118,
-     119,   120,   121,   122,    66,    -1,    -1,    -1,   127,    -1,
-      72,    -1,    74,    75,    76,    -1,    -1,    79,    80,    81,
-      82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,
-      -1,    -1,    37,    38,    -1,    40,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,   111,
-      -1,   113,   114,    -1,    -1,   117,   118,   119,   120,   121,
-     122,    66,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,
-      -1,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
-      -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    37,
-      38,    -1,    40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    37,    38,
-      -1,    40,   117,   118,   119,   120,   121,   122,    66,    -1,
-      -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,
-      -1,    79,    80,    81,    82,    83,    84,    66,    86,    87,
-      -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,
-      79,    80,    81,    82,    83,    84,    -1,    86,    87,    -1,
-      -1,   109,    -1,   111,    -1,    37,    38,    -1,    40,   117,
-     118,   119,   120,   121,   122,    -1,    -1,    -1,    -1,    -1,
-     109,    -1,    -1,    -1,    37,    38,    -1,    40,   117,   118,
-     119,   120,   121,   122,    66,    -1,    -1,    -1,    -1,    -1,
-      72,    -1,    -1,    -1,    76,    -1,    -1,    79,    80,    81,
-      82,    83,    84,    66,    86,    87,    -1,    -1,    -1,    72,
-      -1,    -1,    -1,    76,    -1,    -1,    79,    80,    81,    82,
-      83,    84,    -1,    86,    87,    -1,    -1,   109,    -1,    -1,
-      -1,    37,    38,    -1,    40,   117,   118,   119,   120,   121,
-     122,    -1,    -1,    -1,    -1,    -1,   109,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   117,   118,   119,   120,   121,   122,
-      66,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,
-      76,    -1,    -1,    79,    80,    81,    82,    83,    84,    -1,
-      86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   109,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   117,   118,   119,   120,   121,   122,     4,     5,     6,
-       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
-      27,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      67,    -1,    69,    -1,    71,    72,    -1,    74,    75,    76,
-      -1,    -1,    -1,    -1,    -1,    -1,    83,    84,     3,     4,
-       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
-      -1,    -1,    -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    67,    -1,    69,    -1,    71,    -1,    -1,    74,
-      75,     3,     4,     5,     6,     7,     8,     9,    10,    11,
-      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-      22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
-      32,    -1,    -1,    -1,    -1,    -1,    -1,    39,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    67,    -1,    69,    -1,    71,
-      -1,    -1,    74,    75,     4,     5,     6,     7,     8,     9,
-      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
-      20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
-      30,    31,    32,    -1,    -1,    -1,    -1,    -1,    -1,    39,
-      -1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
-      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
-      -1,    30,    31,    32,    33,    34,    35,    67,    -1,    69,
-      39,    71,    -1,    -1,    74,    75,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,
-      -1,    -1,    -1,    -1,    -1,    74,    75
-};
-
-/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
-   symbol of state STATE-NUM.  */
-static const yytype_uint16 yystos[] =
-{
-       0,     3,     4,     5,     6,     7,     8,     9,    10,    11,
-      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-      22,    23,    24,    25,    26,    27,    30,    31,    32,    33,
-      36,    39,    40,    64,    67,    69,    71,    72,    74,    75,
-      76,    83,    84,   109,   111,   117,   118,   137,   140,   149,
-     198,   212,   213,   214,   215,   216,   217,   218,   219,   220,
-     221,   222,   223,   224,   225,   226,   227,   228,   229,   231,
-     232,   233,   234,   235,   236,   237,   238,   240,   241,   242,
-     243,   244,   245,   247,   255,   256,   283,   284,   285,   293,
-     296,   302,   303,   305,   307,   308,   314,   319,   323,   324,
-     325,   326,   327,   328,   329,   330,   350,   367,   368,   369,
-     370,    72,   139,   140,   149,   215,   217,   225,   227,   237,
-     241,   243,   284,    82,   109,   312,   313,   314,   312,   312,
-      72,    74,    75,    76,   138,   139,   273,   274,   294,   295,
-      74,    75,   274,   109,   305,    11,   199,   109,   149,   319,
-     324,   325,   326,   328,   329,   330,   112,   134,   111,   218,
-     225,   227,   323,   327,   366,   367,   370,   371,   135,   107,
-     131,   277,   114,   135,   173,    74,    75,   137,   272,   135,
-     135,   135,   116,   135,    74,    75,   109,   149,   309,   318,
-     319,   320,   321,   322,   323,   327,   331,   332,   333,   334,
-     335,   341,     3,    28,    78,   239,     3,     5,    74,   111,
-     149,   217,   228,   232,   235,   244,   285,   323,   327,   370,
-     215,   217,   227,   237,   241,   243,   284,   323,   327,    33,
-     233,   233,   228,   235,   135,   233,   228,   233,   228,    75,
-     109,   114,   274,   285,   114,   274,   233,   228,   116,   135,
-     135,     0,   134,   109,   173,   312,   312,   134,   111,   225,
-     227,   368,   272,   272,   131,   227,   109,   149,   309,   319,
-     323,   111,   149,   370,   306,   230,   314,   109,   290,   109,
-     109,    51,   109,    37,    38,    40,    66,    72,    76,    79,
-      80,    81,    82,    86,    87,   109,   111,   119,   120,   121,
-     122,   136,   140,   141,   142,   143,   148,   149,   150,   151,
-     152,   153,   154,   155,   156,   157,   158,   159,   160,   161,
-     162,   164,   167,   225,   276,   292,   366,   371,   227,   110,
-     110,   110,   110,   110,   110,   110,    74,    75,   111,   225,
-     272,   350,   368,   111,   117,   149,   164,   217,   218,   224,
-     227,   231,   232,   237,   240,   241,   243,   262,   263,   267,
-     268,   269,   270,   284,   350,   362,   363,   364,   365,   370,
-     371,   112,   109,   323,   327,   370,   109,   116,   132,   111,
-     114,   149,   164,   278,   278,   115,   134,   116,   132,   109,
-     116,   132,   116,   132,   116,   132,   312,   132,   319,   320,
-     321,   322,   332,   333,   334,   335,   227,   318,   331,    64,
-     311,   111,   312,   349,   350,   312,   312,   173,   134,   109,
-     312,   349,   312,   312,   227,   309,   109,   109,   226,   227,
-     225,   227,   112,   134,   225,   366,   371,   173,   134,   272,
-     277,   217,   232,   323,   327,   173,   134,   294,   227,   237,
-     132,   227,   227,   292,   248,   246,   258,   274,   257,   227,
-     294,   132,   132,   305,   134,   139,   271,     3,   135,   207,
-     208,   222,   224,   227,   134,   311,   109,   311,   164,   319,
-     227,   109,   134,   272,   114,    33,    34,    35,   225,   286,
-     287,   289,   134,   128,   131,   291,   134,   228,   234,   235,
-     272,   315,   316,   317,   109,   141,   109,   148,   109,   148,
-     151,   109,   148,   109,   109,   148,   148,   111,   164,   169,
-     173,   225,   275,   366,   370,   112,   134,    82,    85,    86,
-      87,   109,   111,   113,   114,    97,    98,    99,   100,   101,
-     102,   103,   104,   105,   106,   131,   166,   151,   151,   117,
-     123,   124,   119,   120,    88,    89,    90,    91,   125,   126,
-      92,    93,   118,   127,   128,    94,    95,   129,   131,   373,
-     109,   149,   345,   346,   347,   348,   349,   110,   116,   109,
-     349,   350,   109,   349,   350,   134,   109,   225,   368,   112,
-     134,   135,   111,   225,   227,   361,   362,   370,   371,   135,
-     109,   111,   149,   319,   336,   337,   338,   339,   340,   341,
-     342,   343,   344,   350,   351,   352,   353,   354,   355,   356,
-     149,   370,   227,   135,   135,   149,   225,   227,   363,   272,
-     225,   350,   363,   272,   109,   134,   134,   134,   112,   134,
-      72,   111,   113,   140,   274,   278,   279,   280,   281,   282,
-     134,   134,   134,   134,   134,   134,   309,   110,   110,   110,
-     110,   110,   110,   110,   318,   331,   109,   277,   112,   207,
-     134,   309,   169,   276,   169,   276,   309,   111,   207,   311,
-     173,   134,   207,   110,    40,   111,   115,   225,   249,   250,
-     251,   366,   114,   116,   372,   131,   259,   114,   227,   264,
-     265,   266,   269,   270,   110,   116,   173,   134,   117,   164,
-     134,   224,   227,   263,   362,   370,   303,   304,   109,   149,
-     336,   110,   116,   373,   274,   286,   109,   114,   274,   276,
-     286,   110,   116,   109,   141,   110,   130,   275,   275,   275,
-     145,   164,   276,   275,   112,   134,   110,   116,   110,   109,
-     149,   349,   357,   358,   359,   360,   110,   116,   164,   111,
-     139,   144,   145,   134,   111,   139,   144,   164,   151,   151,
-     151,   152,   152,   153,   153,   154,   154,   154,   154,   155,
-     155,   156,   157,   158,   159,   160,   130,   169,   164,   134,
-     346,   347,   348,   227,   345,   312,   312,   164,   276,   134,
-     271,   134,   225,   350,   363,   227,   231,   112,   112,   134,
-     370,   112,   109,   134,   319,   337,   338,   339,   342,   352,
-     353,   354,   112,   134,   227,   336,   340,   351,   109,   312,
-     355,   373,   312,   312,   373,   109,   312,   355,   312,   312,
-     312,   312,   350,   225,   361,   371,   272,   112,   116,   112,
-     116,   373,   225,   363,   373,   260,   261,   262,   263,   260,
-     260,   272,   164,   134,   111,   274,   130,   116,   372,   278,
-     111,   130,   282,    29,   209,   210,   272,   260,   139,   309,
-     139,   311,   109,   349,   350,   109,   349,   350,   141,   350,
-     173,   264,   110,   110,   110,   110,   112,   173,   207,   173,
-     114,   250,   251,   112,   134,   109,   130,   149,   252,   254,
-     318,   319,   331,   357,   116,   132,   116,   132,   274,   248,
-     274,   115,   162,   163,   258,   135,   135,   139,   222,   135,
-     135,   260,   109,   149,   370,   135,   115,   227,   287,   288,
-     135,   134,   134,   109,   135,   110,   316,   169,   170,   130,
-     132,   111,   141,   200,   201,   202,   110,   116,   110,   110,
-     110,   110,   111,   164,   358,   359,   360,   227,   357,   312,
-     312,   114,   151,   167,   164,   165,   168,   116,   135,   134,
-     110,   116,   164,   134,   115,   162,   130,   264,   110,   110,
-     110,   345,   264,   110,   260,   225,   363,   111,   117,   149,
-     164,   164,   227,   342,   264,   110,   110,   110,   110,   110,
-     110,   110,     7,   227,   336,   340,   351,   134,   134,   373,
-     134,   134,   110,   135,   135,   135,   135,   277,   135,   162,
-     163,   164,   310,   134,   278,   280,   115,   134,   211,   274,
-      40,    41,    43,    46,    47,    48,    49,    50,    51,    52,
-      53,    57,    61,    62,    72,   111,   127,   170,   171,   172,
-     173,   174,   175,   177,   178,   190,   192,   193,   198,   212,
-     308,    29,   135,   131,   277,   134,   134,   110,   135,   173,
-     248,   132,   132,   319,   163,   227,   253,   254,   253,   274,
-     312,   115,   259,   372,   110,   116,   112,   112,   135,   227,
-     116,   373,   290,   110,   286,   215,   217,   225,   298,   299,
-     300,   301,   292,   110,   110,   130,   163,   109,   110,   130,
-     116,   139,   112,   110,   110,   110,   357,   279,   116,   135,
-     168,   112,   139,   146,   147,   145,   135,   146,   162,   167,
-     135,   109,   349,   350,   135,   135,   134,   135,   135,   135,
-     164,   110,   135,   109,   349,   350,   109,   355,   109,   355,
-     350,   226,     7,   117,   135,   164,   264,   264,   263,   267,
-     267,   268,   116,   116,   110,   110,   112,    96,   122,   135,
-     135,   146,   278,   164,   116,   132,   212,   216,   227,   231,
-     109,   109,   171,   109,   109,    72,   132,    72,   132,    72,
-     117,   170,   109,   173,   165,   165,   130,   112,   143,   132,
-     135,   134,   135,   211,   110,   164,   264,   264,   312,   110,
-     115,   252,   115,   134,   110,   134,   135,   309,   115,   134,
-     135,   135,   110,   114,   200,   112,   163,   132,   200,   202,
-     110,   109,   349,   350,   372,   165,   112,   135,    85,   113,
-     116,   135,   112,   135,   110,   134,   110,   110,   112,   112,
-     112,   135,   110,   134,   134,   134,   164,   164,   135,   112,
-     135,   135,   135,   135,   134,   134,   163,   163,   112,   112,
-     135,   135,   274,   227,   169,   169,    47,   169,   134,   132,
-     132,   132,   169,   132,   169,    58,    59,    60,   194,   195,
-     196,   132,    63,   132,   312,   114,   175,   115,   132,   135,
-     135,    96,   269,   270,   110,   299,   116,   132,   116,   132,
-     115,   297,   130,   141,   110,   110,   130,   134,   115,   112,
-     111,   147,   111,   147,   147,   112,   112,   264,   112,   264,
-     264,   264,   135,   135,   112,   112,   110,   110,   112,   116,
-      96,   263,    96,   135,   112,   112,   110,   110,   109,   110,
-     170,   191,   212,   132,   110,   109,   109,   173,   196,    58,
-      59,   164,   171,   144,   110,   110,   114,   134,   134,   298,
-     141,   203,   109,   132,   203,   264,   134,   134,   135,   135,
-     135,   135,   112,   112,   134,   135,   112,   171,    44,    45,
-     114,   181,   182,   183,   169,   171,   135,   110,   170,   114,
-     183,    96,   134,    96,   134,   109,   109,   132,   115,   134,
-     272,   309,   115,   116,   130,   163,   110,   135,   146,   146,
-     110,   110,   110,   110,   267,    42,   163,   179,   180,   310,
-     130,   134,   171,   181,   110,   132,   171,   132,   134,   110,
-     134,   110,   134,    96,   134,    96,   134,   132,   298,   141,
-     139,   204,   110,   132,   110,   135,   135,   171,    96,   116,
-     130,   135,   205,   206,   212,   132,   170,   170,   205,   173,
-     197,   225,   366,   173,   197,   110,   134,   110,   134,   115,
-     110,   116,   112,   112,   163,   179,   182,   184,   185,   134,
-     132,   182,   186,   187,   135,   109,   149,   309,   357,   139,
-     135,   173,   197,   173,   197,   109,   132,   139,   171,   176,
-     115,   182,   212,   170,    56,   176,   189,   115,   182,   110,
-     227,   110,   135,   135,   292,   171,   176,   132,   188,   189,
-     176,   189,   173,   173,   110,   110,   110,   188,   135,   135,
-     173,   173,   135,   135
-};
-
-#define yyerrok		(yyerrstatus = 0)
-#define yyclearin	(yychar = YYEMPTY)
-#define YYEMPTY		(-2)
-#define YYEOF		0
-
-#define YYACCEPT	goto yyacceptlab
-#define YYABORT		goto yyabortlab
-#define YYERROR		goto yyerrorlab
-
-
-/* Like YYERROR except do call yyerror.  This remains here temporarily
-   to ease the transition to the new meaning of YYERROR, for GCC.
-   Once GCC version 2 has supplanted version 1, this can go.  However,
-   YYFAIL appears to be in use.  Nevertheless, it is formally deprecated
-   in Bison 2.4.2's NEWS entry, where a plan to phase it out is
-   discussed.  */
-
-#define YYFAIL		goto yyerrlab
-#if defined YYFAIL
-  /* This is here to suppress warnings from the GCC cpp's
-     -Wunused-macros.  Normally we don't worry about that warning, but
-     some users do, and we want to make it easy for users to remove
-     YYFAIL uses, which will produce warnings from Bison 2.5.  */
-#endif
+
+#define yyerrok         (yyerrstatus = 0)
+#define yyclearin       (yychar = YYEMPTY)
+#define YYEMPTY         (-2)
+#define YYEOF           0
+
+#define YYACCEPT        goto yyacceptlab
+#define YYABORT         goto yyabortlab
+#define YYERROR         goto yyerrorlab
+
 
 #define YYRECOVERING()  (!!yyerrstatus)
 
-#define YYBACKUP(Token, Value)					\
-do								\
-  if (yychar == YYEMPTY && yylen == 1)				\
-    {								\
-      yychar = (Token);						\
-      yylval = (Value);						\
-      YYPOPSTACK (1);						\
-      goto yybackup;						\
-    }								\
-  else								\
-    {								\
+#define YYBACKUP(Token, Value)                                  \
+do                                                              \
+  if (yychar == YYEMPTY)                                        \
+    {                                                           \
+      yychar = (Token);                                         \
+      yylval = (Value);                                         \
+      YYPOPSTACK (yylen);                                       \
+      yystate = *yyssp;                                         \
+      goto yybackup;                                            \
+    }                                                           \
+  else                                                          \
+    {                                                           \
       yyerror (YY_("syntax error: cannot back up")); \
-      YYERROR;							\
-    }								\
-while (YYID (0))
-
-
-#define YYTERROR	1
-#define YYERRCODE	256
-
-
-/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
-   If N is 0, then set CURRENT to the empty location which ends
-   the previous symbol: RHS[0] (always defined).  */
-
-#define YYRHSLOC(Rhs, K) ((Rhs)[K])
-#ifndef YYLLOC_DEFAULT
-# define YYLLOC_DEFAULT(Current, Rhs, N)				\
-    do									\
-      if (YYID (N))                                                    \
-	{								\
-	  (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;	\
-	  (Current).first_column = YYRHSLOC (Rhs, 1).first_column;	\
-	  (Current).last_line    = YYRHSLOC (Rhs, N).last_line;		\
-	  (Current).last_column  = YYRHSLOC (Rhs, N).last_column;	\
-	}								\
-      else								\
-	{								\
-	  (Current).first_line   = (Current).last_line   =		\
-	    YYRHSLOC (Rhs, 0).last_line;				\
-	  (Current).first_column = (Current).last_column =		\
-	    YYRHSLOC (Rhs, 0).last_column;				\
-	}								\
-    while (YYID (0))
-#endif
-
-
-/* This macro is provided for backward compatibility. */
-
-#ifndef YY_LOCATION_PRINT
-# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
-#endif
-
-
-/* YYLEX -- calling `yylex' with the right arguments.  */
-
-#ifdef YYLEX_PARAM
-# define YYLEX yylex (YYLEX_PARAM)
-#else
-# define YYLEX yylex ()
-#endif
+      YYERROR;                                                  \
+    }                                                           \
+while (0)
+
+/* Error token number */
+#define YYTERROR        1
+#define YYERRCODE       256
+
+
 
 /* Enable debugging if requested.  */
@@ -4223,39 +3863,37 @@
 # endif
 
-# define YYDPRINTF(Args)			\
-do {						\
-  if (yydebug)					\
-    YYFPRINTF Args;				\
-} while (YYID (0))
-
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location)			  \
-do {									  \
-  if (yydebug)								  \
-    {									  \
-      YYFPRINTF (stderr, "%s ", Title);					  \
-      yy_symbol_print (stderr,						  \
-		  Type, Value); \
-      YYFPRINTF (stderr, "\n");						  \
-    }									  \
-} while (YYID (0))
-
-
-/*--------------------------------.
-| Print this symbol on YYOUTPUT.  |
-`--------------------------------*/
-
-/*ARGSUSED*/
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
+# define YYDPRINTF(Args)                        \
+do {                                            \
+  if (yydebug)                                  \
+    YYFPRINTF Args;                             \
+} while (0)
+
+/* This macro is provided for backward compatibility. */
+#ifndef YY_LOCATION_PRINT
+# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+#endif
+
+
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)                    \
+do {                                                                      \
+  if (yydebug)                                                            \
+    {                                                                     \
+      YYFPRINTF (stderr, "%s ", Title);                                   \
+      yy_symbol_print (stderr,                                            \
+                  Type, Value); \
+      YYFPRINTF (stderr, "\n");                                           \
+    }                                                                     \
+} while (0)
+
+
+/*----------------------------------------.
+| Print this symbol's value on YYOUTPUT.  |
+`----------------------------------------*/
+
 static void
 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
-#else
-static void
-yy_symbol_value_print (yyoutput, yytype, yyvaluep)
-    FILE *yyoutput;
-    int yytype;
-    YYSTYPE const * const yyvaluep;
-#endif
 {
+  FILE *yyo = yyoutput;
+  YYUSE (yyo);
   if (!yyvaluep)
     return;
@@ -4263,12 +3901,6 @@
   if (yytype < YYNTOKENS)
     YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
-# else
-  YYUSE (yyoutput);
 # endif
-  switch (yytype)
-    {
-      default:
-	break;
-    }
+  YYUSE (yytype);
 }
 
@@ -4278,20 +3910,9 @@
 `--------------------------------*/
 
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
 static void
 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
-#else
-static void
-yy_symbol_print (yyoutput, yytype, yyvaluep)
-    FILE *yyoutput;
-    int yytype;
-    YYSTYPE const * const yyvaluep;
-#endif
 {
-  if (yytype < YYNTOKENS)
-    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
-  else
-    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
+  YYFPRINTF (yyoutput, "%s %s (",
+             yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
 
   yy_symbol_value_print (yyoutput, yytype, yyvaluep);
@@ -4304,14 +3925,6 @@
 `------------------------------------------------------------------*/
 
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
 static void
 yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
-#else
-static void
-yy_stack_print (yybottom, yytop)
-    yytype_int16 *yybottom;
-    yytype_int16 *yytop;
-#endif
 {
   YYFPRINTF (stderr, "Stack now");
@@ -4324,9 +3937,9 @@
 }
 
-# define YY_STACK_PRINT(Bottom, Top)				\
-do {								\
-  if (yydebug)							\
-    yy_stack_print ((Bottom), (Top));				\
-} while (YYID (0))
+# define YY_STACK_PRINT(Bottom, Top)                            \
+do {                                                            \
+  if (yydebug)                                                  \
+    yy_stack_print ((Bottom), (Top));                           \
+} while (0)
 
 
@@ -4335,36 +3948,29 @@
 `------------------------------------------------*/
 
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
 static void
-yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
-#else
-static void
-yy_reduce_print (yyvsp, yyrule)
-    YYSTYPE *yyvsp;
-    int yyrule;
-#endif
+yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule)
 {
+  unsigned long int yylno = yyrline[yyrule];
   int yynrhs = yyr2[yyrule];
   int yyi;
-  unsigned long int yylno = yyrline[yyrule];
   YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
-	     yyrule - 1, yylno);
+             yyrule - 1, yylno);
   /* The symbols being reduced.  */
   for (yyi = 0; yyi < yynrhs; yyi++)
     {
       YYFPRINTF (stderr, "   $%d = ", yyi + 1);
-      yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
-		       &(yyvsp[(yyi + 1) - (yynrhs)])
-		       		       );
+      yy_symbol_print (stderr,
+                       yystos[yyssp[yyi + 1 - yynrhs]],
+                       &(yyvsp[(yyi + 1) - (yynrhs)])
+                                              );
       YYFPRINTF (stderr, "\n");
     }
 }
 
-# define YY_REDUCE_PRINT(Rule)		\
-do {					\
-  if (yydebug)				\
-    yy_reduce_print (yyvsp, Rule); \
-} while (YYID (0))
+# define YY_REDUCE_PRINT(Rule)          \
+do {                                    \
+  if (yydebug)                          \
+    yy_reduce_print (yyssp, yyvsp, Rule); \
+} while (0)
 
 /* Nonzero means print parse trace.  It is left uninitialized so that
@@ -4380,5 +3986,5 @@
 
 /* YYINITDEPTH -- initial size of the parser's stacks.  */
-#ifndef	YYINITDEPTH
+#ifndef YYINITDEPTH
 # define YYINITDEPTH 200
 #endif
@@ -4403,13 +4009,6 @@
 #  else
 /* Return the length of YYSTR.  */
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
 static YYSIZE_T
 yystrlen (const char *yystr)
-#else
-static YYSIZE_T
-yystrlen (yystr)
-    const char *yystr;
-#endif
 {
   YYSIZE_T yylen;
@@ -4427,14 +4026,6 @@
 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
    YYDEST.  */
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
 static char *
 yystpcpy (char *yydest, const char *yysrc)
-#else
-static char *
-yystpcpy (yydest, yysrc)
-    char *yydest;
-    const char *yysrc;
-#endif
 {
   char *yyd = yydest;
@@ -4466,25 +4057,25 @@
 
       for (;;)
-	switch (*++yyp)
-	  {
-	  case '\'':
-	  case ',':
-	    goto do_not_strip_quotes;
-
-	  case '\\':
-	    if (*++yyp != '\\')
-	      goto do_not_strip_quotes;
-	    /* Fall through.  */
-	  default:
-	    if (yyres)
-	      yyres[yyn] = *yyp;
-	    yyn++;
-	    break;
-
-	  case '"':
-	    if (yyres)
-	      yyres[yyn] = '\0';
-	    return yyn;
-	  }
+        switch (*++yyp)
+          {
+          case '\'':
+          case ',':
+            goto do_not_strip_quotes;
+
+          case '\\':
+            if (*++yyp != '\\')
+              goto do_not_strip_quotes;
+            /* Fall through.  */
+          default:
+            if (yyres)
+              yyres[yyn] = *yyp;
+            yyn++;
+            break;
+
+          case '"':
+            if (yyres)
+              yyres[yyn] = '\0';
+            return yyn;
+          }
     do_not_strip_quotes: ;
     }
@@ -4509,10 +4100,9 @@
                 yytype_int16 *yyssp, int yytoken)
 {
-  YYSIZE_T yysize0 = yytnamerr (0, yytname[yytoken]);
+  YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
   YYSIZE_T yysize = yysize0;
-  YYSIZE_T yysize1;
   enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
   /* Internationalized format string. */
-  const char *yyformat = 0;
+  const char *yyformat = YY_NULLPTR;
   /* Arguments of yyformat. */
   char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
@@ -4522,8 +4112,4 @@
 
   /* There are many possibilities here to consider:
-     - Assume YYFAIL is not used.  It's too flawed to consider.  See
-       <http://lists.gnu.org/archive/html/bison-patches/2009-12/msg00024.html>
-       for details.  YYERROR is fine as it does not invoke this
-       function.
      - If this state is a consistent state with a default action, then
        the only way this function was invoked is if the default action
@@ -4574,9 +4160,11 @@
                   }
                 yyarg[yycount++] = yytname[yyx];
-                yysize1 = yysize + yytnamerr (0, yytname[yyx]);
-                if (! (yysize <= yysize1
-                       && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
-                  return 2;
-                yysize = yysize1;
+                {
+                  YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
+                  if (! (yysize <= yysize1
+                         && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+                    return 2;
+                  yysize = yysize1;
+                }
               }
         }
@@ -4598,8 +4186,10 @@
     }
 
-  yysize1 = yysize + yystrlen (yyformat);
-  if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
-    return 2;
-  yysize = yysize1;
+  {
+    YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
+    if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+      return 2;
+    yysize = yysize1;
+  }
 
   if (*yymsg_alloc < yysize)
@@ -4638,46 +4228,18 @@
 `-----------------------------------------------*/
 
-/*ARGSUSED*/
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
 static void
 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
-#else
-static void
-yydestruct (yymsg, yytype, yyvaluep)
-    const char *yymsg;
-    int yytype;
-    YYSTYPE *yyvaluep;
-#endif
 {
   YYUSE (yyvaluep);
-
   if (!yymsg)
     yymsg = "Deleting";
   YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
 
-  switch (yytype)
-    {
-
-      default:
-	break;
-    }
+  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+  YYUSE (yytype);
+  YY_IGNORE_MAYBE_UNINITIALIZED_END
 }
 
 
-/* Prevent warnings from -Wmissing-prototypes.  */
-#ifdef YYPARSE_PARAM
-#if defined __STDC__ || defined __cplusplus
-int yyparse (void *YYPARSE_PARAM);
-#else
-int yyparse ();
-#endif
-#else /* ! YYPARSE_PARAM */
-#if defined __STDC__ || defined __cplusplus
-int yyparse (void);
-#else
-int yyparse ();
-#endif
-#endif /* ! YYPARSE_PARAM */
 
 
@@ -4687,5 +4249,4 @@
 /* The semantic value of the lookahead symbol.  */
 YYSTYPE yylval;
-
 /* Number of syntax errors so far.  */
 int yynerrs;
@@ -4696,25 +4257,6 @@
 `----------*/
 
-#ifdef YYPARSE_PARAM
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-int
-yyparse (void *YYPARSE_PARAM)
-#else
-int
-yyparse (YYPARSE_PARAM)
-    void *YYPARSE_PARAM;
-#endif
-#else /* ! YYPARSE_PARAM */
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
 int
 yyparse (void)
-#else
-int
-yyparse ()
-
-#endif
-#endif
 {
     int yystate;
@@ -4723,8 +4265,8 @@
 
     /* The stacks and their tools:
-       `yyss': related to states.
-       `yyvs': related to semantic values.
-
-       Refer to the stacks thru separate pointers, to allow yyoverflow
+       'yyss': related to states.
+       'yyvs': related to semantic values.
+
+       Refer to the stacks through separate pointers, to allow yyoverflow
        to reallocate them elsewhere.  */
 
@@ -4744,5 +4286,5 @@
   int yyresult;
   /* Lookahead token as an internal (translated) token number.  */
-  int yytoken;
+  int yytoken = 0;
   /* The variables used to return semantic value and location from the
      action routines.  */
@@ -4762,7 +4304,6 @@
   int yylen = 0;
 
-  yytoken = 0;
-  yyss = yyssa;
-  yyvs = yyvsa;
+  yyssp = yyss = yyssa;
+  yyvsp = yyvs = yyvsa;
   yystacksize = YYINITDEPTH;
 
@@ -4773,12 +4314,4 @@
   yynerrs = 0;
   yychar = YYEMPTY; /* Cause a token to be read.  */
-
-  /* Initialize stack pointers.
-     Waste one element of value and location stack
-     so that they stay on the same level as the state stack.
-     The wasted elements are never initialized.  */
-  yyssp = yyss;
-  yyvsp = yyvs;
-
   goto yysetstate;
 
@@ -4801,21 +4334,21 @@
 #ifdef yyoverflow
       {
-	/* Give user a chance to reallocate the stack.  Use copies of
-	   these so that the &'s don't force the real ones into
-	   memory.  */
-	YYSTYPE *yyvs1 = yyvs;
-	yytype_int16 *yyss1 = yyss;
-
-	/* Each stack pointer address is followed by the size of the
-	   data in use in that stack, in bytes.  This used to be a
-	   conditional around just the two extra args, but that might
-	   be undefined if yyoverflow is a macro.  */
-	yyoverflow (YY_("memory exhausted"),
-		    &yyss1, yysize * sizeof (*yyssp),
-		    &yyvs1, yysize * sizeof (*yyvsp),
-		    &yystacksize);
-
-	yyss = yyss1;
-	yyvs = yyvs1;
+        /* Give user a chance to reallocate the stack.  Use copies of
+           these so that the &'s don't force the real ones into
+           memory.  */
+        YYSTYPE *yyvs1 = yyvs;
+        yytype_int16 *yyss1 = yyss;
+
+        /* Each stack pointer address is followed by the size of the
+           data in use in that stack, in bytes.  This used to be a
+           conditional around just the two extra args, but that might
+           be undefined if yyoverflow is a macro.  */
+        yyoverflow (YY_("memory exhausted"),
+                    &yyss1, yysize * sizeof (*yyssp),
+                    &yyvs1, yysize * sizeof (*yyvsp),
+                    &yystacksize);
+
+        yyss = yyss1;
+        yyvs = yyvs1;
       }
 #else /* no yyoverflow */
@@ -4825,20 +4358,20 @@
       /* Extend the stack our own way.  */
       if (YYMAXDEPTH <= yystacksize)
-	goto yyexhaustedlab;
+        goto yyexhaustedlab;
       yystacksize *= 2;
       if (YYMAXDEPTH < yystacksize)
-	yystacksize = YYMAXDEPTH;
+        yystacksize = YYMAXDEPTH;
 
       {
-	yytype_int16 *yyss1 = yyss;
-	union yyalloc *yyptr =
-	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
-	if (! yyptr)
-	  goto yyexhaustedlab;
-	YYSTACK_RELOCATE (yyss_alloc, yyss);
-	YYSTACK_RELOCATE (yyvs_alloc, yyvs);
+        yytype_int16 *yyss1 = yyss;
+        union yyalloc *yyptr =
+          (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+        if (! yyptr)
+          goto yyexhaustedlab;
+        YYSTACK_RELOCATE (yyss_alloc, yyss);
+        YYSTACK_RELOCATE (yyvs_alloc, yyvs);
 #  undef YYSTACK_RELOCATE
-	if (yyss1 != yyssa)
-	  YYSTACK_FREE (yyss1);
+        if (yyss1 != yyssa)
+          YYSTACK_FREE (yyss1);
       }
 # endif
@@ -4849,8 +4382,8 @@
 
       YYDPRINTF ((stderr, "Stack size increased to %lu\n",
-		  (unsigned long int) yystacksize));
+                  (unsigned long int) yystacksize));
 
       if (yyss + yystacksize - 1 <= yyssp)
-	YYABORT;
+        YYABORT;
     }
 
@@ -4881,5 +4414,5 @@
     {
       YYDPRINTF ((stderr, "Reading a token: "));
-      yychar = YYLEX;
+      yychar = yylex ();
     }
 
@@ -4921,5 +4454,7 @@
 
   yystate = yyn;
+  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   *++yyvsp = yylval;
+  YY_IGNORE_MAYBE_UNINITIALIZED_END
 
   goto yynewstate;
@@ -4944,5 +4479,5 @@
 
   /* If YYLEN is nonzero, implement the default value of the action:
-     `$$ = $1'.
+     '$$ = $1'.
 
      Otherwise, the following line sets YYVAL to garbage.
@@ -4958,236 +4493,204 @@
     {
         case 2:
-
-/* Line 1806 of yacc.c  */
-#line 298 "parser.yy"
+#line 298 "parser.yy" /* yacc.c:1646  */
     {
 			typedefTable.enterScope();
 		}
+#line 4500 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 3:
-
-/* Line 1806 of yacc.c  */
-#line 304 "parser.yy"
+#line 304 "parser.yy" /* yacc.c:1646  */
     {
 			typedefTable.leaveScope();
 		}
+#line 4508 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 4:
-
-/* Line 1806 of yacc.c  */
-#line 313 "parser.yy"
-    { (yyval.en) = new ExpressionNode( build_constantInteger( *(yyvsp[(1) - (1)].tok) ) ); }
+#line 313 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = new ExpressionNode( build_constantInteger( assign_strptr((yyvsp[0].tok)) ) ); }
+#line 4514 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 5:
-
-/* Line 1806 of yacc.c  */
-#line 314 "parser.yy"
-    { (yyval.en) = new ExpressionNode( build_constantFloat( *(yyvsp[(1) - (1)].tok) ) ); }
+#line 314 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = new ExpressionNode( build_constantFloat( assign_strptr((yyvsp[0].tok)) ) ); }
+#line 4520 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 6:
-
-/* Line 1806 of yacc.c  */
-#line 315 "parser.yy"
-    { (yyval.en) = new ExpressionNode( build_constantChar( *(yyvsp[(1) - (1)].tok) ) ); }
+#line 315 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = new ExpressionNode( build_constantChar( assign_strptr((yyvsp[0].tok)) ) ); }
+#line 4526 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 16:
-
-/* Line 1806 of yacc.c  */
-#line 340 "parser.yy"
-    { (yyval.constant) = build_constantStr( *(yyvsp[(1) - (1)].tok) ); }
+#line 340 "parser.yy" /* yacc.c:1646  */
+    { (yyval.constant) = build_constantStr( assign_strptr((yyvsp[0].tok)) ); }
+#line 4532 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 17:
-
-/* Line 1806 of yacc.c  */
-#line 342 "parser.yy"
-    {
-			appendStr( (yyvsp[(1) - (2)].constant)->get_constant()->get_value(), (yyvsp[(2) - (2)].tok) );
-			delete (yyvsp[(2) - (2)].tok);									// allocated by lexer
-			(yyval.constant) = (yyvsp[(1) - (2)].constant);
+#line 342 "parser.yy" /* yacc.c:1646  */
+    {
+			appendStr( (yyvsp[-1].constant)->get_constant()->get_value(), (yyvsp[0].tok) );
+			delete (yyvsp[0].tok);									// allocated by lexer
+			(yyval.constant) = (yyvsp[-1].constant);
 		}
+#line 4542 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 18:
-
-/* Line 1806 of yacc.c  */
-#line 353 "parser.yy"
-    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (1)].tok) ) ); }
+#line 353 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[0].tok) ) ); }
+#line 4548 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 19:
-
-/* Line 1806 of yacc.c  */
-#line 355 "parser.yy"
-    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (1)].tok) ) ); }
+#line 355 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[0].tok) ) ); }
+#line 4554 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 20:
-
-/* Line 1806 of yacc.c  */
-#line 357 "parser.yy"
-    { (yyval.en) = (yyvsp[(2) - (3)].en); }
+#line 357 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = (yyvsp[-1].en); }
+#line 4560 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 21:
-
-/* Line 1806 of yacc.c  */
-#line 359 "parser.yy"
-    { (yyval.en) = new ExpressionNode( build_valexpr( (yyvsp[(2) - (3)].sn) ) ); }
+#line 359 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = new ExpressionNode( build_valexpr( (yyvsp[-1].sn) ) ); }
+#line 4566 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 23:
-
-/* Line 1806 of yacc.c  */
-#line 369 "parser.yy"
-    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Index, (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en) ) ); }
+#line 369 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Index, (yyvsp[-5].en), (yyvsp[-2].en) ) ); }
+#line 4572 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 24:
-
-/* Line 1806 of yacc.c  */
-#line 371 "parser.yy"
-    { (yyval.en) = new ExpressionNode( build_func( (yyvsp[(1) - (4)].en), (yyvsp[(3) - (4)].en) ) ); }
+#line 371 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = new ExpressionNode( build_func( (yyvsp[-3].en), (yyvsp[-1].en) ) ); }
+#line 4578 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 25:
-
-/* Line 1806 of yacc.c  */
-#line 375 "parser.yy"
-    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(1) - (3)].en), build_varref( (yyvsp[(3) - (3)].tok) ) ) ); }
+#line 375 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[-2].en), build_varref( (yyvsp[0].tok) ) ) ); }
+#line 4584 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 27:
-
-/* Line 1806 of yacc.c  */
-#line 378 "parser.yy"
-    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(1) - (3)].en), build_varref( (yyvsp[(3) - (3)].tok) ) ) ); }
+#line 378 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[-2].en), build_varref( (yyvsp[0].tok) ) ) ); }
+#line 4590 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 29:
-
-/* Line 1806 of yacc.c  */
-#line 381 "parser.yy"
-    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::IncrPost, (yyvsp[(1) - (2)].en) ) ); }
+#line 381 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::IncrPost, (yyvsp[-1].en) ) ); }
+#line 4596 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 30:
-
-/* Line 1806 of yacc.c  */
-#line 383 "parser.yy"
-    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::DecrPost, (yyvsp[(1) - (2)].en) ) ); }
+#line 383 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::DecrPost, (yyvsp[-1].en) ) ); }
+#line 4602 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 31:
-
-/* Line 1806 of yacc.c  */
-#line 385 "parser.yy"
-    { (yyval.en) = new ExpressionNode( build_compoundLiteral( (yyvsp[(2) - (7)].decl), new InitializerNode( (yyvsp[(5) - (7)].in), true ) ) ); }
+#line 385 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = new ExpressionNode( build_compoundLiteral( (yyvsp[-5].decl), new InitializerNode( (yyvsp[-2].in), true ) ) ); }
+#line 4608 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 32:
-
-/* Line 1806 of yacc.c  */
-#line 387 "parser.yy"
+#line 387 "parser.yy" /* yacc.c:1646  */
     {
 			Token fn;
 			fn.str = new std::string( "?{}" ); // location undefined
-			(yyval.en) = new ExpressionNode( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( (yyvsp[(1) - (4)].en) )->set_last( (yyvsp[(3) - (4)].en) ) ) );
+			(yyval.en) = new ExpressionNode( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( (yyvsp[-3].en) )->set_last( (yyvsp[-1].en) ) ) );
 		}
+#line 4618 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 34:
-
-/* Line 1806 of yacc.c  */
-#line 397 "parser.yy"
-    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) )); }
+#line 397 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = (ExpressionNode *)( (yyvsp[-2].en)->set_last( (yyvsp[0].en) )); }
+#line 4624 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 35:
-
-/* Line 1806 of yacc.c  */
-#line 402 "parser.yy"
+#line 402 "parser.yy" /* yacc.c:1646  */
     { (yyval.en) = 0; }
+#line 4630 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 38:
-
-/* Line 1806 of yacc.c  */
-#line 408 "parser.yy"
-    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); }
+#line 408 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = (ExpressionNode *)(yyvsp[-2].en)->set_last( (yyvsp[0].en) ); }
+#line 4636 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 39:
-
-/* Line 1806 of yacc.c  */
-#line 413 "parser.yy"
-    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (1)].tok) ) ); }
+#line 413 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[0].tok) ) ); }
+#line 4642 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 40:
-
-/* Line 1806 of yacc.c  */
-#line 417 "parser.yy"
-    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(3) - (3)].en), build_varref( (yyvsp[(1) - (3)].tok) ) ) ); }
+#line 417 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[0].en), build_varref( (yyvsp[-2].tok) ) ) ); }
+#line 4648 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 41:
-
-/* Line 1806 of yacc.c  */
-#line 419 "parser.yy"
-    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(5) - (7)].en), build_varref( (yyvsp[(1) - (7)].tok) ) ) ); }
+#line 419 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[-2].en), build_varref( (yyvsp[-6].tok) ) ) ); }
+#line 4654 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 42:
-
-/* Line 1806 of yacc.c  */
-#line 421 "parser.yy"
-    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(3) - (3)].en), build_varref( (yyvsp[(1) - (3)].tok) ) ) ); }
+#line 421 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[0].en), build_varref( (yyvsp[-2].tok) ) ) ); }
+#line 4660 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 43:
-
-/* Line 1806 of yacc.c  */
-#line 423 "parser.yy"
-    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(5) - (7)].en), build_varref( (yyvsp[(1) - (7)].tok) ) ) ); }
+#line 423 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[-2].en), build_varref( (yyvsp[-6].tok) ) ) ); }
+#line 4666 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 45:
-
-/* Line 1806 of yacc.c  */
-#line 431 "parser.yy"
-    { (yyval.en) = (yyvsp[(1) - (1)].en); }
+#line 431 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = (yyvsp[0].en); }
+#line 4672 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 46:
-
-/* Line 1806 of yacc.c  */
-#line 433 "parser.yy"
-    { (yyval.en) = new ExpressionNode( (yyvsp[(1) - (1)].constant) ); }
+#line 433 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = new ExpressionNode( (yyvsp[0].constant) ); }
+#line 4678 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 47:
-
-/* Line 1806 of yacc.c  */
-#line 435 "parser.yy"
-    { (yyval.en) = (yyvsp[(2) - (2)].en)->set_extension( true ); }
+#line 435 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = (yyvsp[0].en)->set_extension( true ); }
+#line 4684 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 48:
-
-/* Line 1806 of yacc.c  */
-#line 440 "parser.yy"
-    {
-			switch ( (yyvsp[(1) - (2)].op) ) {
+#line 440 "parser.yy" /* yacc.c:1646  */
+    {
+			switch ( (yyvsp[-1].op) ) {
 			  case OperKinds::AddressOf:
-				(yyval.en) = new ExpressionNode( build_addressOf( (yyvsp[(2) - (2)].en) ) );
+				(yyval.en) = new ExpressionNode( build_addressOf( (yyvsp[0].en) ) );
 				break;
 			  case OperKinds::PointTo:
-				(yyval.en) = new ExpressionNode( build_unary_val( (yyvsp[(1) - (2)].op), (yyvsp[(2) - (2)].en) ) );
+				(yyval.en) = new ExpressionNode( build_unary_val( (yyvsp[-1].op), (yyvsp[0].en) ) );
 				break;
 			  default:
@@ -5195,547 +4698,471 @@
 			}
 		}
+#line 4701 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 49:
-
-/* Line 1806 of yacc.c  */
-#line 453 "parser.yy"
-    { (yyval.en) = new ExpressionNode( build_unary_val( (yyvsp[(1) - (2)].op), (yyvsp[(2) - (2)].en) ) ); }
+#line 453 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = new ExpressionNode( build_unary_val( (yyvsp[-1].op), (yyvsp[0].en) ) ); }
+#line 4707 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 50:
-
-/* Line 1806 of yacc.c  */
-#line 455 "parser.yy"
-    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Incr, (yyvsp[(2) - (2)].en) ) ); }
+#line 455 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Incr, (yyvsp[0].en) ) ); }
+#line 4713 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 51:
-
-/* Line 1806 of yacc.c  */
-#line 457 "parser.yy"
-    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Decr, (yyvsp[(2) - (2)].en) ) ); }
+#line 457 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Decr, (yyvsp[0].en) ) ); }
+#line 4719 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 52:
-
-/* Line 1806 of yacc.c  */
-#line 459 "parser.yy"
-    { (yyval.en) = new ExpressionNode( build_sizeOfexpr( (yyvsp[(2) - (2)].en) ) ); }
+#line 459 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = new ExpressionNode( build_sizeOfexpr( (yyvsp[0].en) ) ); }
+#line 4725 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 53:
-
-/* Line 1806 of yacc.c  */
-#line 461 "parser.yy"
-    { (yyval.en) = new ExpressionNode( build_sizeOftype( (yyvsp[(3) - (4)].decl) ) ); }
+#line 461 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = new ExpressionNode( build_sizeOftype( (yyvsp[-1].decl) ) ); }
+#line 4731 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 54:
-
-/* Line 1806 of yacc.c  */
-#line 463 "parser.yy"
-    { (yyval.en) = new ExpressionNode( build_alignOfexpr( (yyvsp[(2) - (2)].en) ) ); }
+#line 463 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = new ExpressionNode( build_alignOfexpr( (yyvsp[0].en) ) ); }
+#line 4737 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 55:
-
-/* Line 1806 of yacc.c  */
-#line 465 "parser.yy"
-    { (yyval.en) = new ExpressionNode( build_alignOftype( (yyvsp[(3) - (4)].decl) ) ); }
+#line 465 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = new ExpressionNode( build_alignOftype( (yyvsp[-1].decl) ) ); }
+#line 4743 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 56:
-
-/* Line 1806 of yacc.c  */
-#line 467 "parser.yy"
-    { (yyval.en) = new ExpressionNode( build_offsetOf( (yyvsp[(3) - (6)].decl), build_varref( (yyvsp[(5) - (6)].tok) ) ) ); }
+#line 467 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = new ExpressionNode( build_offsetOf( (yyvsp[-3].decl), build_varref( (yyvsp[-1].tok) ) ) ); }
+#line 4749 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 57:
-
-/* Line 1806 of yacc.c  */
-#line 469 "parser.yy"
-    { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[(1) - (1)].tok) ), nullptr ) ); }
+#line 469 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[0].tok) ), nullptr ) ); }
+#line 4755 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 58:
-
-/* Line 1806 of yacc.c  */
-#line 471 "parser.yy"
-    { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].en) ) ); }
+#line 471 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[-3].tok) ), (yyvsp[-1].en) ) ); }
+#line 4761 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 59:
-
-/* Line 1806 of yacc.c  */
-#line 473 "parser.yy"
-    { (yyval.en) = new ExpressionNode( build_attrtype( build_varref( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].decl) ) ); }
+#line 473 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = new ExpressionNode( build_attrtype( build_varref( (yyvsp[-3].tok) ), (yyvsp[-1].decl) ) ); }
+#line 4767 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 60:
-
-/* Line 1806 of yacc.c  */
-#line 479 "parser.yy"
+#line 479 "parser.yy" /* yacc.c:1646  */
     { (yyval.op) = OperKinds::PointTo; }
+#line 4773 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 61:
-
-/* Line 1806 of yacc.c  */
-#line 480 "parser.yy"
+#line 480 "parser.yy" /* yacc.c:1646  */
     { (yyval.op) = OperKinds::AddressOf; }
+#line 4779 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 62:
-
-/* Line 1806 of yacc.c  */
-#line 486 "parser.yy"
+#line 486 "parser.yy" /* yacc.c:1646  */
     { (yyval.op) = OperKinds::UnPlus; }
+#line 4785 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 63:
-
-/* Line 1806 of yacc.c  */
-#line 487 "parser.yy"
+#line 487 "parser.yy" /* yacc.c:1646  */
     { (yyval.op) = OperKinds::UnMinus; }
+#line 4791 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 64:
-
-/* Line 1806 of yacc.c  */
-#line 488 "parser.yy"
+#line 488 "parser.yy" /* yacc.c:1646  */
     { (yyval.op) = OperKinds::Neg; }
+#line 4797 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 65:
-
-/* Line 1806 of yacc.c  */
-#line 489 "parser.yy"
+#line 489 "parser.yy" /* yacc.c:1646  */
     { (yyval.op) = OperKinds::BitNeg; }
+#line 4803 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 67:
-
-/* Line 1806 of yacc.c  */
-#line 495 "parser.yy"
-    { (yyval.en) = new ExpressionNode( build_cast( (yyvsp[(2) - (4)].decl), (yyvsp[(4) - (4)].en) ) ); }
+#line 495 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = new ExpressionNode( build_cast( (yyvsp[-2].decl), (yyvsp[0].en) ) ); }
+#line 4809 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 68:
-
-/* Line 1806 of yacc.c  */
-#line 497 "parser.yy"
-    { (yyval.en) = new ExpressionNode( build_cast( (yyvsp[(2) - (4)].decl), (yyvsp[(4) - (4)].en) ) ); }
+#line 497 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = new ExpressionNode( build_cast( (yyvsp[-2].decl), (yyvsp[0].en) ) ); }
+#line 4815 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 70:
-
-/* Line 1806 of yacc.c  */
-#line 503 "parser.yy"
-    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mul, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
+#line 503 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mul, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
+#line 4821 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 71:
-
-/* Line 1806 of yacc.c  */
-#line 505 "parser.yy"
-    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Div, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
+#line 505 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Div, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
+#line 4827 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 72:
-
-/* Line 1806 of yacc.c  */
-#line 507 "parser.yy"
-    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mod, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
+#line 507 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mod, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
+#line 4833 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 74:
-
-/* Line 1806 of yacc.c  */
-#line 513 "parser.yy"
-    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Plus, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
+#line 513 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Plus, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
+#line 4839 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 75:
-
-/* Line 1806 of yacc.c  */
-#line 515 "parser.yy"
-    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Minus, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
+#line 515 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Minus, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
+#line 4845 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 77:
-
-/* Line 1806 of yacc.c  */
-#line 521 "parser.yy"
-    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LShift, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
+#line 521 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LShift, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
+#line 4851 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 78:
-
-/* Line 1806 of yacc.c  */
-#line 523 "parser.yy"
-    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::RShift, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
+#line 523 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::RShift, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
+#line 4857 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 80:
-
-/* Line 1806 of yacc.c  */
-#line 529 "parser.yy"
-    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
+#line 529 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LThan, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
+#line 4863 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 81:
-
-/* Line 1806 of yacc.c  */
-#line 531 "parser.yy"
-    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
+#line 531 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GThan, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
+#line 4869 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 82:
-
-/* Line 1806 of yacc.c  */
-#line 533 "parser.yy"
-    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LEThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
+#line 533 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LEThan, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
+#line 4875 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 83:
-
-/* Line 1806 of yacc.c  */
-#line 535 "parser.yy"
-    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GEThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
+#line 535 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GEThan, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
+#line 4881 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 85:
-
-/* Line 1806 of yacc.c  */
-#line 541 "parser.yy"
-    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Eq, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
+#line 541 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Eq, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
+#line 4887 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 86:
-
-/* Line 1806 of yacc.c  */
-#line 543 "parser.yy"
-    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Neq, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
+#line 543 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Neq, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
+#line 4893 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 88:
-
-/* Line 1806 of yacc.c  */
-#line 549 "parser.yy"
-    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitAnd, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
+#line 549 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitAnd, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
+#line 4899 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 90:
-
-/* Line 1806 of yacc.c  */
-#line 555 "parser.yy"
-    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Xor, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
+#line 555 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Xor, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
+#line 4905 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 92:
-
-/* Line 1806 of yacc.c  */
-#line 561 "parser.yy"
-    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitOr, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
+#line 561 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitOr, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
+#line 4911 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 94:
-
-/* Line 1806 of yacc.c  */
-#line 567 "parser.yy"
-    { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en), true ) ); }
+#line 567 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[-2].en), (yyvsp[0].en), true ) ); }
+#line 4917 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 96:
-
-/* Line 1806 of yacc.c  */
-#line 573 "parser.yy"
-    { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en), false ) ); }
+#line 573 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[-2].en), (yyvsp[0].en), false ) ); }
+#line 4923 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 98:
-
-/* Line 1806 of yacc.c  */
-#line 579 "parser.yy"
-    { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (5)].en), (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].en) ) ); }
+#line 579 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[-4].en), (yyvsp[-2].en), (yyvsp[0].en) ) ); }
+#line 4929 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 99:
-
-/* Line 1806 of yacc.c  */
-#line 582 "parser.yy"
-    { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (4)].en), (yyvsp[(1) - (4)].en), (yyvsp[(4) - (4)].en) ) ); }
+#line 582 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[-3].en), (yyvsp[-3].en), (yyvsp[0].en) ) ); }
+#line 4935 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 100:
-
-/* Line 1806 of yacc.c  */
-#line 584 "parser.yy"
-    { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (5)].en), (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].en) ) ); }
+#line 584 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[-4].en), (yyvsp[-2].en), (yyvsp[0].en) ) ); }
+#line 4941 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 103:
-
-/* Line 1806 of yacc.c  */
-#line 595 "parser.yy"
-    { (yyval.en) = new ExpressionNode( build_binary_ptr( (yyvsp[(2) - (3)].op), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
+#line 595 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = new ExpressionNode( build_binary_ptr( (yyvsp[-1].op), (yyvsp[-2].en), (yyvsp[0].en) ) ); }
+#line 4947 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 104:
-
-/* Line 1806 of yacc.c  */
-#line 597 "parser.yy"
-    { (yyval.en) = ( (yyvsp[(2) - (2)].en) == 0 ) ? (yyvsp[(1) - (2)].en) : new ExpressionNode( build_binary_ptr( OperKinds::Assign, (yyvsp[(1) - (2)].en), (yyvsp[(2) - (2)].en) ) ); }
+#line 597 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = ( (yyvsp[0].en) == 0 ) ? (yyvsp[-1].en) : new ExpressionNode( build_binary_ptr( OperKinds::Assign, (yyvsp[-1].en), (yyvsp[0].en) ) ); }
+#line 4953 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 105:
-
-/* Line 1806 of yacc.c  */
-#line 602 "parser.yy"
+#line 602 "parser.yy" /* yacc.c:1646  */
     { (yyval.en) = nullptr; }
+#line 4959 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 107:
-
-/* Line 1806 of yacc.c  */
-#line 607 "parser.yy"
+#line 607 "parser.yy" /* yacc.c:1646  */
     { (yyval.op) = OperKinds::Assign; }
+#line 4965 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 108:
-
-/* Line 1806 of yacc.c  */
-#line 608 "parser.yy"
+#line 608 "parser.yy" /* yacc.c:1646  */
     { (yyval.op) = OperKinds::MulAssn; }
+#line 4971 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 109:
-
-/* Line 1806 of yacc.c  */
-#line 609 "parser.yy"
+#line 609 "parser.yy" /* yacc.c:1646  */
     { (yyval.op) = OperKinds::DivAssn; }
+#line 4977 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 110:
-
-/* Line 1806 of yacc.c  */
-#line 610 "parser.yy"
+#line 610 "parser.yy" /* yacc.c:1646  */
     { (yyval.op) = OperKinds::ModAssn; }
+#line 4983 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 111:
-
-/* Line 1806 of yacc.c  */
-#line 611 "parser.yy"
+#line 611 "parser.yy" /* yacc.c:1646  */
     { (yyval.op) = OperKinds::PlusAssn; }
+#line 4989 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 112:
-
-/* Line 1806 of yacc.c  */
-#line 612 "parser.yy"
+#line 612 "parser.yy" /* yacc.c:1646  */
     { (yyval.op) = OperKinds::MinusAssn; }
+#line 4995 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 113:
-
-/* Line 1806 of yacc.c  */
-#line 613 "parser.yy"
+#line 613 "parser.yy" /* yacc.c:1646  */
     { (yyval.op) = OperKinds::LSAssn; }
+#line 5001 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 114:
-
-/* Line 1806 of yacc.c  */
-#line 614 "parser.yy"
+#line 614 "parser.yy" /* yacc.c:1646  */
     { (yyval.op) = OperKinds::RSAssn; }
+#line 5007 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 115:
-
-/* Line 1806 of yacc.c  */
-#line 615 "parser.yy"
+#line 615 "parser.yy" /* yacc.c:1646  */
     { (yyval.op) = OperKinds::AndAssn; }
+#line 5013 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 116:
-
-/* Line 1806 of yacc.c  */
-#line 616 "parser.yy"
+#line 616 "parser.yy" /* yacc.c:1646  */
     { (yyval.op) = OperKinds::ERAssn; }
+#line 5019 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 117:
-
-/* Line 1806 of yacc.c  */
-#line 617 "parser.yy"
+#line 617 "parser.yy" /* yacc.c:1646  */
     { (yyval.op) = OperKinds::OrAssn; }
+#line 5025 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 118:
-
-/* Line 1806 of yacc.c  */
-#line 624 "parser.yy"
+#line 624 "parser.yy" /* yacc.c:1646  */
     { (yyval.en) = new ExpressionNode( build_tuple() ); }
+#line 5031 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 119:
-
-/* Line 1806 of yacc.c  */
-#line 626 "parser.yy"
-    { (yyval.en) = new ExpressionNode( build_tuple( (yyvsp[(3) - (5)].en) ) ); }
+#line 626 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = new ExpressionNode( build_tuple( (yyvsp[-2].en) ) ); }
+#line 5037 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 120:
-
-/* Line 1806 of yacc.c  */
-#line 628 "parser.yy"
-    { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(new ExpressionNode( nullptr ) )->set_last( (yyvsp[(4) - (6)].en) ) ) ); }
+#line 628 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(new ExpressionNode( nullptr ) )->set_last( (yyvsp[-2].en) ) ) ); }
+#line 5043 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 121:
-
-/* Line 1806 of yacc.c  */
-#line 630 "parser.yy"
-    { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(yyvsp[(3) - (7)].en)->set_last( (yyvsp[(5) - (7)].en) ) ) ); }
+#line 630 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(yyvsp[-4].en)->set_last( (yyvsp[-2].en) ) ) ); }
+#line 5049 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 123:
-
-/* Line 1806 of yacc.c  */
-#line 636 "parser.yy"
-    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); }
+#line 636 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = (ExpressionNode *)(yyvsp[-2].en)->set_last( (yyvsp[0].en) ); }
+#line 5055 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 125:
-
-/* Line 1806 of yacc.c  */
-#line 642 "parser.yy"
-    { (yyval.en) = new ExpressionNode( build_comma( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
+#line 642 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = new ExpressionNode( build_comma( (yyvsp[-2].en), (yyvsp[0].en) ) ); }
+#line 5061 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 126:
-
-/* Line 1806 of yacc.c  */
-#line 647 "parser.yy"
+#line 647 "parser.yy" /* yacc.c:1646  */
     { (yyval.en) = 0; }
+#line 5067 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 130:
-
-/* Line 1806 of yacc.c  */
-#line 656 "parser.yy"
-    { (yyval.sn) = (yyvsp[(1) - (1)].sn); }
+#line 656 "parser.yy" /* yacc.c:1646  */
+    { (yyval.sn) = (yyvsp[0].sn); }
+#line 5073 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 136:
-
-/* Line 1806 of yacc.c  */
-#line 663 "parser.yy"
+#line 663 "parser.yy" /* yacc.c:1646  */
     {
 			Token fn;
 			fn.str = new std::string( "^?{}" ); // location undefined
-			(yyval.sn) = new StatementNode( build_expr( new ExpressionNode( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( (yyvsp[(2) - (6)].en) )->set_last( (yyvsp[(4) - (6)].en) ) ) ) ) );
+			(yyval.sn) = new StatementNode( build_expr( new ExpressionNode( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( (yyvsp[-4].en) )->set_last( (yyvsp[-2].en) ) ) ) ) );
 		}
+#line 5083 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 137:
-
-/* Line 1806 of yacc.c  */
-#line 673 "parser.yy"
-    {
-			(yyval.sn) = (yyvsp[(4) - (4)].sn)->add_label( (yyvsp[(1) - (4)].tok) );
+#line 673 "parser.yy" /* yacc.c:1646  */
+    {
+			(yyval.sn) = (yyvsp[0].sn)->add_label( (yyvsp[-3].tok) );
 		}
+#line 5091 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 138:
-
-/* Line 1806 of yacc.c  */
-#line 680 "parser.yy"
+#line 680 "parser.yy" /* yacc.c:1646  */
     { (yyval.sn) = new StatementNode( build_compound( (StatementNode *)0 ) ); }
+#line 5097 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 139:
-
-/* Line 1806 of yacc.c  */
-#line 687 "parser.yy"
-    { (yyval.sn) = new StatementNode( build_compound( (yyvsp[(5) - (7)].sn) ) ); }
+#line 687 "parser.yy" /* yacc.c:1646  */
+    { (yyval.sn) = new StatementNode( build_compound( (yyvsp[-2].sn) ) ); }
+#line 5103 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 141:
-
-/* Line 1806 of yacc.c  */
-#line 693 "parser.yy"
-    { if ( (yyvsp[(1) - (3)].sn) != 0 ) { (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(3) - (3)].sn) ); (yyval.sn) = (yyvsp[(1) - (3)].sn); } }
+#line 693 "parser.yy" /* yacc.c:1646  */
+    { if ( (yyvsp[-2].sn) != 0 ) { (yyvsp[-2].sn)->set_last( (yyvsp[0].sn) ); (yyval.sn) = (yyvsp[-2].sn); } }
+#line 5109 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 142:
-
-/* Line 1806 of yacc.c  */
-#line 698 "parser.yy"
-    { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
+#line 698 "parser.yy" /* yacc.c:1646  */
+    { (yyval.sn) = new StatementNode( (yyvsp[0].decl) ); }
+#line 5115 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 143:
-
-/* Line 1806 of yacc.c  */
-#line 700 "parser.yy"
+#line 700 "parser.yy" /* yacc.c:1646  */
     {	// mark all fields in list
-			for ( DeclarationNode *iter = (yyvsp[(2) - (2)].decl); iter != NULL; iter = (DeclarationNode *)iter->get_next() )
+			for ( DeclarationNode *iter = (yyvsp[0].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
 				iter->set_extension( true );
-			(yyval.sn) = new StatementNode( (yyvsp[(2) - (2)].decl) );
+			(yyval.sn) = new StatementNode( (yyvsp[0].decl) );
 		}
+#line 5125 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 144:
-
-/* Line 1806 of yacc.c  */
-#line 706 "parser.yy"
-    { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
+#line 706 "parser.yy" /* yacc.c:1646  */
+    { (yyval.sn) = new StatementNode( (yyvsp[0].decl) ); }
+#line 5131 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 147:
-
-/* Line 1806 of yacc.c  */
-#line 713 "parser.yy"
-    { if ( (yyvsp[(1) - (2)].sn) != 0 ) { (yyvsp[(1) - (2)].sn)->set_last( (yyvsp[(2) - (2)].sn) ); (yyval.sn) = (yyvsp[(1) - (2)].sn); } }
+#line 713 "parser.yy" /* yacc.c:1646  */
+    { if ( (yyvsp[-1].sn) != 0 ) { (yyvsp[-1].sn)->set_last( (yyvsp[0].sn) ); (yyval.sn) = (yyvsp[-1].sn); } }
+#line 5137 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 148:
-
-/* Line 1806 of yacc.c  */
-#line 718 "parser.yy"
-    { (yyval.sn) = new StatementNode( build_expr( (yyvsp[(1) - (2)].en) ) ); }
+#line 718 "parser.yy" /* yacc.c:1646  */
+    { (yyval.sn) = new StatementNode( build_expr( (yyvsp[-1].en) ) ); }
+#line 5143 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 149:
-
-/* Line 1806 of yacc.c  */
-#line 724 "parser.yy"
-    { (yyval.sn) = new StatementNode( build_if( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn), nullptr ) ); }
+#line 724 "parser.yy" /* yacc.c:1646  */
+    { (yyval.sn) = new StatementNode( build_if( (yyvsp[-2].en), (yyvsp[0].sn), nullptr ) ); }
+#line 5149 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 150:
-
-/* Line 1806 of yacc.c  */
-#line 726 "parser.yy"
-    { (yyval.sn) = new StatementNode( build_if( (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].sn), (yyvsp[(7) - (7)].sn) ) ); }
+#line 726 "parser.yy" /* yacc.c:1646  */
+    { (yyval.sn) = new StatementNode( build_if( (yyvsp[-4].en), (yyvsp[-2].sn), (yyvsp[0].sn) ) ); }
+#line 5155 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 151:
-
-/* Line 1806 of yacc.c  */
-#line 728 "parser.yy"
-    { (yyval.sn) = new StatementNode( build_switch( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
+#line 728 "parser.yy" /* yacc.c:1646  */
+    { (yyval.sn) = new StatementNode( build_switch( (yyvsp[-2].en), (yyvsp[0].sn) ) ); }
+#line 5161 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 152:
-
-/* Line 1806 of yacc.c  */
-#line 730 "parser.yy"
-    {
-			StatementNode *sw = new StatementNode( build_switch( (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ) );
+#line 730 "parser.yy" /* yacc.c:1646  */
+    {
+			StatementNode *sw = new StatementNode( build_switch( (yyvsp[-6].en), (yyvsp[-1].sn) ) );
 			// The semantics of the declaration list is changed to include associated initialization, which is performed
 			// *before* the transfer to the appropriate case clause by hoisting the declarations into a compound
@@ -5743,3408 +5170,2946 @@
 			// therefore, are removed from the grammar even though C allows it. The change also applies to choose
 			// statement.
-			(yyval.sn) = (yyvsp[(7) - (9)].decl) != 0 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( (yyvsp[(7) - (9)].decl) ))->set_last( sw )) ) ) : sw;
+			(yyval.sn) = (yyvsp[-2].decl) != 0 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( (yyvsp[-2].decl) ))->set_last( sw )) ) ) : sw;
 		}
+#line 5175 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 153:
-
-/* Line 1806 of yacc.c  */
-#line 740 "parser.yy"
-    { (yyval.sn) = new StatementNode( build_switch( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
+#line 740 "parser.yy" /* yacc.c:1646  */
+    { (yyval.sn) = new StatementNode( build_switch( (yyvsp[-2].en), (yyvsp[0].sn) ) ); }
+#line 5181 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 154:
-
-/* Line 1806 of yacc.c  */
-#line 742 "parser.yy"
-    {
-			StatementNode *sw = new StatementNode( build_switch( (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ) );
-			(yyval.sn) = (yyvsp[(7) - (9)].decl) != 0 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( (yyvsp[(7) - (9)].decl) ))->set_last( sw )) ) ) : sw;
+#line 742 "parser.yy" /* yacc.c:1646  */
+    {
+			StatementNode *sw = new StatementNode( build_switch( (yyvsp[-6].en), (yyvsp[-1].sn) ) );
+			(yyval.sn) = (yyvsp[-2].decl) != 0 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( (yyvsp[-2].decl) ))->set_last( sw )) ) ) : sw;
 		}
+#line 5190 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 155:
-
-/* Line 1806 of yacc.c  */
-#line 752 "parser.yy"
-    { (yyval.en) = (yyvsp[(1) - (1)].en); }
+#line 752 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = (yyvsp[0].en); }
+#line 5196 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 156:
-
-/* Line 1806 of yacc.c  */
-#line 754 "parser.yy"
-    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
+#line 754 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[-2].en), (yyvsp[0].en) ) ); }
+#line 5202 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 158:
-
-/* Line 1806 of yacc.c  */
-#line 759 "parser.yy"
-    { (yyval.sn) = new StatementNode( build_case( (yyvsp[(1) - (1)].en) ) ); }
+#line 759 "parser.yy" /* yacc.c:1646  */
+    { (yyval.sn) = new StatementNode( build_case( (yyvsp[0].en) ) ); }
+#line 5208 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 159:
-
-/* Line 1806 of yacc.c  */
-#line 761 "parser.yy"
-    { (yyval.sn) = (StatementNode *)((yyvsp[(1) - (3)].sn)->set_last( new StatementNode( build_case( (yyvsp[(3) - (3)].en) ) ) ) ); }
+#line 761 "parser.yy" /* yacc.c:1646  */
+    { (yyval.sn) = (StatementNode *)((yyvsp[-2].sn)->set_last( new StatementNode( build_case( (yyvsp[0].en) ) ) ) ); }
+#line 5214 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 160:
-
-/* Line 1806 of yacc.c  */
-#line 765 "parser.yy"
-    { (yyval.sn) = (yyvsp[(2) - (3)].sn); }
+#line 765 "parser.yy" /* yacc.c:1646  */
+    { (yyval.sn) = (yyvsp[-1].sn); }
+#line 5220 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 161:
-
-/* Line 1806 of yacc.c  */
-#line 766 "parser.yy"
+#line 766 "parser.yy" /* yacc.c:1646  */
     { (yyval.sn) = new StatementNode( build_default() ); }
+#line 5226 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 163:
-
-/* Line 1806 of yacc.c  */
-#line 772 "parser.yy"
-    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (2)].sn)->set_last( (yyvsp[(2) - (2)].sn) )); }
+#line 772 "parser.yy" /* yacc.c:1646  */
+    { (yyval.sn) = (StatementNode *)( (yyvsp[-1].sn)->set_last( (yyvsp[0].sn) )); }
+#line 5232 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 164:
-
-/* Line 1806 of yacc.c  */
-#line 776 "parser.yy"
-    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(2) - (2)].sn) ) ) ); }
+#line 776 "parser.yy" /* yacc.c:1646  */
+    { (yyval.sn) = (yyvsp[-1].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[0].sn) ) ) ); }
+#line 5238 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 165:
-
-/* Line 1806 of yacc.c  */
-#line 781 "parser.yy"
+#line 781 "parser.yy" /* yacc.c:1646  */
     { (yyval.sn) = 0; }
+#line 5244 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 167:
-
-/* Line 1806 of yacc.c  */
-#line 787 "parser.yy"
-    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(2) - (2)].sn) ) ) ); }
+#line 787 "parser.yy" /* yacc.c:1646  */
+    { (yyval.sn) = (yyvsp[-1].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[0].sn) ) ) ); }
+#line 5250 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 168:
-
-/* Line 1806 of yacc.c  */
-#line 789 "parser.yy"
-    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(2) - (3)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(3) - (3)].sn) ) ) ) ) ); }
+#line 789 "parser.yy" /* yacc.c:1646  */
+    { (yyval.sn) = (StatementNode *)( (yyvsp[-2].sn)->set_last( (yyvsp[-1].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[0].sn) ) ) ) ) ); }
+#line 5256 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 169:
-
-/* Line 1806 of yacc.c  */
-#line 794 "parser.yy"
+#line 794 "parser.yy" /* yacc.c:1646  */
     { (yyval.sn) = 0; }
+#line 5262 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 171:
-
-/* Line 1806 of yacc.c  */
-#line 800 "parser.yy"
-    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
+#line 800 "parser.yy" /* yacc.c:1646  */
+    { (yyval.sn) = (yyvsp[-1].sn)->append_last_case( (yyvsp[0].sn) ); }
+#line 5268 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 172:
-
-/* Line 1806 of yacc.c  */
-#line 802 "parser.yy"
-    { (yyval.sn) = (yyvsp[(1) - (3)].sn)->append_last_case( new StatementNode( build_compound( (StatementNode *)(yyvsp[(2) - (3)].sn)->set_last( (yyvsp[(3) - (3)].sn) ) ) ) ); }
+#line 802 "parser.yy" /* yacc.c:1646  */
+    { (yyval.sn) = (yyvsp[-2].sn)->append_last_case( new StatementNode( build_compound( (StatementNode *)(yyvsp[-1].sn)->set_last( (yyvsp[0].sn) ) ) ) ); }
+#line 5274 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 173:
-
-/* Line 1806 of yacc.c  */
-#line 804 "parser.yy"
-    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); }
+#line 804 "parser.yy" /* yacc.c:1646  */
+    { (yyval.sn) = (StatementNode *)( (yyvsp[-2].sn)->set_last( (yyvsp[-1].sn)->append_last_case( (yyvsp[0].sn) ))); }
+#line 5280 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 174:
-
-/* Line 1806 of yacc.c  */
-#line 806 "parser.yy"
-    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (4)].sn)->set_last( (yyvsp[(2) - (4)].sn)->append_last_case( new StatementNode( build_compound( (StatementNode *)(yyvsp[(3) - (4)].sn)->set_last( (yyvsp[(4) - (4)].sn) ) ) ) ) ) ); }
+#line 806 "parser.yy" /* yacc.c:1646  */
+    { (yyval.sn) = (StatementNode *)( (yyvsp[-3].sn)->set_last( (yyvsp[-2].sn)->append_last_case( new StatementNode( build_compound( (StatementNode *)(yyvsp[-1].sn)->set_last( (yyvsp[0].sn) ) ) ) ) ) ); }
+#line 5286 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 175:
-
-/* Line 1806 of yacc.c  */
-#line 811 "parser.yy"
+#line 811 "parser.yy" /* yacc.c:1646  */
     { (yyval.sn) = new StatementNode( build_branch( "", BranchStmt::Break ) ); }
+#line 5292 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 177:
-
-/* Line 1806 of yacc.c  */
-#line 817 "parser.yy"
+#line 817 "parser.yy" /* yacc.c:1646  */
     { (yyval.sn) = 0; }
+#line 5298 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 178:
-
-/* Line 1806 of yacc.c  */
-#line 819 "parser.yy"
+#line 819 "parser.yy" /* yacc.c:1646  */
     { (yyval.sn) = 0; }
+#line 5304 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 179:
-
-/* Line 1806 of yacc.c  */
-#line 824 "parser.yy"
-    { (yyval.sn) = new StatementNode( build_while( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
+#line 824 "parser.yy" /* yacc.c:1646  */
+    { (yyval.sn) = new StatementNode( build_while( (yyvsp[-2].en), (yyvsp[0].sn) ) ); }
+#line 5310 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 180:
-
-/* Line 1806 of yacc.c  */
-#line 826 "parser.yy"
-    { (yyval.sn) = new StatementNode( build_while( (yyvsp[(5) - (7)].en), (yyvsp[(2) - (7)].sn) ) ); }
+#line 826 "parser.yy" /* yacc.c:1646  */
+    { (yyval.sn) = new StatementNode( build_while( (yyvsp[-2].en), (yyvsp[-5].sn) ) ); }
+#line 5316 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 181:
-
-/* Line 1806 of yacc.c  */
-#line 828 "parser.yy"
-    { (yyval.sn) = new StatementNode( build_for( (yyvsp[(4) - (6)].fctl), (yyvsp[(6) - (6)].sn) ) ); }
+#line 828 "parser.yy" /* yacc.c:1646  */
+    { (yyval.sn) = new StatementNode( build_for( (yyvsp[-2].fctl), (yyvsp[0].sn) ) ); }
+#line 5322 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 182:
-
-/* Line 1806 of yacc.c  */
-#line 833 "parser.yy"
-    { (yyval.fctl) = new ForCtl( (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].en) ); }
+#line 833 "parser.yy" /* yacc.c:1646  */
+    { (yyval.fctl) = new ForCtl( (yyvsp[-5].en), (yyvsp[-2].en), (yyvsp[0].en) ); }
+#line 5328 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 183:
-
-/* Line 1806 of yacc.c  */
-#line 835 "parser.yy"
-    { (yyval.fctl) = new ForCtl( (yyvsp[(1) - (4)].decl), (yyvsp[(2) - (4)].en), (yyvsp[(4) - (4)].en) ); }
+#line 835 "parser.yy" /* yacc.c:1646  */
+    { (yyval.fctl) = new ForCtl( (yyvsp[-3].decl), (yyvsp[-2].en), (yyvsp[0].en) ); }
+#line 5334 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 184:
-
-/* Line 1806 of yacc.c  */
-#line 840 "parser.yy"
-    { (yyval.sn) = new StatementNode( build_branch( *(yyvsp[(2) - (3)].tok), BranchStmt::Goto ) ); }
+#line 840 "parser.yy" /* yacc.c:1646  */
+    { (yyval.sn) = new StatementNode( build_branch( assign_strptr((yyvsp[-1].tok)), BranchStmt::Goto ) ); }
+#line 5340 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 185:
-
-/* Line 1806 of yacc.c  */
-#line 844 "parser.yy"
-    { (yyval.sn) = new StatementNode( build_computedgoto( (yyvsp[(3) - (4)].en) ) ); }
+#line 844 "parser.yy" /* yacc.c:1646  */
+    { (yyval.sn) = new StatementNode( build_computedgoto( (yyvsp[-1].en) ) ); }
+#line 5346 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 186:
-
-/* Line 1806 of yacc.c  */
-#line 847 "parser.yy"
+#line 847 "parser.yy" /* yacc.c:1646  */
     { (yyval.sn) = new StatementNode( build_branch( "", BranchStmt::Continue ) ); }
+#line 5352 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 187:
-
-/* Line 1806 of yacc.c  */
-#line 851 "parser.yy"
-    { (yyval.sn) = new StatementNode( build_branch( *(yyvsp[(2) - (3)].tok), BranchStmt::Continue ) ); delete (yyvsp[(2) - (3)].tok); }
+#line 851 "parser.yy" /* yacc.c:1646  */
+    { (yyval.sn) = new StatementNode( build_branch( assign_strptr((yyvsp[-1].tok)), BranchStmt::Continue ) ); }
+#line 5358 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 188:
-
-/* Line 1806 of yacc.c  */
-#line 854 "parser.yy"
+#line 854 "parser.yy" /* yacc.c:1646  */
     { (yyval.sn) = new StatementNode( build_branch( "", BranchStmt::Break ) ); }
+#line 5364 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 189:
-
-/* Line 1806 of yacc.c  */
-#line 858 "parser.yy"
-    { (yyval.sn) = new StatementNode( build_branch( *(yyvsp[(2) - (3)].tok), BranchStmt::Break ) ); delete (yyvsp[(2) - (3)].tok); }
+#line 858 "parser.yy" /* yacc.c:1646  */
+    { (yyval.sn) = new StatementNode( build_branch( assign_strptr((yyvsp[-1].tok)), BranchStmt::Break ) ); }
+#line 5370 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 190:
-
-/* Line 1806 of yacc.c  */
-#line 860 "parser.yy"
-    { (yyval.sn) = new StatementNode( build_return( (yyvsp[(2) - (3)].en) ) ); }
+#line 860 "parser.yy" /* yacc.c:1646  */
+    { (yyval.sn) = new StatementNode( build_return( (yyvsp[-1].en) ) ); }
+#line 5376 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 191:
-
-/* Line 1806 of yacc.c  */
-#line 862 "parser.yy"
-    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (3)].en) ) ); }
+#line 862 "parser.yy" /* yacc.c:1646  */
+    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[-1].en) ) ); }
+#line 5382 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 192:
-
-/* Line 1806 of yacc.c  */
-#line 864 "parser.yy"
-    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (3)].en) ) ); }
+#line 864 "parser.yy" /* yacc.c:1646  */
+    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[-1].en) ) ); }
+#line 5388 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 193:
-
-/* Line 1806 of yacc.c  */
-#line 866 "parser.yy"
-    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (5)].en) ) ); }
+#line 866 "parser.yy" /* yacc.c:1646  */
+    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[-3].en) ) ); }
+#line 5394 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 194:
-
-/* Line 1806 of yacc.c  */
-#line 871 "parser.yy"
-    { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (3)].sn), (yyvsp[(3) - (3)].sn), 0 ) ); }
+#line 871 "parser.yy" /* yacc.c:1646  */
+    { (yyval.sn) = new StatementNode( build_try( (yyvsp[-1].sn), (yyvsp[0].sn), 0 ) ); }
+#line 5400 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 195:
-
-/* Line 1806 of yacc.c  */
-#line 873 "parser.yy"
-    { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (3)].sn), 0, (yyvsp[(3) - (3)].sn) ) ); }
+#line 873 "parser.yy" /* yacc.c:1646  */
+    { (yyval.sn) = new StatementNode( build_try( (yyvsp[-1].sn), 0, (yyvsp[0].sn) ) ); }
+#line 5406 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 196:
-
-/* Line 1806 of yacc.c  */
-#line 875 "parser.yy"
-    { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (4)].sn), (yyvsp[(3) - (4)].sn), (yyvsp[(4) - (4)].sn) ) ); }
+#line 875 "parser.yy" /* yacc.c:1646  */
+    { (yyval.sn) = new StatementNode( build_try( (yyvsp[-2].sn), (yyvsp[-1].sn), (yyvsp[0].sn) ) ); }
+#line 5412 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 198:
-
-/* Line 1806 of yacc.c  */
-#line 882 "parser.yy"
-    { (yyval.sn) = new StatementNode( build_catch( 0, (yyvsp[(5) - (5)].sn), true ) ); }
+#line 882 "parser.yy" /* yacc.c:1646  */
+    { (yyval.sn) = new StatementNode( build_catch( 0, (yyvsp[0].sn), true ) ); }
+#line 5418 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 199:
-
-/* Line 1806 of yacc.c  */
-#line 884 "parser.yy"
-    { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (6)].sn)->set_last( new StatementNode( build_catch( 0, (yyvsp[(6) - (6)].sn), true ) ) ); }
+#line 884 "parser.yy" /* yacc.c:1646  */
+    { (yyval.sn) = (StatementNode *)(yyvsp[-5].sn)->set_last( new StatementNode( build_catch( 0, (yyvsp[0].sn), true ) ) ); }
+#line 5424 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 200:
-
-/* Line 1806 of yacc.c  */
-#line 886 "parser.yy"
-    { (yyval.sn) = new StatementNode( build_catch( 0, (yyvsp[(5) - (5)].sn), true ) ); }
+#line 886 "parser.yy" /* yacc.c:1646  */
+    { (yyval.sn) = new StatementNode( build_catch( 0, (yyvsp[0].sn), true ) ); }
+#line 5430 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 201:
-
-/* Line 1806 of yacc.c  */
-#line 888 "parser.yy"
-    { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (6)].sn)->set_last( new StatementNode( build_catch( 0, (yyvsp[(6) - (6)].sn), true ) ) ); }
+#line 888 "parser.yy" /* yacc.c:1646  */
+    { (yyval.sn) = (StatementNode *)(yyvsp[-5].sn)->set_last( new StatementNode( build_catch( 0, (yyvsp[0].sn), true ) ) ); }
+#line 5436 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 202:
-
-/* Line 1806 of yacc.c  */
-#line 893 "parser.yy"
-    { (yyval.sn) = new StatementNode( build_catch( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ) ); }
+#line 893 "parser.yy" /* yacc.c:1646  */
+    { (yyval.sn) = new StatementNode( build_catch( (yyvsp[-4].decl), (yyvsp[-1].sn) ) ); }
+#line 5442 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 203:
-
-/* Line 1806 of yacc.c  */
-#line 895 "parser.yy"
-    { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (10)].sn)->set_last( new StatementNode( build_catch( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ) ); }
+#line 895 "parser.yy" /* yacc.c:1646  */
+    { (yyval.sn) = (StatementNode *)(yyvsp[-9].sn)->set_last( new StatementNode( build_catch( (yyvsp[-4].decl), (yyvsp[-1].sn) ) ) ); }
+#line 5448 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 204:
-
-/* Line 1806 of yacc.c  */
-#line 897 "parser.yy"
-    { (yyval.sn) = new StatementNode( build_catch( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ) ); }
+#line 897 "parser.yy" /* yacc.c:1646  */
+    { (yyval.sn) = new StatementNode( build_catch( (yyvsp[-4].decl), (yyvsp[-1].sn) ) ); }
+#line 5454 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 205:
-
-/* Line 1806 of yacc.c  */
-#line 899 "parser.yy"
-    { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (10)].sn)->set_last( new StatementNode( build_catch( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ) ); }
+#line 899 "parser.yy" /* yacc.c:1646  */
+    { (yyval.sn) = (StatementNode *)(yyvsp[-9].sn)->set_last( new StatementNode( build_catch( (yyvsp[-4].decl), (yyvsp[-1].sn) ) ) ); }
+#line 5460 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 206:
-
-/* Line 1806 of yacc.c  */
-#line 904 "parser.yy"
-    {
-			(yyval.sn) = new StatementNode( build_finally( (yyvsp[(2) - (2)].sn) ) );
+#line 904 "parser.yy" /* yacc.c:1646  */
+    {
+			(yyval.sn) = new StatementNode( build_finally( (yyvsp[0].sn) ) );
 		}
+#line 5468 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 208:
-
-/* Line 1806 of yacc.c  */
-#line 917 "parser.yy"
+#line 917 "parser.yy" /* yacc.c:1646  */
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
-			(yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) );
+			(yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) );
 		}
+#line 5477 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 209:
-
-/* Line 1806 of yacc.c  */
-#line 922 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
+#line 922 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) ); }
+#line 5483 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 210:
-
-/* Line 1806 of yacc.c  */
-#line 924 "parser.yy"
+#line 924 "parser.yy" /* yacc.c:1646  */
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
-			(yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) );
+			(yyval.decl) = (yyvsp[-1].decl)->addName( (yyvsp[0].tok) );
 		}
+#line 5492 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 212:
-
-/* Line 1806 of yacc.c  */
-#line 933 "parser.yy"
-    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (6)].flag), (yyvsp[(4) - (6)].constant), 0 ) ); }
+#line 933 "parser.yy" /* yacc.c:1646  */
+    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[-4].flag), (yyvsp[-2].constant), 0 ) ); }
+#line 5498 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 213:
-
-/* Line 1806 of yacc.c  */
-#line 935 "parser.yy"
-    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (8)].flag), (yyvsp[(4) - (8)].constant), (yyvsp[(6) - (8)].en) ) ); }
+#line 935 "parser.yy" /* yacc.c:1646  */
+    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[-6].flag), (yyvsp[-4].constant), (yyvsp[-2].en) ) ); }
+#line 5504 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 214:
-
-/* Line 1806 of yacc.c  */
-#line 937 "parser.yy"
-    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (10)].flag), (yyvsp[(4) - (10)].constant), (yyvsp[(6) - (10)].en), (yyvsp[(8) - (10)].en) ) ); }
+#line 937 "parser.yy" /* yacc.c:1646  */
+    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[-8].flag), (yyvsp[-6].constant), (yyvsp[-4].en), (yyvsp[-2].en) ) ); }
+#line 5510 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 215:
-
-/* Line 1806 of yacc.c  */
-#line 939 "parser.yy"
-    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (12)].flag), (yyvsp[(4) - (12)].constant), (yyvsp[(6) - (12)].en), (yyvsp[(8) - (12)].en), (yyvsp[(10) - (12)].en) ) ); }
+#line 939 "parser.yy" /* yacc.c:1646  */
+    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[-10].flag), (yyvsp[-8].constant), (yyvsp[-6].en), (yyvsp[-4].en), (yyvsp[-2].en) ) ); }
+#line 5516 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 216:
-
-/* Line 1806 of yacc.c  */
-#line 941 "parser.yy"
-    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (14)].flag), (yyvsp[(5) - (14)].constant), 0, (yyvsp[(8) - (14)].en), (yyvsp[(10) - (14)].en), (yyvsp[(12) - (14)].label) ) ); }
+#line 941 "parser.yy" /* yacc.c:1646  */
+    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[-12].flag), (yyvsp[-9].constant), 0, (yyvsp[-6].en), (yyvsp[-4].en), (yyvsp[-2].label) ) ); }
+#line 5522 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 217:
-
-/* Line 1806 of yacc.c  */
-#line 946 "parser.yy"
+#line 946 "parser.yy" /* yacc.c:1646  */
     { (yyval.flag) = false; }
+#line 5528 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 218:
-
-/* Line 1806 of yacc.c  */
-#line 948 "parser.yy"
+#line 948 "parser.yy" /* yacc.c:1646  */
     { (yyval.flag) = true; }
+#line 5534 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 219:
-
-/* Line 1806 of yacc.c  */
-#line 953 "parser.yy"
+#line 953 "parser.yy" /* yacc.c:1646  */
     { (yyval.en) = 0; }
+#line 5540 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 222:
-
-/* Line 1806 of yacc.c  */
-#line 960 "parser.yy"
-    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); }
+#line 960 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = (ExpressionNode *)(yyvsp[-2].en)->set_last( (yyvsp[0].en) ); }
+#line 5546 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 223:
-
-/* Line 1806 of yacc.c  */
-#line 965 "parser.yy"
-    { (yyval.en) = new ExpressionNode( build_asmexpr( 0, (yyvsp[(1) - (4)].constant), (yyvsp[(3) - (4)].en) ) ); }
+#line 965 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = new ExpressionNode( build_asmexpr( 0, (yyvsp[-3].constant), (yyvsp[-1].en) ) ); }
+#line 5552 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 224:
-
-/* Line 1806 of yacc.c  */
-#line 967 "parser.yy"
-    { (yyval.en) = new ExpressionNode( build_asmexpr( (yyvsp[(2) - (7)].en), (yyvsp[(4) - (7)].constant), (yyvsp[(6) - (7)].en) ) ); }
+#line 967 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = new ExpressionNode( build_asmexpr( (yyvsp[-5].en), (yyvsp[-3].constant), (yyvsp[-1].en) ) ); }
+#line 5558 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 225:
-
-/* Line 1806 of yacc.c  */
-#line 972 "parser.yy"
+#line 972 "parser.yy" /* yacc.c:1646  */
     { (yyval.en) = 0; }
+#line 5564 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 226:
-
-/* Line 1806 of yacc.c  */
-#line 974 "parser.yy"
-    { (yyval.en) = new ExpressionNode( (yyvsp[(1) - (1)].constant) ); }
+#line 974 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = new ExpressionNode( (yyvsp[0].constant) ); }
+#line 5570 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 227:
-
-/* Line 1806 of yacc.c  */
-#line 976 "parser.yy"
-    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( new ExpressionNode( (yyvsp[(3) - (3)].constant) ) ); }
+#line 976 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = (ExpressionNode *)(yyvsp[-2].en)->set_last( new ExpressionNode( (yyvsp[0].constant) ) ); }
+#line 5576 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 228:
-
-/* Line 1806 of yacc.c  */
-#line 981 "parser.yy"
-    { (yyval.label) = new LabelNode(); (yyval.label)->labels.push_back( *(yyvsp[(1) - (1)].tok) ); }
+#line 981 "parser.yy" /* yacc.c:1646  */
+    { (yyval.label) = new LabelNode(); (yyval.label)->labels.push_back( assign_strptr((yyvsp[0].tok)) ); }
+#line 5582 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 229:
-
-/* Line 1806 of yacc.c  */
-#line 983 "parser.yy"
-    { (yyval.label) = (yyvsp[(1) - (3)].label); (yyvsp[(1) - (3)].label)->labels.push_back( *(yyvsp[(3) - (3)].tok) ); }
+#line 983 "parser.yy" /* yacc.c:1646  */
+    { (yyval.label) = (yyvsp[-2].label); (yyvsp[-2].label)->labels.push_back( assign_strptr((yyvsp[0].tok)) ); }
+#line 5588 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 230:
-
-/* Line 1806 of yacc.c  */
-#line 990 "parser.yy"
+#line 990 "parser.yy" /* yacc.c:1646  */
     { (yyval.decl) = 0; }
+#line 5594 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 233:
-
-/* Line 1806 of yacc.c  */
-#line 997 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
+#line 997 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-2].decl)->appendList( (yyvsp[0].decl) ); }
+#line 5600 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 234:
-
-/* Line 1806 of yacc.c  */
-#line 1002 "parser.yy"
+#line 1002 "parser.yy" /* yacc.c:1646  */
     { (yyval.decl) = 0; }
+#line 5606 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 237:
-
-/* Line 1806 of yacc.c  */
-#line 1009 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
+#line 1009 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-2].decl)->appendList( (yyvsp[0].decl) ); }
+#line 5612 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 242:
-
-/* Line 1806 of yacc.c  */
-#line 1023 "parser.yy"
+#line 1023 "parser.yy" /* yacc.c:1646  */
     {}
+#line 5618 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 243:
-
-/* Line 1806 of yacc.c  */
-#line 1024 "parser.yy"
+#line 1024 "parser.yy" /* yacc.c:1646  */
     {}
+#line 5624 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 251:
-
-/* Line 1806 of yacc.c  */
-#line 1053 "parser.yy"
+#line 1053 "parser.yy" /* yacc.c:1646  */
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
-			(yyval.decl) = (yyvsp[(1) - (2)].decl)->addInitializer( (yyvsp[(2) - (2)].in) );
+			(yyval.decl) = (yyvsp[-1].decl)->addInitializer( (yyvsp[0].in) );
 		}
+#line 5633 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 252:
-
-/* Line 1806 of yacc.c  */
-#line 1060 "parser.yy"
+#line 1060 "parser.yy" /* yacc.c:1646  */
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
-			(yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addInitializer( (yyvsp[(3) - (3)].in) );;
+			(yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[-2].decl) )->addInitializer( (yyvsp[0].in) );;
 		}
+#line 5642 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 253:
-
-/* Line 1806 of yacc.c  */
-#line 1065 "parser.yy"
-    {
-			typedefTable.addToEnclosingScope( *(yyvsp[(5) - (6)].tok), TypedefTable::ID );
-			(yyval.decl) = (yyvsp[(1) - (6)].decl)->appendList( (yyvsp[(1) - (6)].decl)->cloneType( (yyvsp[(5) - (6)].tok) )->addInitializer( (yyvsp[(6) - (6)].in) ) );
+#line 1065 "parser.yy" /* yacc.c:1646  */
+    {
+			typedefTable.addToEnclosingScope( *(yyvsp[-1].tok), TypedefTable::ID );
+			(yyval.decl) = (yyvsp[-5].decl)->appendList( (yyvsp[-5].decl)->cloneType( (yyvsp[-1].tok) )->addInitializer( (yyvsp[0].in) ) );
 		}
+#line 5651 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 254:
-
-/* Line 1806 of yacc.c  */
-#line 1075 "parser.yy"
-    {
-			typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
-			(yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) );
+#line 1075 "parser.yy" /* yacc.c:1646  */
+    {
+			typedefTable.setNextIdentifier( *(yyvsp[-1].tok) );
+			(yyval.decl) = (yyvsp[-2].decl)->addName( (yyvsp[-1].tok) );
 		}
+#line 5660 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 255:
-
-/* Line 1806 of yacc.c  */
-#line 1080 "parser.yy"
-    {
-			typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
-			(yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) );
+#line 1080 "parser.yy" /* yacc.c:1646  */
+    {
+			typedefTable.setNextIdentifier( *(yyvsp[-1].tok) );
+			(yyval.decl) = (yyvsp[-2].decl)->addName( (yyvsp[-1].tok) );
 		}
+#line 5669 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 256:
-
-/* Line 1806 of yacc.c  */
-#line 1085 "parser.yy"
-    {
-			typedefTable.setNextIdentifier( *(yyvsp[(3) - (4)].tok) );
-			(yyval.decl) = (yyvsp[(2) - (4)].decl)->addQualifiers( (yyvsp[(1) - (4)].decl) )->addName( (yyvsp[(3) - (4)].tok) );
+#line 1085 "parser.yy" /* yacc.c:1646  */
+    {
+			typedefTable.setNextIdentifier( *(yyvsp[-1].tok) );
+			(yyval.decl) = (yyvsp[-2].decl)->addQualifiers( (yyvsp[-3].decl) )->addName( (yyvsp[-1].tok) );
 		}
+#line 5678 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 257:
-
-/* Line 1806 of yacc.c  */
-#line 1093 "parser.yy"
+#line 1093 "parser.yy" /* yacc.c:1646  */
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
-			(yyval.decl) = (yyvsp[(1) - (1)].decl);
+			(yyval.decl) = (yyvsp[0].decl);
 		}
+#line 5687 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 258:
-
-/* Line 1806 of yacc.c  */
-#line 1098 "parser.yy"
+#line 1098 "parser.yy" /* yacc.c:1646  */
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
-			(yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) );
+			(yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) );
 		}
+#line 5696 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 259:
-
-/* Line 1806 of yacc.c  */
-#line 1103 "parser.yy"
+#line 1103 "parser.yy" /* yacc.c:1646  */
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
-			(yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) );
+			(yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) );
 		}
+#line 5705 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 260:
-
-/* Line 1806 of yacc.c  */
-#line 1108 "parser.yy"
+#line 1108 "parser.yy" /* yacc.c:1646  */
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
-			(yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(2) - (3)].decl) );
+			(yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-2].decl) )->addQualifiers( (yyvsp[-1].decl) );
 		}
+#line 5714 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 261:
-
-/* Line 1806 of yacc.c  */
-#line 1113 "parser.yy"
-    {
-			typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
-			(yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(1) - (5)].decl)->cloneType( (yyvsp[(5) - (5)].tok) ) );
+#line 1113 "parser.yy" /* yacc.c:1646  */
+    {
+			typedefTable.addToEnclosingScope( *(yyvsp[0].tok), TypedefTable::ID );
+			(yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[-4].decl)->cloneType( (yyvsp[0].tok) ) );
 		}
+#line 5723 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 262:
-
-/* Line 1806 of yacc.c  */
-#line 1121 "parser.yy"
-    {
-			(yyval.decl) = DeclarationNode::newFunction( (yyvsp[(3) - (8)].tok), DeclarationNode::newTuple( 0 ), (yyvsp[(6) - (8)].decl), 0, true );
+#line 1121 "parser.yy" /* yacc.c:1646  */
+    {
+			(yyval.decl) = DeclarationNode::newFunction( (yyvsp[-5].tok), DeclarationNode::newTuple( 0 ), (yyvsp[-2].decl), 0, true );
 		}
+#line 5731 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 263:
-
-/* Line 1806 of yacc.c  */
-#line 1144 "parser.yy"
-    {
-			(yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
+#line 1144 "parser.yy" /* yacc.c:1646  */
+    {
+			(yyval.decl) = DeclarationNode::newFunction( (yyvsp[-5].tok), (yyvsp[-6].decl), (yyvsp[-2].decl), 0, true );
 		}
+#line 5739 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 264:
-
-/* Line 1806 of yacc.c  */
-#line 1148 "parser.yy"
-    {
-			(yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
+#line 1148 "parser.yy" /* yacc.c:1646  */
+    {
+			(yyval.decl) = DeclarationNode::newFunction( (yyvsp[-5].tok), (yyvsp[-6].decl), (yyvsp[-2].decl), 0, true );
 		}
+#line 5747 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 265:
-
-/* Line 1806 of yacc.c  */
-#line 1155 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
+#line 1155 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[-2].decl) ); }
+#line 5753 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 266:
-
-/* Line 1806 of yacc.c  */
-#line 1159 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (9)].decl)->appendList( (yyvsp[(7) - (9)].decl) ) ); }
+#line 1159 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[-6].decl)->appendList( (yyvsp[-2].decl) ) ); }
+#line 5759 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 267:
-
-/* Line 1806 of yacc.c  */
-#line 1164 "parser.yy"
+#line 1164 "parser.yy" /* yacc.c:1646  */
     {
 			typedefTable.addToEnclosingScope( TypedefTable::TD );
-			(yyval.decl) = (yyvsp[(2) - (2)].decl)->addTypedef();
+			(yyval.decl) = (yyvsp[0].decl)->addTypedef();
 		}
+#line 5768 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 268:
-
-/* Line 1806 of yacc.c  */
-#line 1169 "parser.yy"
+#line 1169 "parser.yy" /* yacc.c:1646  */
     {
 			typedefTable.addToEnclosingScope( TypedefTable::TD );
-			(yyval.decl) = (yyvsp[(2) - (2)].decl)->addTypedef();
+			(yyval.decl) = (yyvsp[0].decl)->addTypedef();
 		}
+#line 5777 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 269:
-
-/* Line 1806 of yacc.c  */
-#line 1174 "parser.yy"
-    {
-			typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::TD );
-			(yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(1) - (5)].decl)->cloneType( (yyvsp[(5) - (5)].tok) ) );
+#line 1174 "parser.yy" /* yacc.c:1646  */
+    {
+			typedefTable.addToEnclosingScope( *(yyvsp[0].tok), TypedefTable::TD );
+			(yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[-4].decl)->cloneType( (yyvsp[0].tok) ) );
 		}
+#line 5786 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 270:
-
-/* Line 1806 of yacc.c  */
-#line 1185 "parser.yy"
+#line 1185 "parser.yy" /* yacc.c:1646  */
     {
 			typedefTable.addToEnclosingScope( TypedefTable::TD );
-			(yyval.decl) = (yyvsp[(3) - (3)].decl)->addType( (yyvsp[(2) - (3)].decl) )->addTypedef();
+			(yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) )->addTypedef();
 		}
+#line 5795 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 271:
-
-/* Line 1806 of yacc.c  */
-#line 1190 "parser.yy"
+#line 1190 "parser.yy" /* yacc.c:1646  */
     {
 			typedefTable.addToEnclosingScope( TypedefTable::TD );
-			(yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(1) - (5)].decl)->cloneBaseType( (yyvsp[(5) - (5)].decl) )->addTypedef() );
+			(yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[-4].decl)->cloneBaseType( (yyvsp[0].decl) )->addTypedef() );
 		}
+#line 5804 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 272:
-
-/* Line 1806 of yacc.c  */
-#line 1195 "parser.yy"
+#line 1195 "parser.yy" /* yacc.c:1646  */
     {
 			typedefTable.addToEnclosingScope( TypedefTable::TD );
-			(yyval.decl) = (yyvsp[(4) - (4)].decl)->addType( (yyvsp[(3) - (4)].decl) )->addQualifiers( (yyvsp[(1) - (4)].decl) )->addTypedef();
+			(yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) )->addQualifiers( (yyvsp[-3].decl) )->addTypedef();
 		}
+#line 5813 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 273:
-
-/* Line 1806 of yacc.c  */
-#line 1200 "parser.yy"
+#line 1200 "parser.yy" /* yacc.c:1646  */
     {
 			typedefTable.addToEnclosingScope( TypedefTable::TD );
-			(yyval.decl) = (yyvsp[(3) - (3)].decl)->addType( (yyvsp[(1) - (3)].decl) )->addTypedef();
+			(yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-2].decl) )->addTypedef();
 		}
+#line 5822 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 274:
-
-/* Line 1806 of yacc.c  */
-#line 1205 "parser.yy"
+#line 1205 "parser.yy" /* yacc.c:1646  */
     {
 			typedefTable.addToEnclosingScope( TypedefTable::TD );
-			(yyval.decl) = (yyvsp[(4) - (4)].decl)->addQualifiers( (yyvsp[(1) - (4)].decl) )->addTypedef()->addType( (yyvsp[(1) - (4)].decl) );
+			(yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-3].decl) )->addTypedef()->addType( (yyvsp[-3].decl) );
 		}
+#line 5831 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 275:
-
-/* Line 1806 of yacc.c  */
-#line 1214 "parser.yy"
-    {
-			typedefTable.addToEnclosingScope( *(yyvsp[(2) - (4)].tok), TypedefTable::TD );
+#line 1214 "parser.yy" /* yacc.c:1646  */
+    {
+			typedefTable.addToEnclosingScope( *(yyvsp[-2].tok), TypedefTable::TD );
 			(yyval.decl) = DeclarationNode::newName( 0 ); // XXX
 		}
+#line 5840 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 276:
-
-/* Line 1806 of yacc.c  */
-#line 1219 "parser.yy"
-    {
-			typedefTable.addToEnclosingScope( *(yyvsp[(5) - (7)].tok), TypedefTable::TD );
+#line 1219 "parser.yy" /* yacc.c:1646  */
+    {
+			typedefTable.addToEnclosingScope( *(yyvsp[-2].tok), TypedefTable::TD );
 			(yyval.decl) = DeclarationNode::newName( 0 ); // XXX
 		}
+#line 5849 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 281:
-
-/* Line 1806 of yacc.c  */
-#line 1236 "parser.yy"
+#line 1236 "parser.yy" /* yacc.c:1646  */
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
-			(yyval.decl) = ( (yyvsp[(2) - (4)].decl)->addType( (yyvsp[(1) - (4)].decl) ))->addInitializer( (yyvsp[(4) - (4)].in) );
+			(yyval.decl) = ( (yyvsp[-2].decl)->addType( (yyvsp[-3].decl) ))->addInitializer( (yyvsp[0].in) );
 		}
+#line 5858 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 282:
-
-/* Line 1806 of yacc.c  */
-#line 1241 "parser.yy"
+#line 1241 "parser.yy" /* yacc.c:1646  */
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
-			(yyval.decl) = (yyvsp[(1) - (6)].decl)->appendList( (yyvsp[(1) - (6)].decl)->cloneBaseType( (yyvsp[(4) - (6)].decl)->addInitializer( (yyvsp[(6) - (6)].in) ) ) );
+			(yyval.decl) = (yyvsp[-5].decl)->appendList( (yyvsp[-5].decl)->cloneBaseType( (yyvsp[-2].decl)->addInitializer( (yyvsp[0].in) ) ) );
 		}
+#line 5867 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 291:
-
-/* Line 1806 of yacc.c  */
-#line 1263 "parser.yy"
+#line 1263 "parser.yy" /* yacc.c:1646  */
     { (yyval.decl) = 0; }
+#line 5873 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 294:
-
-/* Line 1806 of yacc.c  */
-#line 1275 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+#line 1275 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
+#line 5879 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 297:
-
-/* Line 1806 of yacc.c  */
-#line 1286 "parser.yy"
+#line 1286 "parser.yy" /* yacc.c:1646  */
     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Const ); }
+#line 5885 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 298:
-
-/* Line 1806 of yacc.c  */
-#line 1288 "parser.yy"
+#line 1288 "parser.yy" /* yacc.c:1646  */
     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Restrict ); }
+#line 5891 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 299:
-
-/* Line 1806 of yacc.c  */
-#line 1290 "parser.yy"
+#line 1290 "parser.yy" /* yacc.c:1646  */
     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Volatile ); }
+#line 5897 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 300:
-
-/* Line 1806 of yacc.c  */
-#line 1292 "parser.yy"
+#line 1292 "parser.yy" /* yacc.c:1646  */
     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Lvalue ); }
+#line 5903 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 301:
-
-/* Line 1806 of yacc.c  */
-#line 1294 "parser.yy"
+#line 1294 "parser.yy" /* yacc.c:1646  */
     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Atomic ); }
+#line 5909 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 302:
-
-/* Line 1806 of yacc.c  */
-#line 1296 "parser.yy"
+#line 1296 "parser.yy" /* yacc.c:1646  */
     {
 			typedefTable.enterScope();
 		}
+#line 5917 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 303:
-
-/* Line 1806 of yacc.c  */
-#line 1300 "parser.yy"
+#line 1300 "parser.yy" /* yacc.c:1646  */
     {
 			typedefTable.leaveScope();
-			(yyval.decl) = DeclarationNode::newForall( (yyvsp[(4) - (5)].decl) );
+			(yyval.decl) = DeclarationNode::newForall( (yyvsp[-1].decl) );
 		}
+#line 5926 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 305:
-
-/* Line 1806 of yacc.c  */
-#line 1309 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+#line 1309 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
+#line 5932 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 306:
-
-/* Line 1806 of yacc.c  */
-#line 1311 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
+#line 1311 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-2].decl)->addQualifiers( (yyvsp[-1].decl) )->addQualifiers( (yyvsp[0].decl) ); }
+#line 5938 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 308:
-
-/* Line 1806 of yacc.c  */
-#line 1322 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+#line 1322 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
+#line 5944 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 309:
+#line 1327 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Extern ); }
+#line 5950 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 310:
-
-/* Line 1806 of yacc.c  */
-#line 1331 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Extern ); }
+#line 1329 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Static ); }
+#line 5956 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 311:
-
-/* Line 1806 of yacc.c  */
-#line 1333 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Static ); }
+#line 1331 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); }
+#line 5962 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 312:
-
-/* Line 1806 of yacc.c  */
-#line 1335 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); }
+#line 1333 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Register ); }
+#line 5968 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 313:
-
-/* Line 1806 of yacc.c  */
-#line 1337 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Register ); }
+#line 1335 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Inline ); }
+#line 5974 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 314:
-
-/* Line 1806 of yacc.c  */
-#line 1339 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Inline ); }
+#line 1337 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); }
+#line 5980 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 315:
-
-/* Line 1806 of yacc.c  */
-#line 1341 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); }
+#line 1339 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Noreturn ); }
+#line 5986 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 316:
-
-/* Line 1806 of yacc.c  */
-#line 1343 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Noreturn ); }
+#line 1341 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); }
+#line 5992 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 317:
-
-/* Line 1806 of yacc.c  */
-#line 1345 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); }
+#line 1346 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Char ); }
+#line 5998 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 318:
-
-/* Line 1806 of yacc.c  */
-#line 1350 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Char ); }
+#line 1348 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Double ); }
+#line 6004 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 319:
-
-/* Line 1806 of yacc.c  */
-#line 1352 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Double ); }
+#line 1350 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Float ); }
+#line 6010 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 320:
-
-/* Line 1806 of yacc.c  */
-#line 1354 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Float ); }
+#line 1352 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Int ); }
+#line 6016 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 321:
-
-/* Line 1806 of yacc.c  */
-#line 1356 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Int ); }
+#line 1354 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Long ); }
+#line 6022 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 322:
-
-/* Line 1806 of yacc.c  */
-#line 1358 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Long ); }
+#line 1356 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Short ); }
+#line 6028 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 323:
-
-/* Line 1806 of yacc.c  */
-#line 1360 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Short ); }
+#line 1358 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Signed ); }
+#line 6034 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 324:
-
-/* Line 1806 of yacc.c  */
-#line 1362 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Signed ); }
+#line 1360 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Unsigned ); }
+#line 6040 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 325:
-
-/* Line 1806 of yacc.c  */
-#line 1364 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Unsigned ); }
+#line 1362 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Void ); }
+#line 6046 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 326:
-
-/* Line 1806 of yacc.c  */
-#line 1366 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Void ); }
+#line 1364 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Bool ); }
+#line 6052 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 327:
-
-/* Line 1806 of yacc.c  */
-#line 1368 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Bool ); }
+#line 1366 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Complex ); }
+#line 6058 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 328:
-
-/* Line 1806 of yacc.c  */
-#line 1370 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Complex ); }
+#line 1368 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Imaginary ); }
+#line 6064 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 329:
-
-/* Line 1806 of yacc.c  */
-#line 1372 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Imaginary ); }
-    break;
-
-  case 330:
-
-/* Line 1806 of yacc.c  */
-#line 1374 "parser.yy"
+#line 1370 "parser.yy" /* yacc.c:1646  */
     { (yyval.decl) = DeclarationNode::newBuiltinType( DeclarationNode::Valist ); }
+#line 6070 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 331:
+#line 1377 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
+#line 6076 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 332:
-
-/* Line 1806 of yacc.c  */
-#line 1381 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
+#line 1379 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
+#line 6082 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 333:
-
-/* Line 1806 of yacc.c  */
-#line 1383 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+#line 1381 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-2].decl)->addQualifiers( (yyvsp[-1].decl) )->addQualifiers( (yyvsp[0].decl) ); }
+#line 6088 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 334:
-
-/* Line 1806 of yacc.c  */
-#line 1385 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
-    break;
-
-  case 335:
-
-/* Line 1806 of yacc.c  */
-#line 1387 "parser.yy"
-    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addType( (yyvsp[(1) - (3)].decl) ); }
-    break;
-
-  case 337:
-
-/* Line 1806 of yacc.c  */
-#line 1393 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
+#line 1383 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) )->addType( (yyvsp[-2].decl) ); }
+#line 6094 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 336:
+#line 1389 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[-2].decl) )->addQualifiers( (yyvsp[0].decl) ); }
+#line 6100 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 338:
+#line 1396 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
+#line 6106 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 339:
-
-/* Line 1806 of yacc.c  */
-#line 1400 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
+#line 1398 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
+#line 6112 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 340:
-
-/* Line 1806 of yacc.c  */
-#line 1402 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+#line 1400 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-1].decl)->addType( (yyvsp[0].decl) ); }
+#line 6118 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 341:
-
-/* Line 1806 of yacc.c  */
-#line 1404 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addType( (yyvsp[(2) - (2)].decl) ); }
+#line 1405 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-1].decl); }
+#line 6124 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 342:
-
-/* Line 1806 of yacc.c  */
-#line 1409 "parser.yy"
-    { (yyval.decl) = (yyvsp[(3) - (4)].decl); }
+#line 1407 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[-1].en) ); }
+#line 6130 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 343:
-
-/* Line 1806 of yacc.c  */
-#line 1411 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[(3) - (4)].en) ); }
+#line 1409 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[-3].tok), (yyvsp[-1].decl) ); }
+#line 6136 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 344:
-
-/* Line 1806 of yacc.c  */
-#line 1413 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].decl) ); }
-    break;
-
-  case 345:
-
-/* Line 1806 of yacc.c  */
-#line 1415 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
+#line 1411 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[-3].tok), (yyvsp[-1].en) ); }
+#line 6142 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 346:
+#line 1417 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
+#line 6148 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 347:
-
-/* Line 1806 of yacc.c  */
-#line 1421 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
+#line 1419 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
+#line 6154 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 348:
-
-/* Line 1806 of yacc.c  */
-#line 1423 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
-    break;
-
-  case 349:
-
-/* Line 1806 of yacc.c  */
-#line 1425 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
+#line 1421 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-2].decl)->addQualifiers( (yyvsp[-1].decl) )->addQualifiers( (yyvsp[0].decl) ); }
+#line 6160 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 350:
+#line 1427 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
+#line 6166 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 351:
-
-/* Line 1806 of yacc.c  */
-#line 1431 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
-    break;
-
-  case 352:
-
-/* Line 1806 of yacc.c  */
-#line 1433 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+#line 1429 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
+#line 6172 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 353:
+#line 1435 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
+#line 6178 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 354:
-
-/* Line 1806 of yacc.c  */
-#line 1439 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
+#line 1437 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
+#line 6184 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 355:
-
-/* Line 1806 of yacc.c  */
-#line 1441 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+#line 1439 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-2].decl)->addQualifiers( (yyvsp[-1].decl) )->addQualifiers( (yyvsp[0].decl) ); }
+#line 6190 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 356:
-
-/* Line 1806 of yacc.c  */
-#line 1443 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
+#line 1444 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[0].tok) ); }
+#line 6196 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 357:
-
-/* Line 1806 of yacc.c  */
-#line 1448 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(1) - (1)].tok) ); }
+#line 1446 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[0].tok) )->addQualifiers( (yyvsp[-1].decl) ); }
+#line 6202 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 358:
-
-/* Line 1806 of yacc.c  */
-#line 1450 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(2) - (2)].tok) )->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
-    break;
-
-  case 359:
-
-/* Line 1806 of yacc.c  */
-#line 1452 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+#line 1448 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
+#line 6208 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 361:
+#line 1458 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[-3].aggKey), 0, 0, (yyvsp[-1].decl), true ); }
+#line 6214 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 362:
-
-/* Line 1806 of yacc.c  */
-#line 1462 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (4)].aggKey), 0, 0, (yyvsp[(3) - (4)].decl), true ); }
+#line 1460 "parser.yy" /* yacc.c:1646  */
+    {
+			typedefTable.makeTypedef( *(yyvsp[0].tok) );
+			(yyval.decl) = DeclarationNode::newAggregate( (yyvsp[-1].aggKey), (yyvsp[0].tok), 0, 0, false );
+		}
+#line 6223 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 363:
-
-/* Line 1806 of yacc.c  */
-#line 1464 "parser.yy"
-    {
-			typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) );
-			(yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (2)].aggKey), (yyvsp[(2) - (2)].tok), 0, 0, false );
+#line 1465 "parser.yy" /* yacc.c:1646  */
+    { typedefTable.makeTypedef( *(yyvsp[0].tok) ); }
+#line 6229 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 364:
+#line 1467 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[-5].aggKey), (yyvsp[-4].tok), 0, (yyvsp[-1].decl), true ); }
+#line 6235 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 365:
+#line 1469 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[-6].aggKey), 0, (yyvsp[-4].en), (yyvsp[-1].decl), false ); }
+#line 6241 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 366:
+#line 1471 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[0].decl); }
+#line 6247 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 367:
+#line 1476 "parser.yy" /* yacc.c:1646  */
+    { (yyval.aggKey) = DeclarationNode::Struct; }
+#line 6253 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 368:
+#line 1478 "parser.yy" /* yacc.c:1646  */
+    { (yyval.aggKey) = DeclarationNode::Union; }
+#line 6259 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 369:
+#line 1483 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = 0; }
+#line 6265 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 370:
+#line 1485 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-1].decl) != 0 ? (yyvsp[-1].decl)->appendList( (yyvsp[0].decl) ) : (yyvsp[0].decl); }
+#line 6271 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 372:
+#line 1491 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-1].decl)->set_extension( true ); }
+#line 6277 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 374:
+#line 1494 "parser.yy" /* yacc.c:1646  */
+    {	// mark all fields in list
+			for ( DeclarationNode *iter = (yyvsp[-1].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
+				iter->set_extension( true );
+			(yyval.decl) = (yyvsp[-1].decl);
 		}
-    break;
-
-  case 364:
-
-/* Line 1806 of yacc.c  */
-#line 1469 "parser.yy"
-    { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); }
-    break;
-
-  case 365:
-
-/* Line 1806 of yacc.c  */
-#line 1471 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (6)].aggKey), (yyvsp[(2) - (6)].tok), 0, (yyvsp[(5) - (6)].decl), true ); }
-    break;
-
-  case 366:
-
-/* Line 1806 of yacc.c  */
-#line 1473 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), 0, (yyvsp[(3) - (7)].en), (yyvsp[(6) - (7)].decl), false ); }
-    break;
-
-  case 367:
-
-/* Line 1806 of yacc.c  */
-#line 1475 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
-    break;
-
-  case 368:
-
-/* Line 1806 of yacc.c  */
-#line 1480 "parser.yy"
-    { (yyval.aggKey) = DeclarationNode::Struct; }
-    break;
-
-  case 369:
-
-/* Line 1806 of yacc.c  */
-#line 1482 "parser.yy"
-    { (yyval.aggKey) = DeclarationNode::Union; }
-    break;
-
-  case 370:
-
-/* Line 1806 of yacc.c  */
-#line 1487 "parser.yy"
+#line 6287 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 376:
+#line 1504 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-1].decl)->addName( (yyvsp[0].tok) ); }
+#line 6293 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 377:
+#line 1506 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-2].decl)->appendList( (yyvsp[-2].decl)->cloneType( (yyvsp[0].tok) ) ); }
+#line 6299 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 378:
+#line 1508 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-1].decl)->appendList( (yyvsp[-1].decl)->cloneType( 0 ) ); }
+#line 6305 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 379:
+#line 1513 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) ); }
+#line 6311 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 380:
+#line 1515 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-3].decl)->appendList( (yyvsp[-3].decl)->cloneBaseType( (yyvsp[0].decl) ) ); }
+#line 6317 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 381:
+#line 1520 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ }
+#line 6323 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 382:
+#line 1522 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[0].en) ); }
+#line 6329 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 383:
+#line 1525 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-1].decl)->addBitfield( (yyvsp[0].en) ); }
+#line 6335 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 384:
+#line 1528 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-1].decl)->addBitfield( (yyvsp[0].en) ); }
+#line 6341 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 386:
+#line 1534 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = 0; }
+#line 6347 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 387:
+#line 1536 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = (yyvsp[0].en); }
+#line 6353 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 388:
+#line 1541 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = (yyvsp[0].en); }
+#line 6359 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 390:
+#line 1550 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = DeclarationNode::newEnum( 0, (yyvsp[-2].decl) ); }
+#line 6365 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 391:
+#line 1552 "parser.yy" /* yacc.c:1646  */
+    {
+			typedefTable.makeTypedef( *(yyvsp[0].tok) );
+			(yyval.decl) = DeclarationNode::newEnum( (yyvsp[0].tok), 0 );
+		}
+#line 6374 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 392:
+#line 1557 "parser.yy" /* yacc.c:1646  */
+    { typedefTable.makeTypedef( *(yyvsp[0].tok) ); }
+#line 6380 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 393:
+#line 1559 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[-5].tok), (yyvsp[-2].decl) ); }
+#line 6386 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 394:
+#line 1564 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[-1].tok), (yyvsp[0].en) ); }
+#line 6392 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 395:
+#line 1566 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-3].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[-1].tok), (yyvsp[0].en) ) ); }
+#line 6398 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 396:
+#line 1571 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = 0; }
+#line 6404 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 397:
+#line 1573 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = (yyvsp[0].en); }
+#line 6410 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 398:
+#line 1580 "parser.yy" /* yacc.c:1646  */
     { (yyval.decl) = 0; }
-    break;
-
-  case 371:
-
-/* Line 1806 of yacc.c  */
-#line 1489 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (2)].decl) != 0 ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
-    break;
-
-  case 373:
-
-/* Line 1806 of yacc.c  */
-#line 1495 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (3)].decl)->set_extension( true ); }
-    break;
-
-  case 375:
-
-/* Line 1806 of yacc.c  */
-#line 1498 "parser.yy"
-    {	// mark all fields in list
-			for ( DeclarationNode *iter = (yyvsp[(2) - (3)].decl); iter != NULL; iter = (DeclarationNode *)iter->get_next() )
-				iter->set_extension( true );
-			(yyval.decl) = (yyvsp[(2) - (3)].decl);
+#line 6416 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 402:
+#line 1588 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[0].decl) ); }
+#line 6422 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 403:
+#line 1590 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-4].decl)->addVarArgs(); }
+#line 6428 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 404:
+#line 1592 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-4].decl)->addVarArgs(); }
+#line 6434 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 406:
+#line 1600 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[0].decl) ); }
+#line 6440 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 407:
+#line 1602 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[0].decl) ); }
+#line 6446 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 408:
+#line 1604 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-8].decl)->appendList( (yyvsp[-4].decl) )->appendList( (yyvsp[0].decl) ); }
+#line 6452 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 410:
+#line 1610 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[0].decl) ); }
+#line 6458 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 411:
+#line 1615 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = 0; }
+#line 6464 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 414:
+#line 1622 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-4].decl)->addVarArgs(); }
+#line 6470 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 417:
+#line 1629 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[0].decl) ); }
+#line 6476 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 418:
+#line 1631 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[0].decl) ); }
+#line 6482 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 420:
+#line 1640 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-2].decl)->addName( (yyvsp[-1].tok) ); }
+#line 6488 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 421:
+#line 1643 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-2].decl)->addName( (yyvsp[-1].tok) ); }
+#line 6494 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 422:
+#line 1645 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-2].decl)->addName( (yyvsp[-1].tok) )->addQualifiers( (yyvsp[-3].decl) ); }
+#line 6500 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 427:
+#line 1655 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
+#line 6506 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 429:
+#line 1661 "parser.yy" /* yacc.c:1646  */
+    {
+			typedefTable.addToEnclosingScope( TypedefTable::ID );
+			(yyval.decl) = (yyvsp[-1].decl)->addType( (yyvsp[-2].decl) )->addInitializer( new InitializerNode( (yyvsp[0].en) ) );
 		}
-    break;
-
-  case 377:
-
-/* Line 1806 of yacc.c  */
-#line 1508 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) ); }
-    break;
-
-  case 378:
-
-/* Line 1806 of yacc.c  */
-#line 1510 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(1) - (3)].decl)->cloneType( (yyvsp[(3) - (3)].tok) ) ); }
-    break;
-
-  case 379:
-
-/* Line 1806 of yacc.c  */
-#line 1512 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(1) - (2)].decl)->cloneType( 0 ) ); }
-    break;
-
-  case 380:
-
-/* Line 1806 of yacc.c  */
-#line 1517 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
-    break;
-
-  case 381:
-
-/* Line 1806 of yacc.c  */
-#line 1519 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(1) - (4)].decl)->cloneBaseType( (yyvsp[(4) - (4)].decl) ) ); }
-    break;
-
-  case 382:
-
-/* Line 1806 of yacc.c  */
-#line 1524 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ }
-    break;
-
-  case 383:
-
-/* Line 1806 of yacc.c  */
-#line 1526 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[(1) - (1)].en) ); }
-    break;
-
-  case 384:
-
-/* Line 1806 of yacc.c  */
-#line 1529 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
-    break;
-
-  case 385:
-
-/* Line 1806 of yacc.c  */
-#line 1532 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
-    break;
-
-  case 387:
-
-/* Line 1806 of yacc.c  */
-#line 1538 "parser.yy"
-    { (yyval.en) = 0; }
-    break;
-
-  case 388:
-
-/* Line 1806 of yacc.c  */
-#line 1540 "parser.yy"
-    { (yyval.en) = (yyvsp[(1) - (1)].en); }
-    break;
-
-  case 389:
-
-/* Line 1806 of yacc.c  */
-#line 1545 "parser.yy"
-    { (yyval.en) = (yyvsp[(2) - (2)].en); }
-    break;
-
-  case 391:
-
-/* Line 1806 of yacc.c  */
-#line 1554 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newEnum( 0, (yyvsp[(3) - (5)].decl) ); }
-    break;
-
-  case 392:
-
-/* Line 1806 of yacc.c  */
-#line 1556 "parser.yy"
-    {
-			typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) );
-			(yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (2)].tok), 0 );
+#line 6515 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 430:
+#line 1666 "parser.yy" /* yacc.c:1646  */
+    {
+			typedefTable.addToEnclosingScope( TypedefTable::ID );
+			(yyval.decl) = (yyvsp[-1].decl)->addType( (yyvsp[-2].decl) )->addInitializer( new InitializerNode( (yyvsp[0].en) ) );
 		}
-    break;
-
-  case 393:
-
-/* Line 1806 of yacc.c  */
-#line 1561 "parser.yy"
-    { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); }
-    break;
-
-  case 394:
-
-/* Line 1806 of yacc.c  */
-#line 1563 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (7)].tok), (yyvsp[(5) - (7)].decl) ); }
-    break;
-
-  case 395:
-
-/* Line 1806 of yacc.c  */
-#line 1568 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[(1) - (2)].tok), (yyvsp[(2) - (2)].en) ); }
-    break;
-
-  case 396:
-
-/* Line 1806 of yacc.c  */
-#line 1570 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[(3) - (4)].tok), (yyvsp[(4) - (4)].en) ) ); }
-    break;
-
-  case 397:
-
-/* Line 1806 of yacc.c  */
-#line 1575 "parser.yy"
-    { (yyval.en) = 0; }
-    break;
-
-  case 398:
-
-/* Line 1806 of yacc.c  */
-#line 1577 "parser.yy"
-    { (yyval.en) = (yyvsp[(2) - (2)].en); }
-    break;
-
-  case 399:
-
-/* Line 1806 of yacc.c  */
-#line 1584 "parser.yy"
+#line 6524 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 432:
+#line 1675 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) ); }
+#line 6530 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 433:
+#line 1684 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = DeclarationNode::newName( (yyvsp[0].tok) ); }
+#line 6536 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 434:
+#line 1686 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-2].decl)->appendList( DeclarationNode::newName( (yyvsp[0].tok) ) ); }
+#line 6542 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 446:
+#line 1711 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) ); }
+#line 6548 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 450:
+#line 1719 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) ); }
+#line 6554 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 451:
+#line 1724 "parser.yy" /* yacc.c:1646  */
+    { (yyval.in) = 0; }
+#line 6560 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 452:
+#line 1726 "parser.yy" /* yacc.c:1646  */
+    { (yyval.in) = (yyvsp[0].in); }
+#line 6566 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 453:
+#line 1728 "parser.yy" /* yacc.c:1646  */
+    { (yyval.in) = (yyvsp[0].in)->set_maybeConstructed( false ); }
+#line 6572 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 454:
+#line 1732 "parser.yy" /* yacc.c:1646  */
+    { (yyval.in) = new InitializerNode( (yyvsp[0].en) ); }
+#line 6578 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 455:
+#line 1733 "parser.yy" /* yacc.c:1646  */
+    { (yyval.in) = new InitializerNode( (yyvsp[-2].in), true ); }
+#line 6584 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 456:
+#line 1738 "parser.yy" /* yacc.c:1646  */
+    { (yyval.in) = 0; }
+#line 6590 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 458:
+#line 1740 "parser.yy" /* yacc.c:1646  */
+    { (yyval.in) = (yyvsp[0].in)->set_designators( (yyvsp[-1].en) ); }
+#line 6596 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 459:
+#line 1741 "parser.yy" /* yacc.c:1646  */
+    { (yyval.in) = (InitializerNode *)( (yyvsp[-2].in)->set_last( (yyvsp[0].in) ) ); }
+#line 6602 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 460:
+#line 1743 "parser.yy" /* yacc.c:1646  */
+    { (yyval.in) = (InitializerNode *)( (yyvsp[-3].in)->set_last( (yyvsp[0].in)->set_designators( (yyvsp[-1].en) ) ) ); }
+#line 6608 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 462:
+#line 1759 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[-1].tok) ) ); }
+#line 6614 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 464:
+#line 1765 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = (ExpressionNode *)( (yyvsp[-1].en)->set_last( (yyvsp[0].en) ) ); }
+#line 6620 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 465:
+#line 1771 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[0].tok) ) ); }
+#line 6626 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 466:
+#line 1774 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = (yyvsp[-2].en); }
+#line 6632 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 467:
+#line 1776 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = (yyvsp[-2].en); }
+#line 6638 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 468:
+#line 1778 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[-4].en), (yyvsp[-2].en) ) ); }
+#line 6644 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 469:
+#line 1780 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = (yyvsp[-2].en); }
+#line 6650 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 471:
+#line 1804 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
+#line 6656 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 472:
+#line 1806 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
+#line 6662 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 473:
+#line 1808 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-2].decl)->addQualifiers( (yyvsp[-1].decl) )->addQualifiers( (yyvsp[0].decl) ); }
+#line 6668 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 475:
+#line 1814 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
+#line 6674 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 476:
+#line 1816 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
+#line 6680 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 477:
+#line 1821 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[-3].tok), (yyvsp[-1].en) ); }
+#line 6686 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 479:
+#line 1827 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-3].decl)->appendList( (yyvsp[-1].decl) ); }
+#line 6692 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 480:
+#line 1832 "parser.yy" /* yacc.c:1646  */
+    { typedefTable.addToEnclosingScope( *(yyvsp[0].tok), TypedefTable::TD ); }
+#line 6698 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 481:
+#line 1834 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = DeclarationNode::newTypeParam( (yyvsp[-3].tclass), (yyvsp[-2].tok) )->addAssertions( (yyvsp[0].decl) ); }
+#line 6704 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 483:
+#line 1840 "parser.yy" /* yacc.c:1646  */
+    { (yyval.tclass) = DeclarationNode::Type; }
+#line 6710 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 484:
+#line 1842 "parser.yy" /* yacc.c:1646  */
+    { (yyval.tclass) = DeclarationNode::Ftype; }
+#line 6716 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 485:
+#line 1844 "parser.yy" /* yacc.c:1646  */
+    { (yyval.tclass) = DeclarationNode::Dtype; }
+#line 6722 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 486:
+#line 1849 "parser.yy" /* yacc.c:1646  */
     { (yyval.decl) = 0; }
-    break;
-
-  case 403:
-
-/* Line 1806 of yacc.c  */
-#line 1592 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
-    break;
-
-  case 404:
-
-/* Line 1806 of yacc.c  */
-#line 1594 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
-    break;
-
-  case 405:
-
-/* Line 1806 of yacc.c  */
-#line 1596 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
-    break;
-
-  case 407:
-
-/* Line 1806 of yacc.c  */
-#line 1604 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
-    break;
-
-  case 408:
-
-/* Line 1806 of yacc.c  */
-#line 1606 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
-    break;
-
-  case 409:
-
-/* Line 1806 of yacc.c  */
-#line 1608 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (9)].decl)->appendList( (yyvsp[(5) - (9)].decl) )->appendList( (yyvsp[(9) - (9)].decl) ); }
-    break;
-
-  case 411:
-
-/* Line 1806 of yacc.c  */
-#line 1614 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
-    break;
-
-  case 412:
-
-/* Line 1806 of yacc.c  */
-#line 1619 "parser.yy"
+#line 6728 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 487:
+#line 1851 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-1].decl) != 0 ? (yyvsp[-1].decl)->appendList( (yyvsp[0].decl) ) : (yyvsp[0].decl); }
+#line 6734 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 488:
+#line 1856 "parser.yy" /* yacc.c:1646  */
+    {
+			typedefTable.openTrait( *(yyvsp[-3].tok) );
+			(yyval.decl) = DeclarationNode::newTraitUse( (yyvsp[-3].tok), (yyvsp[-1].en) );
+		}
+#line 6743 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 489:
+#line 1861 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-1].decl); }
+#line 6749 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 490:
+#line 1863 "parser.yy" /* yacc.c:1646  */
     { (yyval.decl) = 0; }
-    break;
-
-  case 415:
-
-/* Line 1806 of yacc.c  */
-#line 1626 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
-    break;
-
-  case 418:
-
-/* Line 1806 of yacc.c  */
-#line 1633 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
-    break;
-
-  case 419:
-
-/* Line 1806 of yacc.c  */
-#line 1635 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
-    break;
-
-  case 421:
-
-/* Line 1806 of yacc.c  */
-#line 1644 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
-    break;
-
-  case 422:
-
-/* Line 1806 of yacc.c  */
-#line 1647 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
-    break;
-
-  case 423:
-
-/* Line 1806 of yacc.c  */
-#line 1649 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addName( (yyvsp[(3) - (4)].tok) )->addQualifiers( (yyvsp[(1) - (4)].decl) ); }
-    break;
-
-  case 428:
-
-/* Line 1806 of yacc.c  */
-#line 1659 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
-    break;
-
-  case 430:
-
-/* Line 1806 of yacc.c  */
-#line 1665 "parser.yy"
-    {
-			typedefTable.addToEnclosingScope( TypedefTable::ID );
-			(yyval.decl) = (yyvsp[(2) - (3)].decl)->addType( (yyvsp[(1) - (3)].decl) )->addInitializer( new InitializerNode( (yyvsp[(3) - (3)].en) ) );
+#line 6755 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 491:
+#line 1868 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = new ExpressionNode( build_typevalue( (yyvsp[0].decl) ) ); }
+#line 6761 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 493:
+#line 1871 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = (ExpressionNode *)( (yyvsp[-2].en)->set_last( new ExpressionNode( build_typevalue( (yyvsp[0].decl) ) ) ) ); }
+#line 6767 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 494:
+#line 1873 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = (ExpressionNode *)( (yyvsp[-2].en)->set_last( (yyvsp[0].en) )); }
+#line 6773 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 495:
+#line 1878 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[0].decl); }
+#line 6779 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 496:
+#line 1880 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-2].decl) ); }
+#line 6785 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 497:
+#line 1882 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-2].decl)->appendList( (yyvsp[0].decl)->copyStorageClasses( (yyvsp[-2].decl) ) ); }
+#line 6791 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 498:
+#line 1887 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-1].decl)->addAssertions( (yyvsp[0].decl) ); }
+#line 6797 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 499:
+#line 1889 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-3].decl)->addAssertions( (yyvsp[-2].decl) )->addType( (yyvsp[0].decl) ); }
+#line 6803 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 500:
+#line 1894 "parser.yy" /* yacc.c:1646  */
+    {
+			typedefTable.addToEnclosingScope( *(yyvsp[0].tok), TypedefTable::TD );
+			(yyval.decl) = DeclarationNode::newTypeDecl( (yyvsp[0].tok), 0 );
 		}
-    break;
-
-  case 431:
-
-/* Line 1806 of yacc.c  */
-#line 1670 "parser.yy"
-    {
-			typedefTable.addToEnclosingScope( TypedefTable::ID );
-			(yyval.decl) = (yyvsp[(2) - (3)].decl)->addType( (yyvsp[(1) - (3)].decl) )->addInitializer( new InitializerNode( (yyvsp[(3) - (3)].en) ) );
+#line 6812 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 501:
+#line 1899 "parser.yy" /* yacc.c:1646  */
+    {
+			typedefTable.addToEnclosingScope( *(yyvsp[-5].tok), TypedefTable::TG );
+			(yyval.decl) = DeclarationNode::newTypeDecl( (yyvsp[-5].tok), (yyvsp[-2].decl) );
 		}
-    break;
-
-  case 433:
-
-/* Line 1806 of yacc.c  */
-#line 1679 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
-    break;
-
-  case 434:
-
-/* Line 1806 of yacc.c  */
-#line 1688 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) ); }
-    break;
-
-  case 435:
-
-/* Line 1806 of yacc.c  */
-#line 1690 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( DeclarationNode::newName( (yyvsp[(3) - (3)].tok) ) ); }
-    break;
-
-  case 447:
-
-/* Line 1806 of yacc.c  */
-#line 1715 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
-    break;
-
-  case 451:
-
-/* Line 1806 of yacc.c  */
-#line 1723 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
-    break;
-
-  case 452:
-
-/* Line 1806 of yacc.c  */
-#line 1728 "parser.yy"
-    { (yyval.in) = 0; }
-    break;
-
-  case 453:
-
-/* Line 1806 of yacc.c  */
-#line 1730 "parser.yy"
-    { (yyval.in) = (yyvsp[(2) - (2)].in); }
-    break;
-
-  case 454:
-
-/* Line 1806 of yacc.c  */
-#line 1732 "parser.yy"
-    { (yyval.in) = (yyvsp[(2) - (2)].in)->set_maybeConstructed( false ); }
-    break;
-
-  case 455:
-
-/* Line 1806 of yacc.c  */
-#line 1736 "parser.yy"
-    { (yyval.in) = new InitializerNode( (yyvsp[(1) - (1)].en) ); }
-    break;
-
-  case 456:
-
-/* Line 1806 of yacc.c  */
-#line 1737 "parser.yy"
-    { (yyval.in) = new InitializerNode( (yyvsp[(2) - (4)].in), true ); }
-    break;
-
-  case 457:
-
-/* Line 1806 of yacc.c  */
-#line 1742 "parser.yy"
-    { (yyval.in) = 0; }
-    break;
-
-  case 459:
-
-/* Line 1806 of yacc.c  */
-#line 1744 "parser.yy"
-    { (yyval.in) = (yyvsp[(2) - (2)].in)->set_designators( (yyvsp[(1) - (2)].en) ); }
-    break;
-
-  case 460:
-
-/* Line 1806 of yacc.c  */
-#line 1745 "parser.yy"
-    { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (3)].in)->set_last( (yyvsp[(3) - (3)].in) ) ); }
-    break;
-
-  case 461:
-
-/* Line 1806 of yacc.c  */
-#line 1747 "parser.yy"
-    { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (4)].in)->set_last( (yyvsp[(4) - (4)].in)->set_designators( (yyvsp[(3) - (4)].en) ) ) ); }
-    break;
-
-  case 463:
-
-/* Line 1806 of yacc.c  */
-#line 1763 "parser.yy"
-    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (2)].tok) ) ); }
-    break;
-
-  case 465:
-
-/* Line 1806 of yacc.c  */
-#line 1769 "parser.yy"
-    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (2)].en)->set_last( (yyvsp[(2) - (2)].en) ) ); }
-    break;
-
-  case 466:
-
-/* Line 1806 of yacc.c  */
-#line 1775 "parser.yy"
-    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(2) - (2)].tok) ) ); }
-    break;
-
-  case 467:
-
-/* Line 1806 of yacc.c  */
-#line 1778 "parser.yy"
-    { (yyval.en) = (yyvsp[(3) - (5)].en); }
-    break;
-
-  case 468:
-
-/* Line 1806 of yacc.c  */
-#line 1780 "parser.yy"
-    { (yyval.en) = (yyvsp[(3) - (5)].en); }
-    break;
-
-  case 469:
-
-/* Line 1806 of yacc.c  */
-#line 1782 "parser.yy"
-    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].en) ) ); }
-    break;
-
-  case 470:
-
-/* Line 1806 of yacc.c  */
-#line 1784 "parser.yy"
-    { (yyval.en) = (yyvsp[(4) - (6)].en); }
-    break;
-
-  case 472:
-
-/* Line 1806 of yacc.c  */
-#line 1808 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
-    break;
-
-  case 473:
-
-/* Line 1806 of yacc.c  */
-#line 1810 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
-    break;
-
-  case 474:
-
-/* Line 1806 of yacc.c  */
-#line 1812 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
-    break;
-
-  case 476:
-
-/* Line 1806 of yacc.c  */
-#line 1818 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
-    break;
-
-  case 477:
-
-/* Line 1806 of yacc.c  */
-#line 1820 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
-    break;
-
-  case 478:
-
-/* Line 1806 of yacc.c  */
-#line 1825 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
-    break;
-
-  case 480:
-
-/* Line 1806 of yacc.c  */
-#line 1831 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(3) - (4)].decl) ); }
-    break;
-
-  case 481:
-
-/* Line 1806 of yacc.c  */
-#line 1836 "parser.yy"
-    { typedefTable.addToEnclosingScope( *(yyvsp[(2) - (2)].tok), TypedefTable::TD ); }
-    break;
-
-  case 482:
-
-/* Line 1806 of yacc.c  */
-#line 1838 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newTypeParam( (yyvsp[(1) - (4)].tclass), (yyvsp[(2) - (4)].tok) )->addAssertions( (yyvsp[(4) - (4)].decl) ); }
-    break;
-
-  case 484:
-
-/* Line 1806 of yacc.c  */
-#line 1844 "parser.yy"
-    { (yyval.tclass) = DeclarationNode::Type; }
-    break;
-
-  case 485:
-
-/* Line 1806 of yacc.c  */
-#line 1846 "parser.yy"
-    { (yyval.tclass) = DeclarationNode::Ftype; }
-    break;
-
-  case 486:
-
-/* Line 1806 of yacc.c  */
-#line 1848 "parser.yy"
-    { (yyval.tclass) = DeclarationNode::Dtype; }
-    break;
-
-  case 487:
-
-/* Line 1806 of yacc.c  */
-#line 1853 "parser.yy"
-    { (yyval.decl) = 0; }
-    break;
-
-  case 488:
-
-/* Line 1806 of yacc.c  */
-#line 1855 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (2)].decl) != 0 ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
-    break;
-
-  case 489:
-
-/* Line 1806 of yacc.c  */
-#line 1860 "parser.yy"
-    {
-			typedefTable.openTrait( *(yyvsp[(2) - (5)].tok) );
-			(yyval.decl) = DeclarationNode::newTraitUse( (yyvsp[(2) - (5)].tok), (yyvsp[(4) - (5)].en) );
+#line 6821 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 502:
+#line 1907 "parser.yy" /* yacc.c:1646  */
+    {
+			typedefTable.addToEnclosingScope( *(yyvsp[-7].tok), TypedefTable::ID );
+			(yyval.decl) = DeclarationNode::newTrait( (yyvsp[-7].tok), (yyvsp[-4].decl), 0 );
 		}
-    break;
-
-  case 490:
-
-/* Line 1806 of yacc.c  */
-#line 1865 "parser.yy"
-    { (yyval.decl) = (yyvsp[(4) - (5)].decl); }
-    break;
-
-  case 491:
-
-/* Line 1806 of yacc.c  */
-#line 1867 "parser.yy"
-    { (yyval.decl) = 0; }
-    break;
-
-  case 492:
-
-/* Line 1806 of yacc.c  */
-#line 1872 "parser.yy"
-    { (yyval.en) = new ExpressionNode( build_typevalue( (yyvsp[(1) - (1)].decl) ) ); }
-    break;
-
-  case 494:
-
-/* Line 1806 of yacc.c  */
-#line 1875 "parser.yy"
-    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( new ExpressionNode( build_typevalue( (yyvsp[(3) - (3)].decl) ) ) ) ); }
-    break;
-
-  case 495:
-
-/* Line 1806 of yacc.c  */
-#line 1877 "parser.yy"
-    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) )); }
-    break;
-
-  case 496:
-
-/* Line 1806 of yacc.c  */
-#line 1882 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
-    break;
-
-  case 497:
-
-/* Line 1806 of yacc.c  */
-#line 1884 "parser.yy"
-    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); }
-    break;
-
-  case 498:
-
-/* Line 1806 of yacc.c  */
-#line 1886 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl)->copyStorageClasses( (yyvsp[(1) - (3)].decl) ) ); }
-    break;
-
-  case 499:
-
-/* Line 1806 of yacc.c  */
-#line 1891 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addAssertions( (yyvsp[(2) - (2)].decl) ); }
-    break;
-
-  case 500:
-
-/* Line 1806 of yacc.c  */
-#line 1893 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addAssertions( (yyvsp[(2) - (4)].decl) )->addType( (yyvsp[(4) - (4)].decl) ); }
-    break;
-
-  case 501:
-
-/* Line 1806 of yacc.c  */
-#line 1898 "parser.yy"
-    {
-			typedefTable.addToEnclosingScope( *(yyvsp[(1) - (1)].tok), TypedefTable::TD );
-			(yyval.decl) = DeclarationNode::newTypeDecl( (yyvsp[(1) - (1)].tok), 0 );
-		}
-    break;
-
-  case 502:
-
-/* Line 1806 of yacc.c  */
-#line 1903 "parser.yy"
-    {
-			typedefTable.addToEnclosingScope( *(yyvsp[(1) - (6)].tok), TypedefTable::TG );
-			(yyval.decl) = DeclarationNode::newTypeDecl( (yyvsp[(1) - (6)].tok), (yyvsp[(4) - (6)].decl) );
-		}
+#line 6830 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 503:
-
-/* Line 1806 of yacc.c  */
-#line 1911 "parser.yy"
-    {
-			typedefTable.addToEnclosingScope( *(yyvsp[(2) - (9)].tok), TypedefTable::ID );
-			(yyval.decl) = DeclarationNode::newTrait( (yyvsp[(2) - (9)].tok), (yyvsp[(5) - (9)].decl), 0 );
-		}
-    break;
-
-  case 504:
-
-/* Line 1806 of yacc.c  */
-#line 1916 "parser.yy"
-    {
-			typedefTable.enterTrait( *(yyvsp[(2) - (8)].tok) );
+#line 1912 "parser.yy" /* yacc.c:1646  */
+    {
+			typedefTable.enterTrait( *(yyvsp[-6].tok) );
 			typedefTable.enterScope();
 		}
-    break;
-
-  case 505:
-
-/* Line 1806 of yacc.c  */
-#line 1921 "parser.yy"
+#line 6839 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 504:
+#line 1917 "parser.yy" /* yacc.c:1646  */
     {
 			typedefTable.leaveTrait();
-			typedefTable.addToEnclosingScope( *(yyvsp[(2) - (11)].tok), TypedefTable::ID );
-			(yyval.decl) = DeclarationNode::newTrait( (yyvsp[(2) - (11)].tok), (yyvsp[(5) - (11)].decl), (yyvsp[(10) - (11)].decl) );
+			typedefTable.addToEnclosingScope( *(yyvsp[-9].tok), TypedefTable::ID );
+			(yyval.decl) = DeclarationNode::newTrait( (yyvsp[-9].tok), (yyvsp[-6].decl), (yyvsp[-1].decl) );
 		}
-    break;
-
-  case 507:
-
-/* Line 1806 of yacc.c  */
-#line 1931 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
+#line 6849 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 506:
+#line 1927 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-2].decl)->appendList( (yyvsp[0].decl) ); }
+#line 6855 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 509:
+#line 1937 "parser.yy" /* yacc.c:1646  */
+    {
+			typedefTable.addToEnclosingScope2( TypedefTable::ID );
+			(yyval.decl) = (yyvsp[0].decl);
+		}
+#line 6864 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 510:
-
-/* Line 1806 of yacc.c  */
-#line 1941 "parser.yy"
+#line 1942 "parser.yy" /* yacc.c:1646  */
     {
 			typedefTable.addToEnclosingScope2( TypedefTable::ID );
-			(yyval.decl) = (yyvsp[(1) - (1)].decl);
+			(yyval.decl) = (yyvsp[0].decl);
 		}
+#line 6873 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 511:
-
-/* Line 1806 of yacc.c  */
-#line 1946 "parser.yy"
+#line 1947 "parser.yy" /* yacc.c:1646  */
+    {
+			typedefTable.addToEnclosingScope2( *(yyvsp[0].tok), TypedefTable::ID );
+			(yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[-4].decl)->cloneType( (yyvsp[0].tok) ) );
+		}
+#line 6882 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 512:
+#line 1955 "parser.yy" /* yacc.c:1646  */
     {
 			typedefTable.addToEnclosingScope2( TypedefTable::ID );
-			(yyval.decl) = (yyvsp[(1) - (1)].decl);
+			(yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) );
 		}
-    break;
-
-  case 512:
-
-/* Line 1806 of yacc.c  */
-#line 1951 "parser.yy"
-    {
-			typedefTable.addToEnclosingScope2( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
-			(yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(1) - (5)].decl)->cloneType( (yyvsp[(5) - (5)].tok) ) );
+#line 6891 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 513:
+#line 1960 "parser.yy" /* yacc.c:1646  */
+    {
+			typedefTable.addToEnclosingScope2( TypedefTable::ID );
+			(yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[-4].decl)->cloneBaseType( (yyvsp[0].decl) ) );
 		}
-    break;
-
-  case 513:
-
-/* Line 1806 of yacc.c  */
-#line 1959 "parser.yy"
-    {
-			typedefTable.addToEnclosingScope2( TypedefTable::ID );
-			(yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) );
+#line 6900 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 514:
+#line 1970 "parser.yy" /* yacc.c:1646  */
+    {}
+#line 6906 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 515:
+#line 1972 "parser.yy" /* yacc.c:1646  */
+    { parseTree = parseTree != nullptr ? parseTree->appendList( (yyvsp[0].decl) ) : (yyvsp[0].decl);	}
+#line 6912 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 517:
+#line 1978 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-2].decl) != nullptr ? (yyvsp[-2].decl)->appendList( (yyvsp[0].decl) ) : (yyvsp[0].decl); }
+#line 6918 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 518:
+#line 1983 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = 0; }
+#line 6924 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 522:
+#line 1991 "parser.yy" /* yacc.c:1646  */
+    {}
+#line 6930 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 523:
+#line 1993 "parser.yy" /* yacc.c:1646  */
+    {
+			linkageStack.push( linkage );				// handle nested extern "C"/"Cforall"
+			linkage = LinkageSpec::fromString( assign_strptr((yyvsp[0].tok)) );
 		}
-    break;
-
-  case 514:
-
-/* Line 1806 of yacc.c  */
-#line 1964 "parser.yy"
-    {
-			typedefTable.addToEnclosingScope2( TypedefTable::ID );
-			(yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(1) - (5)].decl)->cloneBaseType( (yyvsp[(5) - (5)].decl) ) );
-		}
-    break;
-
-  case 515:
-
-/* Line 1806 of yacc.c  */
-#line 1974 "parser.yy"
-    {}
-    break;
-
-  case 516:
-
-/* Line 1806 of yacc.c  */
-#line 1976 "parser.yy"
-    {
-			if ( theTree ) {
-				theTree->appendList( (yyvsp[(1) - (1)].decl) );
-			} else {
-				theTree = (yyvsp[(1) - (1)].decl);
-			}
-		}
-    break;
-
-  case 518:
-
-/* Line 1806 of yacc.c  */
-#line 1988 "parser.yy"
-    { (yyval.decl) = ( (yyvsp[(1) - (3)].decl) != NULL ) ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); }
-    break;
-
-  case 519:
-
-/* Line 1806 of yacc.c  */
-#line 1993 "parser.yy"
-    { (yyval.decl) = 0; }
-    break;
-
-  case 523:
-
-/* Line 1806 of yacc.c  */
-#line 2001 "parser.yy"
-    {}
+#line 6939 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 524:
-
-/* Line 1806 of yacc.c  */
-#line 2003 "parser.yy"
-    {
-			linkageStack.push( linkage );
-			linkage = LinkageSpec::fromString( *(yyvsp[(2) - (2)].tok) );
-		}
-    break;
-
-  case 525:
-
-/* Line 1806 of yacc.c  */
-#line 2008 "parser.yy"
+#line 1998 "parser.yy" /* yacc.c:1646  */
     {
 			linkage = linkageStack.top();
 			linkageStack.pop();
-			(yyval.decl) = (yyvsp[(5) - (6)].decl);
+			(yyval.decl) = (yyvsp[-1].decl);
 		}
-    break;
-
-  case 526:
-
-/* Line 1806 of yacc.c  */
-#line 2014 "parser.yy"
+#line 6949 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 525:
+#line 2004 "parser.yy" /* yacc.c:1646  */
     {	// mark all fields in list
-			for ( DeclarationNode *iter = (yyvsp[(2) - (2)].decl); iter != NULL; iter = (DeclarationNode *)iter->get_next() )
+			for ( DeclarationNode *iter = (yyvsp[0].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
 				iter->set_extension( true );
-			(yyval.decl) = (yyvsp[(2) - (2)].decl);
+			(yyval.decl) = (yyvsp[0].decl);
 		}
-    break;
-
-  case 528:
-
-/* Line 1806 of yacc.c  */
-#line 2029 "parser.yy"
+#line 6959 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 527:
+#line 2019 "parser.yy" /* yacc.c:1646  */
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
 			typedefTable.leaveScope();
-			(yyval.decl) = (yyvsp[(1) - (2)].decl)->addFunctionBody( (yyvsp[(2) - (2)].sn) );
+			(yyval.decl) = (yyvsp[-1].decl)->addFunctionBody( (yyvsp[0].sn) );
 		}
-    break;
-
-  case 529:
-
-/* Line 1806 of yacc.c  */
-#line 2035 "parser.yy"
+#line 6969 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 528:
+#line 2025 "parser.yy" /* yacc.c:1646  */
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
 			typedefTable.leaveScope();
-			(yyval.decl) = (yyvsp[(1) - (4)].decl)->addOldDeclList( (yyvsp[(3) - (4)].decl) )->addFunctionBody( (yyvsp[(4) - (4)].sn) );
+			(yyval.decl) = (yyvsp[-3].decl)->addOldDeclList( (yyvsp[-1].decl) )->addFunctionBody( (yyvsp[0].sn) );
 		}
-    break;
-
-  case 530:
-
-/* Line 1806 of yacc.c  */
-#line 2044 "parser.yy"
+#line 6979 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 529:
+#line 2034 "parser.yy" /* yacc.c:1646  */
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
 			typedefTable.leaveScope();
-			(yyval.decl) = (yyvsp[(1) - (2)].decl)->addFunctionBody( (yyvsp[(2) - (2)].sn) );
+			(yyval.decl) = (yyvsp[-1].decl)->addFunctionBody( (yyvsp[0].sn) );
 		}
-    break;
-
-  case 531:
-
-/* Line 1806 of yacc.c  */
-#line 2050 "parser.yy"
+#line 6989 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 530:
+#line 2040 "parser.yy" /* yacc.c:1646  */
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
 			typedefTable.leaveScope();
-			(yyval.decl) = (yyvsp[(2) - (3)].decl)->addFunctionBody( (yyvsp[(3) - (3)].sn) )->addType( (yyvsp[(1) - (3)].decl) );
+			(yyval.decl) = (yyvsp[-1].decl)->addFunctionBody( (yyvsp[0].sn) )->addType( (yyvsp[-2].decl) );
 		}
-    break;
-
-  case 532:
-
-/* Line 1806 of yacc.c  */
-#line 2056 "parser.yy"
+#line 6999 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 531:
+#line 2046 "parser.yy" /* yacc.c:1646  */
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
 			typedefTable.leaveScope();
-			(yyval.decl) = (yyvsp[(2) - (3)].decl)->addFunctionBody( (yyvsp[(3) - (3)].sn) )->addQualifiers( (yyvsp[(1) - (3)].decl) );
+			(yyval.decl) = (yyvsp[-1].decl)->addFunctionBody( (yyvsp[0].sn) )->addQualifiers( (yyvsp[-2].decl) );
 		}
-    break;
-
-  case 533:
-
-/* Line 1806 of yacc.c  */
-#line 2062 "parser.yy"
+#line 7009 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 532:
+#line 2052 "parser.yy" /* yacc.c:1646  */
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
 			typedefTable.leaveScope();
-			(yyval.decl) = (yyvsp[(2) - (3)].decl)->addFunctionBody( (yyvsp[(3) - (3)].sn) )->addQualifiers( (yyvsp[(1) - (3)].decl) );
+			(yyval.decl) = (yyvsp[-1].decl)->addFunctionBody( (yyvsp[0].sn) )->addQualifiers( (yyvsp[-2].decl) );
 		}
-    break;
-
-  case 534:
-
-/* Line 1806 of yacc.c  */
-#line 2068 "parser.yy"
+#line 7019 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 533:
+#line 2058 "parser.yy" /* yacc.c:1646  */
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
 			typedefTable.leaveScope();
-			(yyval.decl) = (yyvsp[(3) - (4)].decl)->addFunctionBody( (yyvsp[(4) - (4)].sn) )->addQualifiers( (yyvsp[(2) - (4)].decl) )->addQualifiers( (yyvsp[(1) - (4)].decl) );
+			(yyval.decl) = (yyvsp[-1].decl)->addFunctionBody( (yyvsp[0].sn) )->addQualifiers( (yyvsp[-2].decl) )->addQualifiers( (yyvsp[-3].decl) );
 		}
-    break;
-
-  case 535:
-
-/* Line 1806 of yacc.c  */
-#line 2076 "parser.yy"
+#line 7029 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 534:
+#line 2066 "parser.yy" /* yacc.c:1646  */
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
 			typedefTable.leaveScope();
-			(yyval.decl) = (yyvsp[(2) - (5)].decl)->addOldDeclList( (yyvsp[(4) - (5)].decl) )->addFunctionBody( (yyvsp[(5) - (5)].sn) )->addType( (yyvsp[(1) - (5)].decl) );
+			(yyval.decl) = (yyvsp[-3].decl)->addOldDeclList( (yyvsp[-1].decl) )->addFunctionBody( (yyvsp[0].sn) )->addType( (yyvsp[-4].decl) );
 		}
-    break;
-
-  case 536:
-
-/* Line 1806 of yacc.c  */
-#line 2082 "parser.yy"
+#line 7039 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 535:
+#line 2072 "parser.yy" /* yacc.c:1646  */
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
 			typedefTable.leaveScope();
-			(yyval.decl) = (yyvsp[(2) - (5)].decl)->addOldDeclList( (yyvsp[(4) - (5)].decl) )->addFunctionBody( (yyvsp[(5) - (5)].sn) )->addQualifiers( (yyvsp[(1) - (5)].decl) );
+			(yyval.decl) = (yyvsp[-3].decl)->addOldDeclList( (yyvsp[-1].decl) )->addFunctionBody( (yyvsp[0].sn) )->addQualifiers( (yyvsp[-4].decl) );
 		}
-    break;
-
-  case 537:
-
-/* Line 1806 of yacc.c  */
-#line 2090 "parser.yy"
+#line 7049 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 536:
+#line 2080 "parser.yy" /* yacc.c:1646  */
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
 			typedefTable.leaveScope();
-			(yyval.decl) = (yyvsp[(2) - (5)].decl)->addOldDeclList( (yyvsp[(4) - (5)].decl) )->addFunctionBody( (yyvsp[(5) - (5)].sn) )->addQualifiers( (yyvsp[(1) - (5)].decl) );
+			(yyval.decl) = (yyvsp[-3].decl)->addOldDeclList( (yyvsp[-1].decl) )->addFunctionBody( (yyvsp[0].sn) )->addQualifiers( (yyvsp[-4].decl) );
 		}
-    break;
-
-  case 538:
-
-/* Line 1806 of yacc.c  */
-#line 2096 "parser.yy"
+#line 7059 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 537:
+#line 2086 "parser.yy" /* yacc.c:1646  */
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
 			typedefTable.leaveScope();
-			(yyval.decl) = (yyvsp[(3) - (6)].decl)->addOldDeclList( (yyvsp[(5) - (6)].decl) )->addFunctionBody( (yyvsp[(6) - (6)].sn) )->addQualifiers( (yyvsp[(2) - (6)].decl) )->addQualifiers( (yyvsp[(1) - (6)].decl) );
+			(yyval.decl) = (yyvsp[-3].decl)->addOldDeclList( (yyvsp[-1].decl) )->addFunctionBody( (yyvsp[0].sn) )->addQualifiers( (yyvsp[-4].decl) )->addQualifiers( (yyvsp[-5].decl) );
 		}
-    break;
-
-  case 542:
-
-/* Line 1806 of yacc.c  */
-#line 2111 "parser.yy"
-    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
-    break;
-
-  case 545:
-
-/* Line 1806 of yacc.c  */
-#line 2121 "parser.yy"
+#line 7069 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 541:
+#line 2101 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[-2].en), (yyvsp[0].en) ) ); }
+#line 7075 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 544:
+#line 2111 "parser.yy" /* yacc.c:1646  */
     { (yyval.decl) = 0; }
+#line 7081 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 547:
+#line 2118 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
+#line 7087 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 548:
-
-/* Line 1806 of yacc.c  */
-#line 2128 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
-    break;
-
-  case 549:
-
-/* Line 1806 of yacc.c  */
-#line 2134 "parser.yy"
+#line 2124 "parser.yy" /* yacc.c:1646  */
     { (yyval.decl) = 0; }
+#line 7093 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 554:
+#line 2139 "parser.yy" /* yacc.c:1646  */
+    { delete (yyvsp[0].tok); }
+#line 7099 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 555:
-
-/* Line 1806 of yacc.c  */
-#line 2149 "parser.yy"
-    {}
+#line 2140 "parser.yy" /* yacc.c:1646  */
+    { delete (yyvsp[0].decl); }
+#line 7105 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 556:
-
-/* Line 1806 of yacc.c  */
-#line 2150 "parser.yy"
-    {}
+#line 2141 "parser.yy" /* yacc.c:1646  */
+    { delete (yyvsp[0].decl); }
+#line 7111 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 557:
-
-/* Line 1806 of yacc.c  */
-#line 2151 "parser.yy"
-    {}
+#line 2142 "parser.yy" /* yacc.c:1646  */
+    { delete (yyvsp[0].decl); }
+#line 7117 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 558:
-
-/* Line 1806 of yacc.c  */
-#line 2152 "parser.yy"
-    {}
-    break;
-
-  case 559:
-
-/* Line 1806 of yacc.c  */
-#line 2187 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+#line 2177 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
+#line 7123 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 560:
+#line 2180 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
+#line 7129 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 561:
-
-/* Line 1806 of yacc.c  */
-#line 2190 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+#line 2182 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
+#line 7135 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 562:
-
-/* Line 1806 of yacc.c  */
-#line 2192 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+#line 2187 "parser.yy" /* yacc.c:1646  */
+    {
+			typedefTable.setNextIdentifier( *(yyvsp[0].tok) );
+			(yyval.decl) = DeclarationNode::newName( (yyvsp[0].tok) );
+		}
+#line 7144 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 563:
-
-/* Line 1806 of yacc.c  */
-#line 2197 "parser.yy"
-    {
-			typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
-			(yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) );
+#line 2192 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-1].decl); }
+#line 7150 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 564:
+#line 2197 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
+#line 7156 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 565:
+#line 2199 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
+#line 7162 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 566:
+#line 2201 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-1].decl); }
+#line 7168 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 567:
+#line 2206 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-1].decl)->addArray( (yyvsp[0].decl) ); }
+#line 7174 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 568:
+#line 2208 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
+#line 7180 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 569:
+#line 2210 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
+#line 7186 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 570:
+#line 2212 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-1].decl); }
+#line 7192 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 571:
+#line 2217 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-6].decl)->addParamList( (yyvsp[-2].decl) ); }
+#line 7198 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 572:
+#line 2219 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-1].decl); }
+#line 7204 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 573:
+#line 2228 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
+#line 7210 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 575:
+#line 2231 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
+#line 7216 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 576:
+#line 2236 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-5].decl)->addParamList( (yyvsp[-2].decl) ); }
+#line 7222 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 577:
+#line 2238 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-6].decl)->addParamList( (yyvsp[-2].decl) ); }
+#line 7228 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 578:
+#line 2240 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-1].decl); }
+#line 7234 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 579:
+#line 2245 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
+#line 7240 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 580:
+#line 2247 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
+#line 7246 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 581:
+#line 2249 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-1].decl); }
+#line 7252 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 582:
+#line 2254 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
+#line 7258 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 583:
+#line 2256 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
+#line 7264 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 584:
+#line 2258 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-1].decl); }
+#line 7270 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 588:
+#line 2273 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-3].decl)->addIdList( (yyvsp[-1].decl) ); }
+#line 7276 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 589:
+#line 2275 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-4].decl)->addIdList( (yyvsp[-1].decl) ); }
+#line 7282 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 590:
+#line 2277 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-1].decl); }
+#line 7288 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 591:
+#line 2282 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
+#line 7294 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 592:
+#line 2284 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
+#line 7300 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 593:
+#line 2286 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-1].decl); }
+#line 7306 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 594:
+#line 2291 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
+#line 7312 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 595:
+#line 2293 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
+#line 7318 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 596:
+#line 2295 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-1].decl); }
+#line 7324 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 597:
+#line 2310 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
+#line 7330 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 599:
+#line 2313 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
+#line 7336 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 600:
+#line 2315 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
+#line 7342 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 602:
+#line 2321 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-1].decl); }
+#line 7348 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 603:
+#line 2326 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
+#line 7354 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 604:
+#line 2328 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
+#line 7360 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 605:
+#line 2330 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-1].decl); }
+#line 7366 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 606:
+#line 2335 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-1].decl)->addArray( (yyvsp[0].decl) ); }
+#line 7372 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 607:
+#line 2337 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
+#line 7378 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 608:
+#line 2339 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
+#line 7384 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 609:
+#line 2341 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-1].decl); }
+#line 7390 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 610:
+#line 2346 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-5].decl)->addParamList( (yyvsp[-2].decl) ); }
+#line 7396 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 611:
+#line 2348 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-6].decl)->addParamList( (yyvsp[-2].decl) ); }
+#line 7402 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 612:
+#line 2350 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-1].decl); }
+#line 7408 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 613:
+#line 2360 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
+#line 7414 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 615:
+#line 2363 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
+#line 7420 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 616:
+#line 2365 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
+#line 7426 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 617:
+#line 2370 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
+#line 7432 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 618:
+#line 2372 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
+#line 7438 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 619:
+#line 2374 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-1].decl); }
+#line 7444 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 620:
+#line 2379 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-1].decl)->addArray( (yyvsp[0].decl) ); }
+#line 7450 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 621:
+#line 2381 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
+#line 7456 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 622:
+#line 2383 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
+#line 7462 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 623:
+#line 2385 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-1].decl); }
+#line 7468 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 624:
+#line 2390 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-5].decl)->addParamList( (yyvsp[-2].decl) ); }
+#line 7474 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 625:
+#line 2392 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-6].decl)->addParamList( (yyvsp[-2].decl) ); }
+#line 7480 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 626:
+#line 2394 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-1].decl); }
+#line 7486 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 627:
+#line 2425 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
+#line 7492 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 629:
+#line 2428 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
+#line 7498 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 630:
+#line 2430 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
+#line 7504 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 631:
+#line 2435 "parser.yy" /* yacc.c:1646  */
+    {
+			typedefTable.setNextIdentifier( *(yyvsp[0].tok) );
+			(yyval.decl) = DeclarationNode::newName( (yyvsp[0].tok) );
 		}
-    break;
-
-  case 564:
-
-/* Line 1806 of yacc.c  */
-#line 2202 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
-    break;
-
-  case 565:
-
-/* Line 1806 of yacc.c  */
-#line 2207 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
-    break;
-
-  case 566:
-
-/* Line 1806 of yacc.c  */
-#line 2209 "parser.yy"
-    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
-    break;
-
-  case 567:
-
-/* Line 1806 of yacc.c  */
-#line 2211 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
-    break;
-
-  case 568:
-
-/* Line 1806 of yacc.c  */
-#line 2216 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
-    break;
-
-  case 569:
-
-/* Line 1806 of yacc.c  */
-#line 2218 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
-    break;
-
-  case 570:
-
-/* Line 1806 of yacc.c  */
-#line 2220 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
-    break;
-
-  case 571:
-
-/* Line 1806 of yacc.c  */
-#line 2222 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
-    break;
-
-  case 572:
-
-/* Line 1806 of yacc.c  */
-#line 2227 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
-    break;
-
-  case 573:
-
-/* Line 1806 of yacc.c  */
-#line 2229 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
-    break;
-
-  case 574:
-
-/* Line 1806 of yacc.c  */
-#line 2238 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
-    break;
-
-  case 576:
-
-/* Line 1806 of yacc.c  */
-#line 2241 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
-    break;
-
-  case 577:
-
-/* Line 1806 of yacc.c  */
-#line 2246 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
-    break;
-
-  case 578:
-
-/* Line 1806 of yacc.c  */
-#line 2248 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
-    break;
-
-  case 579:
-
-/* Line 1806 of yacc.c  */
-#line 2250 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
-    break;
-
-  case 580:
-
-/* Line 1806 of yacc.c  */
-#line 2255 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
-    break;
-
-  case 581:
-
-/* Line 1806 of yacc.c  */
-#line 2257 "parser.yy"
-    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
-    break;
-
-  case 582:
-
-/* Line 1806 of yacc.c  */
-#line 2259 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
-    break;
-
-  case 583:
-
-/* Line 1806 of yacc.c  */
-#line 2264 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
-    break;
-
-  case 584:
-
-/* Line 1806 of yacc.c  */
-#line 2266 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
-    break;
-
-  case 585:
-
-/* Line 1806 of yacc.c  */
-#line 2268 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
-    break;
-
-  case 589:
-
-/* Line 1806 of yacc.c  */
-#line 2283 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); }
-    break;
-
-  case 590:
-
-/* Line 1806 of yacc.c  */
-#line 2285 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); }
-    break;
-
-  case 591:
-
-/* Line 1806 of yacc.c  */
-#line 2287 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
-    break;
-
-  case 592:
-
-/* Line 1806 of yacc.c  */
-#line 2292 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
-    break;
-
-  case 593:
-
-/* Line 1806 of yacc.c  */
-#line 2294 "parser.yy"
-    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
-    break;
-
-  case 594:
-
-/* Line 1806 of yacc.c  */
-#line 2296 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
-    break;
-
-  case 595:
-
-/* Line 1806 of yacc.c  */
-#line 2301 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
-    break;
-
-  case 596:
-
-/* Line 1806 of yacc.c  */
-#line 2303 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
-    break;
-
-  case 597:
-
-/* Line 1806 of yacc.c  */
-#line 2305 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
-    break;
-
-  case 598:
-
-/* Line 1806 of yacc.c  */
-#line 2320 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
-    break;
-
-  case 600:
-
-/* Line 1806 of yacc.c  */
-#line 2323 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
-    break;
-
-  case 601:
-
-/* Line 1806 of yacc.c  */
-#line 2325 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
-    break;
-
-  case 603:
-
-/* Line 1806 of yacc.c  */
-#line 2331 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
-    break;
-
-  case 604:
-
-/* Line 1806 of yacc.c  */
-#line 2336 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
-    break;
-
-  case 605:
-
-/* Line 1806 of yacc.c  */
-#line 2338 "parser.yy"
-    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
-    break;
-
-  case 606:
-
-/* Line 1806 of yacc.c  */
-#line 2340 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
-    break;
-
-  case 607:
-
-/* Line 1806 of yacc.c  */
-#line 2345 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
-    break;
-
-  case 608:
-
-/* Line 1806 of yacc.c  */
-#line 2347 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
-    break;
-
-  case 609:
-
-/* Line 1806 of yacc.c  */
-#line 2349 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
-    break;
-
-  case 610:
-
-/* Line 1806 of yacc.c  */
-#line 2351 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
-    break;
-
-  case 611:
-
-/* Line 1806 of yacc.c  */
-#line 2356 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
-    break;
-
-  case 612:
-
-/* Line 1806 of yacc.c  */
-#line 2358 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
-    break;
-
-  case 613:
-
-/* Line 1806 of yacc.c  */
-#line 2360 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
-    break;
-
-  case 614:
-
-/* Line 1806 of yacc.c  */
-#line 2370 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
-    break;
-
-  case 616:
-
-/* Line 1806 of yacc.c  */
-#line 2373 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
-    break;
-
-  case 617:
-
-/* Line 1806 of yacc.c  */
-#line 2375 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
-    break;
-
-  case 618:
-
-/* Line 1806 of yacc.c  */
-#line 2380 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
-    break;
-
-  case 619:
-
-/* Line 1806 of yacc.c  */
-#line 2382 "parser.yy"
-    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
-    break;
-
-  case 620:
-
-/* Line 1806 of yacc.c  */
-#line 2384 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
-    break;
-
-  case 621:
-
-/* Line 1806 of yacc.c  */
-#line 2389 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
-    break;
-
-  case 622:
-
-/* Line 1806 of yacc.c  */
-#line 2391 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
-    break;
-
-  case 623:
-
-/* Line 1806 of yacc.c  */
-#line 2393 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
-    break;
-
-  case 624:
-
-/* Line 1806 of yacc.c  */
-#line 2395 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
-    break;
-
-  case 625:
-
-/* Line 1806 of yacc.c  */
-#line 2400 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
-    break;
-
-  case 626:
-
-/* Line 1806 of yacc.c  */
-#line 2402 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
-    break;
-
-  case 627:
-
-/* Line 1806 of yacc.c  */
-#line 2404 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
-    break;
-
-  case 628:
-
-/* Line 1806 of yacc.c  */
-#line 2435 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
-    break;
-
-  case 630:
-
-/* Line 1806 of yacc.c  */
-#line 2438 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
-    break;
-
-  case 631:
-
-/* Line 1806 of yacc.c  */
-#line 2440 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+#line 7513 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 632:
-
-/* Line 1806 of yacc.c  */
-#line 2445 "parser.yy"
-    {
-			typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
-			(yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) );
+#line 2440 "parser.yy" /* yacc.c:1646  */
+    {
+			typedefTable.setNextIdentifier( *(yyvsp[0].tok) );
+			(yyval.decl) = DeclarationNode::newName( (yyvsp[0].tok) );
 		}
+#line 7522 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 633:
-
-/* Line 1806 of yacc.c  */
-#line 2450 "parser.yy"
-    {
-			typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
-			(yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) );
-		}
+#line 2448 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
+#line 7528 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 634:
-
-/* Line 1806 of yacc.c  */
-#line 2458 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
+#line 2450 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
+#line 7534 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 635:
-
-/* Line 1806 of yacc.c  */
-#line 2460 "parser.yy"
-    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
+#line 2452 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-1].decl); }
+#line 7540 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 636:
-
-/* Line 1806 of yacc.c  */
-#line 2462 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+#line 2457 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-1].decl)->addArray( (yyvsp[0].decl) ); }
+#line 7546 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 637:
-
-/* Line 1806 of yacc.c  */
-#line 2467 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
+#line 2459 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
+#line 7552 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 638:
-
-/* Line 1806 of yacc.c  */
-#line 2469 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
+#line 2464 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-5].decl)->addParamList( (yyvsp[-2].decl) ); }
+#line 7558 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 639:
-
-/* Line 1806 of yacc.c  */
-#line 2474 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
-    break;
-
-  case 640:
-
-/* Line 1806 of yacc.c  */
-#line 2476 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
+#line 2466 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-6].decl)->addParamList( (yyvsp[-2].decl) ); }
+#line 7564 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 641:
+#line 2481 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
+#line 7570 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 642:
-
-/* Line 1806 of yacc.c  */
-#line 2491 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+#line 2483 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
+#line 7576 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 643:
-
-/* Line 1806 of yacc.c  */
-#line 2493 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+#line 2488 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
+#line 7582 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 644:
-
-/* Line 1806 of yacc.c  */
-#line 2498 "parser.yy"
+#line 2490 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[0].decl) ); }
+#line 7588 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 645:
+#line 2492 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
+#line 7594 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 646:
+#line 2494 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
+#line 7600 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 647:
+#line 2496 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-1].decl); }
+#line 7606 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 649:
+#line 2502 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
+#line 7612 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 650:
+#line 2504 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
+#line 7618 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 651:
+#line 2506 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-1].decl); }
+#line 7624 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 652:
+#line 2511 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[-2].decl), 0 ); }
+#line 7630 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 653:
+#line 2513 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-6].decl)->addParamList( (yyvsp[-2].decl) ); }
+#line 7636 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 654:
+#line 2515 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-1].decl); }
+#line 7642 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 655:
+#line 2521 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
+#line 7648 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 656:
+#line 2523 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[0].decl) ); }
+#line 7654 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 658:
+#line 2529 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[-2].en), 0, false ); }
+#line 7660 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 659:
+#line 2531 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = DeclarationNode::newVarArray( 0 ); }
+#line 7666 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 660:
+#line 2533 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-5].decl)->addArray( DeclarationNode::newArray( (yyvsp[-2].en), 0, false ) ); }
+#line 7672 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 661:
+#line 2535 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-5].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); }
+#line 7678 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 663:
+#line 2550 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
+#line 7684 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 664:
+#line 2552 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
+#line 7690 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 665:
+#line 2557 "parser.yy" /* yacc.c:1646  */
     { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
-    break;
-
-  case 645:
-
-/* Line 1806 of yacc.c  */
-#line 2500 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
-    break;
-
-  case 646:
-
-/* Line 1806 of yacc.c  */
-#line 2502 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
-    break;
-
-  case 647:
-
-/* Line 1806 of yacc.c  */
-#line 2504 "parser.yy"
-    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
-    break;
-
-  case 648:
-
-/* Line 1806 of yacc.c  */
-#line 2506 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
-    break;
-
-  case 650:
-
-/* Line 1806 of yacc.c  */
-#line 2512 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
-    break;
-
-  case 651:
-
-/* Line 1806 of yacc.c  */
-#line 2514 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
-    break;
-
-  case 652:
-
-/* Line 1806 of yacc.c  */
-#line 2516 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
-    break;
-
-  case 653:
-
-/* Line 1806 of yacc.c  */
-#line 2521 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
-    break;
-
-  case 654:
-
-/* Line 1806 of yacc.c  */
-#line 2523 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
-    break;
-
-  case 655:
-
-/* Line 1806 of yacc.c  */
-#line 2525 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
-    break;
-
-  case 656:
-
-/* Line 1806 of yacc.c  */
-#line 2531 "parser.yy"
+#line 7696 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 666:
+#line 2559 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[0].decl) ); }
+#line 7702 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 667:
+#line 2561 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
+#line 7708 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 668:
+#line 2563 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
+#line 7714 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 669:
+#line 2565 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-1].decl); }
+#line 7720 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 671:
+#line 2571 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
+#line 7726 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 672:
+#line 2573 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
+#line 7732 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 673:
+#line 2575 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-1].decl); }
+#line 7738 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 674:
+#line 2580 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[-2].decl), 0 ); }
+#line 7744 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 675:
+#line 2582 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-6].decl)->addParamList( (yyvsp[-2].decl) ); }
+#line 7750 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 676:
+#line 2584 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-1].decl); }
+#line 7756 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 678:
+#line 2591 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-1].decl)->addArray( (yyvsp[0].decl) ); }
+#line 7762 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 680:
+#line 2602 "parser.yy" /* yacc.c:1646  */
     { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
-    break;
-
-  case 657:
-
-/* Line 1806 of yacc.c  */
-#line 2533 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(3) - (3)].decl) ); }
-    break;
-
-  case 659:
-
-/* Line 1806 of yacc.c  */
-#line 2539 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); }
-    break;
-
-  case 660:
-
-/* Line 1806 of yacc.c  */
-#line 2541 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newVarArray( 0 ); }
-    break;
-
-  case 661:
-
-/* Line 1806 of yacc.c  */
-#line 2543 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); }
-    break;
-
-  case 662:
-
-/* Line 1806 of yacc.c  */
-#line 2545 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); }
-    break;
-
-  case 664:
-
-/* Line 1806 of yacc.c  */
-#line 2560 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
-    break;
-
-  case 665:
-
-/* Line 1806 of yacc.c  */
-#line 2562 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
-    break;
-
-  case 666:
-
-/* Line 1806 of yacc.c  */
-#line 2567 "parser.yy"
+#line 7768 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 681:
+#line 2605 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[-3].decl) ); }
+#line 7774 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 682:
+#line 2607 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[-2].decl), false ); }
+#line 7780 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 683:
+#line 2610 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[-2].en), (yyvsp[-3].decl), false ); }
+#line 7786 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 684:
+#line 2612 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[-2].en), (yyvsp[-3].decl), true ); }
+#line 7792 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 685:
+#line 2614 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[-2].en), (yyvsp[-4].decl), true ); }
+#line 7798 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 687:
+#line 2628 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
+#line 7804 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 688:
+#line 2630 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
+#line 7810 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 689:
+#line 2635 "parser.yy" /* yacc.c:1646  */
     { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
-    break;
-
-  case 667:
-
-/* Line 1806 of yacc.c  */
-#line 2569 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
-    break;
-
-  case 668:
-
-/* Line 1806 of yacc.c  */
-#line 2571 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
-    break;
-
-  case 669:
-
-/* Line 1806 of yacc.c  */
-#line 2573 "parser.yy"
-    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
-    break;
-
-  case 670:
-
-/* Line 1806 of yacc.c  */
-#line 2575 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
-    break;
-
-  case 672:
-
-/* Line 1806 of yacc.c  */
-#line 2581 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
-    break;
-
-  case 673:
-
-/* Line 1806 of yacc.c  */
-#line 2583 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
-    break;
-
-  case 674:
-
-/* Line 1806 of yacc.c  */
-#line 2585 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
-    break;
-
-  case 675:
-
-/* Line 1806 of yacc.c  */
-#line 2590 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
-    break;
-
-  case 676:
-
-/* Line 1806 of yacc.c  */
-#line 2592 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
-    break;
-
-  case 677:
-
-/* Line 1806 of yacc.c  */
-#line 2594 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
-    break;
-
-  case 679:
-
-/* Line 1806 of yacc.c  */
-#line 2601 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
-    break;
-
-  case 681:
-
-/* Line 1806 of yacc.c  */
-#line 2612 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
-    break;
-
-  case 682:
-
-/* Line 1806 of yacc.c  */
-#line 2615 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
-    break;
-
-  case 683:
-
-/* Line 1806 of yacc.c  */
-#line 2617 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); }
-    break;
-
-  case 684:
-
-/* Line 1806 of yacc.c  */
-#line 2620 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
-    break;
-
-  case 685:
-
-/* Line 1806 of yacc.c  */
-#line 2622 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); }
-    break;
-
-  case 686:
-
-/* Line 1806 of yacc.c  */
-#line 2624 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); }
-    break;
-
-  case 688:
-
-/* Line 1806 of yacc.c  */
-#line 2638 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
-    break;
-
-  case 689:
-
-/* Line 1806 of yacc.c  */
-#line 2640 "parser.yy"
-    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+#line 7816 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 690:
-
-/* Line 1806 of yacc.c  */
-#line 2645 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
+#line 2637 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[0].decl) ); }
+#line 7822 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 691:
-
-/* Line 1806 of yacc.c  */
-#line 2647 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
+#line 2639 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
+#line 7828 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 692:
-
-/* Line 1806 of yacc.c  */
-#line 2649 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
+#line 2641 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
+#line 7834 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 693:
-
-/* Line 1806 of yacc.c  */
-#line 2651 "parser.yy"
-    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
-    break;
-
-  case 694:
-
-/* Line 1806 of yacc.c  */
-#line 2653 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+#line 2643 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-1].decl); }
+#line 7840 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 695:
+#line 2649 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
+#line 7846 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 696:
-
-/* Line 1806 of yacc.c  */
-#line 2659 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
+#line 2651 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
+#line 7852 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 697:
-
-/* Line 1806 of yacc.c  */
-#line 2661 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
+#line 2653 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-1].decl); }
+#line 7858 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 698:
-
-/* Line 1806 of yacc.c  */
-#line 2663 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+#line 2658 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-6].decl)->addParamList( (yyvsp[-2].decl) ); }
+#line 7864 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 699:
-
-/* Line 1806 of yacc.c  */
-#line 2668 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
-    break;
-
-  case 700:
-
-/* Line 1806 of yacc.c  */
-#line 2670 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
-    break;
-
-  case 703:
-
-/* Line 1806 of yacc.c  */
-#line 2680 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
+#line 2660 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[-1].decl); }
+#line 7870 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 702:
+#line 2670 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
+#line 7876 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 705:
+#line 2680 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
+#line 7882 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 706:
-
-/* Line 1806 of yacc.c  */
-#line 2690 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
+#line 2682 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[-2].decl) ) ); }
+#line 7888 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 707:
-
-/* Line 1806 of yacc.c  */
-#line 2692 "parser.yy"
-    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
+#line 2684 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
+#line 7894 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 708:
-
-/* Line 1806 of yacc.c  */
-#line 2694 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
+#line 2686 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[-2].decl) ) ); }
+#line 7900 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 709:
-
-/* Line 1806 of yacc.c  */
-#line 2696 "parser.yy"
-    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
+#line 2688 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
+#line 7906 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 710:
-
-/* Line 1806 of yacc.c  */
-#line 2698 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
+#line 2690 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[-2].decl) ) ); }
+#line 7912 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 711:
-
-/* Line 1806 of yacc.c  */
-#line 2700 "parser.yy"
-    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
+#line 2697 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
+#line 7918 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 712:
-
-/* Line 1806 of yacc.c  */
-#line 2707 "parser.yy"
-    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
+#line 2699 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) ); }
+#line 7924 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 713:
-
-/* Line 1806 of yacc.c  */
-#line 2709 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
+#line 2701 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
+#line 7930 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 714:
-
-/* Line 1806 of yacc.c  */
-#line 2711 "parser.yy"
-    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
+#line 2703 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) )->addNewArray( (yyvsp[-2].decl) ); }
+#line 7936 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 715:
-
-/* Line 1806 of yacc.c  */
-#line 2713 "parser.yy"
-    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
+#line 2705 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) ); }
+#line 7942 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 716:
-
-/* Line 1806 of yacc.c  */
-#line 2715 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
+#line 2707 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
+#line 7948 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 717:
-
-/* Line 1806 of yacc.c  */
-#line 2717 "parser.yy"
-    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
+#line 2709 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) ); }
+#line 7954 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 718:
-
-/* Line 1806 of yacc.c  */
-#line 2719 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
+#line 2711 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
+#line 7960 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 719:
-
-/* Line 1806 of yacc.c  */
-#line 2721 "parser.yy"
-    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
+#line 2713 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) )->addNewArray( (yyvsp[-2].decl) ); }
+#line 7966 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 720:
-
-/* Line 1806 of yacc.c  */
-#line 2723 "parser.yy"
-    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
+#line 2715 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) ); }
+#line 7972 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 721:
-
-/* Line 1806 of yacc.c  */
-#line 2725 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
+#line 2720 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[-3].decl) ); }
+#line 7978 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 722:
-
-/* Line 1806 of yacc.c  */
-#line 2730 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
+#line 2722 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[-2].en), (yyvsp[-3].decl), false ); }
+#line 7984 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 723:
-
-/* Line 1806 of yacc.c  */
-#line 2732 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
+#line 2727 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[-2].en), (yyvsp[-3].decl), true ); }
+#line 7990 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 724:
-
-/* Line 1806 of yacc.c  */
-#line 2737 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); }
-    break;
-
-  case 725:
-
-/* Line 1806 of yacc.c  */
-#line 2739 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); }
-    break;
-
-  case 727:
-
-/* Line 1806 of yacc.c  */
-#line 2766 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
+#line 2729 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[-2].en), (yyvsp[-3].decl)->addQualifiers( (yyvsp[-4].decl) ), true ); }
+#line 7996 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 726:
+#line 2756 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
+#line 8002 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 730:
+#line 2767 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
+#line 8008 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 731:
-
-/* Line 1806 of yacc.c  */
-#line 2777 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
+#line 2769 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[-2].decl) ) ); }
+#line 8014 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 732:
-
-/* Line 1806 of yacc.c  */
-#line 2779 "parser.yy"
-    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
+#line 2771 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
+#line 8020 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 733:
-
-/* Line 1806 of yacc.c  */
-#line 2781 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
+#line 2773 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[-2].decl) ) ); }
+#line 8026 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 734:
-
-/* Line 1806 of yacc.c  */
-#line 2783 "parser.yy"
-    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
+#line 2775 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
+#line 8032 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 735:
-
-/* Line 1806 of yacc.c  */
-#line 2785 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
+#line 2777 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[-2].decl) ) ); }
+#line 8038 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 736:
-
-/* Line 1806 of yacc.c  */
-#line 2787 "parser.yy"
-    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
+#line 2784 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
+#line 8044 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 737:
-
-/* Line 1806 of yacc.c  */
-#line 2794 "parser.yy"
-    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
+#line 2786 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
+#line 8050 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 738:
-
-/* Line 1806 of yacc.c  */
-#line 2796 "parser.yy"
-    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
+#line 2788 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) ); }
+#line 8056 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 739:
-
-/* Line 1806 of yacc.c  */
-#line 2798 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
+#line 2790 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
+#line 8062 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 740:
-
-/* Line 1806 of yacc.c  */
-#line 2800 "parser.yy"
-    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
+#line 2792 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
+#line 8068 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 741:
-
-/* Line 1806 of yacc.c  */
-#line 2802 "parser.yy"
-    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
+#line 2794 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) ); }
+#line 8074 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 742:
-
-/* Line 1806 of yacc.c  */
-#line 2804 "parser.yy"
-    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
+#line 2799 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[-2].decl) ); }
+#line 8080 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 743:
-
-/* Line 1806 of yacc.c  */
-#line 2809 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
+#line 2804 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = DeclarationNode::newFunction( 0, DeclarationNode::newTuple( 0 ), (yyvsp[-1].decl), 0 ); }
+#line 8086 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 744:
-
-/* Line 1806 of yacc.c  */
-#line 2814 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newFunction( 0, DeclarationNode::newTuple( 0 ), (yyvsp[(4) - (5)].decl), 0 ); }
+#line 2806 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[-5].decl), (yyvsp[-2].decl), 0 ); }
+#line 8092 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 745:
-
-/* Line 1806 of yacc.c  */
-#line 2816 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
-    break;
-
-  case 746:
-
-/* Line 1806 of yacc.c  */
-#line 2818 "parser.yy"
-    { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
+#line 2808 "parser.yy" /* yacc.c:1646  */
+    { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[-5].decl), (yyvsp[-2].decl), 0 ); }
+#line 8098 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+  case 748:
+#line 2832 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = 0; }
+#line 8104 "Parser/parser.cc" /* yacc.c:1646  */
     break;
 
   case 749:
-
-/* Line 1806 of yacc.c  */
-#line 2842 "parser.yy"
-    { (yyval.en) = 0; }
-    break;
-
-  case 750:
-
-/* Line 1806 of yacc.c  */
-#line 2844 "parser.yy"
-    { (yyval.en) = (yyvsp[(2) - (2)].en); }
-    break;
-
-
-
-/* Line 1806 of yacc.c  */
-#line 9149 "Parser/parser.cc"
+#line 2834 "parser.yy" /* yacc.c:1646  */
+    { (yyval.en) = (yyvsp[0].en); }
+#line 8110 "Parser/parser.cc" /* yacc.c:1646  */
+    break;
+
+
+#line 8114 "Parser/parser.cc" /* yacc.c:1646  */
       default: break;
     }
@@ -9168,5 +8133,5 @@
   *++yyvsp = yyval;
 
-  /* Now `shift' the result of the reduction.  Determine what state
+  /* Now 'shift' the result of the reduction.  Determine what state
      that goes to, based on the state we popped back to and the rule
      number reduced by.  */
@@ -9183,7 +8148,7 @@
 
 
-/*------------------------------------.
-| yyerrlab -- here on detecting error |
-`------------------------------------*/
+/*--------------------------------------.
+| yyerrlab -- here on detecting error.  |
+`--------------------------------------*/
 yyerrlab:
   /* Make sure we have latest lookahead translation.  See comments at
@@ -9236,18 +8201,18 @@
     {
       /* If just tried and failed to reuse lookahead token after an
-	 error, discard it.  */
+         error, discard it.  */
 
       if (yychar <= YYEOF)
-	{
-	  /* Return failure if at end of input.  */
-	  if (yychar == YYEOF)
-	    YYABORT;
-	}
+        {
+          /* Return failure if at end of input.  */
+          if (yychar == YYEOF)
+            YYABORT;
+        }
       else
-	{
-	  yydestruct ("Error: discarding",
-		      yytoken, &yylval);
-	  yychar = YYEMPTY;
-	}
+        {
+          yydestruct ("Error: discarding",
+                      yytoken, &yylval);
+          yychar = YYEMPTY;
+        }
     }
 
@@ -9268,5 +8233,5 @@
      goto yyerrorlab;
 
-  /* Do not reclaim the symbols of the rule which action triggered
+  /* Do not reclaim the symbols of the rule whose action triggered
      this YYERROR.  */
   YYPOPSTACK (yylen);
@@ -9281,5 +8246,5 @@
 `-------------------------------------------------------------*/
 yyerrlab1:
-  yyerrstatus = 3;	/* Each real token shifted decrements this.  */
+  yyerrstatus = 3;      /* Each real token shifted decrements this.  */
 
   for (;;)
@@ -9287,21 +8252,21 @@
       yyn = yypact[yystate];
       if (!yypact_value_is_default (yyn))
-	{
-	  yyn += YYTERROR;
-	  if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
-	    {
-	      yyn = yytable[yyn];
-	      if (0 < yyn)
-		break;
-	    }
-	}
+        {
+          yyn += YYTERROR;
+          if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
+            {
+              yyn = yytable[yyn];
+              if (0 < yyn)
+                break;
+            }
+        }
 
       /* Pop the current state because it cannot handle the error token.  */
       if (yyssp == yyss)
-	YYABORT;
+        YYABORT;
 
 
       yydestruct ("Error: popping",
-		  yystos[yystate], yyvsp);
+                  yystos[yystate], yyvsp);
       YYPOPSTACK (1);
       yystate = *yyssp;
@@ -9309,5 +8274,7 @@
     }
 
+  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   *++yyvsp = yylval;
+  YY_IGNORE_MAYBE_UNINITIALIZED_END
 
 
@@ -9333,5 +8300,5 @@
   goto yyreturn;
 
-#if !defined(yyoverflow) || YYERROR_VERBOSE
+#if !defined yyoverflow || YYERROR_VERBOSE
 /*-------------------------------------------------.
 | yyexhaustedlab -- memory exhaustion comes here.  |
@@ -9352,5 +8319,5 @@
                   yytoken, &yylval);
     }
-  /* Do not reclaim the symbols of the rule which action triggered
+  /* Do not reclaim the symbols of the rule whose action triggered
      this YYABORT or YYACCEPT.  */
   YYPOPSTACK (yylen);
@@ -9359,5 +8326,5 @@
     {
       yydestruct ("Cleanup: popping",
-		  yystos[*yyssp], yyvsp);
+                  yystos[*yyssp], yyvsp);
       YYPOPSTACK (1);
     }
@@ -9370,14 +8337,11 @@
     YYSTACK_FREE (yymsg);
 #endif
-  /* Make sure YYID is used.  */
-  return YYID (yyresult);
+  return yyresult;
 }
-
-
-
-/* Line 2067 of yacc.c  */
-#line 2847 "parser.yy"
+#line 2837 "parser.yy" /* yacc.c:1906  */
 
 // ----end of grammar----
+
+extern char *yytext;
 
 void yyerror( const char * ) {
@@ -9394,3 +8358,2 @@
 // compile-command: "make install" //
 // End: //
-
Index: src/Parser/parser.h
===================================================================
--- src/Parser/parser.h	(revision 7b1bfc597c11725f68bb6b8790ca6a3501cd1bf7)
+++ src/Parser/parser.h	(revision 4a7d895054466f290f1d971a3482f0e4ff8a3c74)
@@ -1,18 +1,18 @@
-/* A Bison parser, made by GNU Bison 2.5.  */
+/* A Bison parser, made by GNU Bison 3.0.2.  */
 
 /* Bison interface for Yacc-like parsers in C
-   
-      Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc.
-   
+
+   Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
+
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.
-   
+
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
-   
+
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
@@ -27,122 +27,130 @@
    Bison output files to be licensed under the GNU General Public
    License without this special exception.
-   
+
    This special exception was added by the Free Software Foundation in
    version 2.2 of Bison.  */
 
-
-/* Tokens.  */
+#ifndef YY_YY_PARSER_PARSER_H_INCLUDED
+# define YY_YY_PARSER_PARSER_H_INCLUDED
+/* Debug traces.  */
+#ifndef YYDEBUG
+# define YYDEBUG 1
+#endif
+#if YYDEBUG
+extern int yydebug;
+#endif
+
+/* Token type.  */
 #ifndef YYTOKENTYPE
 # define YYTOKENTYPE
-   /* Put the tokens into the symbol table, so that GDB and other debuggers
-      know about them.  */
-   enum yytokentype {
-     TYPEDEF = 258,
-     AUTO = 259,
-     EXTERN = 260,
-     REGISTER = 261,
-     STATIC = 262,
-     INLINE = 263,
-     FORTRAN = 264,
-     CONST = 265,
-     VOLATILE = 266,
-     RESTRICT = 267,
-     FORALL = 268,
-     LVALUE = 269,
-     VOID = 270,
-     CHAR = 271,
-     SHORT = 272,
-     INT = 273,
-     LONG = 274,
-     FLOAT = 275,
-     DOUBLE = 276,
-     SIGNED = 277,
-     UNSIGNED = 278,
-     VALIST = 279,
-     BOOL = 280,
-     COMPLEX = 281,
-     IMAGINARY = 282,
-     TYPEOF = 283,
-     LABEL = 284,
-     ENUM = 285,
-     STRUCT = 286,
-     UNION = 287,
-     OTYPE = 288,
-     FTYPE = 289,
-     DTYPE = 290,
-     TRAIT = 291,
-     SIZEOF = 292,
-     OFFSETOF = 293,
-     ATTRIBUTE = 294,
-     EXTENSION = 295,
-     IF = 296,
-     ELSE = 297,
-     SWITCH = 298,
-     CASE = 299,
-     DEFAULT = 300,
-     DO = 301,
-     WHILE = 302,
-     FOR = 303,
-     BREAK = 304,
-     CONTINUE = 305,
-     GOTO = 306,
-     RETURN = 307,
-     CHOOSE = 308,
-     DISABLE = 309,
-     ENABLE = 310,
-     FALLTHRU = 311,
-     TRY = 312,
-     CATCH = 313,
-     CATCHRESUME = 314,
-     FINALLY = 315,
-     THROW = 316,
-     THROWRESUME = 317,
-     AT = 318,
-     ASM = 319,
-     ALIGNAS = 320,
-     ALIGNOF = 321,
-     ATOMIC = 322,
-     GENERIC = 323,
-     NORETURN = 324,
-     STATICASSERT = 325,
-     THREADLOCAL = 326,
-     IDENTIFIER = 327,
-     QUOTED_IDENTIFIER = 328,
-     TYPEDEFname = 329,
-     TYPEGENname = 330,
-     ATTR_IDENTIFIER = 331,
-     ATTR_TYPEDEFname = 332,
-     ATTR_TYPEGENname = 333,
-     INTEGERconstant = 334,
-     FLOATINGconstant = 335,
-     CHARACTERconstant = 336,
-     STRINGliteral = 337,
-     ZERO = 338,
-     ONE = 339,
-     ARROW = 340,
-     ICR = 341,
-     DECR = 342,
-     LS = 343,
-     RS = 344,
-     LE = 345,
-     GE = 346,
-     EQ = 347,
-     NE = 348,
-     ANDAND = 349,
-     OROR = 350,
-     ELLIPSIS = 351,
-     MULTassign = 352,
-     DIVassign = 353,
-     MODassign = 354,
-     PLUSassign = 355,
-     MINUSassign = 356,
-     LSassign = 357,
-     RSassign = 358,
-     ANDassign = 359,
-     ERassign = 360,
-     ORassign = 361,
-     ATassign = 362,
-     THEN = 363
-   };
+  enum yytokentype
+  {
+    TYPEDEF = 258,
+    AUTO = 259,
+    EXTERN = 260,
+    REGISTER = 261,
+    STATIC = 262,
+    INLINE = 263,
+    FORTRAN = 264,
+    CONST = 265,
+    VOLATILE = 266,
+    RESTRICT = 267,
+    FORALL = 268,
+    LVALUE = 269,
+    VOID = 270,
+    CHAR = 271,
+    SHORT = 272,
+    INT = 273,
+    LONG = 274,
+    FLOAT = 275,
+    DOUBLE = 276,
+    SIGNED = 277,
+    UNSIGNED = 278,
+    VALIST = 279,
+    BOOL = 280,
+    COMPLEX = 281,
+    IMAGINARY = 282,
+    TYPEOF = 283,
+    LABEL = 284,
+    ENUM = 285,
+    STRUCT = 286,
+    UNION = 287,
+    OTYPE = 288,
+    FTYPE = 289,
+    DTYPE = 290,
+    TRAIT = 291,
+    SIZEOF = 292,
+    OFFSETOF = 293,
+    ATTRIBUTE = 294,
+    EXTENSION = 295,
+    IF = 296,
+    ELSE = 297,
+    SWITCH = 298,
+    CASE = 299,
+    DEFAULT = 300,
+    DO = 301,
+    WHILE = 302,
+    FOR = 303,
+    BREAK = 304,
+    CONTINUE = 305,
+    GOTO = 306,
+    RETURN = 307,
+    CHOOSE = 308,
+    DISABLE = 309,
+    ENABLE = 310,
+    FALLTHRU = 311,
+    TRY = 312,
+    CATCH = 313,
+    CATCHRESUME = 314,
+    FINALLY = 315,
+    THROW = 316,
+    THROWRESUME = 317,
+    AT = 318,
+    ASM = 319,
+    ALIGNAS = 320,
+    ALIGNOF = 321,
+    ATOMIC = 322,
+    GENERIC = 323,
+    NORETURN = 324,
+    STATICASSERT = 325,
+    THREADLOCAL = 326,
+    IDENTIFIER = 327,
+    QUOTED_IDENTIFIER = 328,
+    TYPEDEFname = 329,
+    TYPEGENname = 330,
+    ATTR_IDENTIFIER = 331,
+    ATTR_TYPEDEFname = 332,
+    ATTR_TYPEGENname = 333,
+    INTEGERconstant = 334,
+    FLOATINGconstant = 335,
+    CHARACTERconstant = 336,
+    STRINGliteral = 337,
+    ZERO = 338,
+    ONE = 339,
+    ARROW = 340,
+    ICR = 341,
+    DECR = 342,
+    LS = 343,
+    RS = 344,
+    LE = 345,
+    GE = 346,
+    EQ = 347,
+    NE = 348,
+    ANDAND = 349,
+    OROR = 350,
+    ELLIPSIS = 351,
+    MULTassign = 352,
+    DIVassign = 353,
+    MODassign = 354,
+    PLUSassign = 355,
+    MINUSassign = 356,
+    LSassign = 357,
+    RSassign = 358,
+    ANDassign = 359,
+    ERassign = 360,
+    ORassign = 361,
+    ATassign = 362,
+    THEN = 363
+  };
 #endif
 /* Tokens.  */
@@ -254,13 +262,10 @@
 #define THEN 363
 
-
-
-
+/* Value type.  */
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-typedef union YYSTYPE
+typedef union YYSTYPE YYSTYPE;
+union YYSTYPE
 {
-
-/* Line 2068 of yacc.c  */
-#line 115 "parser.yy"
+#line 115 "parser.yy" /* yacc.c:1909  */
 
 	Token tok;
@@ -278,15 +283,14 @@
 	bool flag;
 
-
-
-/* Line 2068 of yacc.c  */
-#line 284 "Parser/parser.h"
-} YYSTYPE;
+#line 286 "Parser/parser.h" /* yacc.c:1909  */
+};
 # define YYSTYPE_IS_TRIVIAL 1
-# define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
 #endif
 
+
 extern YYSTYPE yylval;
 
-
+int yyparse (void);
+
+#endif /* !YY_YY_PARSER_PARSER_H_INCLUDED  */
Index: src/Parser/parser.yy
===================================================================
--- src/Parser/parser.yy	(revision 7b1bfc597c11725f68bb6b8790ca6a3501cd1bf7)
+++ src/Parser/parser.yy	(revision 4a7d895054466f290f1d971a3482f0e4ff8a3c74)
@@ -10,6 +10,6 @@
 // Created On       : Sat Sep  1 20:22:55 2001
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon Aug 15 15:18:19 2016
-// Update Count     : 1891
+// Last Modified On : Thu Aug 18 23:49:10 2016
+// Update Count     : 1909
 //
 
@@ -43,5 +43,4 @@
 #define YYDEBUG_LEXER_TEXT (yylval)						// lexer loads this up each time
 #define YYDEBUG 1										// get the pretty debugging code to compile
-extern char *yytext;
 
 #undef __GNUC_MINOR__
@@ -56,8 +55,9 @@
 #include "LinkageSpec.h"
 
-DeclarationNode *theTree = 0;							// the resulting parse tree
-LinkageSpec::Type linkage = LinkageSpec::Cforall;
-std::stack< LinkageSpec::Type > linkageStack;
-TypedefTable typedefTable;
+extern DeclarationNode * parseTree;
+extern LinkageSpec::Spec linkage;
+extern TypedefTable typedefTable;
+
+std::stack< LinkageSpec::Spec > linkageStack;
 
 void appendStr( std::string &to, std::string *from ) {
@@ -223,5 +223,5 @@
 %type<decl> paren_identifier paren_type
 
-%type<decl> storage_class storage_class_name storage_class_list
+%type<decl> storage_class storage_class_list
 
 %type<decl> sue_declaration_specifier sue_type_specifier
@@ -311,7 +311,7 @@
 constant:
 		// ENUMERATIONconstant is not included here; it is treated as a variable with type "enumeration constant".
-INTEGERconstant									{ $$ = new ExpressionNode( build_constantInteger( *$1 ) ); }
-	| FLOATINGconstant							{ $$ = new ExpressionNode( build_constantFloat( *$1 ) ); }
-	| CHARACTERconstant							{ $$ = new ExpressionNode( build_constantChar( *$1 ) ); }
+	INTEGERconstant									{ $$ = new ExpressionNode( build_constantInteger( assign_strptr($1) ) ); }
+	| FLOATINGconstant							{ $$ = new ExpressionNode( build_constantFloat( assign_strptr($1) ) ); }
+	| CHARACTERconstant							{ $$ = new ExpressionNode( build_constantChar( assign_strptr($1) ) ); }
 	;
 
@@ -338,5 +338,5 @@
 
 string_literal_list:									// juxtaposed strings are concatenated
-	STRINGliteral								{ $$ = build_constantStr( *$1 ); }
+	STRINGliteral								{ $$ = build_constantStr( assign_strptr($1) ); }
 	| string_literal_list STRINGliteral
 		{
@@ -699,5 +699,5 @@
 	| EXTENSION declaration								// GCC
 		{	// mark all fields in list
-			for ( DeclarationNode *iter = $2; iter != NULL; iter = (DeclarationNode *)iter->get_next() )
+			for ( DeclarationNode *iter = $2; iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
 				iter->set_extension( true );
 			$$ = new StatementNode( $2 );
@@ -838,5 +838,5 @@
 jump_statement:
 	GOTO IDENTIFIER ';'
-		{ $$ = new StatementNode( build_branch( *$2, BranchStmt::Goto ) ); }
+		{ $$ = new StatementNode( build_branch( assign_strptr($2), BranchStmt::Goto ) ); }
 	| GOTO '*' comma_expression ';'						// GCC, computed goto
 		// The syntax for the GCC computed goto violates normal expression precedence, e.g., goto *i+3; => goto *(i+3);
@@ -849,5 +849,5 @@
 		// A semantic check is required to ensure this statement appears only in the body of an iteration statement, and
 		// the target of the transfer appears only at the start of an iteration statement.
-		{ $$ = new StatementNode( build_branch( *$2, BranchStmt::Continue ) ); delete $2; }
+		{ $$ = new StatementNode( build_branch( assign_strptr($2), BranchStmt::Continue ) ); }
 	| BREAK ';'
 		// A semantic check is required to ensure this statement appears only in the body of an iteration statement.
@@ -856,5 +856,5 @@
 		// A semantic check is required to ensure this statement appears only in the body of an iteration statement, and
 		// the target of the transfer appears only at the start of an iteration statement.
-		{ $$ = new StatementNode( build_branch( *$2, BranchStmt::Break ) ); delete $2; }
+		{ $$ = new StatementNode( build_branch( assign_strptr($2), BranchStmt::Break ) ); }
 	| RETURN comma_expression_opt ';'
 		{ $$ = new StatementNode( build_return( $2 ) ); }
@@ -979,7 +979,7 @@
 label_list:
 	no_attr_identifier
-		{ $$ = new LabelNode(); $$->labels.push_back( *$1 ); }
+		{ $$ = new LabelNode(); $$->labels.push_back( assign_strptr($1) ); }
 	| label_list ',' no_attr_identifier
-		{ $$ = $1; $1->labels.push_back( *$3 ); }
+		{ $$ = $1; $1->labels.push_back( assign_strptr($3) ); }
 	;
 
@@ -1324,8 +1324,4 @@
 
 storage_class:
-	storage_class_name
-	;
-
-storage_class_name:
 	EXTERN
 		{ $$ = DeclarationNode::newStorageClass( DeclarationNode::Extern ); }
@@ -1497,5 +1493,5 @@
 	| EXTENSION field_declaring_list ';'				// GCC
 		{	// mark all fields in list
-			for ( DeclarationNode *iter = $2; iter != NULL; iter = (DeclarationNode *)iter->get_next() )
+			for ( DeclarationNode *iter = $2; iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
 				iter->set_extension( true );
 			$$ = $2;
@@ -1974,11 +1970,5 @@
 		{}												// empty input file
 	| external_definition_list
-		{
-			if ( theTree ) {
-				theTree->appendList( $1 );
-			} else {
-				theTree = $1;
-			}
-		}
+		{ parseTree = parseTree != nullptr ? parseTree->appendList( $1 ) : $1;	}
 	;
 
@@ -1986,5 +1976,5 @@
 	external_definition
 	| external_definition_list push external_definition
-		{ $$ = ( $1 != NULL ) ? $1->appendList( $3 ) : $3; }
+		{ $$ = $1 != nullptr ? $1->appendList( $3 ) : $3; }
 	;
 
@@ -2002,6 +1992,6 @@
 	| EXTERN STRINGliteral
 		{
-			linkageStack.push( linkage );
-			linkage = LinkageSpec::fromString( *$2 );
+			linkageStack.push( linkage );				// handle nested extern "C"/"Cforall"
+			linkage = LinkageSpec::fromString( assign_strptr($2) );
 		}
 	  '{' external_definition_list_opt '}'				// C++-style linkage specifier
@@ -2013,5 +2003,5 @@
 	| EXTENSION external_definition
 		{	// mark all fields in list
-			for ( DeclarationNode *iter = $2; iter != NULL; iter = (DeclarationNode *)iter->get_next() )
+			for ( DeclarationNode *iter = $2; iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
 				iter->set_extension( true );
 			$$ = $2;
@@ -2147,8 +2137,8 @@
 
 any_word:												// GCC
-	identifier_or_type_name {}
-	| storage_class_name {}
-	| basic_type_name {}
-	| type_qualifier {}
+	identifier_or_type_name { delete $1; }
+	| storage_class { delete $1; }
+	| basic_type_name { delete $1; }
+	| type_qualifier { delete $1; }
 	;
 
@@ -2848,4 +2838,6 @@
 // ----end of grammar----
 
+extern char *yytext;
+
 void yyerror( const char * ) {
 	std::cout << "Error ";
Index: src/SynTree/Declaration.cc
===================================================================
--- src/SynTree/Declaration.cc	(revision 7b1bfc597c11725f68bb6b8790ca6a3501cd1bf7)
+++ src/SynTree/Declaration.cc	(revision 4a7d895054466f290f1d971a3482f0e4ff8a3c74)
@@ -9,7 +9,7 @@
 // Author           : Richard C. Bilson
 // Created On       : Mon May 18 07:44:20 2015
-// Last Modified By : Rob Schluntz
-// Last Modified On : Wed Dec 09 14:08:29 2015
-// Update Count     : 12
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu Aug 18 23:49:57 2016
+// Update Count     : 13
 //
 
@@ -27,5 +27,5 @@
 static IdMapType idMap;
 
-Declaration::Declaration( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage )
+Declaration::Declaration( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Spec linkage )
 		: name( name ), storageClass( sc ), linkage( linkage ), isInline( false ), isNoreturn( false ), uniqueId( 0 ) {
 }
Index: src/SynTree/Declaration.h
===================================================================
--- src/SynTree/Declaration.h	(revision 7b1bfc597c11725f68bb6b8790ca6a3501cd1bf7)
+++ src/SynTree/Declaration.h	(revision 4a7d895054466f290f1d971a3482f0e4ff8a3c74)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Jul 12 21:03:17 2016
-// Update Count     : 39
+// Last Modified On : Thu Aug 18 23:50:24 2016
+// Update Count     : 40
 //
 
@@ -26,5 +26,5 @@
 class Declaration {
   public:
-	Declaration( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage );
+	Declaration( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Spec linkage );
 	Declaration( const Declaration &other );
 	virtual ~Declaration();
@@ -34,6 +34,6 @@
 	DeclarationNode::StorageClass get_storageClass() const { return storageClass; }
 	void set_storageClass( DeclarationNode::StorageClass newValue ) { storageClass = newValue; }
-	LinkageSpec::Type get_linkage() const { return linkage; }
-	void set_linkage( LinkageSpec::Type newValue ) { linkage = newValue; }
+	LinkageSpec::Spec get_linkage() const { return linkage; }
+	void set_linkage( LinkageSpec::Spec newValue ) { linkage = newValue; }
 	bool get_isInline() const { return isInline; }
 	void set_isInline( bool newValue ) { isInline = newValue; }
@@ -56,5 +56,5 @@
 	std::string name;
 	DeclarationNode::StorageClass storageClass;
-	LinkageSpec::Type linkage;
+	LinkageSpec::Spec linkage;
 	bool isInline, isNoreturn;
 	UniqueId uniqueId;
@@ -64,5 +64,5 @@
 class DeclarationWithType : public Declaration {
   public:
-	DeclarationWithType( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage, const std::list< Attribute * > & attributes );
+	DeclarationWithType( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Spec linkage, const std::list< Attribute * > & attributes );
 	DeclarationWithType( const DeclarationWithType &other );
 	virtual ~DeclarationWithType();
@@ -97,5 +97,5 @@
 	typedef DeclarationWithType Parent;
   public:
-	ObjectDecl( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage, Expression *bitfieldWidth, Type *type, Initializer *init, const std::list< Attribute * > attributes = std::list< Attribute * >(), bool isInline = false, bool isNoreturn = false );
+	ObjectDecl( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Spec linkage, Expression *bitfieldWidth, Type *type, Initializer *init, const std::list< Attribute * > attributes = std::list< Attribute * >(), bool isInline = false, bool isNoreturn = false );
 	ObjectDecl( const ObjectDecl &other );
 	virtual ~ObjectDecl();
@@ -123,5 +123,5 @@
 	typedef DeclarationWithType Parent;
   public:
-	FunctionDecl( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage, FunctionType *type, CompoundStmt *statements, bool isInline, bool isNoreturn, const std::list< Attribute * > attributes = std::list< Attribute * >() );
+	FunctionDecl( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Spec linkage, FunctionType *type, CompoundStmt *statements, bool isInline, bool isNoreturn, const std::list< Attribute * > attributes = std::list< Attribute * >() );
 	FunctionDecl( const FunctionDecl &other );
 	virtual ~FunctionDecl();
Index: src/SynTree/DeclarationWithType.cc
===================================================================
--- src/SynTree/DeclarationWithType.cc	(revision 7b1bfc597c11725f68bb6b8790ca6a3501cd1bf7)
+++ src/SynTree/DeclarationWithType.cc	(revision 4a7d895054466f290f1d971a3482f0e4ff8a3c74)
@@ -9,7 +9,7 @@
 // Author           : Richard C. Bilson
 // Created On       : Mon May 18 07:44:20 2015
-// Last Modified By : Rob Schluntz
-// Last Modified On : Mon Apr 11 15:35:27 2016
-// Update Count     : 3
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu Aug 18 23:50:41 2016
+// Update Count     : 4
 //
 
@@ -19,5 +19,5 @@
 #include "Common/utility.h"
 
-DeclarationWithType::DeclarationWithType( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage, const std::list< Attribute * > & attributes )
+DeclarationWithType::DeclarationWithType( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Spec linkage, const std::list< Attribute * > & attributes )
 		: Declaration( name, sc, linkage ), attributes( attributes ) {
 }
Index: src/SynTree/Expression.cc
===================================================================
--- src/SynTree/Expression.cc	(revision 7b1bfc597c11725f68bb6b8790ca6a3501cd1bf7)
+++ src/SynTree/Expression.cc	(revision 4a7d895054466f290f1d971a3482f0e4ff8a3c74)
@@ -383,5 +383,7 @@
 		Expression( _aname ), function(_function), args(_args) {}
 
-UntypedExpr::~UntypedExpr() {}
+UntypedExpr::~UntypedExpr() {
+	delete function;
+}
 
 void UntypedExpr::print( std::ostream &os, int indent ) const {
Index: src/SynTree/FunctionDecl.cc
===================================================================
--- src/SynTree/FunctionDecl.cc	(revision 7b1bfc597c11725f68bb6b8790ca6a3501cd1bf7)
+++ src/SynTree/FunctionDecl.cc	(revision 4a7d895054466f290f1d971a3482f0e4ff8a3c74)
@@ -9,7 +9,7 @@
 // Author           : Richard C. Bilson
 // Created On       : Mon May 18 07:44:20 2015
-// Last Modified By : Rob Schluntz
-// Last Modified On : Fri May 06 15:59:48 2016
-// Update Count     : 19
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu Aug 18 23:50:14 2016
+// Update Count     : 20
 //
 
@@ -22,5 +22,5 @@
 #include "Common/utility.h"
 
-FunctionDecl::FunctionDecl( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage, FunctionType *type, CompoundStmt *statements, bool isInline, bool isNoreturn, std::list< Attribute * > attributes )
+FunctionDecl::FunctionDecl( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Spec linkage, FunctionType *type, CompoundStmt *statements, bool isInline, bool isNoreturn, std::list< Attribute * > attributes )
 		: Parent( name, sc, linkage, attributes ), type( type ), statements( statements ) {
 	set_isInline( isInline );
@@ -39,4 +39,5 @@
 	delete type;
 	delete statements;
+	deleteAll( oldDecls );
 }
 
Index: src/SynTree/ObjectDecl.cc
===================================================================
--- src/SynTree/ObjectDecl.cc	(revision 7b1bfc597c11725f68bb6b8790ca6a3501cd1bf7)
+++ src/SynTree/ObjectDecl.cc	(revision 4a7d895054466f290f1d971a3482f0e4ff8a3c74)
@@ -9,7 +9,7 @@
 // Author           : Richard C. Bilson
 // Created On       : Mon May 18 07:44:20 2015
-// Last Modified By : Rob Schluntz
-// Last Modified On : Fri May 13 13:23:32 2016
-// Update Count     : 30
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu Aug 18 23:50:33 2016
+// Update Count     : 31
 //
 
@@ -22,5 +22,5 @@
 #include "Statement.h"
 
-ObjectDecl::ObjectDecl( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage, Expression *bitfieldWidth, Type *type, Initializer *init, const std::list< Attribute * > attributes, bool isInline, bool isNoreturn )
+ObjectDecl::ObjectDecl( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Spec linkage, Expression *bitfieldWidth, Type *type, Initializer *init, const std::list< Attribute * > attributes, bool isInline, bool isNoreturn )
 	: Parent( name, sc, linkage, attributes ), type( type ), init( init ), bitfieldWidth( bitfieldWidth ) {
 	set_isInline( isInline );
Index: src/SynTree/Statement.cc
===================================================================
--- src/SynTree/Statement.cc	(revision 7b1bfc597c11725f68bb6b8790ca6a3501cd1bf7)
+++ src/SynTree/Statement.cc	(revision 4a7d895054466f290f1d971a3482f0e4ff8a3c74)
@@ -124,5 +124,9 @@
 	Statement( other ), condition( maybeClone( other.condition ) ), thenPart( maybeClone( other.thenPart ) ), elsePart( maybeClone( other.elsePart ) ) {}
 
-IfStmt::~IfStmt() {}
+IfStmt::~IfStmt() {
+	delete condition;
+	delete thenPart;
+	delete elsePart;
+}
 
 void IfStmt::print( std::ostream &os, int indent ) const {
@@ -155,4 +159,5 @@
 	delete condition;
 	// destroy statements
+	deleteAll( statements );
 }
 
@@ -183,4 +188,5 @@
 CaseStmt::~CaseStmt() {
 	delete condition;
+	deleteAll( stmts );
 }
 
@@ -216,4 +222,5 @@
 WhileStmt::~WhileStmt() {
 	delete body;
+	delete condition;
 }
 
@@ -290,4 +297,6 @@
 TryStmt::~TryStmt() {
 	delete block;
+	deleteAll( handlers );
+	delete finallyBlock;
 }
 
Index: src/examples/gc_no_raii/containers/vector
===================================================================
--- src/examples/gc_no_raii/containers/vector	(revision 4a7d895054466f290f1d971a3482f0e4ff8a3c74)
+++ src/examples/gc_no_raii/containers/vector	(revision 4a7d895054466f290f1d971a3482f0e4ff8a3c74)
@@ -0,0 +1,159 @@
+// 
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+// 
+// vector -- 
+// 
+// Author           : Thierry Delisle
+// Created On       : Tue Jul  5 18:00:07 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue Jul  5 18:01:35 2016
+// Update Count     : 2
+// 
+
+#pragma once
+
+extern "C" {
+#include <stdbool.h>
+}
+
+#define DESTROY(x)
+
+//------------------------------------------------------------------------------
+//Declaration
+trait allocator_c(otype T, otype allocator_t)
+{
+	void ctor(allocator_t* const);
+	void dtor(allocator_t* const);
+	void realloc(allocator_t* const, size_t);
+	T* data(allocator_t* const);
+};
+
+forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
+struct vector
+{
+	allocator_t storage;
+	size_t size;
+};
+
+//------------------------------------------------------------------------------
+//Initialization
+forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
+void ctor(vector(T, allocator_t) *const this);
+
+forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
+void dtor(vector(T, allocator_t) *const this);
+
+//------------------------------------------------------------------------------
+//Capacity
+forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
+static inline bool empty(vector(T, allocator_t) *const this)
+{
+	return this->size == 0;
+}
+
+forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
+static inline size_t size(vector(T, allocator_t) *const this)
+{
+	return this->size;
+}
+
+forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
+static inline void reserve(vector(T, allocator_t) *const this, size_t size)
+{
+	realloc(&this->storage, this->size+1);
+}
+
+//------------------------------------------------------------------------------
+//Element access
+forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
+static inline T at(vector(T, allocator_t) *const this, size_t index)
+{
+	return data(&this->storage)[index];
+}
+
+forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
+static inline T ?[?](vector(T, allocator_t) *const this, size_t index)
+{
+	return data(&this->storage)[index];
+}
+
+forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
+static inline T front(vector(T, allocator_t) *const this)
+{
+	return data(&this->storage)[0];
+}
+
+forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
+static inline T back(vector(T, allocator_t) *const this)
+{
+	return data(&this->storage)[this->size - 1];
+}
+
+//------------------------------------------------------------------------------
+//Modifiers
+forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
+void push_back(vector(T, allocator_t) *const this, T value);
+
+forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
+void pop_back(vector(T, allocator_t) *const this);
+
+forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
+void clear(vector(T, allocator_t) *const this);
+
+//------------------------------------------------------------------------------
+//Iterators
+forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
+static inline T* begin(vector(T, allocator_t) *const this)
+{
+	return data(&this->storage);
+}
+
+forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
+static inline const T* cbegin(const vector(T, allocator_t) *const this)
+{
+	return data(&this->storage);
+}
+
+forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
+static inline T* end(vector(T, allocator_t) *const this)
+{
+	return data(&this->storage) + this->size;
+}
+
+forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
+static inline const T* cend(const vector(T, allocator_t) *const this)
+{
+	return data(&this->storage) + this->size;
+}
+
+//------------------------------------------------------------------------------
+//Allocator
+forall(otype T)
+struct heap_allocator
+{
+	T* storage;
+	size_t capacity;
+};
+
+forall(otype T)
+void ctor(heap_allocator(T) *const this);
+
+forall(otype T)
+void dtor(heap_allocator(T) *const this);
+
+forall(otype T)
+void realloc(heap_allocator(T) *const this, size_t size);
+
+forall(otype T)
+static inline T* data(heap_allocator(T) *const this)
+{
+	return this->storage;
+}
+
+// Local Variables: //
+// mode: c //
+// tab-width: 4 //
+// End: //
Index: src/examples/gc_no_raii/containers/vector.c
===================================================================
--- src/examples/gc_no_raii/containers/vector.c	(revision 4a7d895054466f290f1d971a3482f0e4ff8a3c74)
+++ src/examples/gc_no_raii/containers/vector.c	(revision 4a7d895054466f290f1d971a3482f0e4ff8a3c74)
@@ -0,0 +1,92 @@
+// 
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+// 
+// vector.c -- 
+// 
+// Author           : Thierry Delisle
+// Created On       : Tue Jul  5 18:07:52 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Tue Jul  5 18:08:31 2016
+// Update Count     : 2
+// 
+
+#include <containers/vector> 
+
+#include <stdlib>
+
+//------------------------------------------------------------------------------
+//Initialization
+forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
+void ctor(vector(T, allocator_t) *const this)
+{
+	ctor(&this->storage);
+	this->size = 0;
+}
+
+forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
+void dtor(vector(T, allocator_t) *const this)
+{
+	clear(this);
+	dtor(&this->storage);
+}
+
+//------------------------------------------------------------------------------
+//Modifiers
+forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
+void push_back(vector(T, allocator_t) *const this, T value)
+{
+	realloc(&this->storage, this->size+1);
+	data(&this->storage)[this->size] = value;
+	this->size++;
+}
+
+forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
+void pop_back(vector(T, allocator_t) *const this)
+{
+	this->size--;
+	DESTROY(data(&this->storage)[this->size]);
+}
+
+forall(otype T, otype allocator_t | allocator_c(T, allocator_t))
+void clear(vector(T, allocator_t) *const this)
+{
+	for(size_t i = 0; i < this->size; i++)
+	{
+		DESTROY(data(&this->storage)[this->size]);
+	}
+	this->size = 0;
+}
+
+//------------------------------------------------------------------------------
+//Allocator
+forall(otype T)
+void ctor(heap_allocator(T) *const this)
+{
+	this->storage = 0;
+	this->capacity = 0;
+}
+
+forall(otype T)
+void dtor(heap_allocator(T) *const this)
+{
+	free(this->storage);
+}
+
+forall(otype T)
+inline void realloc(heap_allocator(T) *const this, size_t size)
+{
+	enum { GROWTH_RATE = 2 };
+	if(size > this->capacity)
+	{
+		this->capacity = GROWTH_RATE * size;
+		this->storage = (T*)realloc((void*)this->storage, this->capacity * sizeof(T));
+	}
+}
+
+// Local Variables: //
+// mode: c //
+// tab-width: 4 //
+// End: //
Index: src/examples/gc_no_raii/premake4.lua
===================================================================
--- src/examples/gc_no_raii/premake4.lua	(revision 7b1bfc597c11725f68bb6b8790ca6a3501cd1bf7)
+++ src/examples/gc_no_raii/premake4.lua	(revision 4a7d895054466f290f1d971a3482f0e4ff8a3c74)
@@ -6,4 +6,5 @@
 	"src/",
 	"../",
+	"containers/"
 }
 
@@ -48,5 +49,5 @@
 		linkoptions (linkOptionList)
 		includedirs (includeDirList)
-		files { "src/**.c" }
+		files { "src/**.c", "containers/**.c" }
 
 	configuration "debug"
Index: src/examples/gc_no_raii/src/gc.h
===================================================================
--- src/examples/gc_no_raii/src/gc.h	(revision 7b1bfc597c11725f68bb6b8790ca6a3501cd1bf7)
+++ src/examples/gc_no_raii/src/gc.h	(revision 4a7d895054466f290f1d971a3482f0e4ff8a3c74)
@@ -4,18 +4,18 @@
 #include "internal/collector.h"
 
-forall(otype T)
-static inline gcpointer(T) gcmalloc()
-{
-    gcpointer(T) ptr = { gc_allocate(sizeof(T)) };
-    ptr{};
-    gc_conditional_collect();
-    return ptr;
-}
+// forall(otype T)
+// static inline gcpointer(T) gcmalloc()
+// {
+//     gcpointer(T) ptr = { gc_allocate(sizeof(T)) };
+//     ptr{};
+//     gc_conditional_collect();
+//     return ptr;
+// }
 
 forall(otype T)
 static inline void gcmalloc(gcpointer(T)* ptr)
 {
-	ptr{ gc_allocate(sizeof(T)) };
-      (*ptr){};
+	ptr { gc_allocate(sizeof(T)) };
+	get(ptr) {};
       gc_conditional_collect();
 }
Index: src/examples/gc_no_raii/src/gcpointers.c
===================================================================
--- src/examples/gc_no_raii/src/gcpointers.c	(revision 7b1bfc597c11725f68bb6b8790ca6a3501cd1bf7)
+++ src/examples/gc_no_raii/src/gcpointers.c	(revision 4a7d895054466f290f1d971a3482f0e4ff8a3c74)
@@ -42,5 +42,5 @@
 }
 
-void gcpointer_ctor(gcpointer_t* this)
+void ?{}(gcpointer_t* this)
 {
 	this->ptr = (intptr_t)NULL;
@@ -48,5 +48,5 @@
 }
 
-void gcpointer_ctor(gcpointer_t* this, void* address)
+void ?{}(gcpointer_t* this, void* address)
 {
 	this->ptr = (intptr_t)address;
@@ -56,7 +56,7 @@
 }
 
-void gcpointer_ctor(gcpointer_t* this, gcpointer_t* other)
+void ?{}(gcpointer_t* this, gcpointer_t other)
 {
-	this->ptr = other->ptr;
+	this->ptr = other.ptr;
 	this->next = NULL;
 
@@ -64,5 +64,5 @@
 }
 
-void gcpointer_dtor(gcpointer_t* this)
+void ^?{}(gcpointer_t* this)
 {
 	unregister_ptr(this);
@@ -98,2 +98,30 @@
 	return this->ptr == (intptr_t)NULL;
 }
+
+forall(otype T) void ?{}(gcpointer(T)* this) {
+	(&this->internal) {};
+}
+
+forall(otype T) void ?{}(gcpointer(T)* this, void* address) {
+	(&this->internal) { address };
+}
+
+forall(otype T) void ?{}(gcpointer(T)* this, gcpointer(T)* other) {
+	(&this->internal) { other->internal };
+}
+
+forall(otype T) void ^?{}(gcpointer(T)* this) {
+	^?{}(&this->internal);
+}
+
+// forall(otype T) gcpointer(T) ?=?(gcpointer(T) this, gcpointer(T) rhs);
+//
+// forall(otype T) T *?(gcpointer(T) this);
+
+forall(otype T) T* get(gcpointer(T)* this) {
+	return (T*)this->internal.ptr;
+}
+//
+// //Logical operators
+// forall(otype T) int ?!=?(gcpointer(T) this, gcpointer(T) rhs);
+// forall(otype T) int ?==?(gcpointer(T) this, gcpointer(T) rhs);
Index: src/examples/gc_no_raii/src/gcpointers.h
===================================================================
--- src/examples/gc_no_raii/src/gcpointers.h	(revision 7b1bfc597c11725f68bb6b8790ca6a3501cd1bf7)
+++ src/examples/gc_no_raii/src/gcpointers.h	(revision 4a7d895054466f290f1d971a3482f0e4ff8a3c74)
@@ -30,5 +30,4 @@
 forall(otype T) void ?{}(gcpointer(T)* this);
 forall(otype T) void ?{}(gcpointer(T)* this, void* address);
-forall(otype T) void ctor(gcpointer(T)* this, void* address);
 forall(otype T) void ?{}(gcpointer(T)* this, gcpointer(T)* other);
 forall(otype T) void ^?{}(gcpointer(T)* this);
@@ -37,4 +36,5 @@
 
 forall(otype T) T *?(gcpointer(T) this);
+forall(otype T) T* get(gcpointer(T)* this);
 
 //Logical operators
Index: src/examples/gc_no_raii/src/internal/collector.c
===================================================================
--- src/examples/gc_no_raii/src/internal/collector.c	(revision 7b1bfc597c11725f68bb6b8790ca6a3501cd1bf7)
+++ src/examples/gc_no_raii/src/internal/collector.c	(revision 4a7d895054466f290f1d971a3482f0e4ff8a3c74)
@@ -8,4 +8,6 @@
 }
 #endif
+
+#include <fstream>
 
 #include "state.h"
@@ -36,5 +38,10 @@
 void* gc_allocate(size_t target_size)
 {
+	sout | "Allocating " | target_size | " bytes" | endl;
+
 	size_t size = gc_compute_size(target_size + sizeof(gc_object_header));
+
+	sout | "Object header size: " | sizeof(gc_object_header) | " bytes" | endl;
+	sout | "Actual allocation size: " | size | " bytes" | endl;
 
 	check(size < POOL_SIZE_BYTES);
Index: src/examples/gc_no_raii/src/internal/state.h
===================================================================
--- src/examples/gc_no_raii/src/internal/state.h	(revision 7b1bfc597c11725f68bb6b8790ca6a3501cd1bf7)
+++ src/examples/gc_no_raii/src/internal/state.h	(revision 4a7d895054466f290f1d971a3482f0e4ff8a3c74)
@@ -9,4 +9,5 @@
 }
 #endif
+#include <fstream>
 #include <vector>
 
@@ -37,4 +38,5 @@
 static inline bool gc_needs_collect(gc_state* state)
 {
+	sout | "Used Space: " | state->used_space | " bytes" | endl;
 	return state->used_space * 2 > state->total_space;
 }
Index: src/examples/gc_no_raii/test/gctest.c
===================================================================
--- src/examples/gc_no_raii/test/gctest.c	(revision 7b1bfc597c11725f68bb6b8790ca6a3501cd1bf7)
+++ src/examples/gc_no_raii/test/gctest.c	(revision 4a7d895054466f290f1d971a3482f0e4ff8a3c74)
@@ -2,4 +2,5 @@
 
 #include "gc.h"
+#include "internal/collector.h"
 
 #warning default test
@@ -8,7 +9,17 @@
 	sout | "Bonjour au monde!\n";
 
-	for(int i = 0; i < 1000000; i++) {
-		gcpointer(int) anInt;
-		gcmalloc(&anInt);
+	gcpointer(int) theInt;
+	gcmalloc(&theInt);
+
+	for(int i = 0; i < 10; i++) {
+		int a;
+		{
+			gcpointer(int) anInt;
+			gcmalloc(&anInt);
+		}
+		int p;
 	}
+
+	gc_collect(gc_get_state());
+	gc_conditional_collect();
 }
Index: src/include/assert.h
===================================================================
--- src/include/assert.h	(revision 4a7d895054466f290f1d971a3482f0e4ff8a3c74)
+++ src/include/assert.h	(revision 4a7d895054466f290f1d971a3482f0e4ff8a3c74)
@@ -0,0 +1,28 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+// 
+// assert.h -- 
+// 
+// Author           : Peter A. Buhr
+// Created On       : Thu Aug 18 13:19:26 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Thu Aug 18 13:25:55 2016
+// Update Count     : 4
+// 
+
+#include_next <assert.h>
+
+#define __STRINGIFY__(str) #str
+#define __VSTRINGIFY__(str) __STRINGIFY__(str)
+#define assertf(expr, fmt, ...) ((expr) ? static_cast<void>(0) : __assert_fail_f(__VSTRINGIFY__(expr), __FILE__, __LINE__, __PRETTY_FUNCTION__, fmt, ## __VA_ARGS__ ))
+
+void __assert_fail_f( const char *assertion, const char *file, unsigned int line, const char *function, const char *fmt, ... );
+
+// Local Variables: //
+// tab-width: 4 //
+// mode: c++ //
+// compile-command: "make install" //
+// End: //
Index: src/main.cc
===================================================================
--- src/main.cc	(revision 7b1bfc597c11725f68bb6b8790ca6a3501cd1bf7)
+++ src/main.cc	(revision 4a7d895054466f290f1d971a3482f0e4ff8a3c74)
@@ -10,18 +10,14 @@
 // Created On       : Fri May 15 23:12:02 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sat Aug  6 16:17:41 2016
-// Update Count     : 210
+// Last Modified On : Fri Aug 19 08:31:22 2016
+// Update Count     : 350
 //
 
 #include <iostream>
 #include <fstream>
-#include <cstdlib>
-#include <cstdio>
 #include <getopt.h>
-#include "Parser/Parser.h"
-#include "Parser/ParseNode.h"
-#include "Parser/LinkageSpec.h"
-#include "SynTree/Declaration.h"
-#include "SynTree/Visitor.h"
+#include "Parser/lex.h"
+#include "Parser/parser.h"
+#include "Parser/TypedefTable.h"
 #include "GenPoly/Lvalue.h"
 #include "GenPoly/Specialize.h"
@@ -32,19 +28,10 @@
 #include "CodeGen/FixNames.h"
 #include "ControlStruct/Mutate.h"
-#include "Tuples/Mutate.h"
-#include "Tuples/FunctionChecker.h"
-#include "SymTab/Mangler.h"
-#include "SymTab/Indexer.h"
 #include "SymTab/Validate.h"
 #include "ResolvExpr/AlternativePrinter.h"
 #include "ResolvExpr/Resolver.h"
 #include "MakeLibCfa.h"
-#include "InitTweak/Mutate.h"
 #include "InitTweak/GenInit.h"
 #include "InitTweak/FixInit.h"
-//#include "Explain/GenProlog.h"
-//#include "Try/Visit.h"
-
-#include "Common/SemanticError.h"
 #include "Common/UnimplementedError.h"
 
@@ -53,10 +40,12 @@
 using namespace std;
 
-#define OPTPRINT(x) \
-	if ( errorp ) std::cerr << x << std::endl;
-
-static void parse( FILE * input, LinkageSpec::Type t, bool shouldExit = false );
-static void dump( std::list< Declaration * > & translationUnit, std::ostream & out = std::cout );
-
+#define OPTPRINT(x) if ( errorp ) std::cerr << x << std::endl;
+
+
+LinkageSpec::Spec linkage = LinkageSpec::Cforall;
+TypedefTable typedefTable;
+DeclarationNode * parseTree = nullptr;					// program parse tree
+
+extern int yydebug;										// set for -g flag (Grammar)
 bool
 	astp = false,
@@ -66,5 +55,4 @@
 	exprp = false,
 	expraltp = false,
-	grammarp = false,
 	libcfap = false,
 	nopreludep = false,
@@ -78,139 +66,36 @@
 	codegenp = false;
 
-enum { Ast, Bbox, Bresolver, CtorInitFix, Expr, ExprAlt, Grammar, LibCFA, Nopreamble, Parse, Prototypes, Resolver, Symbol, Tree, Validate, };
-
-static struct option long_opts[] = {
-	{ "ast", no_argument, 0, Ast },
-	{ "before-box", no_argument, 0, Bbox },
-	{ "before-resolver", no_argument, 0, Bresolver },
-	{ "ctorinitfix", no_argument, 0, CtorInitFix },
-	{ "expr", no_argument, 0, Expr },
-	{ "expralt", no_argument, 0, ExprAlt },
-	{ "grammar", no_argument, 0, Grammar },
-	{ "libcfa", no_argument, 0, LibCFA },
-	{ "no-preamble", no_argument, 0, Nopreamble },
-	{ "parse", no_argument, 0, Parse },
-	{ "no-prototypes", no_argument, 0, Prototypes },
-	{ "resolver", no_argument, 0, Resolver },
-	{ "symbol", no_argument, 0, Symbol },
-	{ "tree", no_argument, 0, Tree },
-	{ "validate", no_argument, 0, Validate },
-	{ 0, 0, 0, 0 }
-};
-
-int main( int argc, char *argv[] ) {
-	FILE *input;
-	std::ostream *output = &std::cout;
-	int long_index;
+static void parse_cmdline( int argc, char *argv[], const char *& filename );
+static void parse( FILE * input, LinkageSpec::Spec linkage, bool shouldExit = false );
+static void dump( std::list< Declaration * > & translationUnit, std::ostream & out = std::cout );
+
+int main( int argc, char * argv[] ) {
+	FILE * input;										// use FILE rather than istream because yyin is FILE
+	std::ostream *output = & std::cout;
 	std::list< Declaration * > translationUnit;
-	const char *filename = NULL;
-
-	opterr = 0;											// prevent getopt from printing error messages
-
-	int c;
-	while ( (c = getopt_long( argc, argv, "abBcefglnpqrstvyzD:F:", long_opts, &long_index )) != -1 ) {
-		switch ( c ) {
-		  case Ast:
-		  case 'a':										// dump AST
-			astp = true;
-			break;
-		  case Bresolver:
-		  case 'b':										// print before resolver steps
-			bresolvep = true;
-			break;
-		  case 'B':										// print before resolver steps
-			bboxp = true;
-			break;
-		  case CtorInitFix:
-		  case 'c':
-			ctorinitp = true;
-			break;
-		  case Expr:
-		  case 'e':										// dump AST after expression analysis
-			exprp = true;
-			break;
-		  case ExprAlt:
-		  case 'f':										// print alternatives for expressions
-			expraltp = true;
-			break;
-		  case Grammar:
-		  case 'g':										// bison debugging info (grammar rules)
-			grammarp = true;
-			break;
-		  case LibCFA:
-		  case 'l':										// generate libcfa.c
-			libcfap = true;
-			break;
-		  case Nopreamble:
-		  case 'n':										// do not read preamble
-			nopreludep = true;
-			break;
-		  case Prototypes:
-		  case 'p':										// generate prototypes for preamble functions
-			noprotop = true;
-			break;
-		  case Parse:
-		  case 'q':										// dump parse tree
-			parsep = true;
-			break;
-		  case Resolver:
-		  case 'r':										// print resolver steps
-			resolvep = true;
-			break;
-		  case Symbol:
-		  case 's':										// print symbol table events
-			symtabp = true;
-			break;
-		  case Tree:
-		  case 't':										// build in tree
-			treep = true;
-			break;
-		  case 'v':										// dump AST after decl validation pass
-			validp = true;
-			break;
-		  case 'y':
-			errorp = true;
-			break;
-		  case 'z':
-			codegenp = true;
-			break;
-		  case 'D':										// ignore -Dxxx
-			break;
-		  case 'F':										// source file-name without suffix
-			filename = optarg;
-			break;
-		  case '?':
-			cout << "Unknown option: '" << (char)optopt << "'" << endl;
-			exit( EXIT_FAILURE );
-		  default:
-			abort();
-		} // switch
-	} // while
+	const char *filename = nullptr;
+
+	parse_cmdline( argc, argv, filename );				// process command-line arguments
 
 	try {
 		// choose to read the program from a file or stdin
-		if ( optind < argc ) {
+		if ( optind < argc ) {							// any commands after the flags ? => input file name
 			input = fopen( argv[ optind ], "r" );
-			if ( ! input ) {
-				std::cout << "Error: cannot open " << argv[ optind ] << std::endl;
-				exit( EXIT_FAILURE );
-			} // if
+			assertf( input, "cannot open %s\n", argv[ optind ] );
 			// if running cfa-cpp directly, might forget to pass -F option (and really shouldn't have to)
-			if ( filename == NULL ) filename = argv[ optind ];
+			if ( filename == nullptr ) filename = argv[ optind ];
 			// prelude filename comes in differently
 			if ( libcfap ) filename = "prelude.cf";
 			optind += 1;
-		} else {
+		} else {										// no input file name
 			input = stdin;
 			// if running cfa-cpp directly, might forget to pass -F option. Since this takes from stdin, pass
 			// a fake name along
-			if ( filename == NULL ) filename = "stdin";
-		} // if
-
-		if ( optind < argc ) {
+			if ( filename == nullptr ) filename = "stdin";
+		} // if
+
+		if ( optind < argc ) {							// any commands after the flags and input file ? => output file name
 			output = new ofstream( argv[ optind ] );
 		} // if
-
-		Parser::get_parser().set_debug( grammarp );
 
 		// read in the builtins, extras, and the prelude
@@ -218,16 +103,10 @@
 			// -l is for initial build ONLY and builtins.cf is not in the lib directory so access it here.
 			FILE * builtins = fopen( libcfap | treep ? "builtins.cf" : CFA_LIBDIR "/builtins.cf", "r" );
-			if ( builtins == NULL ) {
-				std::cerr << "Error: cannot open builtins.cf" << std::endl;
-				exit( EXIT_FAILURE );
-			} // if
+			assertf( builtins, "cannot open builtins.cf\n" );
 			parse( builtins, LinkageSpec::Compiler );
 
 			// read the extra prelude in, if not generating the cfa library
 			FILE * extras = fopen( libcfap | treep ? "extras.cf" : CFA_LIBDIR "/extras.cf", "r" );
-			if ( extras == NULL ) {
-				std::cerr << "Error: cannot open extras.cf" << std::endl;
-				exit( EXIT_FAILURE );
-			} // if
+			assertf( extras, "cannot open extras.cf\n" );
 			parse( extras, LinkageSpec::C );
 
@@ -235,24 +114,21 @@
 				// read the prelude in, if not generating the cfa library
 				FILE * prelude = fopen( treep ? "prelude.cf" : CFA_LIBDIR "/prelude.cf", "r" );
-				if ( prelude == NULL ) {
-					std::cerr << "Error: cannot open prelude.cf" << std::endl;
-					exit( EXIT_FAILURE );
-				} // if
-
+				assertf( prelude, "cannot open prelude.cf\n" );
 				parse( prelude, LinkageSpec::Intrinsic );
 			} // if
 		} // if
 
-		parse( input, libcfap ? LinkageSpec::Intrinsic : LinkageSpec::Cforall, grammarp );
+		parse( input, libcfap ? LinkageSpec::Intrinsic : LinkageSpec::Cforall, yydebug );
 
 		if ( parsep ) {
-			Parser::get_parser().get_parseTree()->printList( std::cout );
-			Parser::get_parser().freeTree();
-			return 0;
-		} // if
-
-		buildList( Parser::get_parser().get_parseTree(), translationUnit );
-
-		Parser::get_parser().freeTree();
+			parseTree->printList( std::cout );
+			delete parseTree;
+			return 0;
+		} // if
+
+		buildList( parseTree, translationUnit );
+		delete parseTree;
+		parseTree = nullptr;
+
 		if ( astp ) {
 			dump( translationUnit );
@@ -300,5 +176,5 @@
 			dump( translationUnit );
 			return 0;
-		}
+		} // if
 
 		// fix ObjectDecl - replaces ConstructorInit nodes
@@ -308,5 +184,5 @@
 			dump ( translationUnit );
 			return 0;
-		}
+		} // if
 
 		OPTPRINT("instantiateGenerics")
@@ -322,5 +198,5 @@
 			dump( translationUnit );
 			return 0;
-		}
+		} // if
 		OPTPRINT( "box" )
 		GenPoly::box( translationUnit );
@@ -342,5 +218,5 @@
 			dump( translationUnit, std::cerr );
 			std::cerr << std::endl << "---End of AST, begin error message:---\n" << std::endl;
-		}
+		} // if
 		e.print( std::cerr );
 		if ( output != &std::cout ) {
@@ -367,31 +243,142 @@
 } // main
 
-static void parse( FILE * input, LinkageSpec::Type linkage, bool shouldExit ) {
-	Parser::get_parser().set_linkage( linkage );
-	Parser::get_parser().parse( input );
+void parse_cmdline( int argc, char * argv[], const char *& filename ) {
+	enum { Ast, Bbox, Bresolver, CtorInitFix, Expr, ExprAlt, Grammar, LibCFA, Nopreamble, Parse, Prototypes, Resolver, Symbol, Tree, Validate, };
+
+	static struct option long_opts[] = {
+		{ "ast", no_argument, 0, Ast },
+		{ "before-box", no_argument, 0, Bbox },
+		{ "before-resolver", no_argument, 0, Bresolver },
+		{ "ctorinitfix", no_argument, 0, CtorInitFix },
+		{ "expr", no_argument, 0, Expr },
+		{ "expralt", no_argument, 0, ExprAlt },
+		{ "grammar", no_argument, 0, Grammar },
+		{ "libcfa", no_argument, 0, LibCFA },
+		{ "no-preamble", no_argument, 0, Nopreamble },
+		{ "parse", no_argument, 0, Parse },
+		{ "no-prototypes", no_argument, 0, Prototypes },
+		{ "resolver", no_argument, 0, Resolver },
+		{ "symbol", no_argument, 0, Symbol },
+		{ "tree", no_argument, 0, Tree },
+		{ "validate", no_argument, 0, Validate },
+		{ 0, 0, 0, 0 }
+	}; // long_opts
+	int long_index;
+
+	opterr = 0;											// (global) prevent getopt from printing error messages
+
+	int c;
+	while ( (c = getopt_long( argc, argv, "abBcefglnpqrstvyzD:F:", long_opts, &long_index )) != -1 ) {
+		switch ( c ) {
+		  case Ast:
+		  case 'a':										// dump AST
+			astp = true;
+			break;
+		  case Bresolver:
+		  case 'b':										// print before resolver steps
+			bresolvep = true;
+			break;
+		  case 'B':										// print before resolver steps
+			bboxp = true;
+			break;
+		  case CtorInitFix:
+		  case 'c':
+			ctorinitp = true;
+			break;
+		  case Expr:
+		  case 'e':										// dump AST after expression analysis
+			exprp = true;
+			break;
+		  case ExprAlt:
+		  case 'f':										// print alternatives for expressions
+			expraltp = true;
+			break;
+		  case Grammar:
+		  case 'g':										// bison debugging info (grammar rules)
+			yydebug = true;
+			break;
+		  case LibCFA:
+		  case 'l':										// generate libcfa.c
+			libcfap = true;
+			break;
+		  case Nopreamble:
+		  case 'n':										// do not read preamble
+			nopreludep = true;
+			break;
+		  case Prototypes:
+		  case 'p':										// generate prototypes for preamble functions
+			noprotop = true;
+			break;
+		  case Parse:
+		  case 'q':										// dump parse tree
+			parsep = true;
+			break;
+		  case Resolver:
+		  case 'r':										// print resolver steps
+			resolvep = true;
+			break;
+		  case Symbol:
+		  case 's':										// print symbol table events
+			symtabp = true;
+			break;
+		  case Tree:
+		  case 't':										// build in tree
+			treep = true;
+			break;
+		  case 'v':										// dump AST after decl validation pass
+			validp = true;
+			break;
+		  case 'y':
+			errorp = true;
+			break;
+		  case 'z':
+			codegenp = true;
+			break;
+		  case 'D':										// ignore -Dxxx
+			break;
+		  case 'F':										// source file-name without suffix
+			filename = optarg;
+			break;
+		  case '?':
+			assertf( false, "Unknown option: '%c'\n", (char)optopt );
+		  default:
+			abort();
+		} // switch
+	} // while
+} // parse_cmdline
+
+static void parse( FILE * input, LinkageSpec::Spec linkage, bool shouldExit ) {
+	extern int yyparse( void );
+	extern FILE * yyin;
+	extern int yylineno;
+
+	::linkage = linkage;								// set globals
+	yyin = input;
+	yylineno = 1;
+	typedefTable.enterScope();
+	int parseStatus = yyparse();
 
 	fclose( input );
-	if ( shouldExit || Parser::get_parser().get_parseStatus() != 0 ) {
-		exit( Parser::get_parser().get_parseStatus() );
+	if ( shouldExit || parseStatus != 0 ) {
+		exit( parseStatus );
 	} // if
-}
+} // parse
 
 static bool notPrelude( Declaration * decl ) {
 	return ! LinkageSpec::isBuiltin( decl->get_linkage() );
-}
+} // notPrelude
 
 static void dump( std::list< Declaration * > & translationUnit, std::ostream & out ) {
 	std::list< Declaration * > decls;
+
 	if ( noprotop ) {
-		filter( translationUnit.begin(), translationUnit.end(),
-				std::back_inserter( decls ), notPrelude );
+		filter( translationUnit.begin(), translationUnit.end(), std::back_inserter( decls ), notPrelude );
 	} else {
 		decls = translationUnit;
-	}
+	} // if
 
 	printAll( decls, out );
 	deleteAll( translationUnit );
-}
-
+} // dump
 
 // Local Variables: //
Index: src/tests/.expect/32/declarationSpecifier.txt
===================================================================
--- src/tests/.expect/32/declarationSpecifier.txt	(revision 4a7d895054466f290f1d971a3482f0e4ff8a3c74)
+++ src/tests/.expect/32/declarationSpecifier.txt	(revision 4a7d895054466f290f1d971a3482f0e4ff8a3c74)
@@ -0,0 +1,567 @@
+extern void *malloc(unsigned int __size);
+extern void free(void *__ptr);
+extern void abort(void);
+extern int atexit(void (*__func)(void));
+extern void exit(int __status);
+extern int printf(const char *__restrict __format, ...);
+volatile const short __x1__CVs_1;
+static volatile const short __x2__CVs_1;
+static volatile const short __x3__CVs_1;
+static volatile const short __x4__CVs_1;
+static volatile const short __x5__CVs_1;
+static volatile const short __x6__CVs_1;
+static volatile const short __x7__CVs_1;
+static volatile const short __x8__CVs_1;
+struct __anonymous0 {
+    int __i__i_1;
+};
+static inline struct __anonymous0 ___operator_assign__F13s__anonymous0_P13s__anonymous013s__anonymous0_autogen___1(struct __anonymous0 *___dst__P13s__anonymous0_1, struct __anonymous0 ___src__13s__anonymous0_1){
+    ((void)((*___dst__P13s__anonymous0_1).__i__i_1=___src__13s__anonymous0_1.__i__i_1));
+    return ((struct __anonymous0 )___src__13s__anonymous0_1);
+}
+static inline void ___constructor__F_P13s__anonymous0_autogen___1(struct __anonymous0 *___dst__P13s__anonymous0_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous0_1).__i__i_1)))) /* ?{} */);
+}
+static inline void ___constructor__F_P13s__anonymous013s__anonymous0_autogen___1(struct __anonymous0 *___dst__P13s__anonymous0_1, struct __anonymous0 ___src__13s__anonymous0_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous0_1).__i__i_1)))=___src__13s__anonymous0_1.__i__i_1) /* ?{} */);
+}
+static inline void ___destructor__F_P13s__anonymous0_autogen___1(struct __anonymous0 *___dst__P13s__anonymous0_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous0_1).__i__i_1)))) /* ^?{} */);
+}
+static inline void ___constructor__F_P13s__anonymous0i_autogen___1(struct __anonymous0 *___dst__P13s__anonymous0_1, int __i__i_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous0_1).__i__i_1)))=__i__i_1) /* ?{} */);
+}
+volatile const struct __anonymous0 __x10__CV13s__anonymous0_1;
+struct __anonymous1 {
+    int __i__i_1;
+};
+static inline struct __anonymous1 ___operator_assign__F13s__anonymous1_P13s__anonymous113s__anonymous1_autogen___1(struct __anonymous1 *___dst__P13s__anonymous1_1, struct __anonymous1 ___src__13s__anonymous1_1){
+    ((void)((*___dst__P13s__anonymous1_1).__i__i_1=___src__13s__anonymous1_1.__i__i_1));
+    return ((struct __anonymous1 )___src__13s__anonymous1_1);
+}
+static inline void ___constructor__F_P13s__anonymous1_autogen___1(struct __anonymous1 *___dst__P13s__anonymous1_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous1_1).__i__i_1)))) /* ?{} */);
+}
+static inline void ___constructor__F_P13s__anonymous113s__anonymous1_autogen___1(struct __anonymous1 *___dst__P13s__anonymous1_1, struct __anonymous1 ___src__13s__anonymous1_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous1_1).__i__i_1)))=___src__13s__anonymous1_1.__i__i_1) /* ?{} */);
+}
+static inline void ___destructor__F_P13s__anonymous1_autogen___1(struct __anonymous1 *___dst__P13s__anonymous1_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous1_1).__i__i_1)))) /* ^?{} */);
+}
+static inline void ___constructor__F_P13s__anonymous1i_autogen___1(struct __anonymous1 *___dst__P13s__anonymous1_1, int __i__i_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous1_1).__i__i_1)))=__i__i_1) /* ?{} */);
+}
+volatile const struct __anonymous1 __x11__CV13s__anonymous1_1;
+struct __anonymous2 {
+    int __i__i_1;
+};
+static inline struct __anonymous2 ___operator_assign__F13s__anonymous2_P13s__anonymous213s__anonymous2_autogen___1(struct __anonymous2 *___dst__P13s__anonymous2_1, struct __anonymous2 ___src__13s__anonymous2_1){
+    ((void)((*___dst__P13s__anonymous2_1).__i__i_1=___src__13s__anonymous2_1.__i__i_1));
+    return ((struct __anonymous2 )___src__13s__anonymous2_1);
+}
+static inline void ___constructor__F_P13s__anonymous2_autogen___1(struct __anonymous2 *___dst__P13s__anonymous2_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous2_1).__i__i_1)))) /* ?{} */);
+}
+static inline void ___constructor__F_P13s__anonymous213s__anonymous2_autogen___1(struct __anonymous2 *___dst__P13s__anonymous2_1, struct __anonymous2 ___src__13s__anonymous2_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous2_1).__i__i_1)))=___src__13s__anonymous2_1.__i__i_1) /* ?{} */);
+}
+static inline void ___destructor__F_P13s__anonymous2_autogen___1(struct __anonymous2 *___dst__P13s__anonymous2_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous2_1).__i__i_1)))) /* ^?{} */);
+}
+static inline void ___constructor__F_P13s__anonymous2i_autogen___1(struct __anonymous2 *___dst__P13s__anonymous2_1, int __i__i_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous2_1).__i__i_1)))=__i__i_1) /* ?{} */);
+}
+volatile const struct __anonymous2 __x12__CV13s__anonymous2_1;
+struct __anonymous3 {
+    int __i__i_1;
+};
+static inline struct __anonymous3 ___operator_assign__F13s__anonymous3_P13s__anonymous313s__anonymous3_autogen___1(struct __anonymous3 *___dst__P13s__anonymous3_1, struct __anonymous3 ___src__13s__anonymous3_1){
+    ((void)((*___dst__P13s__anonymous3_1).__i__i_1=___src__13s__anonymous3_1.__i__i_1));
+    return ((struct __anonymous3 )___src__13s__anonymous3_1);
+}
+static inline void ___constructor__F_P13s__anonymous3_autogen___1(struct __anonymous3 *___dst__P13s__anonymous3_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous3_1).__i__i_1)))) /* ?{} */);
+}
+static inline void ___constructor__F_P13s__anonymous313s__anonymous3_autogen___1(struct __anonymous3 *___dst__P13s__anonymous3_1, struct __anonymous3 ___src__13s__anonymous3_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous3_1).__i__i_1)))=___src__13s__anonymous3_1.__i__i_1) /* ?{} */);
+}
+static inline void ___destructor__F_P13s__anonymous3_autogen___1(struct __anonymous3 *___dst__P13s__anonymous3_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous3_1).__i__i_1)))) /* ^?{} */);
+}
+static inline void ___constructor__F_P13s__anonymous3i_autogen___1(struct __anonymous3 *___dst__P13s__anonymous3_1, int __i__i_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous3_1).__i__i_1)))=__i__i_1) /* ?{} */);
+}
+static volatile const struct __anonymous3 __x13__CV13s__anonymous3_1;
+struct __anonymous4 {
+    int __i__i_1;
+};
+static inline struct __anonymous4 ___operator_assign__F13s__anonymous4_P13s__anonymous413s__anonymous4_autogen___1(struct __anonymous4 *___dst__P13s__anonymous4_1, struct __anonymous4 ___src__13s__anonymous4_1){
+    ((void)((*___dst__P13s__anonymous4_1).__i__i_1=___src__13s__anonymous4_1.__i__i_1));
+    return ((struct __anonymous4 )___src__13s__anonymous4_1);
+}
+static inline void ___constructor__F_P13s__anonymous4_autogen___1(struct __anonymous4 *___dst__P13s__anonymous4_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous4_1).__i__i_1)))) /* ?{} */);
+}
+static inline void ___constructor__F_P13s__anonymous413s__anonymous4_autogen___1(struct __anonymous4 *___dst__P13s__anonymous4_1, struct __anonymous4 ___src__13s__anonymous4_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous4_1).__i__i_1)))=___src__13s__anonymous4_1.__i__i_1) /* ?{} */);
+}
+static inline void ___destructor__F_P13s__anonymous4_autogen___1(struct __anonymous4 *___dst__P13s__anonymous4_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous4_1).__i__i_1)))) /* ^?{} */);
+}
+static inline void ___constructor__F_P13s__anonymous4i_autogen___1(struct __anonymous4 *___dst__P13s__anonymous4_1, int __i__i_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous4_1).__i__i_1)))=__i__i_1) /* ?{} */);
+}
+static volatile const struct __anonymous4 __x14__CV13s__anonymous4_1;
+struct __anonymous5 {
+    int __i__i_1;
+};
+static inline struct __anonymous5 ___operator_assign__F13s__anonymous5_P13s__anonymous513s__anonymous5_autogen___1(struct __anonymous5 *___dst__P13s__anonymous5_1, struct __anonymous5 ___src__13s__anonymous5_1){
+    ((void)((*___dst__P13s__anonymous5_1).__i__i_1=___src__13s__anonymous5_1.__i__i_1));
+    return ((struct __anonymous5 )___src__13s__anonymous5_1);
+}
+static inline void ___constructor__F_P13s__anonymous5_autogen___1(struct __anonymous5 *___dst__P13s__anonymous5_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous5_1).__i__i_1)))) /* ?{} */);
+}
+static inline void ___constructor__F_P13s__anonymous513s__anonymous5_autogen___1(struct __anonymous5 *___dst__P13s__anonymous5_1, struct __anonymous5 ___src__13s__anonymous5_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous5_1).__i__i_1)))=___src__13s__anonymous5_1.__i__i_1) /* ?{} */);
+}
+static inline void ___destructor__F_P13s__anonymous5_autogen___1(struct __anonymous5 *___dst__P13s__anonymous5_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous5_1).__i__i_1)))) /* ^?{} */);
+}
+static inline void ___constructor__F_P13s__anonymous5i_autogen___1(struct __anonymous5 *___dst__P13s__anonymous5_1, int __i__i_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous5_1).__i__i_1)))=__i__i_1) /* ?{} */);
+}
+static volatile const struct __anonymous5 __x15__CV13s__anonymous5_1;
+struct __anonymous6 {
+    int __i__i_1;
+};
+static inline struct __anonymous6 ___operator_assign__F13s__anonymous6_P13s__anonymous613s__anonymous6_autogen___1(struct __anonymous6 *___dst__P13s__anonymous6_1, struct __anonymous6 ___src__13s__anonymous6_1){
+    ((void)((*___dst__P13s__anonymous6_1).__i__i_1=___src__13s__anonymous6_1.__i__i_1));
+    return ((struct __anonymous6 )___src__13s__anonymous6_1);
+}
+static inline void ___constructor__F_P13s__anonymous6_autogen___1(struct __anonymous6 *___dst__P13s__anonymous6_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous6_1).__i__i_1)))) /* ?{} */);
+}
+static inline void ___constructor__F_P13s__anonymous613s__anonymous6_autogen___1(struct __anonymous6 *___dst__P13s__anonymous6_1, struct __anonymous6 ___src__13s__anonymous6_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous6_1).__i__i_1)))=___src__13s__anonymous6_1.__i__i_1) /* ?{} */);
+}
+static inline void ___destructor__F_P13s__anonymous6_autogen___1(struct __anonymous6 *___dst__P13s__anonymous6_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous6_1).__i__i_1)))) /* ^?{} */);
+}
+static inline void ___constructor__F_P13s__anonymous6i_autogen___1(struct __anonymous6 *___dst__P13s__anonymous6_1, int __i__i_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous6_1).__i__i_1)))=__i__i_1) /* ?{} */);
+}
+static volatile const struct __anonymous6 __x16__CV13s__anonymous6_1;
+struct __anonymous7 {
+    int __i__i_1;
+};
+static inline struct __anonymous7 ___operator_assign__F13s__anonymous7_P13s__anonymous713s__anonymous7_autogen___1(struct __anonymous7 *___dst__P13s__anonymous7_1, struct __anonymous7 ___src__13s__anonymous7_1){
+    ((void)((*___dst__P13s__anonymous7_1).__i__i_1=___src__13s__anonymous7_1.__i__i_1));
+    return ((struct __anonymous7 )___src__13s__anonymous7_1);
+}
+static inline void ___constructor__F_P13s__anonymous7_autogen___1(struct __anonymous7 *___dst__P13s__anonymous7_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous7_1).__i__i_1)))) /* ?{} */);
+}
+static inline void ___constructor__F_P13s__anonymous713s__anonymous7_autogen___1(struct __anonymous7 *___dst__P13s__anonymous7_1, struct __anonymous7 ___src__13s__anonymous7_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous7_1).__i__i_1)))=___src__13s__anonymous7_1.__i__i_1) /* ?{} */);
+}
+static inline void ___destructor__F_P13s__anonymous7_autogen___1(struct __anonymous7 *___dst__P13s__anonymous7_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous7_1).__i__i_1)))) /* ^?{} */);
+}
+static inline void ___constructor__F_P13s__anonymous7i_autogen___1(struct __anonymous7 *___dst__P13s__anonymous7_1, int __i__i_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous7_1).__i__i_1)))=__i__i_1) /* ?{} */);
+}
+static volatile const struct __anonymous7 __x17__CV13s__anonymous7_1;
+volatile const short __x20__CVs_1;
+static volatile const short __x21__CVs_1;
+static volatile const short __x22__CVs_1;
+static volatile const short __x23__CVs_1;
+static volatile const short __x24__CVs_1;
+static volatile const short __x25__CVs_1;
+static volatile const short __x26__CVs_1;
+static volatile const short __x27__CVs_1;
+struct __anonymous8 {
+    short __i__s_1;
+};
+static inline struct __anonymous8 ___operator_assign__F13s__anonymous8_P13s__anonymous813s__anonymous8_autogen___1(struct __anonymous8 *___dst__P13s__anonymous8_1, struct __anonymous8 ___src__13s__anonymous8_1){
+    ((void)((*___dst__P13s__anonymous8_1).__i__s_1=___src__13s__anonymous8_1.__i__s_1));
+    return ((struct __anonymous8 )___src__13s__anonymous8_1);
+}
+static inline void ___constructor__F_P13s__anonymous8_autogen___1(struct __anonymous8 *___dst__P13s__anonymous8_1){
+    ((void)((*((short *)(&(*___dst__P13s__anonymous8_1).__i__s_1)))) /* ?{} */);
+}
+static inline void ___constructor__F_P13s__anonymous813s__anonymous8_autogen___1(struct __anonymous8 *___dst__P13s__anonymous8_1, struct __anonymous8 ___src__13s__anonymous8_1){
+    ((void)((*((short *)(&(*___dst__P13s__anonymous8_1).__i__s_1)))=___src__13s__anonymous8_1.__i__s_1) /* ?{} */);
+}
+static inline void ___destructor__F_P13s__anonymous8_autogen___1(struct __anonymous8 *___dst__P13s__anonymous8_1){
+    ((void)((*((short *)(&(*___dst__P13s__anonymous8_1).__i__s_1)))) /* ^?{} */);
+}
+static inline void ___constructor__F_P13s__anonymous8s_autogen___1(struct __anonymous8 *___dst__P13s__anonymous8_1, short __i__s_1){
+    ((void)((*((short *)(&(*___dst__P13s__anonymous8_1).__i__s_1)))=__i__s_1) /* ?{} */);
+}
+volatile const struct __anonymous8 __x29__CV13s__anonymous8_1;
+struct __anonymous9 {
+    short __i__s_1;
+};
+static inline struct __anonymous9 ___operator_assign__F13s__anonymous9_P13s__anonymous913s__anonymous9_autogen___1(struct __anonymous9 *___dst__P13s__anonymous9_1, struct __anonymous9 ___src__13s__anonymous9_1){
+    ((void)((*___dst__P13s__anonymous9_1).__i__s_1=___src__13s__anonymous9_1.__i__s_1));
+    return ((struct __anonymous9 )___src__13s__anonymous9_1);
+}
+static inline void ___constructor__F_P13s__anonymous9_autogen___1(struct __anonymous9 *___dst__P13s__anonymous9_1){
+    ((void)((*((short *)(&(*___dst__P13s__anonymous9_1).__i__s_1)))) /* ?{} */);
+}
+static inline void ___constructor__F_P13s__anonymous913s__anonymous9_autogen___1(struct __anonymous9 *___dst__P13s__anonymous9_1, struct __anonymous9 ___src__13s__anonymous9_1){
+    ((void)((*((short *)(&(*___dst__P13s__anonymous9_1).__i__s_1)))=___src__13s__anonymous9_1.__i__s_1) /* ?{} */);
+}
+static inline void ___destructor__F_P13s__anonymous9_autogen___1(struct __anonymous9 *___dst__P13s__anonymous9_1){
+    ((void)((*((short *)(&(*___dst__P13s__anonymous9_1).__i__s_1)))) /* ^?{} */);
+}
+static inline void ___constructor__F_P13s__anonymous9s_autogen___1(struct __anonymous9 *___dst__P13s__anonymous9_1, short __i__s_1){
+    ((void)((*((short *)(&(*___dst__P13s__anonymous9_1).__i__s_1)))=__i__s_1) /* ?{} */);
+}
+volatile const struct __anonymous9 __x30__CV13s__anonymous9_1;
+struct __anonymous10 {
+    short __i__s_1;
+};
+static inline struct __anonymous10 ___operator_assign__F14s__anonymous10_P14s__anonymous1014s__anonymous10_autogen___1(struct __anonymous10 *___dst__P14s__anonymous10_1, struct __anonymous10 ___src__14s__anonymous10_1){
+    ((void)((*___dst__P14s__anonymous10_1).__i__s_1=___src__14s__anonymous10_1.__i__s_1));
+    return ((struct __anonymous10 )___src__14s__anonymous10_1);
+}
+static inline void ___constructor__F_P14s__anonymous10_autogen___1(struct __anonymous10 *___dst__P14s__anonymous10_1){
+    ((void)((*((short *)(&(*___dst__P14s__anonymous10_1).__i__s_1)))) /* ?{} */);
+}
+static inline void ___constructor__F_P14s__anonymous1014s__anonymous10_autogen___1(struct __anonymous10 *___dst__P14s__anonymous10_1, struct __anonymous10 ___src__14s__anonymous10_1){
+    ((void)((*((short *)(&(*___dst__P14s__anonymous10_1).__i__s_1)))=___src__14s__anonymous10_1.__i__s_1) /* ?{} */);
+}
+static inline void ___destructor__F_P14s__anonymous10_autogen___1(struct __anonymous10 *___dst__P14s__anonymous10_1){
+    ((void)((*((short *)(&(*___dst__P14s__anonymous10_1).__i__s_1)))) /* ^?{} */);
+}
+static inline void ___constructor__F_P14s__anonymous10s_autogen___1(struct __anonymous10 *___dst__P14s__anonymous10_1, short __i__s_1){
+    ((void)((*((short *)(&(*___dst__P14s__anonymous10_1).__i__s_1)))=__i__s_1) /* ?{} */);
+}
+volatile const struct __anonymous10 __x31__CV14s__anonymous10_1;
+struct __anonymous11 {
+    short __i__s_1;
+};
+static inline struct __anonymous11 ___operator_assign__F14s__anonymous11_P14s__anonymous1114s__anonymous11_autogen___1(struct __anonymous11 *___dst__P14s__anonymous11_1, struct __anonymous11 ___src__14s__anonymous11_1){
+    ((void)((*___dst__P14s__anonymous11_1).__i__s_1=___src__14s__anonymous11_1.__i__s_1));
+    return ((struct __anonymous11 )___src__14s__anonymous11_1);
+}
+static inline void ___constructor__F_P14s__anonymous11_autogen___1(struct __anonymous11 *___dst__P14s__anonymous11_1){
+    ((void)((*((short *)(&(*___dst__P14s__anonymous11_1).__i__s_1)))) /* ?{} */);
+}
+static inline void ___constructor__F_P14s__anonymous1114s__anonymous11_autogen___1(struct __anonymous11 *___dst__P14s__anonymous11_1, struct __anonymous11 ___src__14s__anonymous11_1){
+    ((void)((*((short *)(&(*___dst__P14s__anonymous11_1).__i__s_1)))=___src__14s__anonymous11_1.__i__s_1) /* ?{} */);
+}
+static inline void ___destructor__F_P14s__anonymous11_autogen___1(struct __anonymous11 *___dst__P14s__anonymous11_1){
+    ((void)((*((short *)(&(*___dst__P14s__anonymous11_1).__i__s_1)))) /* ^?{} */);
+}
+static inline void ___constructor__F_P14s__anonymous11s_autogen___1(struct __anonymous11 *___dst__P14s__anonymous11_1, short __i__s_1){
+    ((void)((*((short *)(&(*___dst__P14s__anonymous11_1).__i__s_1)))=__i__s_1) /* ?{} */);
+}
+static volatile const struct __anonymous11 __x32__CV14s__anonymous11_1;
+struct __anonymous12 {
+    short __i__s_1;
+};
+static inline struct __anonymous12 ___operator_assign__F14s__anonymous12_P14s__anonymous1214s__anonymous12_autogen___1(struct __anonymous12 *___dst__P14s__anonymous12_1, struct __anonymous12 ___src__14s__anonymous12_1){
+    ((void)((*___dst__P14s__anonymous12_1).__i__s_1=___src__14s__anonymous12_1.__i__s_1));
+    return ((struct __anonymous12 )___src__14s__anonymous12_1);
+}
+static inline void ___constructor__F_P14s__anonymous12_autogen___1(struct __anonymous12 *___dst__P14s__anonymous12_1){
+    ((void)((*((short *)(&(*___dst__P14s__anonymous12_1).__i__s_1)))) /* ?{} */);
+}
+static inline void ___constructor__F_P14s__anonymous1214s__anonymous12_autogen___1(struct __anonymous12 *___dst__P14s__anonymous12_1, struct __anonymous12 ___src__14s__anonymous12_1){
+    ((void)((*((short *)(&(*___dst__P14s__anonymous12_1).__i__s_1)))=___src__14s__anonymous12_1.__i__s_1) /* ?{} */);
+}
+static inline void ___destructor__F_P14s__anonymous12_autogen___1(struct __anonymous12 *___dst__P14s__anonymous12_1){
+    ((void)((*((short *)(&(*___dst__P14s__anonymous12_1).__i__s_1)))) /* ^?{} */);
+}
+static inline void ___constructor__F_P14s__anonymous12s_autogen___1(struct __anonymous12 *___dst__P14s__anonymous12_1, short __i__s_1){
+    ((void)((*((short *)(&(*___dst__P14s__anonymous12_1).__i__s_1)))=__i__s_1) /* ?{} */);
+}
+static volatile const struct __anonymous12 __x33__CV14s__anonymous12_1;
+struct __anonymous13 {
+    short __i__s_1;
+};
+static inline struct __anonymous13 ___operator_assign__F14s__anonymous13_P14s__anonymous1314s__anonymous13_autogen___1(struct __anonymous13 *___dst__P14s__anonymous13_1, struct __anonymous13 ___src__14s__anonymous13_1){
+    ((void)((*___dst__P14s__anonymous13_1).__i__s_1=___src__14s__anonymous13_1.__i__s_1));
+    return ((struct __anonymous13 )___src__14s__anonymous13_1);
+}
+static inline void ___constructor__F_P14s__anonymous13_autogen___1(struct __anonymous13 *___dst__P14s__anonymous13_1){
+    ((void)((*((short *)(&(*___dst__P14s__anonymous13_1).__i__s_1)))) /* ?{} */);
+}
+static inline void ___constructor__F_P14s__anonymous1314s__anonymous13_autogen___1(struct __anonymous13 *___dst__P14s__anonymous13_1, struct __anonymous13 ___src__14s__anonymous13_1){
+    ((void)((*((short *)(&(*___dst__P14s__anonymous13_1).__i__s_1)))=___src__14s__anonymous13_1.__i__s_1) /* ?{} */);
+}
+static inline void ___destructor__F_P14s__anonymous13_autogen___1(struct __anonymous13 *___dst__P14s__anonymous13_1){
+    ((void)((*((short *)(&(*___dst__P14s__anonymous13_1).__i__s_1)))) /* ^?{} */);
+}
+static inline void ___constructor__F_P14s__anonymous13s_autogen___1(struct __anonymous13 *___dst__P14s__anonymous13_1, short __i__s_1){
+    ((void)((*((short *)(&(*___dst__P14s__anonymous13_1).__i__s_1)))=__i__s_1) /* ?{} */);
+}
+static volatile const struct __anonymous13 __x34__CV14s__anonymous13_1;
+struct __anonymous14 {
+    short __i__s_1;
+};
+static inline struct __anonymous14 ___operator_assign__F14s__anonymous14_P14s__anonymous1414s__anonymous14_autogen___1(struct __anonymous14 *___dst__P14s__anonymous14_1, struct __anonymous14 ___src__14s__anonymous14_1){
+    ((void)((*___dst__P14s__anonymous14_1).__i__s_1=___src__14s__anonymous14_1.__i__s_1));
+    return ((struct __anonymous14 )___src__14s__anonymous14_1);
+}
+static inline void ___constructor__F_P14s__anonymous14_autogen___1(struct __anonymous14 *___dst__P14s__anonymous14_1){
+    ((void)((*((short *)(&(*___dst__P14s__anonymous14_1).__i__s_1)))) /* ?{} */);
+}
+static inline void ___constructor__F_P14s__anonymous1414s__anonymous14_autogen___1(struct __anonymous14 *___dst__P14s__anonymous14_1, struct __anonymous14 ___src__14s__anonymous14_1){
+    ((void)((*((short *)(&(*___dst__P14s__anonymous14_1).__i__s_1)))=___src__14s__anonymous14_1.__i__s_1) /* ?{} */);
+}
+static inline void ___destructor__F_P14s__anonymous14_autogen___1(struct __anonymous14 *___dst__P14s__anonymous14_1){
+    ((void)((*((short *)(&(*___dst__P14s__anonymous14_1).__i__s_1)))) /* ^?{} */);
+}
+static inline void ___constructor__F_P14s__anonymous14s_autogen___1(struct __anonymous14 *___dst__P14s__anonymous14_1, short __i__s_1){
+    ((void)((*((short *)(&(*___dst__P14s__anonymous14_1).__i__s_1)))=__i__s_1) /* ?{} */);
+}
+static volatile const struct __anonymous14 __x35__CV14s__anonymous14_1;
+struct __anonymous15 {
+    short __i__s_1;
+};
+static inline struct __anonymous15 ___operator_assign__F14s__anonymous15_P14s__anonymous1514s__anonymous15_autogen___1(struct __anonymous15 *___dst__P14s__anonymous15_1, struct __anonymous15 ___src__14s__anonymous15_1){
+    ((void)((*___dst__P14s__anonymous15_1).__i__s_1=___src__14s__anonymous15_1.__i__s_1));
+    return ((struct __anonymous15 )___src__14s__anonymous15_1);
+}
+static inline void ___constructor__F_P14s__anonymous15_autogen___1(struct __anonymous15 *___dst__P14s__anonymous15_1){
+    ((void)((*((short *)(&(*___dst__P14s__anonymous15_1).__i__s_1)))) /* ?{} */);
+}
+static inline void ___constructor__F_P14s__anonymous1514s__anonymous15_autogen___1(struct __anonymous15 *___dst__P14s__anonymous15_1, struct __anonymous15 ___src__14s__anonymous15_1){
+    ((void)((*((short *)(&(*___dst__P14s__anonymous15_1).__i__s_1)))=___src__14s__anonymous15_1.__i__s_1) /* ?{} */);
+}
+static inline void ___destructor__F_P14s__anonymous15_autogen___1(struct __anonymous15 *___dst__P14s__anonymous15_1){
+    ((void)((*((short *)(&(*___dst__P14s__anonymous15_1).__i__s_1)))) /* ^?{} */);
+}
+static inline void ___constructor__F_P14s__anonymous15s_autogen___1(struct __anonymous15 *___dst__P14s__anonymous15_1, short __i__s_1){
+    ((void)((*((short *)(&(*___dst__P14s__anonymous15_1).__i__s_1)))=__i__s_1) /* ?{} */);
+}
+static volatile const struct __anonymous15 __x36__CV14s__anonymous15_1;
+static inline volatile const int __f11__FCVi___1();
+static inline volatile const int __f12__FCVi___1();
+static inline volatile const int __f13__FCVi___1();
+static inline volatile const int __f14__FCVi___1();
+static inline volatile const int __f15__FCVi___1();
+static inline volatile const int __f16__FCVi___1();
+static inline volatile const int __f17__FCVi___1();
+static inline volatile const int __f18__FCVi___1();
+static inline volatile const short __f21__FCVs___1();
+static inline volatile const short __f22__FCVs___1();
+static inline volatile const short __f23__FCVs___1();
+static inline volatile const short __f24__FCVs___1();
+static inline volatile const short __f25__FCVs___1();
+static inline volatile const short __f26__FCVs___1();
+static inline volatile const short __f27__FCVs___1();
+static inline volatile const short __f28__FCVs___1();
+struct __anonymous16 {
+    int __i__i_1;
+};
+static inline struct __anonymous16 ___operator_assign__F14s__anonymous16_P14s__anonymous1614s__anonymous16_autogen___1(struct __anonymous16 *___dst__P14s__anonymous16_1, struct __anonymous16 ___src__14s__anonymous16_1){
+    ((void)((*___dst__P14s__anonymous16_1).__i__i_1=___src__14s__anonymous16_1.__i__i_1));
+    return ((struct __anonymous16 )___src__14s__anonymous16_1);
+}
+static inline void ___constructor__F_P14s__anonymous16_autogen___1(struct __anonymous16 *___dst__P14s__anonymous16_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous16_1).__i__i_1)))) /* ?{} */);
+}
+static inline void ___constructor__F_P14s__anonymous1614s__anonymous16_autogen___1(struct __anonymous16 *___dst__P14s__anonymous16_1, struct __anonymous16 ___src__14s__anonymous16_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous16_1).__i__i_1)))=___src__14s__anonymous16_1.__i__i_1) /* ?{} */);
+}
+static inline void ___destructor__F_P14s__anonymous16_autogen___1(struct __anonymous16 *___dst__P14s__anonymous16_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous16_1).__i__i_1)))) /* ^?{} */);
+}
+static inline void ___constructor__F_P14s__anonymous16i_autogen___1(struct __anonymous16 *___dst__P14s__anonymous16_1, int __i__i_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous16_1).__i__i_1)))=__i__i_1) /* ?{} */);
+}
+static inline volatile const struct __anonymous16 __f31__FCV14s__anonymous16___1();
+struct __anonymous17 {
+    int __i__i_1;
+};
+static inline struct __anonymous17 ___operator_assign__F14s__anonymous17_P14s__anonymous1714s__anonymous17_autogen___1(struct __anonymous17 *___dst__P14s__anonymous17_1, struct __anonymous17 ___src__14s__anonymous17_1){
+    ((void)((*___dst__P14s__anonymous17_1).__i__i_1=___src__14s__anonymous17_1.__i__i_1));
+    return ((struct __anonymous17 )___src__14s__anonymous17_1);
+}
+static inline void ___constructor__F_P14s__anonymous17_autogen___1(struct __anonymous17 *___dst__P14s__anonymous17_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous17_1).__i__i_1)))) /* ?{} */);
+}
+static inline void ___constructor__F_P14s__anonymous1714s__anonymous17_autogen___1(struct __anonymous17 *___dst__P14s__anonymous17_1, struct __anonymous17 ___src__14s__anonymous17_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous17_1).__i__i_1)))=___src__14s__anonymous17_1.__i__i_1) /* ?{} */);
+}
+static inline void ___destructor__F_P14s__anonymous17_autogen___1(struct __anonymous17 *___dst__P14s__anonymous17_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous17_1).__i__i_1)))) /* ^?{} */);
+}
+static inline void ___constructor__F_P14s__anonymous17i_autogen___1(struct __anonymous17 *___dst__P14s__anonymous17_1, int __i__i_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous17_1).__i__i_1)))=__i__i_1) /* ?{} */);
+}
+static inline volatile const struct __anonymous17 __f32__FCV14s__anonymous17___1();
+struct __anonymous18 {
+    int __i__i_1;
+};
+static inline struct __anonymous18 ___operator_assign__F14s__anonymous18_P14s__anonymous1814s__anonymous18_autogen___1(struct __anonymous18 *___dst__P14s__anonymous18_1, struct __anonymous18 ___src__14s__anonymous18_1){
+    ((void)((*___dst__P14s__anonymous18_1).__i__i_1=___src__14s__anonymous18_1.__i__i_1));
+    return ((struct __anonymous18 )___src__14s__anonymous18_1);
+}
+static inline void ___constructor__F_P14s__anonymous18_autogen___1(struct __anonymous18 *___dst__P14s__anonymous18_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous18_1).__i__i_1)))) /* ?{} */);
+}
+static inline void ___constructor__F_P14s__anonymous1814s__anonymous18_autogen___1(struct __anonymous18 *___dst__P14s__anonymous18_1, struct __anonymous18 ___src__14s__anonymous18_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous18_1).__i__i_1)))=___src__14s__anonymous18_1.__i__i_1) /* ?{} */);
+}
+static inline void ___destructor__F_P14s__anonymous18_autogen___1(struct __anonymous18 *___dst__P14s__anonymous18_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous18_1).__i__i_1)))) /* ^?{} */);
+}
+static inline void ___constructor__F_P14s__anonymous18i_autogen___1(struct __anonymous18 *___dst__P14s__anonymous18_1, int __i__i_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous18_1).__i__i_1)))=__i__i_1) /* ?{} */);
+}
+static inline volatile const struct __anonymous18 __f33__FCV14s__anonymous18___1();
+struct __anonymous19 {
+    int __i__i_1;
+};
+static inline struct __anonymous19 ___operator_assign__F14s__anonymous19_P14s__anonymous1914s__anonymous19_autogen___1(struct __anonymous19 *___dst__P14s__anonymous19_1, struct __anonymous19 ___src__14s__anonymous19_1){
+    ((void)((*___dst__P14s__anonymous19_1).__i__i_1=___src__14s__anonymous19_1.__i__i_1));
+    return ((struct __anonymous19 )___src__14s__anonymous19_1);
+}
+static inline void ___constructor__F_P14s__anonymous19_autogen___1(struct __anonymous19 *___dst__P14s__anonymous19_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous19_1).__i__i_1)))) /* ?{} */);
+}
+static inline void ___constructor__F_P14s__anonymous1914s__anonymous19_autogen___1(struct __anonymous19 *___dst__P14s__anonymous19_1, struct __anonymous19 ___src__14s__anonymous19_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous19_1).__i__i_1)))=___src__14s__anonymous19_1.__i__i_1) /* ?{} */);
+}
+static inline void ___destructor__F_P14s__anonymous19_autogen___1(struct __anonymous19 *___dst__P14s__anonymous19_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous19_1).__i__i_1)))) /* ^?{} */);
+}
+static inline void ___constructor__F_P14s__anonymous19i_autogen___1(struct __anonymous19 *___dst__P14s__anonymous19_1, int __i__i_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous19_1).__i__i_1)))=__i__i_1) /* ?{} */);
+}
+static inline volatile const struct __anonymous19 __f34__FCV14s__anonymous19___1();
+struct __anonymous20 {
+    int __i__i_1;
+};
+static inline struct __anonymous20 ___operator_assign__F14s__anonymous20_P14s__anonymous2014s__anonymous20_autogen___1(struct __anonymous20 *___dst__P14s__anonymous20_1, struct __anonymous20 ___src__14s__anonymous20_1){
+    ((void)((*___dst__P14s__anonymous20_1).__i__i_1=___src__14s__anonymous20_1.__i__i_1));
+    return ((struct __anonymous20 )___src__14s__anonymous20_1);
+}
+static inline void ___constructor__F_P14s__anonymous20_autogen___1(struct __anonymous20 *___dst__P14s__anonymous20_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous20_1).__i__i_1)))) /* ?{} */);
+}
+static inline void ___constructor__F_P14s__anonymous2014s__anonymous20_autogen___1(struct __anonymous20 *___dst__P14s__anonymous20_1, struct __anonymous20 ___src__14s__anonymous20_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous20_1).__i__i_1)))=___src__14s__anonymous20_1.__i__i_1) /* ?{} */);
+}
+static inline void ___destructor__F_P14s__anonymous20_autogen___1(struct __anonymous20 *___dst__P14s__anonymous20_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous20_1).__i__i_1)))) /* ^?{} */);
+}
+static inline void ___constructor__F_P14s__anonymous20i_autogen___1(struct __anonymous20 *___dst__P14s__anonymous20_1, int __i__i_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous20_1).__i__i_1)))=__i__i_1) /* ?{} */);
+}
+static inline volatile const struct __anonymous20 __f35__FCV14s__anonymous20___1();
+struct __anonymous21 {
+    int __i__i_1;
+};
+static inline struct __anonymous21 ___operator_assign__F14s__anonymous21_P14s__anonymous2114s__anonymous21_autogen___1(struct __anonymous21 *___dst__P14s__anonymous21_1, struct __anonymous21 ___src__14s__anonymous21_1){
+    ((void)((*___dst__P14s__anonymous21_1).__i__i_1=___src__14s__anonymous21_1.__i__i_1));
+    return ((struct __anonymous21 )___src__14s__anonymous21_1);
+}
+static inline void ___constructor__F_P14s__anonymous21_autogen___1(struct __anonymous21 *___dst__P14s__anonymous21_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous21_1).__i__i_1)))) /* ?{} */);
+}
+static inline void ___constructor__F_P14s__anonymous2114s__anonymous21_autogen___1(struct __anonymous21 *___dst__P14s__anonymous21_1, struct __anonymous21 ___src__14s__anonymous21_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous21_1).__i__i_1)))=___src__14s__anonymous21_1.__i__i_1) /* ?{} */);
+}
+static inline void ___destructor__F_P14s__anonymous21_autogen___1(struct __anonymous21 *___dst__P14s__anonymous21_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous21_1).__i__i_1)))) /* ^?{} */);
+}
+static inline void ___constructor__F_P14s__anonymous21i_autogen___1(struct __anonymous21 *___dst__P14s__anonymous21_1, int __i__i_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous21_1).__i__i_1)))=__i__i_1) /* ?{} */);
+}
+static inline volatile const struct __anonymous21 __f36__FCV14s__anonymous21___1();
+struct __anonymous22 {
+    int __i__i_1;
+};
+static inline struct __anonymous22 ___operator_assign__F14s__anonymous22_P14s__anonymous2214s__anonymous22_autogen___1(struct __anonymous22 *___dst__P14s__anonymous22_1, struct __anonymous22 ___src__14s__anonymous22_1){
+    ((void)((*___dst__P14s__anonymous22_1).__i__i_1=___src__14s__anonymous22_1.__i__i_1));
+    return ((struct __anonymous22 )___src__14s__anonymous22_1);
+}
+static inline void ___constructor__F_P14s__anonymous22_autogen___1(struct __anonymous22 *___dst__P14s__anonymous22_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous22_1).__i__i_1)))) /* ?{} */);
+}
+static inline void ___constructor__F_P14s__anonymous2214s__anonymous22_autogen___1(struct __anonymous22 *___dst__P14s__anonymous22_1, struct __anonymous22 ___src__14s__anonymous22_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous22_1).__i__i_1)))=___src__14s__anonymous22_1.__i__i_1) /* ?{} */);
+}
+static inline void ___destructor__F_P14s__anonymous22_autogen___1(struct __anonymous22 *___dst__P14s__anonymous22_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous22_1).__i__i_1)))) /* ^?{} */);
+}
+static inline void ___constructor__F_P14s__anonymous22i_autogen___1(struct __anonymous22 *___dst__P14s__anonymous22_1, int __i__i_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous22_1).__i__i_1)))=__i__i_1) /* ?{} */);
+}
+static inline volatile const struct __anonymous22 __f37__FCV14s__anonymous22___1();
+struct __anonymous23 {
+    int __i__i_1;
+};
+static inline struct __anonymous23 ___operator_assign__F14s__anonymous23_P14s__anonymous2314s__anonymous23_autogen___1(struct __anonymous23 *___dst__P14s__anonymous23_1, struct __anonymous23 ___src__14s__anonymous23_1){
+    ((void)((*___dst__P14s__anonymous23_1).__i__i_1=___src__14s__anonymous23_1.__i__i_1));
+    return ((struct __anonymous23 )___src__14s__anonymous23_1);
+}
+static inline void ___constructor__F_P14s__anonymous23_autogen___1(struct __anonymous23 *___dst__P14s__anonymous23_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous23_1).__i__i_1)))) /* ?{} */);
+}
+static inline void ___constructor__F_P14s__anonymous2314s__anonymous23_autogen___1(struct __anonymous23 *___dst__P14s__anonymous23_1, struct __anonymous23 ___src__14s__anonymous23_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous23_1).__i__i_1)))=___src__14s__anonymous23_1.__i__i_1) /* ?{} */);
+}
+static inline void ___destructor__F_P14s__anonymous23_autogen___1(struct __anonymous23 *___dst__P14s__anonymous23_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous23_1).__i__i_1)))) /* ^?{} */);
+}
+static inline void ___constructor__F_P14s__anonymous23i_autogen___1(struct __anonymous23 *___dst__P14s__anonymous23_1, int __i__i_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous23_1).__i__i_1)))=__i__i_1) /* ?{} */);
+}
+static inline volatile const struct __anonymous23 __f38__FCV14s__anonymous23___1();
+static inline volatile const short __f41__FCVs___1();
+static inline volatile const short __f42__FCVs___1();
+static inline volatile const short __f43__FCVs___1();
+static inline volatile const short __f44__FCVs___1();
+static inline volatile const short __f45__FCVs___1();
+static inline volatile const short __f46__FCVs___1();
+static inline volatile const short __f47__FCVs___1();
+static inline volatile const short __f48__FCVs___1();
+int main(int __argc__i_1, const char **__argv__PPCc_1){
+    int _retVal0 = { 0 };
+    ((void)(_retVal0=0) /* ?{} */);
+    return ((int )_retVal0);
+}
+__attribute__ ((constructor(),)) static void _init_declarationSpecifier(void){
+    ((void)___constructor__F_P13s__anonymous0_autogen___1(((struct __anonymous0 *)(&__x10__CV13s__anonymous0_1))));
+    ((void)___constructor__F_P13s__anonymous1_autogen___1(((struct __anonymous1 *)(&__x11__CV13s__anonymous1_1))));
+    ((void)___constructor__F_P13s__anonymous2_autogen___1(((struct __anonymous2 *)(&__x12__CV13s__anonymous2_1))));
+    ((void)___constructor__F_P13s__anonymous3_autogen___1(((struct __anonymous3 *)(&__x13__CV13s__anonymous3_1))));
+    ((void)___constructor__F_P13s__anonymous4_autogen___1(((struct __anonymous4 *)(&__x14__CV13s__anonymous4_1))));
+    ((void)___constructor__F_P13s__anonymous5_autogen___1(((struct __anonymous5 *)(&__x15__CV13s__anonymous5_1))));
+    ((void)___constructor__F_P13s__anonymous6_autogen___1(((struct __anonymous6 *)(&__x16__CV13s__anonymous6_1))));
+    ((void)___constructor__F_P13s__anonymous7_autogen___1(((struct __anonymous7 *)(&__x17__CV13s__anonymous7_1))));
+    ((void)___constructor__F_P13s__anonymous8_autogen___1(((struct __anonymous8 *)(&__x29__CV13s__anonymous8_1))));
+    ((void)___constructor__F_P13s__anonymous9_autogen___1(((struct __anonymous9 *)(&__x30__CV13s__anonymous9_1))));
+    ((void)___constructor__F_P14s__anonymous10_autogen___1(((struct __anonymous10 *)(&__x31__CV14s__anonymous10_1))));
+    ((void)___constructor__F_P14s__anonymous11_autogen___1(((struct __anonymous11 *)(&__x32__CV14s__anonymous11_1))));
+    ((void)___constructor__F_P14s__anonymous12_autogen___1(((struct __anonymous12 *)(&__x33__CV14s__anonymous12_1))));
+    ((void)___constructor__F_P14s__anonymous13_autogen___1(((struct __anonymous13 *)(&__x34__CV14s__anonymous13_1))));
+    ((void)___constructor__F_P14s__anonymous14_autogen___1(((struct __anonymous14 *)(&__x35__CV14s__anonymous14_1))));
+    ((void)___constructor__F_P14s__anonymous15_autogen___1(((struct __anonymous15 *)(&__x36__CV14s__anonymous15_1))));
+}
+__attribute__ ((destructor(),)) static void _destroy_declarationSpecifier(void){
+    ((void)___destructor__F_P14s__anonymous15_autogen___1(((struct __anonymous15 *)(&__x36__CV14s__anonymous15_1))));
+    ((void)___destructor__F_P14s__anonymous14_autogen___1(((struct __anonymous14 *)(&__x35__CV14s__anonymous14_1))));
+    ((void)___destructor__F_P14s__anonymous13_autogen___1(((struct __anonymous13 *)(&__x34__CV14s__anonymous13_1))));
+    ((void)___destructor__F_P14s__anonymous12_autogen___1(((struct __anonymous12 *)(&__x33__CV14s__anonymous12_1))));
+    ((void)___destructor__F_P14s__anonymous11_autogen___1(((struct __anonymous11 *)(&__x32__CV14s__anonymous11_1))));
+    ((void)___destructor__F_P14s__anonymous10_autogen___1(((struct __anonymous10 *)(&__x31__CV14s__anonymous10_1))));
+    ((void)___destructor__F_P13s__anonymous9_autogen___1(((struct __anonymous9 *)(&__x30__CV13s__anonymous9_1))));
+    ((void)___destructor__F_P13s__anonymous8_autogen___1(((struct __anonymous8 *)(&__x29__CV13s__anonymous8_1))));
+    ((void)___destructor__F_P13s__anonymous7_autogen___1(((struct __anonymous7 *)(&__x17__CV13s__anonymous7_1))));
+    ((void)___destructor__F_P13s__anonymous6_autogen___1(((struct __anonymous6 *)(&__x16__CV13s__anonymous6_1))));
+    ((void)___destructor__F_P13s__anonymous5_autogen___1(((struct __anonymous5 *)(&__x15__CV13s__anonymous5_1))));
+    ((void)___destructor__F_P13s__anonymous4_autogen___1(((struct __anonymous4 *)(&__x14__CV13s__anonymous4_1))));
+    ((void)___destructor__F_P13s__anonymous3_autogen___1(((struct __anonymous3 *)(&__x13__CV13s__anonymous3_1))));
+    ((void)___destructor__F_P13s__anonymous2_autogen___1(((struct __anonymous2 *)(&__x12__CV13s__anonymous2_1))));
+    ((void)___destructor__F_P13s__anonymous1_autogen___1(((struct __anonymous1 *)(&__x11__CV13s__anonymous1_1))));
+    ((void)___destructor__F_P13s__anonymous0_autogen___1(((struct __anonymous0 *)(&__x10__CV13s__anonymous0_1))));
+}
Index: src/tests/.expect/32/gccExtensions.txt
===================================================================
--- src/tests/.expect/32/gccExtensions.txt	(revision 7b1bfc597c11725f68bb6b8790ca6a3501cd1bf7)
+++ src/tests/.expect/32/gccExtensions.txt	(revision 4a7d895054466f290f1d971a3482f0e4ff8a3c74)
@@ -11,4 +11,5 @@
     asm ( "nop" :  :  :  );
     static int __y__i_2;
+    static int *__z__Pi_2;
     int __src__i_2;
     int __dst__i_2;
@@ -17,4 +18,5 @@
     asm volatile ( "mov %1, %0\n\tadd $1, %0" : "=r" ( __dst__i_2 ) : "r" ( __src__i_2 ) :  );
     asm ( "mov %1, %0\n\tadd $1, %0" : "=r" ( __dst__i_2 ), "=r" ( __src__i_2 ) : [ __src__i_2 ] "r" ( __dst__i_2 ) : "r0" );
+    L2: L1: asm goto ( "frob %%r5, %1; jc %l[L1]; mov (%2), %%r5" :  : "r" ( __src__i_2 ), "r" ( (&__dst__i_2) ) : "r5", "memory" : L1, L2 );
     double _Complex __c1__Xd_2;
     double _Complex __c2__Xd_2;
@@ -22,4 +24,14 @@
     const int __i2__Ci_2;
     const int __i3__Ci_2;
+    inline int __f1__Fi___2(){
+    }
+    inline int __f2__Fi___2(){
+    }
+    int __s1__i_2;
+    int __s2__i_2;
+    volatile int __v1__Vi_2;
+    volatile int __v2__Vi_2;
+    int __t1___2;
+    int __t2___2;
     __extension__ const int __ex__Ci_2;
     struct S {
@@ -72,14 +84,4 @@
     ((void)(__extension__ __a__i_2=(__extension__ __b__i_2+__extension__ __c__i_2)));
     ((void)(__extension__ __a__i_2=__extension__ (__extension__ __b__i_2+__extension__ __c__i_2)));
-    inline int __f1__Fi___2(){
-    }
-    inline int __f2__Fi___2(){
-    }
-    int __s1__i_2;
-    int __s2__i_2;
-    int __t1___2;
-    int __t2___2;
-    volatile int __v1__Vi_2;
-    volatile int __v2__Vi_2;
     int __a1__i_2;
     const int __a2__Ci_2;
Index: src/tests/.expect/64/declarationSpecifier.txt
===================================================================
--- src/tests/.expect/64/declarationSpecifier.txt	(revision 4a7d895054466f290f1d971a3482f0e4ff8a3c74)
+++ src/tests/.expect/64/declarationSpecifier.txt	(revision 4a7d895054466f290f1d971a3482f0e4ff8a3c74)
@@ -0,0 +1,567 @@
+extern void *malloc(long unsigned int __size);
+extern void free(void *__ptr);
+extern void abort(void);
+extern int atexit(void (*__func)(void));
+extern void exit(int __status);
+extern int printf(const char *__restrict __format, ...);
+volatile const short __x1__CVs_1;
+static volatile const short __x2__CVs_1;
+static volatile const short __x3__CVs_1;
+static volatile const short __x4__CVs_1;
+static volatile const short __x5__CVs_1;
+static volatile const short __x6__CVs_1;
+static volatile const short __x7__CVs_1;
+static volatile const short __x8__CVs_1;
+struct __anonymous0 {
+    int __i__i_1;
+};
+static inline struct __anonymous0 ___operator_assign__F13s__anonymous0_P13s__anonymous013s__anonymous0_autogen___1(struct __anonymous0 *___dst__P13s__anonymous0_1, struct __anonymous0 ___src__13s__anonymous0_1){
+    ((void)((*___dst__P13s__anonymous0_1).__i__i_1=___src__13s__anonymous0_1.__i__i_1));
+    return ((struct __anonymous0 )___src__13s__anonymous0_1);
+}
+static inline void ___constructor__F_P13s__anonymous0_autogen___1(struct __anonymous0 *___dst__P13s__anonymous0_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous0_1).__i__i_1)))) /* ?{} */);
+}
+static inline void ___constructor__F_P13s__anonymous013s__anonymous0_autogen___1(struct __anonymous0 *___dst__P13s__anonymous0_1, struct __anonymous0 ___src__13s__anonymous0_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous0_1).__i__i_1)))=___src__13s__anonymous0_1.__i__i_1) /* ?{} */);
+}
+static inline void ___destructor__F_P13s__anonymous0_autogen___1(struct __anonymous0 *___dst__P13s__anonymous0_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous0_1).__i__i_1)))) /* ^?{} */);
+}
+static inline void ___constructor__F_P13s__anonymous0i_autogen___1(struct __anonymous0 *___dst__P13s__anonymous0_1, int __i__i_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous0_1).__i__i_1)))=__i__i_1) /* ?{} */);
+}
+volatile const struct __anonymous0 __x10__CV13s__anonymous0_1;
+struct __anonymous1 {
+    int __i__i_1;
+};
+static inline struct __anonymous1 ___operator_assign__F13s__anonymous1_P13s__anonymous113s__anonymous1_autogen___1(struct __anonymous1 *___dst__P13s__anonymous1_1, struct __anonymous1 ___src__13s__anonymous1_1){
+    ((void)((*___dst__P13s__anonymous1_1).__i__i_1=___src__13s__anonymous1_1.__i__i_1));
+    return ((struct __anonymous1 )___src__13s__anonymous1_1);
+}
+static inline void ___constructor__F_P13s__anonymous1_autogen___1(struct __anonymous1 *___dst__P13s__anonymous1_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous1_1).__i__i_1)))) /* ?{} */);
+}
+static inline void ___constructor__F_P13s__anonymous113s__anonymous1_autogen___1(struct __anonymous1 *___dst__P13s__anonymous1_1, struct __anonymous1 ___src__13s__anonymous1_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous1_1).__i__i_1)))=___src__13s__anonymous1_1.__i__i_1) /* ?{} */);
+}
+static inline void ___destructor__F_P13s__anonymous1_autogen___1(struct __anonymous1 *___dst__P13s__anonymous1_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous1_1).__i__i_1)))) /* ^?{} */);
+}
+static inline void ___constructor__F_P13s__anonymous1i_autogen___1(struct __anonymous1 *___dst__P13s__anonymous1_1, int __i__i_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous1_1).__i__i_1)))=__i__i_1) /* ?{} */);
+}
+volatile const struct __anonymous1 __x11__CV13s__anonymous1_1;
+struct __anonymous2 {
+    int __i__i_1;
+};
+static inline struct __anonymous2 ___operator_assign__F13s__anonymous2_P13s__anonymous213s__anonymous2_autogen___1(struct __anonymous2 *___dst__P13s__anonymous2_1, struct __anonymous2 ___src__13s__anonymous2_1){
+    ((void)((*___dst__P13s__anonymous2_1).__i__i_1=___src__13s__anonymous2_1.__i__i_1));
+    return ((struct __anonymous2 )___src__13s__anonymous2_1);
+}
+static inline void ___constructor__F_P13s__anonymous2_autogen___1(struct __anonymous2 *___dst__P13s__anonymous2_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous2_1).__i__i_1)))) /* ?{} */);
+}
+static inline void ___constructor__F_P13s__anonymous213s__anonymous2_autogen___1(struct __anonymous2 *___dst__P13s__anonymous2_1, struct __anonymous2 ___src__13s__anonymous2_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous2_1).__i__i_1)))=___src__13s__anonymous2_1.__i__i_1) /* ?{} */);
+}
+static inline void ___destructor__F_P13s__anonymous2_autogen___1(struct __anonymous2 *___dst__P13s__anonymous2_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous2_1).__i__i_1)))) /* ^?{} */);
+}
+static inline void ___constructor__F_P13s__anonymous2i_autogen___1(struct __anonymous2 *___dst__P13s__anonymous2_1, int __i__i_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous2_1).__i__i_1)))=__i__i_1) /* ?{} */);
+}
+volatile const struct __anonymous2 __x12__CV13s__anonymous2_1;
+struct __anonymous3 {
+    int __i__i_1;
+};
+static inline struct __anonymous3 ___operator_assign__F13s__anonymous3_P13s__anonymous313s__anonymous3_autogen___1(struct __anonymous3 *___dst__P13s__anonymous3_1, struct __anonymous3 ___src__13s__anonymous3_1){
+    ((void)((*___dst__P13s__anonymous3_1).__i__i_1=___src__13s__anonymous3_1.__i__i_1));
+    return ((struct __anonymous3 )___src__13s__anonymous3_1);
+}
+static inline void ___constructor__F_P13s__anonymous3_autogen___1(struct __anonymous3 *___dst__P13s__anonymous3_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous3_1).__i__i_1)))) /* ?{} */);
+}
+static inline void ___constructor__F_P13s__anonymous313s__anonymous3_autogen___1(struct __anonymous3 *___dst__P13s__anonymous3_1, struct __anonymous3 ___src__13s__anonymous3_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous3_1).__i__i_1)))=___src__13s__anonymous3_1.__i__i_1) /* ?{} */);
+}
+static inline void ___destructor__F_P13s__anonymous3_autogen___1(struct __anonymous3 *___dst__P13s__anonymous3_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous3_1).__i__i_1)))) /* ^?{} */);
+}
+static inline void ___constructor__F_P13s__anonymous3i_autogen___1(struct __anonymous3 *___dst__P13s__anonymous3_1, int __i__i_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous3_1).__i__i_1)))=__i__i_1) /* ?{} */);
+}
+static volatile const struct __anonymous3 __x13__CV13s__anonymous3_1;
+struct __anonymous4 {
+    int __i__i_1;
+};
+static inline struct __anonymous4 ___operator_assign__F13s__anonymous4_P13s__anonymous413s__anonymous4_autogen___1(struct __anonymous4 *___dst__P13s__anonymous4_1, struct __anonymous4 ___src__13s__anonymous4_1){
+    ((void)((*___dst__P13s__anonymous4_1).__i__i_1=___src__13s__anonymous4_1.__i__i_1));
+    return ((struct __anonymous4 )___src__13s__anonymous4_1);
+}
+static inline void ___constructor__F_P13s__anonymous4_autogen___1(struct __anonymous4 *___dst__P13s__anonymous4_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous4_1).__i__i_1)))) /* ?{} */);
+}
+static inline void ___constructor__F_P13s__anonymous413s__anonymous4_autogen___1(struct __anonymous4 *___dst__P13s__anonymous4_1, struct __anonymous4 ___src__13s__anonymous4_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous4_1).__i__i_1)))=___src__13s__anonymous4_1.__i__i_1) /* ?{} */);
+}
+static inline void ___destructor__F_P13s__anonymous4_autogen___1(struct __anonymous4 *___dst__P13s__anonymous4_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous4_1).__i__i_1)))) /* ^?{} */);
+}
+static inline void ___constructor__F_P13s__anonymous4i_autogen___1(struct __anonymous4 *___dst__P13s__anonymous4_1, int __i__i_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous4_1).__i__i_1)))=__i__i_1) /* ?{} */);
+}
+static volatile const struct __anonymous4 __x14__CV13s__anonymous4_1;
+struct __anonymous5 {
+    int __i__i_1;
+};
+static inline struct __anonymous5 ___operator_assign__F13s__anonymous5_P13s__anonymous513s__anonymous5_autogen___1(struct __anonymous5 *___dst__P13s__anonymous5_1, struct __anonymous5 ___src__13s__anonymous5_1){
+    ((void)((*___dst__P13s__anonymous5_1).__i__i_1=___src__13s__anonymous5_1.__i__i_1));
+    return ((struct __anonymous5 )___src__13s__anonymous5_1);
+}
+static inline void ___constructor__F_P13s__anonymous5_autogen___1(struct __anonymous5 *___dst__P13s__anonymous5_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous5_1).__i__i_1)))) /* ?{} */);
+}
+static inline void ___constructor__F_P13s__anonymous513s__anonymous5_autogen___1(struct __anonymous5 *___dst__P13s__anonymous5_1, struct __anonymous5 ___src__13s__anonymous5_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous5_1).__i__i_1)))=___src__13s__anonymous5_1.__i__i_1) /* ?{} */);
+}
+static inline void ___destructor__F_P13s__anonymous5_autogen___1(struct __anonymous5 *___dst__P13s__anonymous5_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous5_1).__i__i_1)))) /* ^?{} */);
+}
+static inline void ___constructor__F_P13s__anonymous5i_autogen___1(struct __anonymous5 *___dst__P13s__anonymous5_1, int __i__i_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous5_1).__i__i_1)))=__i__i_1) /* ?{} */);
+}
+static volatile const struct __anonymous5 __x15__CV13s__anonymous5_1;
+struct __anonymous6 {
+    int __i__i_1;
+};
+static inline struct __anonymous6 ___operator_assign__F13s__anonymous6_P13s__anonymous613s__anonymous6_autogen___1(struct __anonymous6 *___dst__P13s__anonymous6_1, struct __anonymous6 ___src__13s__anonymous6_1){
+    ((void)((*___dst__P13s__anonymous6_1).__i__i_1=___src__13s__anonymous6_1.__i__i_1));
+    return ((struct __anonymous6 )___src__13s__anonymous6_1);
+}
+static inline void ___constructor__F_P13s__anonymous6_autogen___1(struct __anonymous6 *___dst__P13s__anonymous6_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous6_1).__i__i_1)))) /* ?{} */);
+}
+static inline void ___constructor__F_P13s__anonymous613s__anonymous6_autogen___1(struct __anonymous6 *___dst__P13s__anonymous6_1, struct __anonymous6 ___src__13s__anonymous6_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous6_1).__i__i_1)))=___src__13s__anonymous6_1.__i__i_1) /* ?{} */);
+}
+static inline void ___destructor__F_P13s__anonymous6_autogen___1(struct __anonymous6 *___dst__P13s__anonymous6_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous6_1).__i__i_1)))) /* ^?{} */);
+}
+static inline void ___constructor__F_P13s__anonymous6i_autogen___1(struct __anonymous6 *___dst__P13s__anonymous6_1, int __i__i_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous6_1).__i__i_1)))=__i__i_1) /* ?{} */);
+}
+static volatile const struct __anonymous6 __x16__CV13s__anonymous6_1;
+struct __anonymous7 {
+    int __i__i_1;
+};
+static inline struct __anonymous7 ___operator_assign__F13s__anonymous7_P13s__anonymous713s__anonymous7_autogen___1(struct __anonymous7 *___dst__P13s__anonymous7_1, struct __anonymous7 ___src__13s__anonymous7_1){
+    ((void)((*___dst__P13s__anonymous7_1).__i__i_1=___src__13s__anonymous7_1.__i__i_1));
+    return ((struct __anonymous7 )___src__13s__anonymous7_1);
+}
+static inline void ___constructor__F_P13s__anonymous7_autogen___1(struct __anonymous7 *___dst__P13s__anonymous7_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous7_1).__i__i_1)))) /* ?{} */);
+}
+static inline void ___constructor__F_P13s__anonymous713s__anonymous7_autogen___1(struct __anonymous7 *___dst__P13s__anonymous7_1, struct __anonymous7 ___src__13s__anonymous7_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous7_1).__i__i_1)))=___src__13s__anonymous7_1.__i__i_1) /* ?{} */);
+}
+static inline void ___destructor__F_P13s__anonymous7_autogen___1(struct __anonymous7 *___dst__P13s__anonymous7_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous7_1).__i__i_1)))) /* ^?{} */);
+}
+static inline void ___constructor__F_P13s__anonymous7i_autogen___1(struct __anonymous7 *___dst__P13s__anonymous7_1, int __i__i_1){
+    ((void)((*((int *)(&(*___dst__P13s__anonymous7_1).__i__i_1)))=__i__i_1) /* ?{} */);
+}
+static volatile const struct __anonymous7 __x17__CV13s__anonymous7_1;
+volatile const short __x20__CVs_1;
+static volatile const short __x21__CVs_1;
+static volatile const short __x22__CVs_1;
+static volatile const short __x23__CVs_1;
+static volatile const short __x24__CVs_1;
+static volatile const short __x25__CVs_1;
+static volatile const short __x26__CVs_1;
+static volatile const short __x27__CVs_1;
+struct __anonymous8 {
+    short __i__s_1;
+};
+static inline struct __anonymous8 ___operator_assign__F13s__anonymous8_P13s__anonymous813s__anonymous8_autogen___1(struct __anonymous8 *___dst__P13s__anonymous8_1, struct __anonymous8 ___src__13s__anonymous8_1){
+    ((void)((*___dst__P13s__anonymous8_1).__i__s_1=___src__13s__anonymous8_1.__i__s_1));
+    return ((struct __anonymous8 )___src__13s__anonymous8_1);
+}
+static inline void ___constructor__F_P13s__anonymous8_autogen___1(struct __anonymous8 *___dst__P13s__anonymous8_1){
+    ((void)((*((short *)(&(*___dst__P13s__anonymous8_1).__i__s_1)))) /* ?{} */);
+}
+static inline void ___constructor__F_P13s__anonymous813s__anonymous8_autogen___1(struct __anonymous8 *___dst__P13s__anonymous8_1, struct __anonymous8 ___src__13s__anonymous8_1){
+    ((void)((*((short *)(&(*___dst__P13s__anonymous8_1).__i__s_1)))=___src__13s__anonymous8_1.__i__s_1) /* ?{} */);
+}
+static inline void ___destructor__F_P13s__anonymous8_autogen___1(struct __anonymous8 *___dst__P13s__anonymous8_1){
+    ((void)((*((short *)(&(*___dst__P13s__anonymous8_1).__i__s_1)))) /* ^?{} */);
+}
+static inline void ___constructor__F_P13s__anonymous8s_autogen___1(struct __anonymous8 *___dst__P13s__anonymous8_1, short __i__s_1){
+    ((void)((*((short *)(&(*___dst__P13s__anonymous8_1).__i__s_1)))=__i__s_1) /* ?{} */);
+}
+volatile const struct __anonymous8 __x29__CV13s__anonymous8_1;
+struct __anonymous9 {
+    short __i__s_1;
+};
+static inline struct __anonymous9 ___operator_assign__F13s__anonymous9_P13s__anonymous913s__anonymous9_autogen___1(struct __anonymous9 *___dst__P13s__anonymous9_1, struct __anonymous9 ___src__13s__anonymous9_1){
+    ((void)((*___dst__P13s__anonymous9_1).__i__s_1=___src__13s__anonymous9_1.__i__s_1));
+    return ((struct __anonymous9 )___src__13s__anonymous9_1);
+}
+static inline void ___constructor__F_P13s__anonymous9_autogen___1(struct __anonymous9 *___dst__P13s__anonymous9_1){
+    ((void)((*((short *)(&(*___dst__P13s__anonymous9_1).__i__s_1)))) /* ?{} */);
+}
+static inline void ___constructor__F_P13s__anonymous913s__anonymous9_autogen___1(struct __anonymous9 *___dst__P13s__anonymous9_1, struct __anonymous9 ___src__13s__anonymous9_1){
+    ((void)((*((short *)(&(*___dst__P13s__anonymous9_1).__i__s_1)))=___src__13s__anonymous9_1.__i__s_1) /* ?{} */);
+}
+static inline void ___destructor__F_P13s__anonymous9_autogen___1(struct __anonymous9 *___dst__P13s__anonymous9_1){
+    ((void)((*((short *)(&(*___dst__P13s__anonymous9_1).__i__s_1)))) /* ^?{} */);
+}
+static inline void ___constructor__F_P13s__anonymous9s_autogen___1(struct __anonymous9 *___dst__P13s__anonymous9_1, short __i__s_1){
+    ((void)((*((short *)(&(*___dst__P13s__anonymous9_1).__i__s_1)))=__i__s_1) /* ?{} */);
+}
+volatile const struct __anonymous9 __x30__CV13s__anonymous9_1;
+struct __anonymous10 {
+    short __i__s_1;
+};
+static inline struct __anonymous10 ___operator_assign__F14s__anonymous10_P14s__anonymous1014s__anonymous10_autogen___1(struct __anonymous10 *___dst__P14s__anonymous10_1, struct __anonymous10 ___src__14s__anonymous10_1){
+    ((void)((*___dst__P14s__anonymous10_1).__i__s_1=___src__14s__anonymous10_1.__i__s_1));
+    return ((struct __anonymous10 )___src__14s__anonymous10_1);
+}
+static inline void ___constructor__F_P14s__anonymous10_autogen___1(struct __anonymous10 *___dst__P14s__anonymous10_1){
+    ((void)((*((short *)(&(*___dst__P14s__anonymous10_1).__i__s_1)))) /* ?{} */);
+}
+static inline void ___constructor__F_P14s__anonymous1014s__anonymous10_autogen___1(struct __anonymous10 *___dst__P14s__anonymous10_1, struct __anonymous10 ___src__14s__anonymous10_1){
+    ((void)((*((short *)(&(*___dst__P14s__anonymous10_1).__i__s_1)))=___src__14s__anonymous10_1.__i__s_1) /* ?{} */);
+}
+static inline void ___destructor__F_P14s__anonymous10_autogen___1(struct __anonymous10 *___dst__P14s__anonymous10_1){
+    ((void)((*((short *)(&(*___dst__P14s__anonymous10_1).__i__s_1)))) /* ^?{} */);
+}
+static inline void ___constructor__F_P14s__anonymous10s_autogen___1(struct __anonymous10 *___dst__P14s__anonymous10_1, short __i__s_1){
+    ((void)((*((short *)(&(*___dst__P14s__anonymous10_1).__i__s_1)))=__i__s_1) /* ?{} */);
+}
+volatile const struct __anonymous10 __x31__CV14s__anonymous10_1;
+struct __anonymous11 {
+    short __i__s_1;
+};
+static inline struct __anonymous11 ___operator_assign__F14s__anonymous11_P14s__anonymous1114s__anonymous11_autogen___1(struct __anonymous11 *___dst__P14s__anonymous11_1, struct __anonymous11 ___src__14s__anonymous11_1){
+    ((void)((*___dst__P14s__anonymous11_1).__i__s_1=___src__14s__anonymous11_1.__i__s_1));
+    return ((struct __anonymous11 )___src__14s__anonymous11_1);
+}
+static inline void ___constructor__F_P14s__anonymous11_autogen___1(struct __anonymous11 *___dst__P14s__anonymous11_1){
+    ((void)((*((short *)(&(*___dst__P14s__anonymous11_1).__i__s_1)))) /* ?{} */);
+}
+static inline void ___constructor__F_P14s__anonymous1114s__anonymous11_autogen___1(struct __anonymous11 *___dst__P14s__anonymous11_1, struct __anonymous11 ___src__14s__anonymous11_1){
+    ((void)((*((short *)(&(*___dst__P14s__anonymous11_1).__i__s_1)))=___src__14s__anonymous11_1.__i__s_1) /* ?{} */);
+}
+static inline void ___destructor__F_P14s__anonymous11_autogen___1(struct __anonymous11 *___dst__P14s__anonymous11_1){
+    ((void)((*((short *)(&(*___dst__P14s__anonymous11_1).__i__s_1)))) /* ^?{} */);
+}
+static inline void ___constructor__F_P14s__anonymous11s_autogen___1(struct __anonymous11 *___dst__P14s__anonymous11_1, short __i__s_1){
+    ((void)((*((short *)(&(*___dst__P14s__anonymous11_1).__i__s_1)))=__i__s_1) /* ?{} */);
+}
+static volatile const struct __anonymous11 __x32__CV14s__anonymous11_1;
+struct __anonymous12 {
+    short __i__s_1;
+};
+static inline struct __anonymous12 ___operator_assign__F14s__anonymous12_P14s__anonymous1214s__anonymous12_autogen___1(struct __anonymous12 *___dst__P14s__anonymous12_1, struct __anonymous12 ___src__14s__anonymous12_1){
+    ((void)((*___dst__P14s__anonymous12_1).__i__s_1=___src__14s__anonymous12_1.__i__s_1));
+    return ((struct __anonymous12 )___src__14s__anonymous12_1);
+}
+static inline void ___constructor__F_P14s__anonymous12_autogen___1(struct __anonymous12 *___dst__P14s__anonymous12_1){
+    ((void)((*((short *)(&(*___dst__P14s__anonymous12_1).__i__s_1)))) /* ?{} */);
+}
+static inline void ___constructor__F_P14s__anonymous1214s__anonymous12_autogen___1(struct __anonymous12 *___dst__P14s__anonymous12_1, struct __anonymous12 ___src__14s__anonymous12_1){
+    ((void)((*((short *)(&(*___dst__P14s__anonymous12_1).__i__s_1)))=___src__14s__anonymous12_1.__i__s_1) /* ?{} */);
+}
+static inline void ___destructor__F_P14s__anonymous12_autogen___1(struct __anonymous12 *___dst__P14s__anonymous12_1){
+    ((void)((*((short *)(&(*___dst__P14s__anonymous12_1).__i__s_1)))) /* ^?{} */);
+}
+static inline void ___constructor__F_P14s__anonymous12s_autogen___1(struct __anonymous12 *___dst__P14s__anonymous12_1, short __i__s_1){
+    ((void)((*((short *)(&(*___dst__P14s__anonymous12_1).__i__s_1)))=__i__s_1) /* ?{} */);
+}
+static volatile const struct __anonymous12 __x33__CV14s__anonymous12_1;
+struct __anonymous13 {
+    short __i__s_1;
+};
+static inline struct __anonymous13 ___operator_assign__F14s__anonymous13_P14s__anonymous1314s__anonymous13_autogen___1(struct __anonymous13 *___dst__P14s__anonymous13_1, struct __anonymous13 ___src__14s__anonymous13_1){
+    ((void)((*___dst__P14s__anonymous13_1).__i__s_1=___src__14s__anonymous13_1.__i__s_1));
+    return ((struct __anonymous13 )___src__14s__anonymous13_1);
+}
+static inline void ___constructor__F_P14s__anonymous13_autogen___1(struct __anonymous13 *___dst__P14s__anonymous13_1){
+    ((void)((*((short *)(&(*___dst__P14s__anonymous13_1).__i__s_1)))) /* ?{} */);
+}
+static inline void ___constructor__F_P14s__anonymous1314s__anonymous13_autogen___1(struct __anonymous13 *___dst__P14s__anonymous13_1, struct __anonymous13 ___src__14s__anonymous13_1){
+    ((void)((*((short *)(&(*___dst__P14s__anonymous13_1).__i__s_1)))=___src__14s__anonymous13_1.__i__s_1) /* ?{} */);
+}
+static inline void ___destructor__F_P14s__anonymous13_autogen___1(struct __anonymous13 *___dst__P14s__anonymous13_1){
+    ((void)((*((short *)(&(*___dst__P14s__anonymous13_1).__i__s_1)))) /* ^?{} */);
+}
+static inline void ___constructor__F_P14s__anonymous13s_autogen___1(struct __anonymous13 *___dst__P14s__anonymous13_1, short __i__s_1){
+    ((void)((*((short *)(&(*___dst__P14s__anonymous13_1).__i__s_1)))=__i__s_1) /* ?{} */);
+}
+static volatile const struct __anonymous13 __x34__CV14s__anonymous13_1;
+struct __anonymous14 {
+    short __i__s_1;
+};
+static inline struct __anonymous14 ___operator_assign__F14s__anonymous14_P14s__anonymous1414s__anonymous14_autogen___1(struct __anonymous14 *___dst__P14s__anonymous14_1, struct __anonymous14 ___src__14s__anonymous14_1){
+    ((void)((*___dst__P14s__anonymous14_1).__i__s_1=___src__14s__anonymous14_1.__i__s_1));
+    return ((struct __anonymous14 )___src__14s__anonymous14_1);
+}
+static inline void ___constructor__F_P14s__anonymous14_autogen___1(struct __anonymous14 *___dst__P14s__anonymous14_1){
+    ((void)((*((short *)(&(*___dst__P14s__anonymous14_1).__i__s_1)))) /* ?{} */);
+}
+static inline void ___constructor__F_P14s__anonymous1414s__anonymous14_autogen___1(struct __anonymous14 *___dst__P14s__anonymous14_1, struct __anonymous14 ___src__14s__anonymous14_1){
+    ((void)((*((short *)(&(*___dst__P14s__anonymous14_1).__i__s_1)))=___src__14s__anonymous14_1.__i__s_1) /* ?{} */);
+}
+static inline void ___destructor__F_P14s__anonymous14_autogen___1(struct __anonymous14 *___dst__P14s__anonymous14_1){
+    ((void)((*((short *)(&(*___dst__P14s__anonymous14_1).__i__s_1)))) /* ^?{} */);
+}
+static inline void ___constructor__F_P14s__anonymous14s_autogen___1(struct __anonymous14 *___dst__P14s__anonymous14_1, short __i__s_1){
+    ((void)((*((short *)(&(*___dst__P14s__anonymous14_1).__i__s_1)))=__i__s_1) /* ?{} */);
+}
+static volatile const struct __anonymous14 __x35__CV14s__anonymous14_1;
+struct __anonymous15 {
+    short __i__s_1;
+};
+static inline struct __anonymous15 ___operator_assign__F14s__anonymous15_P14s__anonymous1514s__anonymous15_autogen___1(struct __anonymous15 *___dst__P14s__anonymous15_1, struct __anonymous15 ___src__14s__anonymous15_1){
+    ((void)((*___dst__P14s__anonymous15_1).__i__s_1=___src__14s__anonymous15_1.__i__s_1));
+    return ((struct __anonymous15 )___src__14s__anonymous15_1);
+}
+static inline void ___constructor__F_P14s__anonymous15_autogen___1(struct __anonymous15 *___dst__P14s__anonymous15_1){
+    ((void)((*((short *)(&(*___dst__P14s__anonymous15_1).__i__s_1)))) /* ?{} */);
+}
+static inline void ___constructor__F_P14s__anonymous1514s__anonymous15_autogen___1(struct __anonymous15 *___dst__P14s__anonymous15_1, struct __anonymous15 ___src__14s__anonymous15_1){
+    ((void)((*((short *)(&(*___dst__P14s__anonymous15_1).__i__s_1)))=___src__14s__anonymous15_1.__i__s_1) /* ?{} */);
+}
+static inline void ___destructor__F_P14s__anonymous15_autogen___1(struct __anonymous15 *___dst__P14s__anonymous15_1){
+    ((void)((*((short *)(&(*___dst__P14s__anonymous15_1).__i__s_1)))) /* ^?{} */);
+}
+static inline void ___constructor__F_P14s__anonymous15s_autogen___1(struct __anonymous15 *___dst__P14s__anonymous15_1, short __i__s_1){
+    ((void)((*((short *)(&(*___dst__P14s__anonymous15_1).__i__s_1)))=__i__s_1) /* ?{} */);
+}
+static volatile const struct __anonymous15 __x36__CV14s__anonymous15_1;
+static inline volatile const int __f11__FCVi___1();
+static inline volatile const int __f12__FCVi___1();
+static inline volatile const int __f13__FCVi___1();
+static inline volatile const int __f14__FCVi___1();
+static inline volatile const int __f15__FCVi___1();
+static inline volatile const int __f16__FCVi___1();
+static inline volatile const int __f17__FCVi___1();
+static inline volatile const int __f18__FCVi___1();
+static inline volatile const short __f21__FCVs___1();
+static inline volatile const short __f22__FCVs___1();
+static inline volatile const short __f23__FCVs___1();
+static inline volatile const short __f24__FCVs___1();
+static inline volatile const short __f25__FCVs___1();
+static inline volatile const short __f26__FCVs___1();
+static inline volatile const short __f27__FCVs___1();
+static inline volatile const short __f28__FCVs___1();
+struct __anonymous16 {
+    int __i__i_1;
+};
+static inline struct __anonymous16 ___operator_assign__F14s__anonymous16_P14s__anonymous1614s__anonymous16_autogen___1(struct __anonymous16 *___dst__P14s__anonymous16_1, struct __anonymous16 ___src__14s__anonymous16_1){
+    ((void)((*___dst__P14s__anonymous16_1).__i__i_1=___src__14s__anonymous16_1.__i__i_1));
+    return ((struct __anonymous16 )___src__14s__anonymous16_1);
+}
+static inline void ___constructor__F_P14s__anonymous16_autogen___1(struct __anonymous16 *___dst__P14s__anonymous16_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous16_1).__i__i_1)))) /* ?{} */);
+}
+static inline void ___constructor__F_P14s__anonymous1614s__anonymous16_autogen___1(struct __anonymous16 *___dst__P14s__anonymous16_1, struct __anonymous16 ___src__14s__anonymous16_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous16_1).__i__i_1)))=___src__14s__anonymous16_1.__i__i_1) /* ?{} */);
+}
+static inline void ___destructor__F_P14s__anonymous16_autogen___1(struct __anonymous16 *___dst__P14s__anonymous16_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous16_1).__i__i_1)))) /* ^?{} */);
+}
+static inline void ___constructor__F_P14s__anonymous16i_autogen___1(struct __anonymous16 *___dst__P14s__anonymous16_1, int __i__i_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous16_1).__i__i_1)))=__i__i_1) /* ?{} */);
+}
+static inline volatile const struct __anonymous16 __f31__FCV14s__anonymous16___1();
+struct __anonymous17 {
+    int __i__i_1;
+};
+static inline struct __anonymous17 ___operator_assign__F14s__anonymous17_P14s__anonymous1714s__anonymous17_autogen___1(struct __anonymous17 *___dst__P14s__anonymous17_1, struct __anonymous17 ___src__14s__anonymous17_1){
+    ((void)((*___dst__P14s__anonymous17_1).__i__i_1=___src__14s__anonymous17_1.__i__i_1));
+    return ((struct __anonymous17 )___src__14s__anonymous17_1);
+}
+static inline void ___constructor__F_P14s__anonymous17_autogen___1(struct __anonymous17 *___dst__P14s__anonymous17_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous17_1).__i__i_1)))) /* ?{} */);
+}
+static inline void ___constructor__F_P14s__anonymous1714s__anonymous17_autogen___1(struct __anonymous17 *___dst__P14s__anonymous17_1, struct __anonymous17 ___src__14s__anonymous17_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous17_1).__i__i_1)))=___src__14s__anonymous17_1.__i__i_1) /* ?{} */);
+}
+static inline void ___destructor__F_P14s__anonymous17_autogen___1(struct __anonymous17 *___dst__P14s__anonymous17_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous17_1).__i__i_1)))) /* ^?{} */);
+}
+static inline void ___constructor__F_P14s__anonymous17i_autogen___1(struct __anonymous17 *___dst__P14s__anonymous17_1, int __i__i_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous17_1).__i__i_1)))=__i__i_1) /* ?{} */);
+}
+static inline volatile const struct __anonymous17 __f32__FCV14s__anonymous17___1();
+struct __anonymous18 {
+    int __i__i_1;
+};
+static inline struct __anonymous18 ___operator_assign__F14s__anonymous18_P14s__anonymous1814s__anonymous18_autogen___1(struct __anonymous18 *___dst__P14s__anonymous18_1, struct __anonymous18 ___src__14s__anonymous18_1){
+    ((void)((*___dst__P14s__anonymous18_1).__i__i_1=___src__14s__anonymous18_1.__i__i_1));
+    return ((struct __anonymous18 )___src__14s__anonymous18_1);
+}
+static inline void ___constructor__F_P14s__anonymous18_autogen___1(struct __anonymous18 *___dst__P14s__anonymous18_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous18_1).__i__i_1)))) /* ?{} */);
+}
+static inline void ___constructor__F_P14s__anonymous1814s__anonymous18_autogen___1(struct __anonymous18 *___dst__P14s__anonymous18_1, struct __anonymous18 ___src__14s__anonymous18_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous18_1).__i__i_1)))=___src__14s__anonymous18_1.__i__i_1) /* ?{} */);
+}
+static inline void ___destructor__F_P14s__anonymous18_autogen___1(struct __anonymous18 *___dst__P14s__anonymous18_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous18_1).__i__i_1)))) /* ^?{} */);
+}
+static inline void ___constructor__F_P14s__anonymous18i_autogen___1(struct __anonymous18 *___dst__P14s__anonymous18_1, int __i__i_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous18_1).__i__i_1)))=__i__i_1) /* ?{} */);
+}
+static inline volatile const struct __anonymous18 __f33__FCV14s__anonymous18___1();
+struct __anonymous19 {
+    int __i__i_1;
+};
+static inline struct __anonymous19 ___operator_assign__F14s__anonymous19_P14s__anonymous1914s__anonymous19_autogen___1(struct __anonymous19 *___dst__P14s__anonymous19_1, struct __anonymous19 ___src__14s__anonymous19_1){
+    ((void)((*___dst__P14s__anonymous19_1).__i__i_1=___src__14s__anonymous19_1.__i__i_1));
+    return ((struct __anonymous19 )___src__14s__anonymous19_1);
+}
+static inline void ___constructor__F_P14s__anonymous19_autogen___1(struct __anonymous19 *___dst__P14s__anonymous19_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous19_1).__i__i_1)))) /* ?{} */);
+}
+static inline void ___constructor__F_P14s__anonymous1914s__anonymous19_autogen___1(struct __anonymous19 *___dst__P14s__anonymous19_1, struct __anonymous19 ___src__14s__anonymous19_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous19_1).__i__i_1)))=___src__14s__anonymous19_1.__i__i_1) /* ?{} */);
+}
+static inline void ___destructor__F_P14s__anonymous19_autogen___1(struct __anonymous19 *___dst__P14s__anonymous19_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous19_1).__i__i_1)))) /* ^?{} */);
+}
+static inline void ___constructor__F_P14s__anonymous19i_autogen___1(struct __anonymous19 *___dst__P14s__anonymous19_1, int __i__i_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous19_1).__i__i_1)))=__i__i_1) /* ?{} */);
+}
+static inline volatile const struct __anonymous19 __f34__FCV14s__anonymous19___1();
+struct __anonymous20 {
+    int __i__i_1;
+};
+static inline struct __anonymous20 ___operator_assign__F14s__anonymous20_P14s__anonymous2014s__anonymous20_autogen___1(struct __anonymous20 *___dst__P14s__anonymous20_1, struct __anonymous20 ___src__14s__anonymous20_1){
+    ((void)((*___dst__P14s__anonymous20_1).__i__i_1=___src__14s__anonymous20_1.__i__i_1));
+    return ((struct __anonymous20 )___src__14s__anonymous20_1);
+}
+static inline void ___constructor__F_P14s__anonymous20_autogen___1(struct __anonymous20 *___dst__P14s__anonymous20_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous20_1).__i__i_1)))) /* ?{} */);
+}
+static inline void ___constructor__F_P14s__anonymous2014s__anonymous20_autogen___1(struct __anonymous20 *___dst__P14s__anonymous20_1, struct __anonymous20 ___src__14s__anonymous20_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous20_1).__i__i_1)))=___src__14s__anonymous20_1.__i__i_1) /* ?{} */);
+}
+static inline void ___destructor__F_P14s__anonymous20_autogen___1(struct __anonymous20 *___dst__P14s__anonymous20_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous20_1).__i__i_1)))) /* ^?{} */);
+}
+static inline void ___constructor__F_P14s__anonymous20i_autogen___1(struct __anonymous20 *___dst__P14s__anonymous20_1, int __i__i_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous20_1).__i__i_1)))=__i__i_1) /* ?{} */);
+}
+static inline volatile const struct __anonymous20 __f35__FCV14s__anonymous20___1();
+struct __anonymous21 {
+    int __i__i_1;
+};
+static inline struct __anonymous21 ___operator_assign__F14s__anonymous21_P14s__anonymous2114s__anonymous21_autogen___1(struct __anonymous21 *___dst__P14s__anonymous21_1, struct __anonymous21 ___src__14s__anonymous21_1){
+    ((void)((*___dst__P14s__anonymous21_1).__i__i_1=___src__14s__anonymous21_1.__i__i_1));
+    return ((struct __anonymous21 )___src__14s__anonymous21_1);
+}
+static inline void ___constructor__F_P14s__anonymous21_autogen___1(struct __anonymous21 *___dst__P14s__anonymous21_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous21_1).__i__i_1)))) /* ?{} */);
+}
+static inline void ___constructor__F_P14s__anonymous2114s__anonymous21_autogen___1(struct __anonymous21 *___dst__P14s__anonymous21_1, struct __anonymous21 ___src__14s__anonymous21_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous21_1).__i__i_1)))=___src__14s__anonymous21_1.__i__i_1) /* ?{} */);
+}
+static inline void ___destructor__F_P14s__anonymous21_autogen___1(struct __anonymous21 *___dst__P14s__anonymous21_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous21_1).__i__i_1)))) /* ^?{} */);
+}
+static inline void ___constructor__F_P14s__anonymous21i_autogen___1(struct __anonymous21 *___dst__P14s__anonymous21_1, int __i__i_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous21_1).__i__i_1)))=__i__i_1) /* ?{} */);
+}
+static inline volatile const struct __anonymous21 __f36__FCV14s__anonymous21___1();
+struct __anonymous22 {
+    int __i__i_1;
+};
+static inline struct __anonymous22 ___operator_assign__F14s__anonymous22_P14s__anonymous2214s__anonymous22_autogen___1(struct __anonymous22 *___dst__P14s__anonymous22_1, struct __anonymous22 ___src__14s__anonymous22_1){
+    ((void)((*___dst__P14s__anonymous22_1).__i__i_1=___src__14s__anonymous22_1.__i__i_1));
+    return ((struct __anonymous22 )___src__14s__anonymous22_1);
+}
+static inline void ___constructor__F_P14s__anonymous22_autogen___1(struct __anonymous22 *___dst__P14s__anonymous22_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous22_1).__i__i_1)))) /* ?{} */);
+}
+static inline void ___constructor__F_P14s__anonymous2214s__anonymous22_autogen___1(struct __anonymous22 *___dst__P14s__anonymous22_1, struct __anonymous22 ___src__14s__anonymous22_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous22_1).__i__i_1)))=___src__14s__anonymous22_1.__i__i_1) /* ?{} */);
+}
+static inline void ___destructor__F_P14s__anonymous22_autogen___1(struct __anonymous22 *___dst__P14s__anonymous22_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous22_1).__i__i_1)))) /* ^?{} */);
+}
+static inline void ___constructor__F_P14s__anonymous22i_autogen___1(struct __anonymous22 *___dst__P14s__anonymous22_1, int __i__i_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous22_1).__i__i_1)))=__i__i_1) /* ?{} */);
+}
+static inline volatile const struct __anonymous22 __f37__FCV14s__anonymous22___1();
+struct __anonymous23 {
+    int __i__i_1;
+};
+static inline struct __anonymous23 ___operator_assign__F14s__anonymous23_P14s__anonymous2314s__anonymous23_autogen___1(struct __anonymous23 *___dst__P14s__anonymous23_1, struct __anonymous23 ___src__14s__anonymous23_1){
+    ((void)((*___dst__P14s__anonymous23_1).__i__i_1=___src__14s__anonymous23_1.__i__i_1));
+    return ((struct __anonymous23 )___src__14s__anonymous23_1);
+}
+static inline void ___constructor__F_P14s__anonymous23_autogen___1(struct __anonymous23 *___dst__P14s__anonymous23_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous23_1).__i__i_1)))) /* ?{} */);
+}
+static inline void ___constructor__F_P14s__anonymous2314s__anonymous23_autogen___1(struct __anonymous23 *___dst__P14s__anonymous23_1, struct __anonymous23 ___src__14s__anonymous23_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous23_1).__i__i_1)))=___src__14s__anonymous23_1.__i__i_1) /* ?{} */);
+}
+static inline void ___destructor__F_P14s__anonymous23_autogen___1(struct __anonymous23 *___dst__P14s__anonymous23_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous23_1).__i__i_1)))) /* ^?{} */);
+}
+static inline void ___constructor__F_P14s__anonymous23i_autogen___1(struct __anonymous23 *___dst__P14s__anonymous23_1, int __i__i_1){
+    ((void)((*((int *)(&(*___dst__P14s__anonymous23_1).__i__i_1)))=__i__i_1) /* ?{} */);
+}
+static inline volatile const struct __anonymous23 __f38__FCV14s__anonymous23___1();
+static inline volatile const short __f41__FCVs___1();
+static inline volatile const short __f42__FCVs___1();
+static inline volatile const short __f43__FCVs___1();
+static inline volatile const short __f44__FCVs___1();
+static inline volatile const short __f45__FCVs___1();
+static inline volatile const short __f46__FCVs___1();
+static inline volatile const short __f47__FCVs___1();
+static inline volatile const short __f48__FCVs___1();
+int main(int __argc__i_1, const char **__argv__PPCc_1){
+    int _retVal0 = { 0 };
+    ((void)(_retVal0=0) /* ?{} */);
+    return ((int )_retVal0);
+}
+__attribute__ ((constructor(),)) static void _init_declarationSpecifier(void){
+    ((void)___constructor__F_P13s__anonymous0_autogen___1(((struct __anonymous0 *)(&__x10__CV13s__anonymous0_1))));
+    ((void)___constructor__F_P13s__anonymous1_autogen___1(((struct __anonymous1 *)(&__x11__CV13s__anonymous1_1))));
+    ((void)___constructor__F_P13s__anonymous2_autogen___1(((struct __anonymous2 *)(&__x12__CV13s__anonymous2_1))));
+    ((void)___constructor__F_P13s__anonymous3_autogen___1(((struct __anonymous3 *)(&__x13__CV13s__anonymous3_1))));
+    ((void)___constructor__F_P13s__anonymous4_autogen___1(((struct __anonymous4 *)(&__x14__CV13s__anonymous4_1))));
+    ((void)___constructor__F_P13s__anonymous5_autogen___1(((struct __anonymous5 *)(&__x15__CV13s__anonymous5_1))));
+    ((void)___constructor__F_P13s__anonymous6_autogen___1(((struct __anonymous6 *)(&__x16__CV13s__anonymous6_1))));
+    ((void)___constructor__F_P13s__anonymous7_autogen___1(((struct __anonymous7 *)(&__x17__CV13s__anonymous7_1))));
+    ((void)___constructor__F_P13s__anonymous8_autogen___1(((struct __anonymous8 *)(&__x29__CV13s__anonymous8_1))));
+    ((void)___constructor__F_P13s__anonymous9_autogen___1(((struct __anonymous9 *)(&__x30__CV13s__anonymous9_1))));
+    ((void)___constructor__F_P14s__anonymous10_autogen___1(((struct __anonymous10 *)(&__x31__CV14s__anonymous10_1))));
+    ((void)___constructor__F_P14s__anonymous11_autogen___1(((struct __anonymous11 *)(&__x32__CV14s__anonymous11_1))));
+    ((void)___constructor__F_P14s__anonymous12_autogen___1(((struct __anonymous12 *)(&__x33__CV14s__anonymous12_1))));
+    ((void)___constructor__F_P14s__anonymous13_autogen___1(((struct __anonymous13 *)(&__x34__CV14s__anonymous13_1))));
+    ((void)___constructor__F_P14s__anonymous14_autogen___1(((struct __anonymous14 *)(&__x35__CV14s__anonymous14_1))));
+    ((void)___constructor__F_P14s__anonymous15_autogen___1(((struct __anonymous15 *)(&__x36__CV14s__anonymous15_1))));
+}
+__attribute__ ((destructor(),)) static void _destroy_declarationSpecifier(void){
+    ((void)___destructor__F_P14s__anonymous15_autogen___1(((struct __anonymous15 *)(&__x36__CV14s__anonymous15_1))));
+    ((void)___destructor__F_P14s__anonymous14_autogen___1(((struct __anonymous14 *)(&__x35__CV14s__anonymous14_1))));
+    ((void)___destructor__F_P14s__anonymous13_autogen___1(((struct __anonymous13 *)(&__x34__CV14s__anonymous13_1))));
+    ((void)___destructor__F_P14s__anonymous12_autogen___1(((struct __anonymous12 *)(&__x33__CV14s__anonymous12_1))));
+    ((void)___destructor__F_P14s__anonymous11_autogen___1(((struct __anonymous11 *)(&__x32__CV14s__anonymous11_1))));
+    ((void)___destructor__F_P14s__anonymous10_autogen___1(((struct __anonymous10 *)(&__x31__CV14s__anonymous10_1))));
+    ((void)___destructor__F_P13s__anonymous9_autogen___1(((struct __anonymous9 *)(&__x30__CV13s__anonymous9_1))));
+    ((void)___destructor__F_P13s__anonymous8_autogen___1(((struct __anonymous8 *)(&__x29__CV13s__anonymous8_1))));
+    ((void)___destructor__F_P13s__anonymous7_autogen___1(((struct __anonymous7 *)(&__x17__CV13s__anonymous7_1))));
+    ((void)___destructor__F_P13s__anonymous6_autogen___1(((struct __anonymous6 *)(&__x16__CV13s__anonymous6_1))));
+    ((void)___destructor__F_P13s__anonymous5_autogen___1(((struct __anonymous5 *)(&__x15__CV13s__anonymous5_1))));
+    ((void)___destructor__F_P13s__anonymous4_autogen___1(((struct __anonymous4 *)(&__x14__CV13s__anonymous4_1))));
+    ((void)___destructor__F_P13s__anonymous3_autogen___1(((struct __anonymous3 *)(&__x13__CV13s__anonymous3_1))));
+    ((void)___destructor__F_P13s__anonymous2_autogen___1(((struct __anonymous2 *)(&__x12__CV13s__anonymous2_1))));
+    ((void)___destructor__F_P13s__anonymous1_autogen___1(((struct __anonymous1 *)(&__x11__CV13s__anonymous1_1))));
+    ((void)___destructor__F_P13s__anonymous0_autogen___1(((struct __anonymous0 *)(&__x10__CV13s__anonymous0_1))));
+}
Index: src/tests/.expect/64/gccExtensions.txt
===================================================================
--- src/tests/.expect/64/gccExtensions.txt	(revision 7b1bfc597c11725f68bb6b8790ca6a3501cd1bf7)
+++ src/tests/.expect/64/gccExtensions.txt	(revision 4a7d895054466f290f1d971a3482f0e4ff8a3c74)
@@ -11,4 +11,5 @@
     asm ( "nop" :  :  :  );
     static int __y__i_2;
+    static int *__z__Pi_2;
     int __src__i_2;
     int __dst__i_2;
@@ -23,4 +24,14 @@
     const int __i2__Ci_2;
     const int __i3__Ci_2;
+    inline int __f1__Fi___2(){
+    }
+    inline int __f2__Fi___2(){
+    }
+    int __s1__i_2;
+    int __s2__i_2;
+    volatile int __v1__Vi_2;
+    volatile int __v2__Vi_2;
+    int __t1___2;
+    int __t2___2;
     __extension__ const int __ex__Ci_2;
     struct S {
@@ -73,14 +84,4 @@
     ((void)(__extension__ __a__i_2=(__extension__ __b__i_2+__extension__ __c__i_2)));
     ((void)(__extension__ __a__i_2=__extension__ (__extension__ __b__i_2+__extension__ __c__i_2)));
-    inline int __f1__Fi___2(){
-    }
-    inline int __f2__Fi___2(){
-    }
-    int __s1__i_2;
-    int __s2__i_2;
-    int __t1___2;
-    int __t2___2;
-    volatile int __v1__Vi_2;
-    volatile int __v2__Vi_2;
     int __a1__i_2;
     const int __a2__Ci_2;
Index: src/tests/.expect/declarationErrors.txt
===================================================================
--- src/tests/.expect/declarationErrors.txt	(revision 7b1bfc597c11725f68bb6b8790ca6a3501cd1bf7)
+++ src/tests/.expect/declarationErrors.txt	(revision 4a7d895054466f290f1d971a3482f0e4ff8a3c74)
@@ -1,18 +1,16 @@
 CFA Version 1.0.0 (debug)
-Error: invalid combination of storage classes in declaration of x9: static static volatile const short int 
+Error: invalid combination of storage classes in declaration of x9: static volatile const short int 
 
-Error: invalid combination of storage classes in declaration of x18: static static const volatile instance of struct __anonymous0
+Error: invalid combination of storage classes in declaration of x18: static const volatile instance of struct __anonymous0
   with members 
-    i: int 
    with body 
 
 
-Error: invalid combination of storage classes in declaration of x19: static static const volatile volatile instance of struct __anonymous1
+Error: invalid combination of storage classes in declaration of x19: static const volatile volatile instance of struct __anonymous1
   with members 
-    i: int 
    with body 
 
 
-Error: invalid combination of storage classes in declaration of x28: static static volatile const instance of type Int
+Error: invalid combination of storage classes in declaration of x28: static volatile const instance of type Int
 
 make: *** [declarationErrors] Error 1
Index: c/tests/.expect/declarationSpecifier.txt
===================================================================
--- src/tests/.expect/declarationSpecifier.txt	(revision 7b1bfc597c11725f68bb6b8790ca6a3501cd1bf7)
+++ 	(revision )
@@ -1,18 +1,0 @@
-CFA Version 1.0.0 (debug)
-Error: invalid combination of storage classes in declaration of x9: static static volatile const short int 
-
-Error: invalid combination of storage classes in declaration of x18: static static const volatile instance of struct __anonymous8
-  with members 
-    i: int 
-   with body 
-
-
-Error: invalid combination of storage classes in declaration of x19: static static const volatile volatile instance of struct __anonymous9
-  with members 
-    i: int 
-   with body 
-
-
-Error: invalid combination of storage classes in declaration of x28: static static volatile const instance of type Int
-
-make: *** [declarationSpecifier] Error 1
Index: src/tests/Makefile.am
===================================================================
--- src/tests/Makefile.am	(revision 7b1bfc597c11725f68bb6b8790ca6a3501cd1bf7)
+++ src/tests/Makefile.am	(revision 4a7d895054466f290f1d971a3482f0e4ff8a3c74)
@@ -53,4 +53,7 @@
 	${CC} ${CFLAGS} -DERR2 ${<} -o ${@}
 
+declarationSpecifier: declarationSpecifier.c
+	${CC} ${CFALGS} -CFA -XCFA -p ${<} -o ${@}
+
 gccExtensions : gccExtensions.c
 	${CC} ${CFLAGS} -CFA -XCFA -p ${<} -o ${@}
Index: src/tests/Makefile.in
===================================================================
--- src/tests/Makefile.in	(revision 7b1bfc597c11725f68bb6b8790ca6a3501cd1bf7)
+++ src/tests/Makefile.in	(revision 4a7d895054466f290f1d971a3482f0e4ff8a3c74)
@@ -661,4 +661,7 @@
 	${CC} ${CFLAGS} -DERR2 ${<} -o ${@}
 
+declarationSpecifier: declarationSpecifier.c
+	${CC} ${CFALGS} -CFA -XCFA -p ${<} -o ${@}
+
 gccExtensions : gccExtensions.c
 	${CC} ${CFLAGS} -CFA -XCFA -p ${<} -o ${@}
Index: src/tests/declarationErrors.c
===================================================================
--- src/tests/declarationErrors.c	(revision 7b1bfc597c11725f68bb6b8790ca6a3501cd1bf7)
+++ src/tests/declarationErrors.c	(revision 4a7d895054466f290f1d971a3482f0e4ff8a3c74)
@@ -1,7 +1,33 @@
-static short int volatile static const x9;		// duplicate static
-struct { int i; } const static volatile static x18;	// duplicate static
+// 
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+// 
+// declarationErrors.c -- 
+// 
+// Author           : Peter A. Buhr
+// Created On       : Wed Aug 17 08:23:43 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Wed Aug 17 08:27:15 2016
+// Update Count     : 2
+// 
+
+const short static int volatile x4;
+const static volatile short int x4;
+static short int volatile static const x9;				// duplicate static
+struct { int i; } const static volatile static x18;		// duplicate static
 struct { int i; } const static volatile static volatile x19; // duplicate static & volatile
 typedef int Int;
-static Int volatile static const x28;			// duplicate static
+static Int volatile static const x28;					// duplicate static
+
+const static inline const volatile int f01();			// duplicate const
+volatile inline const volatile static int f02();		// duplicate volatile
+const inline const volatile int static f03();			// duplicate const
+volatile inline static const volatile int f04();		// duplicate volatile
+const static const inline volatile int f05();			// duplicate const
+volatile static const volatile inline int f06();		// duplicate volatile
+const static const volatile int inline f07();			// duplicate const
+volatile static const int inline volatile f08();		// duplicate volatile
 
 //Dummy main
@@ -10,2 +36,7 @@
 	return 0;
 }
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa declarationErrors.c" //
+// End: //
Index: src/tests/declarationSpecifier.c
===================================================================
--- src/tests/declarationSpecifier.c	(revision 7b1bfc597c11725f68bb6b8790ca6a3501cd1bf7)
+++ src/tests/declarationSpecifier.c	(revision 4a7d895054466f290f1d971a3482f0e4ff8a3c74)
@@ -1,9 +1,22 @@
+// 
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+// 
+// declarationSpecifier.c -- 
+// 
+// Author           : Peter A. Buhr
+// Created On       : Wed Aug 17 08:21:04 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Wed Aug 17 08:24:33 2016
+// Update Count     : 2
+// 
+
 typedef short int Int;
-
 
 const short int volatile x1;
 static const short int volatile x2;
 const static short int volatile x3;
-const short static int volatile x4;
 const static volatile short int x4;
 const short int static volatile x5;
@@ -11,5 +24,4 @@
 const short volatile int static x7;
 short int volatile static const x8;
-static short int volatile static const x9;		// duplicate static
 
 const volatile struct { int i; } x10;
@@ -21,6 +33,4 @@
 struct { int i; } const static volatile x16;
 struct { int i; } const volatile static x17;
-struct { int i; } const static volatile static x18;	// duplicate static
-struct { int i; } const static volatile static volatile x19; // duplicate static & volatile
 
 const Int volatile x20;
@@ -32,5 +42,4 @@
 const volatile Int static x26;
 Int volatile static const x27;
-static Int volatile static const x28;			// duplicate static
 
 const volatile struct { Int i; } x29;
@@ -42,14 +51,4 @@
 struct { Int i; } const static volatile x35;
 struct { Int i; } const volatile static x36;
-
-
-const static inline const volatile int f01();		// duplicate const
-volatile inline const volatile static int f02();	// duplicate volatile
-const inline const volatile int static f03();		// duplicate const
-volatile inline static const volatile int f04();	// duplicate volatile
-const static const inline volatile int f05();		// duplicate const
-volatile static const volatile inline int f06();	// duplicate volatile
-const static const volatile int inline f07();		// duplicate const
-volatile static const int inline volatile f08();	// duplicate volatile
 
 static inline const volatile int f11();
@@ -94,2 +93,7 @@
 	return 0;
 }
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa declarationSpecifier.c" //
+// End: //
Index: src/tests/dtor-early-exit.c
===================================================================
--- src/tests/dtor-early-exit.c	(revision 7b1bfc597c11725f68bb6b8790ca6a3501cd1bf7)
+++ src/tests/dtor-early-exit.c	(revision 4a7d895054466f290f1d971a3482f0e4ff8a3c74)
@@ -1,2 +1,17 @@
+// 
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+// 
+// dtor-early-exit.c -- 
+// 
+// Author           : Rob Schluntz
+// Created On       : Wed Aug 17 08:26:25 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Wed Aug 17 08:29:37 2016
+// Update Count     : 2
+// 
+
 #include <fstream>
 #include <stdlib>
@@ -215,2 +230,7 @@
 	h();
 }
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa dtor-early-exit" //
+// End: //
Index: src/tests/functions.c
===================================================================
--- src/tests/functions.c	(revision 7b1bfc597c11725f68bb6b8790ca6a3501cd1bf7)
+++ src/tests/functions.c	(revision 4a7d895054466f290f1d971a3482f0e4ff8a3c74)
@@ -1,2 +1,17 @@
+// 
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+// 
+// functions.c -- 
+// 
+// Author           : Peter A. Buhr
+// Created On       : Wed Aug 17 08:39:58 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Wed Aug 17 08:40:52 2016
+// Update Count     : 1
+// 
+
 // ANSI function definitions
 
@@ -165,3 +180,4 @@
 // Local Variables: //
 // tab-width: 4 //
+// compile-command: "cfa functions.c" //
 // End: //
Index: src/tests/gccExtensions.c
===================================================================
--- src/tests/gccExtensions.c	(revision 7b1bfc597c11725f68bb6b8790ca6a3501cd1bf7)
+++ src/tests/gccExtensions.c	(revision 4a7d895054466f290f1d971a3482f0e4ff8a3c74)
@@ -1,4 +1,4 @@
 // 
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
 //
 // The contents of this file are covered under the licence agreement in the
@@ -10,6 +10,6 @@
 // Created On       : Sun Aug 14 17:28:17 2016
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon Aug 15 12:44:35 2016
-// Update Count     : 5
+// Last Modified On : Wed Aug 17 09:26:50 2016
+// Update Count     : 10
 // 
 
@@ -17,4 +17,6 @@
 
 int main(int argc, char const *argv[]) {
+	// asm extensions
+
 	asm( "nop" );
 	__asm( "nop" );
@@ -22,5 +24,7 @@
 
 	static int y asm( "yy" );
-//	static * int z asm( "zz" );							// CFA declaration
+#ifdef __CFA__
+	static * int z asm( "zz" );							// CFA declaration
+#endif // __CFA__
 
 	int src;
@@ -52,4 +56,6 @@
 			   : L1, L2 );
 
+	// alternative type/qualifer names
+
 	__complex__ c1;
 	_Complex c2;
@@ -58,4 +64,20 @@
 	__const int i2;
 	__const__ int i3;
+
+	__inline int f1() {}
+	__inline__ int f2() {}
+
+	__signed s1;
+	__signed s2;
+
+	__volatile int v1;
+	__volatile__ int v2;
+
+	// symbol table attributes
+
+	__typeof(s1) t1;
+	__typeof__(s1) t2;
+
+	// strange extension qualifier
 
 	__extension__ const int ex;
@@ -69,15 +91,5 @@
 	__extension__ a = __extension__ ( __extension__ b + __extension__ c );
 
-	__inline int f1() {}
-	__inline__ int f2() {}
-
-	__signed s1;
-	__signed s2;
-
-	__typeof(s1) t1;
-	__typeof__(s1) t2;
-
-	__volatile int v1;
-	__volatile__ int v2;
+	// attributes
 
 	__attribute__(()) int a1;
Index: src/tests/identFuncDeclarator.c
===================================================================
--- src/tests/identFuncDeclarator.c	(revision 7b1bfc597c11725f68bb6b8790ca6a3501cd1bf7)
+++ src/tests/identFuncDeclarator.c	(revision 4a7d895054466f290f1d971a3482f0e4ff8a3c74)
@@ -1,2 +1,17 @@
+// 
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+// 
+// identFuncDeclarator.c -- 
+// 
+// Author           : Peter A. Buhr
+// Created On       : Wed Aug 17 08:36:34 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Wed Aug 17 08:37:06 2016
+// Update Count     : 1
+// 
+
 int main() {
 	int f1;
@@ -97,2 +112,7 @@
 	int (* const(* const f81)(int))();
 }
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa identFuncDeclarator.c" //
+// End: //
Index: src/tests/identParamDeclarator.c
===================================================================
--- src/tests/identParamDeclarator.c	(revision 7b1bfc597c11725f68bb6b8790ca6a3501cd1bf7)
+++ src/tests/identParamDeclarator.c	(revision 4a7d895054466f290f1d971a3482f0e4ff8a3c74)
@@ -1,2 +1,17 @@
+// 
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+// 
+// identParamDeclarator.c -- 
+// 
+// Author           : Peter A. Buhr
+// Created On       : Wed Aug 17 08:37:56 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Wed Aug 17 08:38:42 2016
+// Update Count     : 1
+// 
+
 int fred(
 	int f1,
@@ -147,2 +162,7 @@
 	return 0;
 }
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa identParamDeclarator.c" //
+// End: //
Index: src/tests/variableDeclarator.c
===================================================================
--- src/tests/variableDeclarator.c	(revision 7b1bfc597c11725f68bb6b8790ca6a3501cd1bf7)
+++ src/tests/variableDeclarator.c	(revision 4a7d895054466f290f1d971a3482f0e4ff8a3c74)
@@ -1,3 +1,18 @@
-//Variable declarations test
+// 
+// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+// 
+// variableDeclarator.c -- 
+// 
+// Author           : Peter A. Buhr
+// Created On       : Wed Aug 17 08:41:42 2016
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Wed Aug 17 08:42:21 2016
+// Update Count     : 1
+// 
+
+// Variable declarations test
 int f1;
 int (f2);
@@ -164,2 +179,7 @@
 	return 0;
 }
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa variableDeclarator.c" //
+// End: //
