Changeset d60ccbf


Ignore:
Timestamp:
Aug 12, 2015, 2:27:31 PM (10 years ago)
Author:
Rob Schluntz <rschlunt@…>
Branches:
ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, ctor, deferred_resn, demangler, enum, forall-pointer-decay, gc_noraii, jacob/cs343-translation, jenkins-sandbox, master, memory, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, string, with_gc
Children:
f32c7f4
Parents:
e45215c (diff), e869d663 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge branch 'master' into designate

Conflicts:

src/CodeGen/CodeGenerator.h

Files:
4 added
62 edited

Legend:

Unmodified
Added
Removed
  • src/CodeGen/CodeGenerator.cc

    re45215c rd60ccbf  
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Wed Jul 15 14:47:42 2015
    13 // Update Count     : 177
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Mon Jul 27 14:40:06 2015
     13// Update Count     : 218
    1414//
    1515
     
    5252        }
    5353
    54         CodeGenerator::CodeGenerator( std::ostream &os ) : indent(*this), cur_indent( 0 ), insideFunction( false ), output( os ) { }
     54        CodeGenerator::CodeGenerator( std::ostream &os ) : indent( *this), cur_indent( 0 ), insideFunction( false ), output( os ) { }
    5555
    5656        CodeGenerator::CodeGenerator( std::ostream &os, std::string init, int indentation, bool infunp )
    57                         : indent(*this), cur_indent( indentation ), insideFunction( infunp ), output( os ) {
     57                        : indent( *this), cur_indent( indentation ), insideFunction( infunp ), output( os ) {
    5858                //output << std::string( init );
    5959        }
    6060
    6161        CodeGenerator::CodeGenerator( std::ostream &os, char *init, int indentation, bool infunp )
    62                         : indent(*this), cur_indent( indentation ), insideFunction( infunp ), output( os ) {
     62                        : indent( *this ), cur_indent( indentation ), insideFunction( infunp ), output( os ) {
    6363                //output << std::string( init );
    6464        }
     
    9191                // acceptAll( functionDecl->get_oldDecls(), *this );
    9292                if ( functionDecl->get_statements() ) {
    93                         functionDecl->get_statements()->accept(*this );
     93                        functionDecl->get_statements()->accept( *this );
    9494                } // if
    9595        }
     
    121121                        for ( std::list< Declaration* >::iterator i = memb.begin(); i != memb.end();  i++) {
    122122                                output << indent;
    123                                 (*i)->accept(*this );
     123                                (*i)->accept( *this );
    124124                                output << ";" << endl;
    125125                        }
     
    159159                                if ( obj->get_init() ) {
    160160                                        output << " = ";
    161                                         obj->get_init()->accept(*this );
     161                                        obj->get_init()->accept( *this );
    162162                                } // if
    163163                                output << "," << endl;
     
    478478        void CodeGenerator::visit( TypeExpr *typeExpr ) {}
    479479
     480        void CodeGenerator::visit( AsmExpr *asmExpr ) {
     481                if ( asmExpr->get_inout() ) {
     482                        output << "[ ";
     483                        asmExpr->get_inout()->accept( *this );
     484                        output << " ] ";
     485                } // if
     486                asmExpr->get_constraint()->accept( *this );
     487                output << " ( ";
     488                asmExpr->get_operand()->accept( *this );
     489                output << " )";
     490        }
     491
    480492        //*** Statements
    481493        void CodeGenerator::visit( CompoundStmt *compoundStmt ) {
     
    485497                cur_indent += CodeGenerator::tabsize;
    486498
    487                 for ( std::list<Statement *>::iterator i = ks.begin(); i != ks.end();  i++) {
     499                for ( std::list<Statement *>::iterator i = ks.begin(); i != ks.end();  i++ ) {
    488500                        output << indent << printLabels( (*i)->get_labels() );
    489                         (*i)->accept(*this );
     501                        (*i)->accept( *this );
    490502
    491503                        output << endl;
     
    511523        }
    512524
     525        void CodeGenerator::visit( AsmStmt *asmStmt ) {
     526                output << "asm ";
     527                if ( asmStmt->get_voltile() ) output << "volatile ";
     528                if ( ! asmStmt->get_gotolabels().empty()  ) output << "goto ";
     529                output << "( ";
     530                if ( asmStmt->get_instruction() ) asmStmt->get_instruction()->accept( *this );
     531                output << " : ";
     532                genCommaList( asmStmt->get_output().begin(), asmStmt->get_output().end() );
     533                output << " : ";
     534                genCommaList( asmStmt->get_input().begin(), asmStmt->get_input().end() );
     535                output << " : ";
     536                genCommaList( asmStmt->get_clobber().begin(), asmStmt->get_clobber().end() );
     537                if ( ! asmStmt->get_gotolabels().empty() ) {
     538                        output << " : ";
     539                        for ( std::list<Label>::iterator begin = asmStmt->get_gotolabels().begin();; ) {
     540                                output << *begin++;
     541                                if ( begin == asmStmt->get_gotolabels().end() ) break;
     542                                output << ", ";
     543                        } // for
     544                } // if
     545                output << " );" ;
     546        }
     547
    513548        void CodeGenerator::visit( IfStmt *ifStmt ) {
    514                 output << "if (";
    515                 ifStmt->get_condition()->accept(*this );
    516                 output << ") ";
    517 
    518                 ifStmt->get_thenPart()->accept(*this );
     549                output << "if ( ";
     550                ifStmt->get_condition()->accept( *this );
     551                output << " ) ";
     552
     553                ifStmt->get_thenPart()->accept( *this );
    519554
    520555                if ( ifStmt->get_elsePart() != 0) {
    521556                        output << " else ";
    522                         ifStmt->get_elsePart()->accept(*this );
     557                        ifStmt->get_elsePart()->accept( *this );
    523558                } // if
    524559        }
    525560
    526561        void CodeGenerator::visit( SwitchStmt *switchStmt ) {
    527                 output << "switch (" ;
    528                 switchStmt->get_condition()->accept(*this );
    529                 output << ") ";
     562                output << "switch ( " ;
     563                switchStmt->get_condition()->accept( *this );
     564                output << " ) ";
    530565               
    531566                output << "{" << std::endl;
     
    545580                } else {
    546581                        output << "case ";
    547                         caseStmt->get_condition()->accept(*this );
     582                        caseStmt->get_condition()->accept( *this );
    548583                } // if
    549584                output << ":\n";
     
    554589                for ( std::list<Statement *>::iterator i = sts.begin(); i != sts.end();  i++) {
    555590                        output << indent << printLabels( (*i)->get_labels() )  ;
    556                         (*i)->accept(*this );
     591                        (*i)->accept( *this );
    557592                        output << endl;
    558593                }
     
    598633                else {
    599634                        output << "while (" ;
    600                         whileStmt->get_condition()->accept(*this );
     635                        whileStmt->get_condition()->accept( *this );
    601636                        output << ")";
    602637                } // if
     
    610645                if ( whileStmt->get_isDoWhile() ) {
    611646                        output << " while (" ;
    612                         whileStmt->get_condition()->accept(*this );
     647                        whileStmt->get_condition()->accept( *this );
    613648                        output << ");";
    614649                } // if
  • src/CodeGen/CodeGenerator.h

    re45215c rd60ccbf  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Rob Schluntz
    12 // Last Modified On : Wed Jun 17 11:10:58 2015
    13 // Update Count     : 25
     12// Last Modified On : Wed Aug 12 14:27:14 2015
     13// Update Count     : 27
    1414//
    1515
     
    6565                virtual void visit( TupleExpr *tupleExpr );
    6666                virtual void visit( TypeExpr *typeExpr );
     67                virtual void visit( AsmExpr * );
    6768
    6869                //*** Statements
    6970                virtual void visit( CompoundStmt * );
    7071                virtual void visit( ExprStmt * );
     72                virtual void visit( AsmStmt * );
    7173                virtual void visit( IfStmt * );
    7274                virtual void visit( SwitchStmt * );
  • src/CodeGen/FixNames.h

    re45215c rd60ccbf  
    2020
    2121namespace CodeGen {
     22        /// mangles object and function names
    2223        void fixNames( std::list< Declaration* > translationUnit );
    2324} // namespace CodeGen
  • src/CodeGen/GenType.cc

    re45215c rd60ccbf  
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Wed Jul 08 16:08:24 2015
    13 // Update Count     : 10
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Thu Jul  9 16:43:52 2015
     13// Update Count     : 13
    1414//
    1515
     
    9393                        os << "_Atomic ";
    9494                } // if
     95                if ( qualifiers.isAttribute ) {
     96                        os << "__attribute(( )) ";
     97                } // if
    9598                if ( dimension != 0 ) {
    9699                        CodeGenerator cg( os );
    97100                        dimension->accept( cg );
    98101                } else if ( isVarLen ) {
    99                         // no dimension expression on a VLA
    100                         // means it came in with the * token
     102                        // no dimension expression on a VLA means it came in with the * token
    101103                        os << "*";
    102104                } // if
     
    202204                        typeString = "_Atomic " + typeString;
    203205                } // if
     206                if ( type->get_isAttribute() ) {
     207                        typeString = "__attribute(( )) " + typeString;
     208                } // if
    204209        }
    205210} // namespace CodeGen
  • src/CodeGen/Generate.h

    re45215c rd60ccbf  
    2323
    2424namespace CodeGen {
     25        /// Generates code
    2526        void generate( std::list< Declaration* > translationUnit, std::ostream &os, bool doIntrinsics );
    2627} // namespace CodeGen
  • src/ControlStruct/CaseRangeMutator.h

    re45215c rd60ccbf  
    2222
    2323namespace ControlStruct {
     24        /// expand case ranges and turn fallthru into a null statement
    2425        class CaseRangeMutator : public Mutator {
    2526          public:
  • src/ControlStruct/ChooseMutator.h

    re45215c rd60ccbf  
    2222
    2323namespace ControlStruct {
     24        /// transform choose statements into switch statements
    2425        class ChooseMutator : public Mutator {
    2526          public:
  • src/ControlStruct/LabelFixer.cc

    re45215c rd60ccbf  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Rob Schluntz
    12 // Last Modified On : Wed Jul 08 12:36:46 2015
    13 // Update Count     : 145
     12// Last Modified On : Tue Jul 28 13:32:43 2015
     13// Update Count     : 156
    1414//
    1515
     
    2727
    2828namespace ControlStruct {
    29         LabelFixer::Entry::Entry( Statement *to, Statement *from ) : definition ( to ) {
    30                 if ( from != 0 ) {
    31                         UsageLoc loc; loc.stmt = from;
    32                         usage.push_back( loc );
    33                 }
    34         }
    35 
    36         LabelFixer::Entry::Entry( Statement *to, Expression *from ) : definition ( to ) {
    37                 if ( from != 0 ) {
    38                         UsageLoc loc; loc.expr = from;
    39                         usage.push_back( loc );
    40                 }
    41         }
    42 
    43 
    4429        bool LabelFixer::Entry::insideLoop() {
    4530                return ( dynamic_cast< ForStmt * > ( definition ) ||
    4631                        dynamic_cast< WhileStmt * > ( definition )  );
    47         }
    48 
    49         void LabelFixer::Entry::UsageLoc::accept( Visitor & visitor ) {
    50                 if ( dynamic_cast< Statement * >( stmt ) ) {
    51                         stmt->accept( visitor );
    52                 } else {
    53                         expr->accept( visitor );
    54                 }
    5532        }
    5633
     
    7754        // prune to at most one label definition for each statement
    7855        void LabelFixer::visit( Statement *stmt ) {
    79                 currentStatement = stmt;
    8056                std::list< Label > &labels = stmt->get_labels();
    8157
     
    8359                        // only remember one label for each statement
    8460                        Label current = setLabelsDef( labels, stmt );
    85                         labels.clear();
    86                         labels.push_front( current );
    8761                } // if
    8862        }
     
    130104                        }       else {
    131105                                // used previously, but undefined until now -> link with this entry
    132                                 Entry * oldEntry = labelTable[ *i ];
    133                                 e->add_uses( *oldEntry );
     106                                delete labelTable[ *i ];
    134107                                labelTable[ *i ] = e;
    135108                        } // if
     
    141114        }
    142115
    143         // Remember all uses of a label.
     116        // A label was used, add it ot the table if it isn't already there
    144117        template< typename UsageNode >
    145118        void LabelFixer::setLabelsUsg( Label orgValue, UsageNode *use ) {
    146119                assert( use != 0 );
    147120
    148                 if ( labelTable.find( orgValue ) != labelTable.end() ) {
    149                         // the label has been defined or used before
    150                         labelTable[ orgValue ]->add_use( use );
    151                 } else {
    152                         labelTable[ orgValue ] = new Entry( 0, use );
     121                // add label with an unknown origin
     122                if ( labelTable.find( orgValue ) == labelTable.end() ) {
     123                        labelTable[ orgValue ] = new Entry( 0 );
    153124                }
    154125        }
    155126
    156         class LabelGetter : public Visitor {
    157                 public:
    158                 LabelGetter( Label &label ) : label( label ) {}
    159 
    160                 virtual void visit( BranchStmt * branchStmt ) {
    161                         label = branchStmt->get_target();
    162                 }
    163 
    164                 virtual void visit( UntypedExpr * untyped ) {
    165                         NameExpr * name = dynamic_cast< NameExpr * >( untyped->get_function() );
    166                         assert( name );
    167                         assert( name->get_name() == "&&" );
    168                         NameExpr * arg = dynamic_cast< NameExpr * >( untyped->get_args().front() );
    169                         assert( arg );
    170                         label = arg->get_name();
    171                 }               
    172 
    173                 private:
    174                         Label &label;
    175         };
    176 
    177         class LabelSetter : public Visitor {
    178                 public:
    179                 LabelSetter( Label label ) : label( label ) {}
    180 
    181                 virtual void visit( BranchStmt * branchStmt ) {
    182                         branchStmt->set_target( label );
    183                 }
    184 
    185                 virtual void visit( UntypedExpr * untyped ) {
    186                         NameExpr * name = dynamic_cast< NameExpr * >( untyped->get_function() );
    187                         assert( name );
    188                         assert( name->get_name() == "&&" );
    189                         NameExpr * arg = dynamic_cast< NameExpr * >( untyped->get_args().front() );
    190                         assert( arg );
    191                         arg->set_name( label );
    192                 }
    193 
    194         private:
    195                 Label label;
    196         };
    197 
    198         // Ultimately builds a table that maps a label to its defining statement.
    199         // In the process,
     127        // Builds a table that maps a label to its defining statement.
    200128        std::map<Label, Statement * > *LabelFixer::resolveJumps() throw ( SemanticError ) {
    201                 std::map< Statement *, Entry * > def_us;
    202 
    203                 // combine the entries for all labels that target the same location
    204                 for ( std::map< Label, Entry *>::iterator i = labelTable.begin(); i != labelTable.end(); ++i ) {
    205                         Entry *e = i->second;
    206 
    207                         if ( def_us.find ( e->get_definition() ) == def_us.end() ) {
    208                                 def_us[ e->get_definition() ] = e;
    209                         } else if ( e->used() ) {
    210                                 def_us[ e->get_definition() ]->add_uses( *e );
     129                std::map< Label, Statement * > *ret = new std::map< Label, Statement * >();
     130                for ( std::map< Label, Entry * >::iterator i = labelTable.begin(); i != labelTable.end(); ++i ) {
     131                        if ( ! i->second->defined() ) {
     132                                throw SemanticError( "Use of undefined label: " + i->first );
    211133                        }
    212                 }
    213 
    214                 // create a unique label for each target location.
    215                 for ( std::map< Statement *, Entry * >::iterator i = def_us.begin(); i != def_us.end(); ++i ) {
    216                         Statement *to = (*i).first;
    217                         Entry * entry = (*i).second;
    218                         std::list< Entry::UsageLoc > &from = entry->get_uses();
    219 
    220                         // no label definition found
    221                         if ( to == 0 ) {
    222                                 Label undef;
    223                                 LabelGetter getLabel( undef );
    224                                 from.back().accept( getLabel );
    225                                 // Label undef = getLabel( from.back()->get_target() );
    226                                 throw SemanticError ( "'" + undef + "' label not defined");
    227                         } // if
    228 
    229                         // generate a new label, and attach it to its defining statement as the only label on that statement
    230                         Label finalLabel = generator->newLabel( to->get_labels().back() );
    231                         entry->set_label( finalLabel );
    232 
    233                         to->get_labels().clear();
    234                         to->get_labels().push_back( finalLabel );
    235 
    236                         // redirect each of the source branch statements to the new target label
    237                         for ( std::list< Entry::UsageLoc >::iterator j = from.begin(); j != from.end(); ++j ) {
    238                                 LabelSetter setLabel( finalLabel );
    239                                 (*j).accept( setLabel );
    240                                 // setLabel( *j, finalLabel );
    241 
    242                                 // BranchStmt *jump = *j;
    243                                 // assert( jump != 0 );
    244                                 // jump->set_target( finalLabel );
    245                         } // for
    246                 } // for
    247 
    248                 // create a table where each label maps to its defining statement
    249                 std::map< Label, Statement * > *ret = new std::map< Label, Statement * >();
    250                 for ( std::map< Statement *, Entry * >::iterator i = def_us.begin(); i != def_us.end(); ++i ) {
    251                         (*ret)[ (*i).second->get_label() ] = (*i).first;
     134                        (*ret)[ i->first ] = i->second->get_definition();
    252135                }
    253136
  • src/ControlStruct/LabelFixer.h

    re45215c rd60ccbf  
    99// Author           : Rodolfo G. Esteves
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Jun 29 17:24:39 2015
    13 // Update Count     : 29
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Tue Jul 28 13:09:02 2015
     13// Update Count     : 31
    1414//
    1515
     
    2525
    2626namespace ControlStruct {
     27        /// normalizes label definitions and generates multi-level exit labels
    2728        class LabelFixer : public Visitor {
    2829                typedef Visitor Parent;
     
    6263                class Entry {
    6364                        public:
    64                         union UsageLoc {
    65                                 Statement * stmt;
    66                                 Expression * expr;
    67 
    68                                 void accept( Visitor &visitor );
    69                         };
    70 
    7165                        Entry( Statement *to ) : definition( to ) {}
    72                         Entry( Statement *to, Statement *from );
    73                         Entry( Statement *to, Expression *from );
    74                         bool used() { return ( usage.empty() ); }
    7566                        bool defined() { return ( definition != 0 ); }
    7667                        bool insideLoop();
     
    8273                        void set_definition( Statement *def ) { definition = def; }
    8374
    84                         std::list< UsageLoc > &get_uses() { return usage; }
    85                         void add_use( Statement *use ) {
    86                                 UsageLoc loc;
    87                                 loc.stmt = use;
    88                                 usage.push_back( loc );
    89                         }
    90                         void add_use( Expression *use ) {
    91                                 UsageLoc loc;
    92                                 loc.expr = use;
    93                                 usage.push_back( loc );                                 
    94                         }
    95 
    96                         void add_uses ( Entry &other ) { usage.insert( usage.end(), other.usage.begin(), other.usage.end() ); }
    9775                  private:
    9876                        Label label; 
    9977                        Statement *definition;
    100                         std::list<UsageLoc> usage;
    10178                };
    10279                 
    10380                std::map < Label, Entry *> labelTable;
    10481                LabelGenerator *generator;
    105                 Statement * currentStatement;
    10682        };
    10783} // namespace ControlStruct
  • src/ControlStruct/MLEMutator.cc

    re45215c rd60ccbf  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Rob Schluntz
    12 // Last Modified On : Sat Jun 27 10:56:14 2015
    13 // Update Count     : 174
    14 //
     12// Last Modified On : Mon Jul 20 13:58:35 2015
     13// Update Count     : 176
     14//
     15
     16// NOTE: There are two known subtle differences from the code that uC++
     17// generates for the same input
     18// -CFA puts the break label inside at the end of a switch, uC++ puts it after
     19// -CFA puts the break label after a block, uC++ puts it inside at the end
     20// we don't yet know if these differences are important, but if they are then
     21// the fix would go in this file, since this is where these labels are generated.
    1522
    1623#include <cassert>
  • src/ControlStruct/Mutate.h

    re45215c rd60ccbf  
    2323
    2424namespace ControlStruct {
     25        /// Desugars Cforall control structures
    2526        void mutate( std::list< Declaration* > translationUnit );
    2627} // namespace ControlStruct
  • src/GenPoly/Box.cc

    re45215c rd60ccbf  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Rob Schluntz
    12 // Last Modified On : Wed Jun 24 16:19:07 2015
    13 // Update Count     : 10
     12// Last Modified On : Tue Aug 11 16:22:35 2015
     13// Update Count     : 89
    1414//
    1515
     
    7777                        Expression *handleIntrinsics( ApplicationExpr *appExpr );
    7878                        ObjectDecl *makeTemporary( Type *type );
    79  
     79
     80                        typedef std::map< std::string, FunctionDecl *> AdapterMap;
    8081                        std::map< std::string, DeclarationWithType *> assignOps;
    81                         typedef std::map< std::string, FunctionDecl *> AdapterMap;
    8282                        std::stack< AdapterMap > adapters;
    8383                        DeclarationWithType *retval;
     
    170170                }
    171171
     172                bool isPolyRet( FunctionType *function, const TyVarMap &otherTyVars ) {
     173                        std::string dummyString;
     174                        return isPolyRet( function, dummyString, otherTyVars );
     175                }
     176
    172177                Pass1::Pass1()
    173178                        : useRetval( false ), tempNamer( "_temp" ) {
     
    204209                }
    205210
    206                 DeclarationWithType *
    207                 Pass1::mutate( FunctionDecl *functionDecl ) {
     211                DeclarationWithType *Pass1::mutate( FunctionDecl *functionDecl ) {
    208212                        if ( functionDecl->get_statements() ) {
    209213                                TyVarMap oldtyVars = scopeTyVars;
     
    527531                }
    528532
    529                 void Pass1::passAdapters( ApplicationExpr *appExpr, FunctionType *functionType, const TyVarMap &exprTyVars ) {
     533                void Pass1::passAdapters( ApplicationExpr * appExpr, FunctionType * functionType, const TyVarMap & exprTyVars ) {
     534                        // collect a list of function types passed as parameters or implicit parameters (assertions)
    530535                        std::list< DeclarationWithType *> &paramList = functionType->get_parameters();
    531536                        std::list< FunctionType *> functions;
     
    538543                                findFunction( (*arg)->get_type(), functions, exprTyVars, needsAdapter );
    539544                        } // for
     545
     546                        // parameter function types for which an appropriate adapter has been generated.
     547                        // we cannot use the types after applying substitutions, since two different
     548                        // parameter types may be unified to the same type
    540549                        std::set< std::string > adaptersDone;
     550
    541551                        for ( std::list< FunctionType *>::iterator funType = functions.begin(); funType != functions.end(); ++funType ) {
     552                                FunctionType *originalFunction = (*funType)->clone();
    542553                                FunctionType *realFunction = (*funType)->clone();
    543                                 assert( env );
    544                                 env->apply( realFunction );
    545 
    546554                                std::string mangleName = SymTab::Mangler::mangle( realFunction );
     555
     556                                // only attempt to create an adapter or pass one as a parameter if we haven't
     557                                // already done so for this pre-substitution parameter function type.
    547558                                if ( adaptersDone.find( mangleName ) == adaptersDone.end() ) {
    548                                         AdapterMap & adapters = Pass1::adapters.top();
    549                                         AdapterMap::iterator adapter = adapters.find( mangleName );
     559                                        std::string mangleName = SymTab::Mangler::mangle( realFunction );
     560                                        adaptersDone.insert( adaptersDone.begin(), mangleName );
     561                                       
     562                                        // apply substitution to type variables to figure out what the
     563                                        // adapter's type should look like
     564                                        assert( env );
     565                                        env->apply( realFunction );
     566                                        mangleName = SymTab::Mangler::mangle( realFunction );
    550567
    551568                                        if ( needsAdapter( realFunction, exprTyVars, true ) ) {
     
    554571                                                // create a new adapter.
    555572                                                appExpr->get_args().push_front( new NameExpr( makeAdapterName ( mangleName ) ) );
    556                                                 continue;
    557                                         } else if ( adapter == adapters.end() ) {
    558                                                 FunctionDecl *newAdapter = makeAdapter( *funType, realFunction, mangleName, exprTyVars );
    559                                                 adapter = adapters.insert( adapters.begin(), std::pair< std::string, FunctionDecl *>( mangleName, newAdapter ) );
    560                                                 stmtsToAdd.push_back( new DeclStmt( noLabels, newAdapter ) );
     573                                        } else {
     574                                                if ( isPolyRet( originalFunction, exprTyVars ) ) {
     575                                                        // if the return type involved polymorphic types, then
     576                                                        // the adapter will need to take those polymorphic types
     577                                                        // as pointers. Therefore, there can be two different
     578                                                        // functions with the same mangled name, so we need two adapter map
     579                                                        // stacks and also we need the mangled names to be different.
     580                                                        mangleName += "polyret_";
     581                                                }
     582
     583                                                AdapterMap & adapters = Pass1::adapters.top();
     584                                                AdapterMap::iterator adapter = adapters.find( mangleName );
     585                                                if ( adapter == adapters.end() ) {
     586                                                        // adapter has not been created yet in the current scope, so define it
     587                                                        FunctionDecl *newAdapter = makeAdapter( *funType, realFunction, mangleName, exprTyVars );
     588                                                        adapter = adapters.insert( adapters.begin(), std::pair< std::string, FunctionDecl *>( mangleName, newAdapter ) );
     589                                                        stmtsToAdd.push_back( new DeclStmt( noLabels, newAdapter ) );
     590                                                } // if
     591                                                assert( adapter != adapters.end() );
     592
     593                                                // add the appropriate adapter as a parameter
     594                                                appExpr->get_args().push_front( new VariableExpr( adapter->second ) );
    561595                                        } // if
    562                                         assert( adapter != adapters.end() );
    563                                         appExpr->get_args().push_front( new VariableExpr( adapter->second ) );
    564                                         // appExpr->get_args().push_front( new NameExpr( makeAdapterName ( mangleName ) ) );
    565                                         adaptersDone.insert( adaptersDone.begin(), mangleName );
    566596                                } // if
    567597                        } // for
     
    881911
    882912                void Pass1::doBeginScope() {
     913                        // actually, maybe this could (should?) push
     914                        // a copy of the current map
    883915                        adapters.push(AdapterMap());
    884916                }
     
    10521084                        if ( ObjectDecl *objectDecl = dynamic_cast< ObjectDecl *>( declStmt->get_decl() ) ) {
    10531085                                if ( isPolyVal( objectDecl->get_type(), scopeTyVars ) ) {
     1086                                        // change initialization of a polymorphic value object
     1087                                        // to allocate storage with alloca
    10541088                                        TypeInstType *typeInst = dynamic_cast< TypeInstType *>( objectDecl->get_type() );
    10551089                                        assert( typeInst );
    10561090                                        UntypedExpr *alloc = new UntypedExpr( new NameExpr( "__builtin_alloca" ) );
    10571091                                        alloc->get_args().push_back( new NameExpr( typeInst->get_name() ) );
    1058                                         UntypedExpr *assign = new UntypedExpr( new NameExpr( "?=?" ) );
    1059                                         assign->get_args().push_back( new VariableExpr( objectDecl ) );
    1060                                         assign->get_args().push_back( alloc );
    1061                                         stmtsToAddAfter.push_back( new ExprStmt( noLabels, assign ) );
     1092
     1093                                        delete objectDecl->get_init();
     1094
     1095                                        std::list<Expression*> designators;
     1096                                        objectDecl->set_init( new SingleInit( alloc, designators ) );
    10621097                                }
    10631098                        }
  • src/GenPoly/Box.h

    re45215c rd60ccbf  
    2121
    2222namespace GenPoly {
     23        /// boxes polymorphic function calls
    2324        void box( std::list< Declaration* >& translationUnit );
    2425} // namespace GenPoly
  • src/GenPoly/CopyParams.h

    re45215c rd60ccbf  
    2020
    2121namespace GenPoly {
     22        /// Clones by-value parameters which have been passed by-reference for polymorphism
    2223        void copyParams( std::list< Declaration* > &translationUnit );
    2324} // namespace GenPoly
  • src/GenPoly/Lvalue.h

    re45215c rd60ccbf  
    2222
    2323namespace GenPoly {
     24        /// replaces return type of `lvalue T` with `T*`, along with appropriate address-of and dereference operators
    2425        void convertLvalue( std::list< Declaration* >& translationUnit );
    2526} // namespace GenPoly
  • src/GenPoly/Specialize.h

    re45215c rd60ccbf  
    2222
    2323namespace GenPoly {
     24        /// generates thunks where needed
    2425        void convertSpecializations( std::list< Declaration* >& translationUnit );
    2526} // namespace GenPoly
  • src/InitTweak/RemoveInit.h

    re45215c rd60ccbf  
    2525
    2626namespace InitTweak {
     27        /// Adds assignment statements for polymorphic type initializers
    2728        void tweak( std::list< Declaration * > translationUnit );
    2829
  • src/Parser/DeclarationNode.cc

    re45215c rd60ccbf  
    99// Author           : Rodolfo G. Esteves
    1010// Created On       : Sat May 16 12:34:05 2015
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Wed Jul 08 16:40:37 2015
    13 // Update Count     : 121
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Tue Jul 14 14:46:32 2015
     13// Update Count     : 126
    1414//
    1515
     
    472472                if ( o->get_link() ) {
    473473                        set_link( o->get_link()->clone() );
    474                 }
    475 
     474                } // if
    476475        } // if
    477476        delete o;
  • src/Parser/ExpressionNode.cc

    re45215c rd60ccbf  
    1010// Created On       : Sat May 16 13:17:07 2015
    1111// Last Modified By : Rob Schluntz
    12 // Last Modified On : Wed Jun 24 16:20:00 2015
    13 // Update Count     : 158
     12// Last Modified On : Wed Aug 12 13:51:11 2015
     13// Update Count     : 254
    1414//
    1515
     
    3232ExpressionNode::ExpressionNode() : ParseNode(), argName( 0 ) {}
    3333
    34 ExpressionNode::ExpressionNode( const string *name_ ) : ParseNode( name_ ), argName( 0 ) {}
     34ExpressionNode::ExpressionNode( const string *name ) : ParseNode( name ), argName( 0 ) {}
    3535
    3636ExpressionNode::ExpressionNode( const ExpressionNode &other ) : ParseNode( other.name ) {
     
    4242}
    4343
    44 ExpressionNode * ExpressionNode::set_asArgName( const std::string *aName ) {
     44ExpressionNode * ExpressionNode::set_argName( const std::string *aName ) {
    4545        argName = new VarRefNode( aName );
    4646        return this;
    4747}
    4848
    49 ExpressionNode * ExpressionNode::set_asArgName( ExpressionNode *aDesignator ) {
     49ExpressionNode * ExpressionNode::set_argName( ExpressionNode *aDesignator ) {
    5050        argName = aDesignator;
    5151        return this;
     
    210210        assert( type == String );
    211211
    212         // "abc" "def" "ghi" => "abcdefghi", so remove new text from quotes and insert before last quote in old string.
     212        // "abc" "def" "ghi" => "abcdefghi", remove new text from quotes and insert before last quote in old string.
    213213        value.insert( value.length() - 1, newValue->substr( 1, newValue->length() - 2 ) );
    214214       
     
    284284        os << "Variable: " << get_name();
    285285        os << endl;
     286}
     287
     288//##############################################################################
     289
     290DesignatorNode::DesignatorNode( ExpressionNode *expr, bool isArrayIndex ) : isArrayIndex( isArrayIndex ) {
     291        set_argName( expr );
     292        assert( get_argName() );
     293
     294        if ( ! isArrayIndex ) {
     295                if ( VarRefNode * var = dynamic_cast< VarRefNode * >( expr ) ) {
     296
     297                        stringstream ss( var->get_name() );
     298                        double value;
     299                        if ( ss >> value ) {
     300                                // this is a floating point constant. It MUST be
     301                                // ".0" or ".1", otherwise the program is invalid
     302                                if ( ! (var->get_name() == ".0" || var->get_name() == ".1") ) {
     303                                        throw SemanticError( "invalid designator name: " + var->get_name() );
     304                                } // if
     305                                var->set_name( var->get_name().substr(1) );
     306                        } // if
     307                } // if
     308        } // if
     309}
     310
     311DesignatorNode::DesignatorNode( const DesignatorNode &other ) : ExpressionNode( other ), isArrayIndex( other.isArrayIndex ) {
     312}
     313
     314class DesignatorFixer : public Mutator {
     315public:
     316        virtual Expression* mutate( NameExpr *nameExpr ) {
     317                if ( nameExpr->get_name() == "0" || nameExpr->get_name() == "1" ) {
     318                        Constant val( new BasicType( Type::Qualifiers(), BasicType::SignedInt ), nameExpr->get_name() );
     319                        delete nameExpr;
     320                        return new ConstantExpr( val );
     321                }
     322                return nameExpr;
     323        }
     324};
     325
     326Expression *DesignatorNode::build() const {
     327        Expression * ret = get_argName()->build();
     328
     329        if ( isArrayIndex ) {
     330                // need to traverse entire structure and change any instances of 0 or 1 to
     331                // ConstantExpr
     332                DesignatorFixer fixer;
     333                ret = ret->acceptMutator( fixer );
     334        } // if
     335
     336        return ret;
     337}
     338
     339void DesignatorNode::printOneLine( std::ostream &os, int indent ) const {
     340        if ( get_argName() ) {
     341                if ( isArrayIndex ) {
     342                        os << "[";
     343                        get_argName()->printOneLine( os, indent );
     344                        os << "]";
     345                } else {
     346                        os << ".";
     347                        get_argName()->printOneLine( os, indent );
     348                }
     349        } // if
     350}
     351
     352void DesignatorNode::print( std::ostream &os, int indent ) const {
     353        if ( get_argName() ) {
     354                if ( isArrayIndex ) {
     355                        os << "[";
     356                        get_argName()->print( os, indent );
     357                        os << "]";
     358                } else {
     359                        os << ".";
     360                        get_argName()->print( os, indent );
     361                }
     362        } // if
    286363}
    287364
     
    330407//##############################################################################
    331408
    332 CompositeExprNode::CompositeExprNode( void ) : ExpressionNode(), function( 0 ), arguments( 0 ) {
     409CompositeExprNode::CompositeExprNode() : ExpressionNode(), function( 0 ), arguments( 0 ) {
    333410}
    334411
     
    541618                {
    542619                        assert( args.size() == 3);
    543                         std::list< Expression* >::const_iterator i = args.begin();
     620                        std::list< Expression * >::const_iterator i = args.begin();
    544621                        Expression *arg1 = notZeroExpr( *i++ );
    545622                        Expression *arg2 = *i++;
     
    552629                {
    553630                        assert( args.size() == 2);
    554                         std::list< Expression* >::const_iterator i = args.begin();
     631                        std::list< Expression * >::const_iterator i = args.begin();
    555632                        Expression *ret = *i++;
    556633                        while ( i != args.end() ) {
     
    617694                set_args( arg );
    618695}
     696
     697//##############################################################################
     698
     699Expression *AsmExprNode::build() const {
     700        return new AsmExpr( maybeBuild< Expression >( inout ), (ConstantExpr *)constraint->build(), operand->build() );
     701}
     702
     703void AsmExprNode::print( std::ostream &os, int indent ) const {
     704        os << string( indent, ' ' ) << "Assembler Expression:" << endl;
     705        if ( inout ) {
     706                os << string( indent, ' ' ) << "inout: " << std::endl;
     707                inout->print( os, indent + 2 );
     708        } // if
     709        if ( constraint ) {
     710                os << string( indent, ' ' ) << "constraint: " << std::endl;
     711                constraint->print( os, indent + 2 );
     712        } // if
     713        if ( operand ) {
     714                os << string( indent, ' ' ) << "operand: " << std::endl;
     715                operand->print( os, indent + 2 );
     716        } // if
     717}
     718
     719void AsmExprNode::printOneLine( std::ostream &os, int indent ) const {
     720        printDesignation( os );
     721        os << "( ";
     722        if ( inout ) inout->printOneLine( os, indent + 2 );
     723        os << ", ";
     724        if ( constraint ) constraint->printOneLine( os, indent + 2 );
     725        os << ", ";
     726        if ( operand ) operand->printOneLine( os, indent + 2 );
     727        os << ") ";
     728}
     729
     730//##############################################################################
     731
     732void LabelNode::print( std::ostream &os, int indent ) const {}
     733
     734void LabelNode::printOneLine( std::ostream &os, int indent ) const {}
    619735
    620736//##############################################################################
  • src/Parser/ParseNode.cc

    re45215c rd60ccbf  
    1010// Created On       : Sat May 16 13:26:29 2015
    1111// Last Modified By : Rob Schluntz
    12 // Last Modified On : Wed Jul 08 14:46:45 2015
    13 // Update Count     : 25
     12// Last Modified On : Wed Aug 12 13:26:00 2015
     13// Update Count     : 36
    1414//
    1515
     
    2020int ParseNode::indent_by = 4;
    2121
    22 ParseNode::ParseNode() : name( 0 ), next( 0 ) {};
    23 ParseNode::ParseNode( const string *name_ ) : name( name_ ), next( 0 ) {}
     22ParseNode::ParseNode() : next( 0 ) {};
     23ParseNode::ParseNode( const string *name ) : name( *name ), next( 0 ) { delete name; }
     24ParseNode::ParseNode( const string &name ) : name( name ), next( 0 ) { }
    2425
    2526ParseNode::~ParseNode() {
  • src/Parser/ParseNode.h

    re45215c rd60ccbf  
    99// Author           : Rodolfo G. Esteves
    1010// Created On       : Sat May 16 13:28:16 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Jul  2 17:57:05 2015
    13 // Update Count     : 84
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Wed Aug 12 13:27:11 2015
     13// Update Count     : 172
    1414//
    1515
     
    4040        ParseNode();
    4141        ParseNode( const std::string * );
     42        ParseNode( const std::string & );  // for copy constructing subclasses
    4243        virtual ~ParseNode();
    4344
     
    4950        virtual ParseNode *clone() const { return 0; };
    5051
    51         const std::string &get_name() const { return *name; }
     52        const std::string &get_name() const { return name; }
     53        void set_name( const std::string &newValue ) { name = newValue; }
     54
    5255        virtual void print( std::ostream &, int indent = 0 ) const;
    5356        virtual void printList( std::ostream &, int indent = 0 ) const;
     
    5558        ParseNode &operator,( ParseNode &);
    5659  protected:
    57         const std::string *name;
     60        std::string name;
    5861        ParseNode *next;
    5962        static int indent_by;
     
    6770        ExpressionNode( const std::string * );
    6871        ExpressionNode( const ExpressionNode &other );
    69         virtual ~ExpressionNode() {} // cannot delete asArgName because it might be referenced elsewhere
     72        virtual ~ExpressionNode() { delete argName; } // cannot delete argName because it might be referenced elsewhere
    7073
    7174        virtual ExpressionNode *clone() const = 0;
     
    7477
    7578        ExpressionNode *get_argName() const { return argName; }
    76         ExpressionNode *set_asArgName( const std::string *aName );
    77         ExpressionNode *set_asArgName( ExpressionNode *aDesignator );
     79        ExpressionNode *set_argName( const std::string *aName );
     80        ExpressionNode *set_argName( ExpressionNode *aDesignator );
    7881
    7982        virtual void print( std::ostream &, int indent = 0) const = 0;
     
    105108
    106109        ConstantNode( Type, std::string * );
     110        ~ConstantNode() { delete &value; }
    107111
    108112        virtual ConstantNode *clone() const { return new ConstantNode( *this ); }
     
    135139  private:
    136140        bool isLabel;
     141};
     142
     143class DesignatorNode : public ExpressionNode {
     144  public:
     145        DesignatorNode( ExpressionNode *expr, bool isArrayIndex = false );
     146        DesignatorNode( const DesignatorNode &other );
     147
     148        virtual Expression *build() const ;
     149        virtual DesignatorNode *clone() const { return new DesignatorNode( *this ); }
     150
     151        virtual void print( std::ostream &, int indent = 0 ) const;
     152        virtual void printOneLine( std::ostream &, int indent = 0 ) const;
     153  private:
     154        bool isArrayIndex;
    137155};
    138156
     
    183201};
    184202
    185 
    186203class CompositeExprNode : public ExpressionNode {
    187204  public:
     
    211228};
    212229
     230class AsmExprNode : public ExpressionNode {
     231  public:
     232        AsmExprNode();
     233        AsmExprNode( ExpressionNode *inout, ConstantNode *constraint, ExpressionNode *operand ) : inout( inout ), constraint( constraint ), operand( operand ) {}
     234        virtual ~AsmExprNode() { delete inout; delete constraint; delete operand; }
     235
     236        virtual AsmExprNode *clone() const { return new AsmExprNode( *this ); }
     237        virtual Expression *build() const;
     238
     239        virtual void print( std::ostream &, int indent = 0) const;
     240        virtual void printOneLine( std::ostream &, int indent = 0) const;
     241
     242        ExpressionNode *get_inout() const { return inout; };
     243        void set_inout( ExpressionNode *newValue ) { inout = newValue; }
     244
     245        ConstantNode *get_constraint() const { return constraint; };
     246        void set_constraint( ConstantNode *newValue ) { constraint = newValue; }
     247
     248        ExpressionNode *get_operand() const { return operand; };
     249        void set_operand( ExpressionNode *newValue ) { operand = newValue; }
     250  private:
     251        ExpressionNode *inout;
     252        ConstantNode *constraint;
     253        ExpressionNode *operand;
     254};
     255
     256class LabelNode : public ExpressionNode {
     257  public:
     258        virtual Expression *build() const { return NULL; }
     259        virtual LabelNode *clone() const { return new LabelNode( *this ); }
     260
     261        virtual void print( std::ostream &, int indent = 0) const;
     262        virtual void printOneLine( std::ostream &, int indent = 0) const;
     263
     264        const std::list< std::string > &get_labels() const { return labels; };
     265        void append_label( std::string *label ) { labels.push_back( *label ); delete label; }
     266  private:
     267        std::list< std::string > labels;
     268};
     269
    213270class CommaExprNode : public CompositeExprNode {
    214271  public:
     
    265322class DeclarationNode : public ParseNode {
    266323  public:
    267         enum Qualifier { Const, Restrict, Volatile, Lvalue, Atomic, Attribute };
     324        enum Qualifier { Const, Restrict, Volatile, Lvalue, Atomic };
    268325        enum StorageClass { Extern, Static, Auto, Register, Inline, Fortran, Noreturn, Threadlocal, NoStorageClass, };
    269326        enum BasicType { Char, Int, Float, Double, Void, Bool, Complex, Imaginary };
     
    279336        static const char *typeClassName[];
    280337
    281         static DeclarationNode *newFunction( std::string *name, DeclarationNode *ret, DeclarationNode *param,
    282                                                                                  StatementNode *body, bool newStyle = false );
     338        static DeclarationNode *newFunction( std::string *name, DeclarationNode *ret, DeclarationNode *param, StatementNode *body, bool newStyle = false );
    283339        static DeclarationNode *newQualifier( Qualifier );
    284340        static DeclarationNode *newStorageClass( StorageClass );
     
    352408        std::string name;
    353409        std::list< StorageClass > storageClasses;
     410        std::list< std::string > attributes;
    354411        ExpressionNode *bitfieldWidth;
    355412        InitializerNode *initializer;
     
    358415
    359416        static UniqueName anonymous;
    360 };
     417}; // DeclarationNode
    361418
    362419class StatementNode : public ParseNode {
     
    370427
    371428        StatementNode();
    372         StatementNode( const std::string * );
    373         StatementNode( Type, ExpressionNode *e = 0, StatementNode *s = 0 );
    374         StatementNode( Type, std::string *target );
     429        StatementNode( const std::string *name );
     430        StatementNode( Type t, ExpressionNode *control = 0, StatementNode *block = 0 );
     431        StatementNode( Type t, std::string *target );
    375432        StatementNode( DeclarationNode *decl );
    376433
    377 
    378434        ~StatementNode();
    379435
    380436        static StatementNode *newCatchStmt( DeclarationNode *d = 0, StatementNode *s = 0, bool catchRestP = false );
    381437
    382         void set_control( ExpressionNode * );
    383         StatementNode * set_block( StatementNode * );
    384 
    385         ExpressionNode *get_control() const ;
    386         StatementNode *get_block() const;
    387         StatementNode::Type get_type() const;
     438        StatementNode *set_block( StatementNode *b ) {  block = b; return this; }
     439        StatementNode *get_block() const { return block; }
     440
     441        void set_control( ExpressionNode *c ) { control = c; }
     442        ExpressionNode *get_control() const { return control; }
     443
     444        StatementNode::Type get_type() const { return type; }
    388445
    389446        StatementNode *add_label( const std::string * );
    390         std::list<std::string> *get_labels() const;
     447        const std::list<std::string> &get_labels() const { return labels; }
    391448
    392449        void addDeclaration( DeclarationNode *newDecl ) { decl = newDecl; }
     
    400457
    401458        void print( std::ostream &, int indent = 0) const;
    402 
    403459        virtual StatementNode *clone() const;
    404 
    405460        virtual Statement *build() const;
    406461  private:
     
    409464        ExpressionNode *control;
    410465        StatementNode *block;
    411         std::list<std::string> *labels;
     466        std::list<std::string> labels;
    412467        std::string *target;                            // target label for jump statements
    413468        DeclarationNode *decl;
    414 
    415469        bool isCatchRest;
    416 };
     470}; // StatementNode
    417471
    418472class CompoundStmtNode : public StatementNode {
     
    426480
    427481        void print( std::ostream &, int indent = 0 ) const;
    428 
    429482        virtual Statement *build() const;
    430483  private:
     
    432485};
    433486
     487class AsmStmtNode : public StatementNode {
     488  public:
     489        AsmStmtNode( Type, bool voltile, ConstantNode *instruction, ExpressionNode *output = 0, ExpressionNode *input = 0, ConstantNode *clobber = 0, LabelNode *gotolabels = 0 );
     490        ~AsmStmtNode();
     491
     492        void print( std::ostream &, int indent = 0 ) const;
     493        Statement *build() const;
     494  private:
     495        bool voltile;
     496        ConstantNode *instruction;
     497        ExpressionNode *output, *input;
     498        ConstantNode *clobber;
     499        std::list<std::string> gotolabels;
     500};
     501
    434502class NullStmtNode : public CompoundStmtNode {
    435503  public:
    436504        Statement *build() const;
    437         void print( std::ostream &, int indent = 0) const;
     505        void print( std::ostream &, int indent = 0 ) const;
    438506};
    439507
     
    461529        InitializerNode *kids;
    462530};
    463 
    464 
    465531
    466532template< typename SynTreeType, typename NodeType >
  • src/Parser/StatementNode.cc

    re45215c rd60ccbf  
    99// Author           : Rodolfo G. Esteves
    1010// Created On       : Sat May 16 14:59:41 2015
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Tue Jul 14 12:20:44 2015
    13 // Update Count     : 21
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Thu Jul 30 14:39:39 2015
     13// Update Count     : 130
    1414//
    1515
     
    3636StatementNode::StatementNode() : ParseNode(), control( 0 ), block( 0 ), labels( 0 ), target( 0 ), decl( 0 ), isCatchRest ( false ) {}
    3737
    38 StatementNode::StatementNode( const string *name_ ) : ParseNode( name_ ), control( 0 ), block( 0 ), labels( 0 ), target( 0 ), decl( 0 ), isCatchRest ( false ) {}
     38StatementNode::StatementNode( const string *name ) : ParseNode( name ), control( 0 ), block( 0 ), labels( 0 ), target( 0 ), decl( 0 ), isCatchRest ( false ) {}
    3939
    4040StatementNode::StatementNode( DeclarationNode *decl ) : type( Decl ), control( 0 ), block( 0 ), labels( 0 ), target( 0 ), isCatchRest ( false ) {
     
    6060}
    6161
    62 StatementNode::StatementNode( Type t, ExpressionNode *ctrl_label, StatementNode *block_ ) :
    63                 type( t ), control( ctrl_label ), block( block_), labels( 0 ), target( 0 ), decl( 0 ), isCatchRest ( false ) {
    64         if ( t == Default )
    65                 control = 0;
     62StatementNode::StatementNode( Type t, ExpressionNode *ctrl_label, StatementNode *block ) : type( t ), control( ctrl_label ), block( block ), labels( 0 ), target( 0 ), decl( 0 ), isCatchRest ( false ) {
     63        this->control = ( t == Default ) ? 0 : control;
    6664}
    6765
    68 StatementNode::StatementNode( Type t, string *_target ) :
    69                 type( t ), control( 0 ), block( 0 ), labels( 0 ), target(_target ), decl( 0 ), isCatchRest ( false ) {}
     66StatementNode::StatementNode( Type t, string *target ) : type( t ), control( 0 ), block( 0 ), labels( 0 ), target( target ), decl( 0 ), isCatchRest ( false ) {}
    7067
    7168StatementNode::~StatementNode() {
    7269        delete control;
    7370        delete block;
    74         delete labels;
    7571        delete target;
    7672        delete decl;
     
    10399}
    104100
    105 void StatementNode::set_control( ExpressionNode *c ) {
    106         control = c;
    107 }
    108 
    109 StatementNode * StatementNode::set_block( StatementNode *b ) {
    110         block = b;
    111 
    112         return this;
    113 }
    114 
    115 ExpressionNode *StatementNode::get_control() const {
    116         return control;
    117 }
    118 
    119 StatementNode *StatementNode::get_block() const {
    120         return block;
    121 }
    122 
    123 StatementNode::Type StatementNode::get_type() const {
    124         return type;
    125 }
    126 
    127101StatementNode *StatementNode::add_label( const std::string *l ) {
    128102        if ( l != 0 ) {
    129                 if ( labels == 0 )
    130                         labels = new std::list<std::string>();
    131 
    132                 labels->push_front(*l );
     103                labels.push_front( *l );
    133104                delete l;
    134105        } // if
    135106        return this;
    136107}
    137 
    138 std::list<std::string> *StatementNode::get_labels() const { return labels; }
    139108
    140109StatementNode *StatementNode::add_controlexp( ExpressionNode *e ) {
    141110        if ( control && e )
    142111                control->add_to_list( e ); // xxx - check this
    143 
    144112        return this;
    145113}
     
    170138
    171139void StatementNode::print( std::ostream &os, int indent ) const {
    172         if ( labels != 0 ) {
    173                 if ( ! labels->empty()) {
    174                         std::list<std::string>::const_iterator i;
    175 
    176                         os << string( indent, ' ' );
    177                         for ( i = labels->begin(); i != labels->end(); i++ )
    178                                 os << *i << ":";
    179                         os << endl;
    180                 } // if
     140        if ( ! labels.empty() ) {
     141                std::list<std::string>::const_iterator i;
     142
     143                os << string( indent, ' ' );
     144                for ( i = labels.begin(); i != labels.end(); i++ )
     145                        os << *i << ":";
     146                os << endl;
    181147        } // if
    182148
     
    198164                        if ( decl ) {
    199165                                os << string( indent + ParseNode::indent_by, ' ' ) << "Declaration: " << endl;
    200                                 decl->print( os, indent + 2*ParseNode::indent_by );
     166                                decl->print( os, indent + 2 * ParseNode::indent_by );
    201167                        } else if ( isCatchRest ) {
    202168                                os << string( indent + ParseNode::indent_by, ' ' ) << "Catches the rest " << endl;
     
    206172                } // if
    207173                if ( control ) {
    208                         os << string( indent + ParseNode::indent_by, ' ' ) << "Expression: " << endl;
    209                         control->printList( os, indent + 2*ParseNode::indent_by );
     174                        os << string( indent + ParseNode::indent_by, ' ' ) << "Control: " << endl;
     175                        control->printList( os, indent + 2 * ParseNode::indent_by );
    210176                } // if
    211177                if ( block ) {
    212178                        os << string( indent + ParseNode::indent_by, ' ' ) << "Branches of execution: " << endl;
    213                         block->printList( os, indent + 2*ParseNode::indent_by ); 
     179                        block->printList( os, indent + 2 * ParseNode::indent_by ); 
    214180                } // if
    215181                if ( target ) {
     
    225191        std::list<Label> labs;
    226192
    227         if ( labels != 0 ) {
     193        if ( ! labels.empty() ) {
    228194                std::back_insert_iterator< std::list<Label> > lab_it( labs );
    229                 copy( labels->begin(), labels->end(), lab_it );
     195                copy( labels.begin(), labels.end(), lab_it );
    230196        } // if
    231197
     
    274240                        if ( ctl->get_init() != 0 ) {
    275241                                buildList( ctl->get_init(), init );
    276                         }
     242                        } // if
    277243
    278244                        Expression *cond = 0;
     
    341307                        return new FinallyStmt( labs, block );
    342308                }
     309          case Asm:
     310                assert( false );
    343311          default:
    344312                // shouldn't be here
     
    346314        } // switch
    347315}
     316
    348317
    349318CompoundStmtNode::CompoundStmtNode() : first( 0 ), last( 0 ) {}
     
    378347Statement *CompoundStmtNode::build() const {
    379348        std::list<Label> labs;
    380         std::list<std::string> *labels = get_labels();
    381 
    382         if ( labels != 0 ) {
     349        const std::list<std::string> &labels = get_labels();
     350
     351        if ( ! labels.empty() ) {
    383352                std::back_insert_iterator< std::list<Label> > lab_it( labs );
    384                 copy( labels->begin(), labels->end(), lab_it );
     353                copy( labels.begin(), labels.end(), lab_it );
    385354        } // if
    386355
     
    389358        return cs;
    390359}
     360
     361
     362AsmStmtNode::AsmStmtNode( Type t, bool voltile, ConstantNode *instruction, ExpressionNode *output, ExpressionNode *input, ConstantNode *clobber, LabelNode *gotolabels ) :
     363        StatementNode( t ), voltile( voltile ), instruction( instruction ), output( output ), input( input ), clobber( clobber ) {
     364        if ( gotolabels ) {
     365                this->gotolabels = gotolabels->get_labels();
     366                delete gotolabels;
     367        } // if
     368}
     369
     370AsmStmtNode::~AsmStmtNode() {
     371        delete instruction; delete output; delete input; delete clobber;
     372}
     373
     374void AsmStmtNode::print( std::ostream &os, int indent ) const {
     375        StatementNode::print( os, indent );                                     // print statement labels
     376        os << string( indent + ParseNode::indent_by, ' ' ) << "volatile:" << voltile << endl;
     377        if ( instruction ) {
     378                os << string( indent + ParseNode::indent_by, ' ' ) << "Instruction:" << endl;
     379                instruction->printList( os, indent + 2 * ParseNode::indent_by );
     380        } // if
     381        if ( output ) {
     382                os << string( indent + ParseNode::indent_by, ' ' ) << "Output:" << endl;
     383                output->printList( os, indent + 2 * ParseNode::indent_by );
     384        } // if
     385        if ( input ) {
     386                os << string( indent + ParseNode::indent_by, ' ' ) << "Input:" << endl;
     387                input->printList( os, indent + 2 * ParseNode::indent_by );
     388        } // if
     389        if ( clobber ) {
     390                os << string( indent + ParseNode::indent_by, ' ' ) << "Clobber:" << endl;
     391                clobber->printList( os, indent + 2 * ParseNode::indent_by );
     392        } // if
     393        if ( ! gotolabels.empty() ) {
     394                os << string( indent + ParseNode::indent_by, ' ' ) << "Goto Labels:" << endl;
     395                os << string( indent + 2 * ParseNode::indent_by, ' ' );
     396                for ( std::list<std::string>::const_iterator i = gotolabels.begin();; ) {
     397                        os << *i;
     398                        i++;
     399                  if ( i == gotolabels.end() ) break;
     400                        os << ", ";
     401                }
     402                os << endl;
     403        } // if
     404}
     405
     406Statement *AsmStmtNode::build() const {
     407        std::list<Label> labs;
     408
     409        if ( ! get_labels().empty() ) {
     410                std::back_insert_iterator< std::list<Label> > lab_it( labs );
     411                copy( get_labels().begin(), get_labels().end(), lab_it );
     412        } // if
     413
     414        std::list< Expression * > out, in;
     415        std::list< ConstantExpr * > clob;
     416        buildList( output, out );
     417        buildList( input, in );
     418        buildList( clobber, clob );
     419        std::list< Label > gotolabs = gotolabels;
     420        return new AsmStmt( labs, voltile, (ConstantExpr *)maybeBuild< Expression >( instruction ), out, in, clob, gotolabs );
     421}
     422
    391423
    392424void NullStmtNode::print( ostream &os, int indent ) const {
  • src/Parser/TypeData.cc

    re45215c rd60ccbf  
    1010// Created On       : Sat May 16 15:12:51 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Jun 26 07:30:06 2015
    13 // Update Count     : 26
     12// Last Modified On : Tue Jul 14 14:57:23 2015
     13// Update Count     : 32
    1414//
    1515
     
    397397                } // if
    398398                break;
     399          default:
     400                os << "internal error: TypeData::print " << kind  << endl;
     401                assert( false );
    399402        } // switch
    400403}
     
    474477                return buildVariable();
    475478        } else {
    476                 if ( isInline || isNoreturn ) {
    477                         throw SemanticError( "invalid inline or _Noreturn specification in declaration of ", this );
    478                 } else {
    479                         return new ObjectDecl( name, sc, linkage, bitfieldWidth, build(), init );
    480                 } // if
     479                return new ObjectDecl( name, sc, linkage, bitfieldWidth, build(), init, isInline, isNoreturn );
    481480        } // if
    482481        return 0;
     
    536535                  case DeclarationNode::Atomic:
    537536                        q.isAtomic = true;
    538                         break;
    539                   case DeclarationNode::Attribute:
    540                         q.isAttribute = true;
    541537                        break;
    542538                } // switch
  • src/Parser/parser.cc

    re45215c rd60ccbf  
    8080#include "lex.h"
    8181#include "ParseNode.h"
     82#include "TypeData.h"
    8283#include "LinkageSpec.h"
    8384
     
    8990
    9091/* Line 268 of yacc.c  */
    91 #line 92 "Parser/parser.cc"
     92#line 93 "Parser/parser.cc"
    9293
    9394/* Enabling traces.  */
     
    324325
    325326/* Line 293 of yacc.c  */
    326 #line 107 "parser.yy"
     327#line 108 "parser.yy"
    327328
    328329        Token tok;
     
    334335        StatementNode *sn;
    335336        ConstantNode *constant;
     337        LabelNode *label;
    336338        InitializerNode *in;
     339        bool flag;
    337340
    338341
    339342
    340343/* Line 293 of yacc.c  */
    341 #line 342 "Parser/parser.cc"
     344#line 345 "Parser/parser.cc"
    342345} YYSTYPE;
    343346# define YYSTYPE_IS_TRIVIAL 1
     
    351354
    352355/* Line 343 of yacc.c  */
    353 #line 354 "Parser/parser.cc"
     356#line 357 "Parser/parser.cc"
    354357
    355358#ifdef short
     
    570573#define YYFINAL  246
    571574/* YYLAST -- Last index in YYTABLE.  */
    572 #define YYLAST   11363
     575#define YYLAST   11329
    573576
    574577/* YYNTOKENS -- Number of terminals.  */
    575578#define YYNTOKENS  125
    576579/* YYNNTS -- Number of nonterminals.  */
    577 #define YYNNTS  236
     580#define YYNNTS  238
    578581/* YYNRULES -- Number of rules.  */
    579 #define YYNRULES  732
     582#define YYNRULES  740
    580583/* YYNRULES -- Number of states.  */
    581 #define YYNSTATES  1505
     584#define YYNSTATES  1530
    582585
    583586/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
     
    636639       0,     0,     3,     4,     5,     7,     9,    11,    13,    15,
    637640      17,    19,    21,    23,    25,    27,    29,    32,    34,    36,
    638       38,    40,    44,    48,    50,    57,    62,    66,    74,    78,
    639       86,    89,    92,   100,   102,   106,   107,   109,   113,   121,
    640      131,   133,   137,   139,   143,   151,   155,   163,   165,   168,
     641      40,    44,    46,    53,    58,    62,    70,    74,    82,    85,
     642      88,    96,    98,   102,   103,   105,   109,   117,   127,   129,
     643     133,   135,   139,   147,   151,   159,   161,   163,   165,   168,
    641644     171,   174,   177,   180,   183,   186,   191,   193,   198,   203,
    642645     206,   211,   214,   216,   218,   220,   222,   224,   229,   234,
     
    655658     650,   654,   657,   661,   665,   670,   672,   678,   685,   695,
    656659     706,   709,   711,   714,   717,   720,   722,   729,   738,   749,
    657      762,   763,   765,   767,   771,   776,   778,   782,   784,   786,
    658      788,   792,   794,   796,   798,   802,   803,   805,   809,   814,
    659      816,   820,   822,   824,   828,   832,   836,   840,   844,   847,
    660      851,   858,   862,   866,   871,   873,   876,   879,   883,   889,
    661      898,   906,   914,   920,   930,   933,   936,   942,   946,   952,
    662      957,   961,   966,   971,   979,   983,   987,   991,   995,  1000,
    663     1007,  1009,  1011,  1013,  1015,  1017,  1019,  1021,  1023,  1024,
    664     1026,  1028,  1031,  1033,  1035,  1037,  1039,  1041,  1043,  1045,
    665     1046,  1052,  1054,  1057,  1061,  1063,  1066,  1068,  1070,  1072,
    666     1074,  1076,  1078,  1080,  1082,  1084,  1086,  1088,  1090,  1092,
    667     1094,  1096,  1098,  1100,  1102,  1104,  1106,  1108,  1110,  1113,
    668     1116,  1120,  1124,  1126,  1130,  1132,  1135,  1138,  1141,  1146,
    669     1151,  1156,  1161,  1163,  1166,  1169,  1173,  1175,  1178,  1181,
    670     1183,  1186,  1189,  1193,  1195,  1198,  1201,  1203,  1205,  1210,
    671     1213,  1219,  1227,  1230,  1233,  1236,  1238,  1241,  1244,  1248,
    672     1251,  1255,  1257,  1260,  1264,  1267,  1270,  1275,  1276,  1278,
    673     1281,  1284,  1286,  1287,  1289,  1292,  1295,  1301,  1308,  1311,
    674     1314,  1319,  1320,  1323,  1324,  1326,  1328,  1330,  1336,  1342,
    675     1348,  1350,  1356,  1362,  1372,  1374,  1380,  1381,  1383,  1385,
    676     1391,  1393,  1395,  1401,  1407,  1409,  1413,  1417,  1422,  1424,
    677     1426,  1428,  1430,  1433,  1435,  1439,  1443,  1445,  1448,  1450,
    678     1454,  1456,  1458,  1460,  1462,  1464,  1466,  1468,  1470,  1472,
    679     1474,  1476,  1479,  1481,  1483,  1485,  1488,  1489,  1492,  1494,
    680     1499,  1501,  1504,  1508,  1513,  1516,  1519,  1521,  1524,  1527,
    681     1533,  1539,  1547,  1554,  1556,  1559,  1562,  1566,  1568,  1571,
    682     1574,  1579,  1582,  1587,  1588,  1593,  1596,  1598,  1600,  1602,
    683     1603,  1606,  1612,  1618,  1632,  1634,  1636,  1640,  1644,  1647,
    684     1651,  1655,  1658,  1663,  1665,  1672,  1682,  1683,  1695,  1697,
    685     1701,  1705,  1709,  1711,  1713,  1719,  1722,  1728,  1729,  1731,
    686     1733,  1737,  1738,  1740,  1742,  1744,  1746,  1747,  1754,  1757,
    687     1759,  1762,  1767,  1770,  1774,  1778,  1782,  1787,  1793,  1799,
    688     1805,  1812,  1814,  1816,  1818,  1822,  1823,  1829,  1830,  1832,
    689     1834,  1837,  1844,  1846,  1850,  1851,  1853,  1858,  1860,  1862,
    690     1864,  1866,  1869,  1871,  1874,  1877,  1879,  1883,  1886,  1890,
    691     1894,  1897,  1902,  1907,  1911,  1920,  1924,  1927,  1929,  1932,
    692     1939,  1948,  1952,  1955,  1959,  1963,  1968,  1973,  1977,  1979,
    693     1981,  1983,  1988,  1995,  1999,  2002,  2006,  2010,  2015,  2020,
    694     2024,  2027,  2029,  2032,  2035,  2037,  2041,  2044,  2048,  2052,
    695     2055,  2060,  2065,  2069,  2076,  2085,  2089,  2092,  2094,  2097,
    696     2100,  2103,  2107,  2111,  2114,  2119,  2124,  2128,  2135,  2144,
    697     2148,  2151,  2153,  2156,  2159,  2161,  2163,  2166,  2170,  2174,
    698     2177,  2182,  2189,  2198,  2200,  2203,  2206,  2208,  2211,  2214,
    699     2218,  2222,  2224,  2229,  2234,  2238,  2244,  2253,  2257,  2260,
    700     2264,  2266,  2272,  2278,  2285,  2292,  2294,  2297,  2300,  2302,
    701     2305,  2308,  2312,  2316,  2318,  2323,  2328,  2332,  2338,  2347,
    702     2351,  2353,  2356,  2358,  2361,  2368,  2374,  2381,  2389,  2397,
    703     2399,  2402,  2405,  2407,  2410,  2413,  2417,  2421,  2423,  2428,
    704     2433,  2437,  2446,  2450,  2452,  2454,  2457,  2459,  2461,  2464,
    705     2468,  2471,  2475,  2478,  2482,  2486,  2489,  2494,  2498,  2501,
    706     2505,  2508,  2513,  2517,  2520,  2527,  2534,  2541,  2549,  2551,
    707     2554,  2556,  2558,  2560,  2563,  2567,  2570,  2574,  2577,  2581,
    708     2585,  2590,  2593,  2597,  2602,  2605,  2611,  2617,  2624,  2631,
    709     2632,  2634,  2635
     660     762,   777,   778,   780,   781,   783,   785,   789,   794,   802,
     661     803,   805,   809,   811,   815,   817,   819,   821,   825,   827,
     662     829,   831,   835,   836,   838,   842,   847,   849,   853,   855,
     663     857,   861,   865,   869,   873,   877,   880,   884,   891,   895,
     664     899,   904,   906,   909,   912,   916,   922,   931,   939,   947,
     665     953,   963,   966,   969,   975,   979,   985,   990,   994,   999,
     666    1004,  1012,  1016,  1020,  1024,  1028,  1033,  1040,  1042,  1044,
     667    1046,  1048,  1050,  1052,  1054,  1056,  1057,  1059,  1061,  1064,
     668    1066,  1068,  1070,  1072,  1074,  1076,  1078,  1079,  1085,  1087,
     669    1090,  1094,  1096,  1099,  1101,  1103,  1105,  1107,  1109,  1111,
     670    1113,  1115,  1117,  1119,  1121,  1123,  1125,  1127,  1129,  1131,
     671    1133,  1135,  1137,  1139,  1141,  1143,  1146,  1149,  1153,  1157,
     672    1159,  1163,  1165,  1168,  1171,  1174,  1179,  1184,  1189,  1194,
     673    1196,  1199,  1202,  1206,  1208,  1211,  1214,  1216,  1219,  1222,
     674    1226,  1228,  1231,  1234,  1236,  1238,  1243,  1246,  1252,  1260,
     675    1263,  1266,  1269,  1271,  1274,  1277,  1281,  1284,  1288,  1290,
     676    1293,  1297,  1300,  1303,  1308,  1309,  1311,  1314,  1317,  1319,
     677    1320,  1322,  1325,  1328,  1334,  1341,  1344,  1347,  1352,  1353,
     678    1356,  1357,  1359,  1361,  1363,  1369,  1375,  1381,  1383,  1389,
     679    1395,  1405,  1407,  1413,  1414,  1416,  1418,  1424,  1426,  1428,
     680    1434,  1440,  1442,  1446,  1450,  1455,  1457,  1459,  1461,  1463,
     681    1466,  1468,  1472,  1476,  1478,  1481,  1483,  1487,  1489,  1491,
     682    1493,  1495,  1497,  1499,  1501,  1503,  1505,  1507,  1509,  1512,
     683    1514,  1516,  1518,  1521,  1522,  1525,  1527,  1532,  1534,  1537,
     684    1541,  1546,  1549,  1552,  1554,  1557,  1559,  1562,  1568,  1574,
     685    1582,  1589,  1591,  1594,  1597,  1601,  1603,  1606,  1609,  1614,
     686    1617,  1622,  1623,  1628,  1631,  1633,  1635,  1637,  1638,  1641,
     687    1647,  1653,  1667,  1669,  1671,  1675,  1679,  1682,  1686,  1690,
     688    1693,  1698,  1700,  1707,  1717,  1718,  1730,  1732,  1736,  1740,
     689    1744,  1746,  1748,  1754,  1757,  1763,  1764,  1766,  1768,  1772,
     690    1773,  1775,  1777,  1779,  1781,  1782,  1789,  1792,  1794,  1797,
     691    1802,  1805,  1809,  1813,  1817,  1822,  1828,  1834,  1840,  1847,
     692    1849,  1851,  1853,  1857,  1858,  1864,  1865,  1867,  1869,  1872,
     693    1879,  1881,  1885,  1886,  1888,  1893,  1895,  1897,  1899,  1901,
     694    1904,  1906,  1909,  1912,  1914,  1918,  1921,  1925,  1929,  1932,
     695    1937,  1942,  1946,  1955,  1959,  1962,  1964,  1967,  1974,  1983,
     696    1987,  1990,  1994,  1998,  2003,  2008,  2012,  2014,  2016,  2018,
     697    2023,  2030,  2034,  2037,  2041,  2045,  2050,  2055,  2059,  2062,
     698    2064,  2067,  2070,  2072,  2076,  2079,  2083,  2087,  2090,  2095,
     699    2100,  2104,  2111,  2120,  2124,  2127,  2129,  2132,  2135,  2138,
     700    2142,  2146,  2149,  2154,  2159,  2163,  2170,  2179,  2183,  2186,
     701    2188,  2191,  2194,  2196,  2198,  2201,  2205,  2209,  2212,  2217,
     702    2224,  2233,  2235,  2238,  2241,  2243,  2246,  2249,  2253,  2257,
     703    2259,  2264,  2269,  2273,  2279,  2288,  2292,  2295,  2299,  2301,
     704    2307,  2313,  2320,  2327,  2329,  2332,  2335,  2337,  2340,  2343,
     705    2347,  2351,  2353,  2358,  2363,  2367,  2373,  2382,  2386,  2388,
     706    2391,  2393,  2396,  2403,  2409,  2416,  2424,  2432,  2434,  2437,
     707    2440,  2442,  2445,  2448,  2452,  2456,  2458,  2463,  2468,  2472,
     708    2481,  2485,  2487,  2489,  2492,  2494,  2496,  2499,  2503,  2506,
     709    2510,  2513,  2517,  2521,  2524,  2529,  2533,  2536,  2540,  2543,
     710    2548,  2552,  2555,  2562,  2569,  2576,  2584,  2586,  2589,  2591,
     711    2593,  2595,  2598,  2602,  2605,  2609,  2612,  2616,  2620,  2625,
     712    2628,  2632,  2637,  2640,  2646,  2652,  2659,  2666,  2667,  2669,
     713    2670
    710714};
    711715
     
    713717static const yytype_int16 yyrhs[] =
    714718{
    715      289,     0,    -1,    -1,    -1,    72,    -1,    73,    -1,    74,
     719     291,     0,    -1,    -1,    -1,    72,    -1,    73,    -1,    74,
    716720      -1,    65,    -1,    69,    -1,   132,    -1,    65,    -1,    69,
    717721      -1,    65,    -1,    76,    -1,    77,    -1,    75,    -1,   133,
    718       75,    -1,    65,    -1,   132,    -1,   128,    -1,   133,    -1,
    719      101,   160,   102,    -1,   101,   164,   102,    -1,   134,    -1,
    720      135,   103,   126,   155,   127,   104,    -1,   135,   101,   136,
    721      102,    -1,   135,   105,   131,    -1,   135,   105,   103,   126,
    722      138,   127,   104,    -1,   135,    78,   131,    -1,   135,    78,
    723      103,   126,   138,   127,   104,    -1,   135,    79,    -1,   135,
    724       80,    -1,   101,   262,   102,   106,   266,   359,   107,    -1,
    725      137,    -1,   136,   108,   137,    -1,    -1,   155,    -1,   131,
    726      109,   155,    -1,   103,   126,   155,   127,   104,   109,   155,
    727       -1,   103,   126,   155,   108,   158,   127,   104,   109,   155,
    728       -1,   139,    -1,   138,   108,   139,    -1,   131,    -1,   131,
    729      105,   139,    -1,   131,   105,   103,   126,   138,   127,   104,
    730       -1,   131,    78,   139,    -1,   131,    78,   103,   126,   138,
    731      127,   104,    -1,   135,    -1,    79,   140,    -1,    80,   140,
     722      75,    -1,    65,    -1,   132,    -1,   101,   160,   102,    -1,
     723     101,   164,   102,    -1,   134,    -1,   135,   103,   126,   155,
     724     127,   104,    -1,   135,   101,   136,   102,    -1,   135,   105,
     725     131,    -1,   135,   105,   103,   126,   138,   127,   104,    -1,
     726     135,    78,   131,    -1,   135,    78,   103,   126,   138,   127,
     727     104,    -1,   135,    79,    -1,   135,    80,    -1,   101,   264,
     728     102,   106,   268,   361,   107,    -1,   137,    -1,   136,   108,
     729     137,    -1,    -1,   155,    -1,   131,   109,   155,    -1,   103,
     730     126,   155,   127,   104,   109,   155,    -1,   103,   126,   155,
     731     108,   158,   127,   104,   109,   155,    -1,   139,    -1,   138,
     732     108,   139,    -1,   131,    -1,   131,   105,   139,    -1,   131,
     733     105,   103,   126,   138,   127,   104,    -1,   131,    78,   139,
     734      -1,   131,    78,   103,   126,   138,   127,   104,    -1,   135,
     735      -1,   128,    -1,   133,    -1,    79,   140,    -1,    80,   140,
    732736      -1,    38,   142,    -1,   141,   142,    -1,   110,   142,    -1,
    733      111,   142,    -1,    36,   140,    -1,    36,   101,   262,   102,
    734       -1,    69,    -1,    69,   101,   263,   102,    -1,    69,   101,
    735      137,   102,    -1,    59,   140,    -1,    59,   101,   262,   102,
     737     111,   142,    -1,    36,   140,    -1,    36,   101,   264,   102,
     738      -1,    69,    -1,    69,   101,   265,   102,    -1,    69,   101,
     739     137,   102,    -1,    59,   140,    -1,    59,   101,   264,   102,
    736740      -1,    87,   131,    -1,   112,    -1,   113,    -1,   114,    -1,
    737      115,    -1,   140,    -1,   101,   262,   102,   142,    -1,   101,
    738      262,   102,   157,    -1,   142,    -1,   143,   111,   142,    -1,
     741     115,    -1,   140,    -1,   101,   264,   102,   142,    -1,   101,
     742     264,   102,   157,    -1,   142,    -1,   143,   111,   142,    -1,
    739743     143,   116,   142,    -1,   143,   117,   142,    -1,   143,    -1,
    740744     144,   113,   143,    -1,   144,   114,   143,    -1,   144,    -1,
     
    748752     160,   109,   153,    -1,   152,   122,   109,   153,    -1,   152,
    749753     122,   160,   109,   157,    -1,   153,    -1,   153,    -1,   140,
    750      123,   155,    -1,   140,   159,   155,    -1,   157,   360,    -1,
     754     123,   155,    -1,   140,   159,   155,    -1,   157,   362,    -1,
    751755      -1,   155,    -1,   103,   104,    -1,   103,   126,   155,   127,
    752756     104,    -1,   103,   126,   108,   158,   127,   104,    -1,   103,
     
    757761     160,    -1,   163,    -1,   164,    -1,   168,    -1,   169,    -1,
    758762     181,    -1,   183,    -1,   184,    -1,   189,    -1,   131,   109,
    759      299,   162,    -1,   106,   107,    -1,   106,   126,   126,   198,
     763     301,   162,    -1,   106,   107,    -1,   106,   126,   126,   200,
    760764     165,   127,   107,    -1,   166,    -1,   165,   126,   166,    -1,
    761      201,    -1,    38,   201,    -1,   295,    -1,   162,   127,    -1,
     765     203,    -1,    38,   203,    -1,   297,    -1,   162,   127,    -1,
    762766     162,    -1,   167,   162,    -1,   161,   124,    -1,    39,   101,
    763767     160,   102,   162,    -1,    39,   101,   160,   102,   162,    40,
    764768     162,    -1,    41,   101,   160,   102,   174,    -1,    41,   101,
    765      160,   102,   106,   126,   194,   175,   107,    -1,    51,   101,
     769     160,   102,   106,   126,   196,   175,   107,    -1,    51,   101,
    766770     160,   102,   174,    -1,    51,   101,   160,   102,   106,   126,
    767      194,   177,   107,    -1,   154,    -1,   154,    89,   154,    -1,
    768      297,    -1,   170,    -1,   171,   108,   170,    -1,    42,   171,
     771     196,   177,   107,    -1,   154,    -1,   154,    89,   154,    -1,
     772     299,    -1,   170,    -1,   171,   108,   170,    -1,    42,   171,
    769773     109,    -1,    43,   109,    -1,   172,    -1,   173,   172,    -1,
    770774     173,   162,    -1,    -1,   176,    -1,   173,   167,    -1,   176,
     
    774778      45,   101,   160,   102,   162,    -1,    44,   162,    45,   101,
    775779     160,   102,   124,    -1,    46,   101,   126,   182,   102,   162,
    776       -1,   161,   127,   124,   161,   124,   161,    -1,   201,   161,
     780      -1,   161,   127,   124,   161,   124,   161,    -1,   203,   161,
    777781     124,   161,    -1,    49,   131,   124,    -1,    49,   111,   160,
    778782     124,    -1,    48,   124,    -1,    48,   131,   124,    -1,    47,
     
    783787     101,    89,   102,   164,    -1,    54,   101,   126,   126,   188,
    784788     127,   102,   164,   127,    -1,   186,    54,   101,   126,   126,
    785      188,   127,   102,   164,   127,    -1,    55,   164,    -1,   214,
    786       -1,   214,   296,    -1,   214,   344,    -1,   353,   131,    -1,
    787      353,    -1,    57,   215,   101,   154,   102,   124,    -1,    57,
    788      215,   101,   154,   109,   190,   102,   124,    -1,    57,   215,
    789      101,   154,   109,   190,   109,   190,   102,   124,    -1,    57,
    790      215,   101,   154,   109,   190,   109,   190,   109,   193,   102,
    791      124,    -1,    -1,   191,    -1,   192,    -1,   191,   108,   192,
    792       -1,    75,   101,   154,   102,    -1,    75,    -1,   193,   108,
    793       75,    -1,   127,    -1,   195,    -1,   201,    -1,   195,   126,
    794      201,    -1,   127,    -1,   197,    -1,   211,    -1,   197,   126,
    795      211,    -1,    -1,   199,    -1,    28,   200,   124,    -1,   199,
    796       28,   200,   124,    -1,   261,    -1,   200,   108,   261,    -1,
    797      202,    -1,   211,    -1,   203,   127,   124,    -1,   208,   127,
    798      124,    -1,   205,   127,   124,    -1,   280,   127,   124,    -1,
    799      283,   127,   124,    -1,   204,   264,    -1,   220,   204,   264,
    800       -1,   203,   127,   108,   126,   259,   264,    -1,   354,   259,
    801      298,    -1,   357,   259,   298,    -1,   216,   357,   259,   298,
    802       -1,   206,    -1,   216,   206,    -1,   220,   206,    -1,   220,
    803      216,   206,    -1,   205,   127,   108,   126,   259,    -1,   103,
    804      104,   259,   101,   126,   247,   127,   102,    -1,   357,   259,
    805      101,   126,   247,   127,   102,    -1,   207,   259,   101,   126,
    806      247,   127,   102,    -1,   103,   126,   249,   127,   104,    -1,
    807      103,   126,   249,   127,   108,   126,   250,   127,   104,    -1,
    808        3,   204,    -1,     3,   206,    -1,   208,   127,   108,   126,
    809      131,    -1,     3,   214,   296,    -1,   209,   127,   108,   126,
    810      296,    -1,   216,     3,   214,   296,    -1,   214,     3,   296,
    811       -1,   214,     3,   216,   296,    -1,     3,   131,   123,   155,
    812       -1,   210,   127,   108,   126,   131,   123,   155,    -1,   212,
    813      127,   124,    -1,   209,   127,   124,    -1,   210,   127,   124,
    814       -1,   229,   127,   124,    -1,   213,   296,   298,   264,    -1,
    815      212,   108,   299,   296,   298,   264,    -1,   225,    -1,   229,
    816       -1,   231,    -1,   270,    -1,   226,    -1,   230,    -1,   232,
    817       -1,   271,    -1,    -1,   216,    -1,   217,    -1,   216,   217,
    818       -1,   218,    -1,   301,    -1,    10,    -1,    12,    -1,    11,
    819       -1,    14,    -1,    60,    -1,    -1,    13,   101,   219,   273,
    820      102,    -1,   221,    -1,   216,   221,    -1,   220,   216,   221,
    821       -1,   222,    -1,   221,   222,    -1,   223,    -1,     5,    -1,
    822        7,    -1,     4,    -1,     6,    -1,     8,    -1,     9,    -1,
    823       62,    -1,    64,    -1,    16,    -1,    21,    -1,    20,    -1,
    824       18,    -1,    19,    -1,    17,    -1,    22,    -1,    23,    -1,
    825       15,    -1,    24,    -1,    25,    -1,    26,    -1,   226,    -1,
    826      220,   226,    -1,   225,   222,    -1,   225,   222,   216,    -1,
    827      225,   222,   226,    -1,   227,    -1,   215,   228,   215,    -1,
    828      224,    -1,   216,   224,    -1,   227,   217,    -1,   227,   224,
    829       -1,    27,   101,   263,   102,    -1,    27,   101,   160,   102,
    830       -1,    71,   101,   263,   102,    -1,    71,   101,   160,   102,
    831       -1,   230,    -1,   220,   230,    -1,   229,   222,    -1,   229,
    832      222,   216,    -1,   233,    -1,   216,   233,    -1,   230,   217,
    833       -1,   232,    -1,   220,   232,    -1,   231,   222,    -1,   231,
    834      222,   216,    -1,    67,    -1,   216,    67,    -1,   232,   217,
    835       -1,   234,    -1,   244,    -1,   235,   106,   236,   107,    -1,
    836      235,   261,    -1,   235,   261,   106,   236,   107,    -1,   235,
    837      101,   279,   102,   106,   236,   107,    -1,   235,   272,    -1,
    838       30,   299,    -1,    31,   299,    -1,   237,    -1,   236,   237,
    839       -1,   238,   124,    -1,    38,   238,   124,    -1,   239,   124,
    840       -1,    38,   239,   124,    -1,   353,    -1,   353,   261,    -1,
    841      238,   108,   261,    -1,   238,   108,    -1,   214,   240,    -1,
    842      239,   108,   299,   240,    -1,    -1,   242,    -1,   305,   241,
    843       -1,   318,   241,    -1,   344,    -1,    -1,   242,    -1,   109,
    844      154,    -1,    29,   299,    -1,   243,   106,   245,   359,   107,
    845       -1,   243,   261,   106,   245,   359,   107,    -1,   243,   261,
    846       -1,   261,   246,    -1,   245,   108,   261,   246,    -1,    -1,
    847      123,   154,    -1,    -1,   248,    -1,   250,    -1,   249,    -1,
    848      249,   127,   108,   126,   250,    -1,   250,   127,   108,   126,
    849       89,    -1,   249,   127,   108,   126,    89,    -1,   254,    -1,
    850      250,   127,   108,   126,   254,    -1,   249,   127,   108,   126,
    851      254,    -1,   249,   127,   108,   126,   250,   127,   108,   126,
    852      254,    -1,   255,    -1,   250,   127,   108,   126,   255,    -1,
    853       -1,   252,    -1,   253,    -1,   253,   127,   108,   126,    89,
    854       -1,   257,    -1,   256,    -1,   253,   127,   108,   126,   257,
    855       -1,   253,   127,   108,   126,   256,    -1,   256,    -1,   349,
    856      259,   360,    -1,   357,   259,   360,    -1,   216,   357,   259,
    857      360,    -1,   206,    -1,   257,    -1,   349,    -1,   357,    -1,
    858      216,   357,    -1,   358,    -1,   213,   323,   360,    -1,   213,
    859      327,   360,    -1,   213,    -1,   213,   338,    -1,   131,    -1,
    860      258,   108,   131,    -1,   129,    -1,    67,    -1,    68,    -1,
    861      130,    -1,    67,    -1,    68,    -1,   131,    -1,    67,    -1,
    862       68,    -1,   353,    -1,   214,    -1,   214,   344,    -1,   353,
    863       -1,   358,    -1,   214,    -1,   214,   332,    -1,    -1,   123,
    864      265,    -1,   155,    -1,   106,   266,   359,   107,    -1,   265,
    865       -1,   267,   265,    -1,   266,   108,   265,    -1,   266,   108,
    866      267,   265,    -1,   268,   109,    -1,   261,   109,    -1,   269,
    867       -1,   268,   269,    -1,   105,   261,    -1,   103,   126,   155,
    868      127,   104,    -1,   103,   126,   297,   127,   104,    -1,   103,
    869      126,   154,    89,   154,   127,   104,    -1,   105,   103,   126,
    870      138,   127,   104,    -1,   271,    -1,   220,   271,    -1,   270,
    871      222,    -1,   270,   222,   216,    -1,   272,    -1,   216,   272,
    872       -1,   271,   217,    -1,    68,   101,   279,   102,    -1,   274,
    873      360,    -1,   273,   108,   274,   360,    -1,    -1,   276,   261,
    874      275,   277,    -1,   214,   323,    -1,    32,    -1,    34,    -1,
    875       33,    -1,    -1,   277,   278,    -1,   121,   261,   101,   279,
    876      102,    -1,   121,   106,   126,   285,   107,    -1,   121,   101,
    877      126,   273,   127,   102,   106,   126,   285,   107,   101,   279,
    878      102,    -1,   263,    -1,   155,    -1,   279,   108,   263,    -1,
    879      279,   108,   155,    -1,    32,   281,    -1,   221,    32,   281,
    880       -1,   280,   108,   281,    -1,   282,   277,    -1,   282,   277,
    881      123,   263,    -1,   261,    -1,   260,   101,   126,   273,   127,
    882      102,    -1,    35,   261,   101,   126,   273,   127,   102,   106,
    883      107,    -1,    -1,    35,   261,   101,   126,   273,   127,   102,
    884      106,   284,   285,   107,    -1,   286,    -1,   285,   126,   286,
    885       -1,   287,   127,   124,    -1,   288,   127,   124,    -1,   204,
    886       -1,   206,    -1,   287,   127,   108,   126,   259,    -1,   214,
    887      296,    -1,   288,   127,   108,   126,   296,    -1,    -1,   290,
    888       -1,   292,    -1,   290,   126,   292,    -1,    -1,   290,    -1,
    889      201,    -1,   294,    -1,   189,    -1,    -1,     5,    75,   293,
    890      106,   291,   107,    -1,    38,   292,    -1,   295,    -1,   310,
    891      164,    -1,   314,   126,   196,   164,    -1,   205,   164,    -1,
    892      213,   310,   164,    -1,   216,   310,   164,    -1,   220,   310,
    893      164,    -1,   220,   216,   310,   164,    -1,   213,   314,   126,
    894      196,   164,    -1,   216,   314,   126,   196,   164,    -1,   220,
    895      314,   126,   196,   164,    -1,   220,   216,   314,   126,   196,
    896      164,    -1,   305,    -1,   310,    -1,   318,    -1,   154,   115,
    897      154,    -1,    -1,    57,   101,   133,   102,   299,    -1,    -1,
    898      300,    -1,   301,    -1,   300,   301,    -1,    37,   101,   101,
    899      302,   102,   102,    -1,   303,    -1,   302,   108,   303,    -1,
    900       -1,   304,    -1,   304,   101,   161,   102,    -1,   259,    -1,
    901      223,    -1,   224,    -1,   217,    -1,   306,   299,    -1,   307,
    902       -1,   308,   299,    -1,   309,   299,    -1,   129,    -1,   101,
    903      306,   102,    -1,   111,   305,    -1,   111,   216,   305,    -1,
    904      101,   307,   102,    -1,   306,   336,    -1,   101,   307,   102,
    905      336,    -1,   101,   308,   102,   337,    -1,   101,   308,   102,
    906       -1,   101,   307,   102,   101,   126,   251,   127,   102,    -1,
    907      101,   309,   102,    -1,   311,   299,    -1,   312,    -1,   313,
    908      299,    -1,   306,   101,   126,   251,   127,   102,    -1,   101,
    909      312,   102,   101,   126,   251,   127,   102,    -1,   101,   311,
    910      102,    -1,   111,   310,    -1,   111,   216,   310,    -1,   101,
    911      312,   102,    -1,   101,   312,   102,   336,    -1,   101,   313,
    912      102,   337,    -1,   101,   313,   102,    -1,   315,    -1,   316,
    913       -1,   317,    -1,   306,   101,   258,   102,    -1,   101,   316,
    914      102,   101,   258,   102,    -1,   101,   315,   102,    -1,   111,
    915      314,    -1,   111,   216,   314,    -1,   101,   316,   102,    -1,
    916      101,   316,   102,   336,    -1,   101,   317,   102,   337,    -1,
    917      101,   317,   102,    -1,   319,   299,    -1,   320,    -1,   321,
    918      299,    -1,   322,   299,    -1,   328,    -1,   101,   319,   102,
    919       -1,   111,   318,    -1,   111,   216,   318,    -1,   101,   320,
    920      102,    -1,   319,   336,    -1,   101,   320,   102,   336,    -1,
    921      101,   321,   102,   337,    -1,   101,   321,   102,    -1,   319,
    922      101,   126,   251,   127,   102,    -1,   101,   320,   102,   101,
    923      126,   251,   127,   102,    -1,   101,   322,   102,    -1,   306,
    924      299,    -1,   324,    -1,   325,   299,    -1,   326,   299,    -1,
    925      111,   323,    -1,   111,   216,   323,    -1,   101,   324,   102,
    926       -1,   306,   342,    -1,   101,   324,   102,   336,    -1,   101,
    927      325,   102,   337,    -1,   101,   325,   102,    -1,   306,   101,
    928      126,   251,   127,   102,    -1,   101,   324,   102,   101,   126,
    929      251,   127,   102,    -1,   101,   326,   102,    -1,   328,   299,
    930       -1,   329,    -1,   330,   299,    -1,   331,   299,    -1,    67,
    931       -1,    68,    -1,   111,   327,    -1,   111,   216,   327,    -1,
    932      101,   329,   102,    -1,   328,   342,    -1,   101,   329,   102,
    933      342,    -1,   328,   101,   126,   251,   127,   102,    -1,   101,
    934      329,   102,   101,   126,   251,   127,   102,    -1,   333,    -1,
    935      334,   299,    -1,   335,   299,    -1,   111,    -1,   111,   216,
    936       -1,   111,   332,    -1,   111,   216,   332,    -1,   101,   333,
    937      102,    -1,   336,    -1,   101,   333,   102,   336,    -1,   101,
    938      334,   102,   337,    -1,   101,   334,   102,    -1,   101,   126,
    939      251,   127,   102,    -1,   101,   333,   102,   101,   126,   251,
    940      127,   102,    -1,   101,   335,   102,    -1,   103,   104,    -1,
    941      103,   104,   337,    -1,   337,    -1,   103,   126,   155,   127,
    942      104,    -1,   103,   126,   111,   127,   104,    -1,   337,   103,
    943      126,   155,   127,   104,    -1,   337,   103,   126,   111,   127,
    944      104,    -1,   339,    -1,   340,   299,    -1,   341,   299,    -1,
    945      111,    -1,   111,   216,    -1,   111,   338,    -1,   111,   216,
    946      338,    -1,   101,   339,   102,    -1,   342,    -1,   101,   339,
    947      102,   342,    -1,   101,   340,   102,   337,    -1,   101,   340,
    948      102,    -1,   101,   126,   251,   127,   102,    -1,   101,   339,
    949      102,   101,   126,   251,   127,   102,    -1,   101,   341,   102,
    950       -1,   343,    -1,   343,   337,    -1,   337,    -1,   103,   104,
    951       -1,   103,   126,   216,   111,   127,   104,    -1,   103,   126,
    952      216,   127,   104,    -1,   103,   126,   216,   155,   127,   104,
    953       -1,   103,   126,     7,   215,   155,   127,   104,    -1,   103,
    954      126,   216,     7,   155,   127,   104,    -1,   345,    -1,   346,
    955      299,    -1,   347,   299,    -1,   111,    -1,   111,   216,    -1,
    956      111,   344,    -1,   111,   216,   344,    -1,   101,   345,   102,
    957       -1,   336,    -1,   101,   345,   102,   336,    -1,   101,   346,
    958      102,   337,    -1,   101,   346,   102,    -1,   101,   345,   102,
    959      101,   126,   251,   127,   102,    -1,   101,   347,   102,    -1,
    960      349,    -1,   357,    -1,   216,   357,    -1,   350,    -1,   351,
    961       -1,   111,   214,    -1,   216,   111,   214,    -1,   111,   358,
    962       -1,   216,   111,   358,    -1,   111,   348,    -1,   216,   111,
    963      348,    -1,   103,   104,   214,    -1,   352,   214,    -1,   103,
    964      104,   337,   214,    -1,   352,   337,   214,    -1,   337,   214,
    965       -1,   103,   104,   350,    -1,   352,   350,    -1,   103,   104,
    966      337,   350,    -1,   352,   337,   350,    -1,   337,   350,    -1,
    967      103,   126,   216,   111,   127,   104,    -1,   103,   126,   216,
    968      155,   127,   104,    -1,   103,   126,   220,   155,   127,   104,
    969       -1,   103,   126,   220,   216,   155,   127,   104,    -1,   357,
    970       -1,   216,   357,    -1,   354,    -1,   355,    -1,   356,    -1,
    971      111,   214,    -1,   216,   111,   214,    -1,   111,   358,    -1,
    972      216,   111,   358,    -1,   111,   353,    -1,   216,   111,   353,
    973       -1,   103,   104,   214,    -1,   103,   104,   337,   214,    -1,
    974      337,   214,    -1,   103,   104,   355,    -1,   103,   104,   337,
    975      355,    -1,   337,   355,    -1,   103,   126,   250,   127,   104,
    976       -1,   103,   104,   101,   247,   102,    -1,   357,   101,   126,
    977      247,   127,   102,    -1,   207,   101,   126,   247,   127,   102,
    978       -1,    -1,   108,    -1,    -1,   123,   155,    -1
     789     188,   127,   102,   164,   127,    -1,    55,   164,    -1,   216,
     790      -1,   216,   298,    -1,   216,   346,    -1,   355,   131,    -1,
     791     355,    -1,    57,   190,   101,   133,   102,   124,    -1,    57,
     792     190,   101,   133,   109,   191,   102,   124,    -1,    57,   190,
     793     101,   133,   109,   191,   109,   191,   102,   124,    -1,    57,
     794     190,   101,   133,   109,   191,   109,   191,   109,   194,   102,
     795     124,    -1,    57,   190,    49,   101,   133,   109,   109,   191,
     796     109,   194,   109,   195,   102,   124,    -1,    -1,    11,    -1,
     797      -1,   192,    -1,   193,    -1,   192,   108,   193,    -1,   133,
     798     101,   154,   102,    -1,   103,   154,   104,   133,   101,   154,
     799     102,    -1,    -1,   133,    -1,   194,   108,   133,    -1,   131,
     800      -1,   195,   108,   131,    -1,   127,    -1,   197,    -1,   203,
     801      -1,   197,   126,   203,    -1,   127,    -1,   199,    -1,   213,
     802      -1,   199,   126,   213,    -1,    -1,   201,    -1,    28,   202,
     803     124,    -1,   201,    28,   202,   124,    -1,   263,    -1,   202,
     804     108,   263,    -1,   204,    -1,   213,    -1,   205,   127,   124,
     805      -1,   210,   127,   124,    -1,   207,   127,   124,    -1,   282,
     806     127,   124,    -1,   285,   127,   124,    -1,   206,   266,    -1,
     807     222,   206,   266,    -1,   205,   127,   108,   126,   261,   266,
     808      -1,   356,   261,   300,    -1,   359,   261,   300,    -1,   218,
     809     359,   261,   300,    -1,   208,    -1,   218,   208,    -1,   222,
     810     208,    -1,   222,   218,   208,    -1,   207,   127,   108,   126,
     811     261,    -1,   103,   104,   261,   101,   126,   249,   127,   102,
     812      -1,   359,   261,   101,   126,   249,   127,   102,    -1,   209,
     813     261,   101,   126,   249,   127,   102,    -1,   103,   126,   251,
     814     127,   104,    -1,   103,   126,   251,   127,   108,   126,   252,
     815     127,   104,    -1,     3,   206,    -1,     3,   208,    -1,   210,
     816     127,   108,   126,   131,    -1,     3,   216,   298,    -1,   211,
     817     127,   108,   126,   298,    -1,   218,     3,   216,   298,    -1,
     818     216,     3,   298,    -1,   216,     3,   218,   298,    -1,     3,
     819     131,   123,   155,    -1,   212,   127,   108,   126,   131,   123,
     820     155,    -1,   214,   127,   124,    -1,   211,   127,   124,    -1,
     821     212,   127,   124,    -1,   231,   127,   124,    -1,   215,   298,
     822     300,   266,    -1,   214,   108,   301,   298,   300,   266,    -1,
     823     227,    -1,   231,    -1,   233,    -1,   272,    -1,   228,    -1,
     824     232,    -1,   234,    -1,   273,    -1,    -1,   218,    -1,   219,
     825      -1,   218,   219,    -1,   220,    -1,   303,    -1,    10,    -1,
     826      12,    -1,    11,    -1,    14,    -1,    60,    -1,    -1,    13,
     827     101,   221,   275,   102,    -1,   223,    -1,   218,   223,    -1,
     828     222,   218,   223,    -1,   224,    -1,   223,   224,    -1,   225,
     829      -1,     5,    -1,     7,    -1,     4,    -1,     6,    -1,     8,
     830      -1,     9,    -1,    62,    -1,    64,    -1,    16,    -1,    21,
     831      -1,    20,    -1,    18,    -1,    19,    -1,    17,    -1,    22,
     832      -1,    23,    -1,    15,    -1,    24,    -1,    25,    -1,    26,
     833      -1,   228,    -1,   222,   228,    -1,   227,   224,    -1,   227,
     834     224,   218,    -1,   227,   224,   228,    -1,   229,    -1,   217,
     835     230,   217,    -1,   226,    -1,   218,   226,    -1,   229,   219,
     836      -1,   229,   226,    -1,    27,   101,   265,   102,    -1,    27,
     837     101,   160,   102,    -1,    71,   101,   265,   102,    -1,    71,
     838     101,   160,   102,    -1,   232,    -1,   222,   232,    -1,   231,
     839     224,    -1,   231,   224,   218,    -1,   235,    -1,   218,   235,
     840      -1,   232,   219,    -1,   234,    -1,   222,   234,    -1,   233,
     841     224,    -1,   233,   224,   218,    -1,    67,    -1,   218,    67,
     842      -1,   234,   219,    -1,   236,    -1,   246,    -1,   237,   106,
     843     238,   107,    -1,   237,   263,    -1,   237,   263,   106,   238,
     844     107,    -1,   237,   101,   281,   102,   106,   238,   107,    -1,
     845     237,   274,    -1,    30,   301,    -1,    31,   301,    -1,   239,
     846      -1,   238,   239,    -1,   240,   124,    -1,    38,   240,   124,
     847      -1,   241,   124,    -1,    38,   241,   124,    -1,   355,    -1,
     848     355,   263,    -1,   240,   108,   263,    -1,   240,   108,    -1,
     849     216,   242,    -1,   241,   108,   301,   242,    -1,    -1,   244,
     850      -1,   307,   243,    -1,   320,   243,    -1,   346,    -1,    -1,
     851     244,    -1,   109,   154,    -1,    29,   301,    -1,   245,   106,
     852     247,   361,   107,    -1,   245,   263,   106,   247,   361,   107,
     853      -1,   245,   263,    -1,   263,   248,    -1,   247,   108,   263,
     854     248,    -1,    -1,   123,   154,    -1,    -1,   250,    -1,   252,
     855      -1,   251,    -1,   251,   127,   108,   126,   252,    -1,   252,
     856     127,   108,   126,    89,    -1,   251,   127,   108,   126,    89,
     857      -1,   256,    -1,   252,   127,   108,   126,   256,    -1,   251,
     858     127,   108,   126,   256,    -1,   251,   127,   108,   126,   252,
     859     127,   108,   126,   256,    -1,   257,    -1,   252,   127,   108,
     860     126,   257,    -1,    -1,   254,    -1,   255,    -1,   255,   127,
     861     108,   126,    89,    -1,   259,    -1,   258,    -1,   255,   127,
     862     108,   126,   259,    -1,   255,   127,   108,   126,   258,    -1,
     863     258,    -1,   351,   261,   362,    -1,   359,   261,   362,    -1,
     864     218,   359,   261,   362,    -1,   208,    -1,   259,    -1,   351,
     865      -1,   359,    -1,   218,   359,    -1,   360,    -1,   215,   325,
     866     362,    -1,   215,   329,   362,    -1,   215,    -1,   215,   340,
     867      -1,   131,    -1,   260,   108,   131,    -1,   129,    -1,    67,
     868      -1,    68,    -1,   130,    -1,    67,    -1,    68,    -1,   131,
     869      -1,    67,    -1,    68,    -1,   355,    -1,   216,    -1,   216,
     870     346,    -1,   355,    -1,   360,    -1,   216,    -1,   216,   334,
     871      -1,    -1,   123,   267,    -1,   155,    -1,   106,   268,   361,
     872     107,    -1,   267,    -1,   269,   267,    -1,   268,   108,   267,
     873      -1,   268,   108,   269,   267,    -1,   270,   109,    -1,   263,
     874     109,    -1,   271,    -1,   270,   271,    -1,    73,    -1,   105,
     875     263,    -1,   103,   126,   155,   127,   104,    -1,   103,   126,
     876     299,   127,   104,    -1,   103,   126,   154,    89,   154,   127,
     877     104,    -1,   105,   103,   126,   138,   127,   104,    -1,   273,
     878      -1,   222,   273,    -1,   272,   224,    -1,   272,   224,   218,
     879      -1,   274,    -1,   218,   274,    -1,   273,   219,    -1,    68,
     880     101,   281,   102,    -1,   276,   362,    -1,   275,   108,   276,
     881     362,    -1,    -1,   278,   263,   277,   279,    -1,   216,   325,
     882      -1,    32,    -1,    34,    -1,    33,    -1,    -1,   279,   280,
     883      -1,   121,   263,   101,   281,   102,    -1,   121,   106,   126,
     884     287,   107,    -1,   121,   101,   126,   275,   127,   102,   106,
     885     126,   287,   107,   101,   281,   102,    -1,   265,    -1,   155,
     886      -1,   281,   108,   265,    -1,   281,   108,   155,    -1,    32,
     887     283,    -1,   223,    32,   283,    -1,   282,   108,   283,    -1,
     888     284,   279,    -1,   284,   279,   123,   265,    -1,   263,    -1,
     889     262,   101,   126,   275,   127,   102,    -1,    35,   263,   101,
     890     126,   275,   127,   102,   106,   107,    -1,    -1,    35,   263,
     891     101,   126,   275,   127,   102,   106,   286,   287,   107,    -1,
     892     288,    -1,   287,   126,   288,    -1,   289,   127,   124,    -1,
     893     290,   127,   124,    -1,   206,    -1,   208,    -1,   289,   127,
     894     108,   126,   261,    -1,   216,   298,    -1,   290,   127,   108,
     895     126,   298,    -1,    -1,   292,    -1,   294,    -1,   292,   126,
     896     294,    -1,    -1,   292,    -1,   203,    -1,   296,    -1,   189,
     897      -1,    -1,     5,    75,   295,   106,   293,   107,    -1,    38,
     898     294,    -1,   297,    -1,   312,   164,    -1,   316,   126,   198,
     899     164,    -1,   207,   164,    -1,   215,   312,   164,    -1,   218,
     900     312,   164,    -1,   222,   312,   164,    -1,   222,   218,   312,
     901     164,    -1,   215,   316,   126,   198,   164,    -1,   218,   316,
     902     126,   198,   164,    -1,   222,   316,   126,   198,   164,    -1,
     903     222,   218,   316,   126,   198,   164,    -1,   307,    -1,   312,
     904      -1,   320,    -1,   154,   115,   154,    -1,    -1,    57,   101,
     905     133,   102,   301,    -1,    -1,   302,    -1,   303,    -1,   302,
     906     303,    -1,    37,   101,   101,   304,   102,   102,    -1,   305,
     907      -1,   304,   108,   305,    -1,    -1,   306,    -1,   306,   101,
     908     161,   102,    -1,   261,    -1,   225,    -1,   226,    -1,   219,
     909      -1,   308,   301,    -1,   309,    -1,   310,   301,    -1,   311,
     910     301,    -1,   129,    -1,   101,   308,   102,    -1,   111,   307,
     911      -1,   111,   218,   307,    -1,   101,   309,   102,    -1,   308,
     912     338,    -1,   101,   309,   102,   338,    -1,   101,   310,   102,
     913     339,    -1,   101,   310,   102,    -1,   101,   309,   102,   101,
     914     126,   253,   127,   102,    -1,   101,   311,   102,    -1,   313,
     915     301,    -1,   314,    -1,   315,   301,    -1,   308,   101,   126,
     916     253,   127,   102,    -1,   101,   314,   102,   101,   126,   253,
     917     127,   102,    -1,   101,   313,   102,    -1,   111,   312,    -1,
     918     111,   218,   312,    -1,   101,   314,   102,    -1,   101,   314,
     919     102,   338,    -1,   101,   315,   102,   339,    -1,   101,   315,
     920     102,    -1,   317,    -1,   318,    -1,   319,    -1,   308,   101,
     921     260,   102,    -1,   101,   318,   102,   101,   260,   102,    -1,
     922     101,   317,   102,    -1,   111,   316,    -1,   111,   218,   316,
     923      -1,   101,   318,   102,    -1,   101,   318,   102,   338,    -1,
     924     101,   319,   102,   339,    -1,   101,   319,   102,    -1,   321,
     925     301,    -1,   322,    -1,   323,   301,    -1,   324,   301,    -1,
     926     330,    -1,   101,   321,   102,    -1,   111,   320,    -1,   111,
     927     218,   320,    -1,   101,   322,   102,    -1,   321,   338,    -1,
     928     101,   322,   102,   338,    -1,   101,   323,   102,   339,    -1,
     929     101,   323,   102,    -1,   321,   101,   126,   253,   127,   102,
     930      -1,   101,   322,   102,   101,   126,   253,   127,   102,    -1,
     931     101,   324,   102,    -1,   308,   301,    -1,   326,    -1,   327,
     932     301,    -1,   328,   301,    -1,   111,   325,    -1,   111,   218,
     933     325,    -1,   101,   326,   102,    -1,   308,   344,    -1,   101,
     934     326,   102,   338,    -1,   101,   327,   102,   339,    -1,   101,
     935     327,   102,    -1,   308,   101,   126,   253,   127,   102,    -1,
     936     101,   326,   102,   101,   126,   253,   127,   102,    -1,   101,
     937     328,   102,    -1,   330,   301,    -1,   331,    -1,   332,   301,
     938      -1,   333,   301,    -1,    67,    -1,    68,    -1,   111,   329,
     939      -1,   111,   218,   329,    -1,   101,   331,   102,    -1,   330,
     940     344,    -1,   101,   331,   102,   344,    -1,   330,   101,   126,
     941     253,   127,   102,    -1,   101,   331,   102,   101,   126,   253,
     942     127,   102,    -1,   335,    -1,   336,   301,    -1,   337,   301,
     943      -1,   111,    -1,   111,   218,    -1,   111,   334,    -1,   111,
     944     218,   334,    -1,   101,   335,   102,    -1,   338,    -1,   101,
     945     335,   102,   338,    -1,   101,   336,   102,   339,    -1,   101,
     946     336,   102,    -1,   101,   126,   253,   127,   102,    -1,   101,
     947     335,   102,   101,   126,   253,   127,   102,    -1,   101,   337,
     948     102,    -1,   103,   104,    -1,   103,   104,   339,    -1,   339,
     949      -1,   103,   126,   155,   127,   104,    -1,   103,   126,   111,
     950     127,   104,    -1,   339,   103,   126,   155,   127,   104,    -1,
     951     339,   103,   126,   111,   127,   104,    -1,   341,    -1,   342,
     952     301,    -1,   343,   301,    -1,   111,    -1,   111,   218,    -1,
     953     111,   340,    -1,   111,   218,   340,    -1,   101,   341,   102,
     954      -1,   344,    -1,   101,   341,   102,   344,    -1,   101,   342,
     955     102,   339,    -1,   101,   342,   102,    -1,   101,   126,   253,
     956     127,   102,    -1,   101,   341,   102,   101,   126,   253,   127,
     957     102,    -1,   101,   343,   102,    -1,   345,    -1,   345,   339,
     958      -1,   339,    -1,   103,   104,    -1,   103,   126,   218,   111,
     959     127,   104,    -1,   103,   126,   218,   127,   104,    -1,   103,
     960     126,   218,   155,   127,   104,    -1,   103,   126,     7,   217,
     961     155,   127,   104,    -1,   103,   126,   218,     7,   155,   127,
     962     104,    -1,   347,    -1,   348,   301,    -1,   349,   301,    -1,
     963     111,    -1,   111,   218,    -1,   111,   346,    -1,   111,   218,
     964     346,    -1,   101,   347,   102,    -1,   338,    -1,   101,   347,
     965     102,   338,    -1,   101,   348,   102,   339,    -1,   101,   348,
     966     102,    -1,   101,   347,   102,   101,   126,   253,   127,   102,
     967      -1,   101,   349,   102,    -1,   351,    -1,   359,    -1,   218,
     968     359,    -1,   352,    -1,   353,    -1,   111,   216,    -1,   218,
     969     111,   216,    -1,   111,   360,    -1,   218,   111,   360,    -1,
     970     111,   350,    -1,   218,   111,   350,    -1,   103,   104,   216,
     971      -1,   354,   216,    -1,   103,   104,   339,   216,    -1,   354,
     972     339,   216,    -1,   339,   216,    -1,   103,   104,   352,    -1,
     973     354,   352,    -1,   103,   104,   339,   352,    -1,   354,   339,
     974     352,    -1,   339,   352,    -1,   103,   126,   218,   111,   127,
     975     104,    -1,   103,   126,   218,   155,   127,   104,    -1,   103,
     976     126,   222,   155,   127,   104,    -1,   103,   126,   222,   218,
     977     155,   127,   104,    -1,   359,    -1,   218,   359,    -1,   356,
     978      -1,   357,    -1,   358,    -1,   111,   216,    -1,   218,   111,
     979     216,    -1,   111,   360,    -1,   218,   111,   360,    -1,   111,
     980     355,    -1,   218,   111,   355,    -1,   103,   104,   216,    -1,
     981     103,   104,   339,   216,    -1,   339,   216,    -1,   103,   104,
     982     357,    -1,   103,   104,   339,   357,    -1,   339,   357,    -1,
     983     103,   126,   252,   127,   104,    -1,   103,   104,   101,   249,
     984     102,    -1,   359,   101,   126,   249,   127,   102,    -1,   209,
     985     101,   126,   249,   127,   102,    -1,    -1,   108,    -1,    -1,
     986     123,   155,    -1
    979987};
    980988
     
    982990static const yytype_uint16 yyrline[] =
    983991{
    984        0,   279,   279,   285,   294,   295,   296,   300,   301,   302,
    985      306,   307,   311,   315,   316,   320,   321,   327,   329,   331,
    986      333,   335,   337,   342,   343,   349,   351,   353,   354,   356,
    987      357,   359,   362,   367,   368,   374,   375,   376,   381,   383,
    988      388,   389,   393,   395,   397,   399,   401,   406,   407,   409,
    989      411,   413,   415,   417,   423,   425,   427,   429,   431,   433,
    990      435,   437,   442,   443,   444,   445,   449,   450,   452,   457,
    991      458,   460,   462,   467,   468,   470,   475,   476,   478,   483,
    992      484,   486,   488,   490,   495,   496,   498,   503,   504,   509,
    993      510,   515,   516,   521,   522,   527,   528,   533,   534,   536,
    994      538,   543,   548,   549,   551,   553,   559,   560,   566,   568,
    995      570,   572,   577,   578,   583,   584,   585,   586,   587,   588,
    996      589,   590,   591,   592,   596,   597,   603,   604,   610,   611,
    997      612,   613,   614,   615,   616,   617,   621,   626,   628,   638,
    998      639,   644,   646,   648,   650,   654,   655,   660,   665,   668,
    999      670,   672,   677,   679,   687,   688,   690,   694,   695,   700,
    1000      701,   706,   707,   711,   716,   717,   721,   723,   729,   730,
    1001      734,   736,   738,   740,   746,   747,   751,   752,   756,   758,
    1002      760,   765,   767,   772,   774,   778,   781,   785,   788,   792,
    1003      794,   796,   801,   803,   805,   814,   816,   818,   823,   825,
    1004      830,   843,   844,   849,   851,   856,   860,   862,   864,   866,
    1005      870,   872,   876,   877,   881,   885,   886,   892,   894,   898,
    1006      899,   904,   906,   910,   911,   915,   917,   921,   922,   926,
    1007      927,   931,   932,   947,   948,   949,   950,   951,   955,   960,
    1008      967,   977,   982,   987,   995,  1000,  1005,  1010,  1015,  1023,
    1009     1045,  1050,  1057,  1059,  1066,  1071,  1076,  1087,  1092,  1097,
    1010     1102,  1107,  1116,  1121,  1129,  1130,  1131,  1132,  1138,  1143,
    1011     1151,  1152,  1153,  1154,  1158,  1159,  1160,  1161,  1166,  1167,
    1012     1176,  1177,  1182,  1183,  1188,  1190,  1192,  1194,  1196,  1199,
    1013     1198,  1210,  1211,  1213,  1223,  1224,  1229,  1233,  1235,  1237,
    1014     1239,  1241,  1243,  1245,  1247,  1252,  1254,  1256,  1258,  1260,
    1015     1262,  1264,  1266,  1268,  1270,  1272,  1274,  1280,  1281,  1283,
    1016     1285,  1287,  1292,  1293,  1299,  1300,  1302,  1304,  1309,  1311,
    1017     1313,  1315,  1320,  1321,  1323,  1325,  1330,  1331,  1333,  1338,
    1018     1339,  1341,  1343,  1348,  1350,  1352,  1357,  1358,  1362,  1364,
    1019     1366,  1368,  1370,  1375,  1377,  1382,  1384,  1389,  1390,  1392,
    1020     1393,  1398,  1399,  1401,  1403,  1408,  1410,  1416,  1417,  1419,
    1021     1422,  1425,  1430,  1431,  1436,  1441,  1445,  1447,  1449,  1454,
    1022     1456,  1462,  1463,  1471,  1472,  1476,  1477,  1478,  1480,  1482,
    1023     1489,  1490,  1492,  1494,  1499,  1500,  1506,  1507,  1511,  1512,
    1024     1517,  1518,  1519,  1521,  1529,  1530,  1532,  1535,  1537,  1541,
    1025     1542,  1543,  1545,  1547,  1551,  1556,  1564,  1565,  1574,  1576,
    1026     1581,  1582,  1583,  1587,  1588,  1589,  1593,  1594,  1595,  1599,
    1027     1600,  1601,  1606,  1607,  1608,  1609,  1615,  1616,  1621,  1622,
    1028     1626,  1627,  1628,  1629,  1644,  1645,  1650,  1651,  1657,  1659,
    1029     1662,  1664,  1666,  1689,  1690,  1692,  1694,  1699,  1700,  1702,
    1030     1707,  1712,  1713,  1719,  1718,  1722,  1726,  1728,  1730,  1736,
    1031     1737,  1742,  1747,  1749,  1754,  1756,  1757,  1759,  1764,  1766,
    1032     1768,  1773,  1775,  1780,  1785,  1793,  1799,  1798,  1812,  1813,
    1033     1818,  1819,  1823,  1828,  1833,  1841,  1846,  1857,  1858,  1869,
    1034     1870,  1876,  1877,  1881,  1882,  1883,  1886,  1885,  1896,  1901,
    1035     1906,  1912,  1921,  1927,  1933,  1939,  1945,  1953,  1959,  1967,
    1036     1973,  1982,  1983,  1984,  1988,  1992,  1994,  1997,  1999,  2003,
    1037     2004,  2008,  2012,  2013,  2016,  2018,  2019,  2023,  2024,  2025,
    1038     2026,  2060,  2061,  2062,  2063,  2067,  2072,  2077,  2079,  2081,
    1039     2086,  2088,  2090,  2092,  2097,  2099,  2109,  2110,  2111,  2115,
    1040     2117,  2119,  2124,  2126,  2128,  2133,  2135,  2137,  2146,  2147,
    1041     2148,  2152,  2154,  2156,  2161,  2163,  2165,  2170,  2172,  2174,
    1042     2189,  2190,  2191,  2192,  2196,  2197,  2202,  2204,  2206,  2211,
    1043     2213,  2215,  2217,  2222,  2224,  2226,  2236,  2237,  2238,  2239,
    1044     2243,  2245,  2247,  2252,  2254,  2256,  2258,  2263,  2265,  2267,
    1045     2298,  2299,  2300,  2301,  2305,  2310,  2318,  2320,  2322,  2327,
    1046     2329,  2334,  2336,  2350,  2351,  2352,  2356,  2358,  2360,  2362,
    1047     2364,  2369,  2370,  2372,  2374,  2379,  2381,  2383,  2389,  2391,
    1048     2393,  2397,  2399,  2401,  2403,  2417,  2418,  2419,  2423,  2425,
    1049     2427,  2429,  2431,  2436,  2437,  2439,  2441,  2446,  2448,  2450,
    1050     2456,  2457,  2459,  2468,  2471,  2473,  2476,  2478,  2480,  2493,
    1051     2494,  2495,  2499,  2501,  2503,  2505,  2507,  2512,  2513,  2515,
    1052     2517,  2522,  2524,  2532,  2533,  2534,  2539,  2540,  2544,  2546,
    1053     2548,  2550,  2552,  2554,  2561,  2563,  2565,  2567,  2569,  2571,
    1054     2573,  2575,  2577,  2579,  2584,  2586,  2588,  2593,  2619,  2620,
    1055     2622,  2626,  2627,  2631,  2633,  2635,  2637,  2639,  2641,  2648,
    1056     2650,  2652,  2654,  2656,  2658,  2663,  2668,  2670,  2672,  2690,
    1057     2692,  2697,  2698
     992       0,   288,   288,   294,   303,   304,   305,   309,   310,   311,
     993     315,   316,   320,   324,   325,   329,   330,   336,   338,   340,
     994     342,   347,   348,   354,   356,   358,   359,   361,   362,   364,
     995     367,   372,   373,   379,   380,   381,   386,   388,   393,   394,
     996     398,   400,   402,   404,   406,   411,   414,   416,   418,   420,
     997     422,   424,   426,   428,   434,   436,   438,   440,   442,   444,
     998     446,   448,   453,   454,   455,   456,   460,   461,   463,   468,
     999     469,   471,   473,   478,   479,   481,   486,   487,   489,   494,
     1000     495,   497,   499,   501,   506,   507,   509,   514,   515,   520,
     1001     521,   526,   527,   532,   533,   538,   539,   544,   545,   547,
     1002     549,   554,   559,   560,   562,   564,   570,   571,   577,   579,
     1003     581,   583,   588,   589,   594,   595,   596,   597,   598,   599,
     1004     600,   601,   602,   603,   607,   608,   614,   615,   621,   622,
     1005     623,   624,   625,   626,   627,   628,   632,   639,   641,   651,
     1006     652,   657,   659,   661,   663,   667,   668,   673,   678,   681,
     1007     683,   685,   690,   692,   700,   701,   703,   707,   708,   713,
     1008     714,   719,   720,   724,   729,   730,   734,   736,   742,   743,
     1009     747,   749,   751,   753,   759,   760,   764,   765,   769,   771,
     1010     773,   778,   780,   785,   787,   791,   794,   798,   801,   805,
     1011     807,   809,   814,   816,   818,   827,   829,   831,   836,   838,
     1012     843,   856,   857,   862,   864,   869,   873,   875,   877,   879,
     1013     881,   887,   888,   894,   895,   899,   900,   905,   907,   913,
     1014     914,   916,   921,   923,   930,   932,   936,   937,   942,   944,
     1015     948,   949,   953,   955,   959,   960,   964,   965,   969,   970,
     1016     985,   986,   987,   988,   989,   993,   998,  1005,  1015,  1020,
     1017    1025,  1033,  1038,  1043,  1048,  1053,  1061,  1083,  1088,  1095,
     1018    1097,  1104,  1109,  1114,  1125,  1130,  1135,  1140,  1145,  1154,
     1019    1159,  1167,  1168,  1169,  1170,  1176,  1181,  1189,  1190,  1191,
     1020    1192,  1196,  1197,  1198,  1199,  1204,  1205,  1214,  1215,  1220,
     1021    1221,  1226,  1228,  1230,  1232,  1234,  1237,  1236,  1248,  1249,
     1022    1251,  1261,  1262,  1267,  1271,  1273,  1275,  1277,  1279,  1281,
     1023    1283,  1285,  1290,  1292,  1294,  1296,  1298,  1300,  1302,  1304,
     1024    1306,  1308,  1310,  1312,  1318,  1319,  1321,  1323,  1325,  1330,
     1025    1331,  1337,  1338,  1340,  1342,  1347,  1349,  1351,  1353,  1358,
     1026    1359,  1361,  1363,  1368,  1369,  1371,  1376,  1377,  1379,  1381,
     1027    1386,  1388,  1390,  1395,  1396,  1400,  1402,  1404,  1406,  1408,
     1028    1413,  1415,  1420,  1422,  1427,  1428,  1430,  1431,  1436,  1437,
     1029    1439,  1441,  1446,  1448,  1454,  1455,  1457,  1460,  1463,  1468,
     1030    1469,  1474,  1479,  1483,  1485,  1487,  1492,  1494,  1500,  1501,
     1031    1509,  1510,  1514,  1515,  1516,  1518,  1520,  1527,  1528,  1530,
     1032    1532,  1537,  1538,  1544,  1545,  1549,  1550,  1555,  1556,  1557,
     1033    1559,  1567,  1568,  1570,  1573,  1575,  1579,  1580,  1581,  1583,
     1034    1585,  1589,  1594,  1602,  1603,  1612,  1614,  1619,  1620,  1621,
     1035    1625,  1626,  1627,  1631,  1632,  1633,  1637,  1638,  1639,  1644,
     1036    1645,  1646,  1647,  1653,  1654,  1659,  1660,  1664,  1665,  1666,
     1037    1667,  1682,  1683,  1688,  1689,  1696,  1698,  1700,  1703,  1705,
     1038    1707,  1730,  1731,  1733,  1735,  1740,  1741,  1743,  1748,  1753,
     1039    1754,  1760,  1759,  1763,  1767,  1769,  1771,  1777,  1778,  1783,
     1040    1788,  1790,  1795,  1797,  1798,  1800,  1805,  1807,  1809,  1814,
     1041    1816,  1821,  1826,  1834,  1840,  1839,  1853,  1854,  1859,  1860,
     1042    1864,  1869,  1874,  1882,  1887,  1898,  1899,  1910,  1911,  1917,
     1043    1918,  1922,  1923,  1924,  1927,  1926,  1937,  1942,  1947,  1953,
     1044    1962,  1968,  1974,  1980,  1986,  1994,  2000,  2008,  2014,  2023,
     1045    2024,  2025,  2029,  2033,  2035,  2040,  2041,  2045,  2046,  2051,
     1046    2057,  2058,  2061,  2063,  2064,  2068,  2069,  2070,  2071,  2105,
     1047    2107,  2108,  2110,  2115,  2120,  2125,  2127,  2129,  2134,  2136,
     1048    2138,  2140,  2145,  2147,  2157,  2159,  2160,  2165,  2167,  2169,
     1049    2174,  2176,  2178,  2183,  2185,  2187,  2196,  2197,  2198,  2202,
     1050    2204,  2206,  2211,  2213,  2215,  2220,  2222,  2224,  2239,  2241,
     1051    2242,  2244,  2249,  2250,  2255,  2257,  2259,  2264,  2266,  2268,
     1052    2270,  2275,  2277,  2279,  2289,  2291,  2292,  2294,  2299,  2301,
     1053    2303,  2308,  2310,  2312,  2314,  2319,  2321,  2323,  2354,  2356,
     1054    2357,  2359,  2364,  2369,  2377,  2379,  2381,  2386,  2388,  2393,
     1055    2395,  2409,  2410,  2412,  2417,  2419,  2421,  2423,  2425,  2430,
     1056    2431,  2433,  2435,  2440,  2442,  2444,  2450,  2452,  2454,  2458,
     1057    2460,  2462,  2464,  2478,  2479,  2481,  2486,  2488,  2490,  2492,
     1058    2494,  2499,  2500,  2502,  2504,  2509,  2511,  2513,  2519,  2520,
     1059    2522,  2531,  2534,  2536,  2539,  2541,  2543,  2556,  2557,  2559,
     1060    2564,  2566,  2568,  2570,  2572,  2577,  2578,  2580,  2582,  2587,
     1061    2589,  2597,  2598,  2599,  2604,  2605,  2609,  2611,  2613,  2615,
     1062    2617,  2619,  2626,  2628,  2630,  2632,  2634,  2636,  2638,  2640,
     1063    2642,  2644,  2649,  2651,  2653,  2658,  2684,  2685,  2687,  2691,
     1064    2692,  2696,  2698,  2700,  2702,  2704,  2706,  2713,  2715,  2717,
     1065    2719,  2721,  2723,  2728,  2733,  2735,  2737,  2755,  2757,  2762,
     1066    2763
    10581067};
    10591068#endif
     
    11031112  "exception_statement", "handler_list", "handler_clause",
    11041113  "finally_clause", "exception_declaration", "asm_statement",
    1105   "asm_operands_opt", "asm_operands_list", "asm_operand",
    1106   "asm_clobbers_list", "declaration_list_opt", "declaration_list",
    1107   "old_declaration_list_opt", "old_declaration_list",
    1108   "label_declaration_opt", "label_declaration_list", "label_list",
    1109   "declaration", "new_declaration", "new_variable_declaration",
    1110   "new_variable_specifier", "new_function_declaration",
    1111   "new_function_specifier", "new_function_return",
    1112   "new_typedef_declaration", "typedef_declaration", "typedef_expression",
    1113   "old_declaration", "declaring_list", "declaration_specifier",
    1114   "type_specifier", "type_qualifier_list_opt", "type_qualifier_list",
    1115   "type_qualifier", "type_qualifier_name", "$@1",
     1114  "asm_volatile_opt", "asm_operands_opt", "asm_operands_list",
     1115  "asm_operand", "asm_clobbers_list_opt", "label_list",
     1116  "declaration_list_opt", "declaration_list", "old_declaration_list_opt",
     1117  "old_declaration_list", "local_label_declaration_opt",
     1118  "local_label_declaration_list", "local_label_list", "declaration",
     1119  "new_declaration", "new_variable_declaration", "new_variable_specifier",
     1120  "new_function_declaration", "new_function_specifier",
     1121  "new_function_return", "new_typedef_declaration", "typedef_declaration",
     1122  "typedef_expression", "old_declaration", "declaring_list",
     1123  "declaration_specifier", "type_specifier", "type_qualifier_list_opt",
     1124  "type_qualifier_list", "type_qualifier", "type_qualifier_name", "$@1",
    11161125  "declaration_qualifier_list", "storage_class_list", "storage_class",
    11171126  "storage_class_name", "basic_type_name", "basic_declaration_specifier",
     
    11971206       0,   125,   126,   127,   128,   128,   128,   129,   129,   129,
    11981207     130,   130,   131,   132,   132,   133,   133,   134,   134,   134,
    1199      134,   134,   134,   135,   135,   135,   135,   135,   135,   135,
    1200      135,   135,   135,   136,   136,   137,   137,   137,   137,   137,
    1201      138,   138,   139,   139,   139,   139,   139,   140,   140,   140,
     1208     134,   135,   135,   135,   135,   135,   135,   135,   135,   135,
     1209     135,   136,   136,   137,   137,   137,   137,   137,   138,   138,
     1210     139,   139,   139,   139,   139,   140,   140,   140,   140,   140,
    12021211     140,   140,   140,   140,   140,   140,   140,   140,   140,   140,
    12031212     140,   140,   141,   141,   141,   141,   142,   142,   142,   143,
     
    12161225     183,   183,   184,   184,   184,   185,   185,   185,   186,   186,
    12171226     187,   188,   188,   188,   188,   188,   189,   189,   189,   189,
    1218      190,   190,   191,   191,   192,   193,   193,   194,   194,   195,
    1219      195,   196,   196,   197,   197,   198,   198,   199,   199,   200,
    1220      200,   201,   201,   202,   202,   202,   202,   202,   203,   203,
    1221      203,   204,   204,   204,   205,   205,   205,   205,   205,   206,
    1222      206,   206,   207,   207,   208,   208,   208,   209,   209,   209,
    1223      209,   209,   210,   210,   211,   211,   211,   211,   212,   212,
    1224      213,   213,   213,   213,   214,   214,   214,   214,   215,   215,
    1225      216,   216,   217,   217,   218,   218,   218,   218,   218,   219,
    1226      218,   220,   220,   220,   221,   221,   222,   223,   223,   223,
    1227      223,   223,   223,   223,   223,   224,   224,   224,   224,   224,
    1228      224,   224,   224,   224,   224,   224,   224,   225,   225,   225,
    1229      225,   225,   226,   226,   227,   227,   227,   227,   228,   228,
    1230      228,   228,   229,   229,   229,   229,   230,   230,   230,   231,
    1231      231,   231,   231,   232,   232,   232,   233,   233,   234,   234,
    1232      234,   234,   234,   235,   235,   236,   236,   237,   237,   237,
    1233      237,   238,   238,   238,   238,   239,   239,   240,   240,   240,
    1234      240,   240,   241,   241,   242,   243,   244,   244,   244,   245,
    1235      245,   246,   246,   247,   247,   248,   248,   248,   248,   248,
    1236      249,   249,   249,   249,   250,   250,   251,   251,   252,   252,
    1237      253,   253,   253,   253,   254,   254,   254,   254,   254,   255,
    1238      255,   255,   255,   255,   256,   256,   257,   257,   258,   258,
    1239      259,   259,   259,   260,   260,   260,   261,   261,   261,   262,
    1240      262,   262,   263,   263,   263,   263,   264,   264,   265,   265,
    1241      266,   266,   266,   266,   267,   267,   268,   268,   269,   269,
    1242      269,   269,   269,   270,   270,   270,   270,   271,   271,   271,
    1243      272,   273,   273,   275,   274,   274,   276,   276,   276,   277,
    1244      277,   278,   278,   278,   279,   279,   279,   279,   280,   280,
    1245      280,   281,   281,   282,   282,   283,   284,   283,   285,   285,
    1246      286,   286,   287,   287,   287,   288,   288,   289,   289,   290,
    1247      290,   291,   291,   292,   292,   292,   293,   292,   292,   294,
    1248      294,   294,   295,   295,   295,   295,   295,   295,   295,   295,
    1249      295,   296,   296,   296,   297,   298,   298,   299,   299,   300,
    1250      300,   301,   302,   302,   303,   303,   303,   304,   304,   304,
    1251      304,   305,   305,   305,   305,   306,   306,   307,   307,   307,
    1252      308,   308,   308,   308,   309,   309,   310,   310,   310,   311,
    1253      311,   311,   312,   312,   312,   313,   313,   313,   314,   314,
    1254      314,   315,   315,   315,   316,   316,   316,   317,   317,   317,
    1255      318,   318,   318,   318,   319,   319,   320,   320,   320,   321,
    1256      321,   321,   321,   322,   322,   322,   323,   323,   323,   323,
    1257      324,   324,   324,   325,   325,   325,   325,   326,   326,   326,
    1258      327,   327,   327,   327,   328,   328,   329,   329,   329,   330,
    1259      330,   331,   331,   332,   332,   332,   333,   333,   333,   333,
    1260      333,   334,   334,   334,   334,   335,   335,   335,   336,   336,
    1261      336,   337,   337,   337,   337,   338,   338,   338,   339,   339,
    1262      339,   339,   339,   340,   340,   340,   340,   341,   341,   341,
    1263      342,   342,   342,   343,   343,   343,   343,   343,   343,   344,
    1264      344,   344,   345,   345,   345,   345,   345,   346,   346,   346,
    1265      346,   347,   347,   348,   348,   348,   349,   349,   350,   350,
    1266      350,   350,   350,   350,   351,   351,   351,   351,   351,   351,
    1267      351,   351,   351,   351,   352,   352,   352,   352,   353,   353,
    1268      353,   354,   354,   355,   355,   355,   355,   355,   355,   356,
    1269      356,   356,   356,   356,   356,   357,   358,   358,   358,   359,
    1270      359,   360,   360
     1227     189,   190,   190,   191,   191,   192,   192,   193,   193,   194,
     1228     194,   194,   195,   195,   196,   196,   197,   197,   198,   198,
     1229     199,   199,   200,   200,   201,   201,   202,   202,   203,   203,
     1230     204,   204,   204,   204,   204,   205,   205,   205,   206,   206,
     1231     206,   207,   207,   207,   207,   207,   208,   208,   208,   209,
     1232     209,   210,   210,   210,   211,   211,   211,   211,   211,   212,
     1233     212,   213,   213,   213,   213,   214,   214,   215,   215,   215,
     1234     215,   216,   216,   216,   216,   217,   217,   218,   218,   219,
     1235     219,   220,   220,   220,   220,   220,   221,   220,   222,   222,
     1236     222,   223,   223,   224,   225,   225,   225,   225,   225,   225,
     1237     225,   225,   226,   226,   226,   226,   226,   226,   226,   226,
     1238     226,   226,   226,   226,   227,   227,   227,   227,   227,   228,
     1239     228,   229,   229,   229,   229,   230,   230,   230,   230,   231,
     1240     231,   231,   231,   232,   232,   232,   233,   233,   233,   233,
     1241     234,   234,   234,   235,   235,   236,   236,   236,   236,   236,
     1242     237,   237,   238,   238,   239,   239,   239,   239,   240,   240,
     1243     240,   240,   241,   241,   242,   242,   242,   242,   242,   243,
     1244     243,   244,   245,   246,   246,   246,   247,   247,   248,   248,
     1245     249,   249,   250,   250,   250,   250,   250,   251,   251,   251,
     1246     251,   252,   252,   253,   253,   254,   254,   255,   255,   255,
     1247     255,   256,   256,   256,   256,   256,   257,   257,   257,   257,
     1248     257,   258,   258,   259,   259,   260,   260,   261,   261,   261,
     1249     262,   262,   262,   263,   263,   263,   264,   264,   264,   265,
     1250     265,   265,   265,   266,   266,   267,   267,   268,   268,   268,
     1251     268,   269,   269,   270,   270,   271,   271,   271,   271,   271,
     1252     271,   272,   272,   272,   272,   273,   273,   273,   274,   275,
     1253     275,   277,   276,   276,   278,   278,   278,   279,   279,   280,
     1254     280,   280,   281,   281,   281,   281,   282,   282,   282,   283,
     1255     283,   284,   284,   285,   286,   285,   287,   287,   288,   288,
     1256     289,   289,   289,   290,   290,   291,   291,   292,   292,   293,
     1257     293,   294,   294,   294,   295,   294,   294,   296,   296,   296,
     1258     297,   297,   297,   297,   297,   297,   297,   297,   297,   298,
     1259     298,   298,   299,   300,   300,   301,   301,   302,   302,   303,
     1260     304,   304,   305,   305,   305,   306,   306,   306,   306,   307,
     1261     307,   307,   307,   308,   308,   309,   309,   309,   310,   310,
     1262     310,   310,   311,   311,   312,   312,   312,   313,   313,   313,
     1263     314,   314,   314,   315,   315,   315,   316,   316,   316,   317,
     1264     317,   317,   318,   318,   318,   319,   319,   319,   320,   320,
     1265     320,   320,   321,   321,   322,   322,   322,   323,   323,   323,
     1266     323,   324,   324,   324,   325,   325,   325,   325,   326,   326,
     1267     326,   327,   327,   327,   327,   328,   328,   328,   329,   329,
     1268     329,   329,   330,   330,   331,   331,   331,   332,   332,   333,
     1269     333,   334,   334,   334,   335,   335,   335,   335,   335,   336,
     1270     336,   336,   336,   337,   337,   337,   338,   338,   338,   339,
     1271     339,   339,   339,   340,   340,   340,   341,   341,   341,   341,
     1272     341,   342,   342,   342,   342,   343,   343,   343,   344,   344,
     1273     344,   345,   345,   345,   345,   345,   345,   346,   346,   346,
     1274     347,   347,   347,   347,   347,   348,   348,   348,   348,   349,
     1275     349,   350,   350,   350,   351,   351,   352,   352,   352,   352,
     1276     352,   352,   353,   353,   353,   353,   353,   353,   353,   353,
     1277     353,   353,   354,   354,   354,   354,   355,   355,   355,   356,
     1278     356,   357,   357,   357,   357,   357,   357,   358,   358,   358,
     1279     358,   358,   358,   359,   360,   360,   360,   361,   361,   362,
     1280     362
    12711281};
    12721282
     
    12751285{
    12761286       0,     2,     0,     0,     1,     1,     1,     1,     1,     1,
    1277        1,     1,     1,     1,     1,     1,     2,     1,     1,     1,
    1278        1,     3,     3,     1,     6,     4,     3,     7,     3,     7,
    1279        2,     2,     7,     1,     3,     0,     1,     3,     7,     9,
    1280        1,     3,     1,     3,     7,     3,     7,     1,     2,     2,
     1287       1,     1,     1,     1,     1,     1,     2,     1,     1,     3,
     1288       3,     1,     6,     4,     3,     7,     3,     7,     2,     2,
     1289       7,     1,     3,     0,     1,     3,     7,     9,     1,     3,
     1290       1,     3,     7,     3,     7,     1,     1,     1,     2,     2,
    12811291       2,     2,     2,     2,     2,     4,     1,     4,     4,     2,
    12821292       4,     2,     1,     1,     1,     1,     1,     4,     4,     1,
     
    12951305       3,     2,     3,     3,     4,     1,     5,     6,     9,    10,
    12961306       2,     1,     2,     2,     2,     1,     6,     8,    10,    12,
    1297        0,     1,     1,     3,     4,     1,     3,     1,     1,     1,
    1298        3,     1,     1,     1,     3,     0,     1,     3,     4,     1,
    1299        3,     1,     1,     3,     3,     3,     3,     3,     2,     3,
    1300        6,     3,     3,     4,     1,     2,     2,     3,     5,     8,
    1301        7,     7,     5,     9,     2,     2,     5,     3,     5,     4,
    1302        3,     4,     4,     7,     3,     3,     3,     3,     4,     6,
    1303        1,     1,     1,     1,     1,     1,     1,     1,     0,     1,
    1304        1,     2,     1,     1,     1,     1,     1,     1,     1,     0,
    1305        5,     1,     2,     3,     1,     2,     1,     1,     1,     1,
     1307      14,     0,     1,     0,     1,     1,     3,     4,     7,     0,
     1308       1,     3,     1,     3,     1,     1,     1,     3,     1,     1,
     1309       1,     3,     0,     1,     3,     4,     1,     3,     1,     1,
     1310       3,     3,     3,     3,     3,     2,     3,     6,     3,     3,
     1311       4,     1,     2,     2,     3,     5,     8,     7,     7,     5,
     1312       9,     2,     2,     5,     3,     5,     4,     3,     4,     4,
     1313       7,     3,     3,     3,     3,     4,     6,     1,     1,     1,
     1314       1,     1,     1,     1,     1,     0,     1,     1,     2,     1,
     1315       1,     1,     1,     1,     1,     1,     0,     5,     1,     2,
     1316       3,     1,     2,     1,     1,     1,     1,     1,     1,     1,
    13061317       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
    1307        1,     1,     1,     1,     1,     1,     1,     1,     2,     2,
    1308        3,     3,     1,     3,     1,     2,     2,     2,     4,     4,
    1309        4,     4,     1,     2,     2,     3,     1,     2,     2,     1,
    1310        2,     2,     3,     1,     2,     2,     1,     1,     4,     2,
    1311        5,     7,     2,     2,     2,     1,     2,     2,     3,     2,
    1312        3,     1,     2,     3,     2,     2,     4,     0,     1,     2,
    1313        2,     1,     0,     1,     2,     2,     5,     6,     2,     2,
    1314        4,     0,     2,     0,     1,     1,     1,     5,     5,     5,
    1315        1,     5,     5,     9,     1,     5,     0,     1,     1,     5,
    1316        1,     1,     5,     5,     1,     3,     3,     4,     1,     1,
    1317        1,     1,     2,     1,     3,     3,     1,     2,     1,     3,
    1318        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
    1319        1,     2,     1,     1,     1,     2,     0,     2,     1,     4,
    1320        1,     2,     3,     4,     2,     2,     1,     2,     2,     5,
    1321        5,     7,     6,     1,     2,     2,     3,     1,     2,     2,
    1322        4,     2,     4,     0,     4,     2,     1,     1,     1,     0,
    1323        2,     5,     5,    13,     1,     1,     3,     3,     2,     3,
    1324        3,     2,     4,     1,     6,     9,     0,    11,     1,     3,
    1325        3,     3,     1,     1,     5,     2,     5,     0,     1,     1,
    1326        3,     0,     1,     1,     1,     1,     0,     6,     2,     1,
    1327        2,     4,     2,     3,     3,     3,     4,     5,     5,     5,
    1328        6,     1,     1,     1,     3,     0,     5,     0,     1,     1,
    1329        2,     6,     1,     3,     0,     1,     4,     1,     1,     1,
    1330        1,     2,     1,     2,     2,     1,     3,     2,     3,     3,
    1331        2,     4,     4,     3,     8,     3,     2,     1,     2,     6,
    1332        8,     3,     2,     3,     3,     4,     4,     3,     1,     1,
    1333        1,     4,     6,     3,     2,     3,     3,     4,     4,     3,
    1334        2,     1,     2,     2,     1,     3,     2,     3,     3,     2,
    1335        4,     4,     3,     6,     8,     3,     2,     1,     2,     2,
    1336        2,     3,     3,     2,     4,     4,     3,     6,     8,     3,
    1337        2,     1,     2,     2,     1,     1,     2,     3,     3,     2,
    1338        4,     6,     8,     1,     2,     2,     1,     2,     2,     3,
    1339        3,     1,     4,     4,     3,     5,     8,     3,     2,     3,
    1340        1,     5,     5,     6,     6,     1,     2,     2,     1,     2,
    1341        2,     3,     3,     1,     4,     4,     3,     5,     8,     3,
    1342        1,     2,     1,     2,     6,     5,     6,     7,     7,     1,
    1343        2,     2,     1,     2,     2,     3,     3,     1,     4,     4,
    1344        3,     8,     3,     1,     1,     2,     1,     1,     2,     3,
    1345        2,     3,     2,     3,     3,     2,     4,     3,     2,     3,
    1346        2,     4,     3,     2,     6,     6,     6,     7,     1,     2,
    1347        1,     1,     1,     2,     3,     2,     3,     2,     3,     3,
    1348        4,     2,     3,     4,     2,     5,     5,     6,     6,     0,
    1349        1,     0,     2
     1318       1,     1,     1,     1,     1,     2,     2,     3,     3,     1,
     1319       3,     1,     2,     2,     2,     4,     4,     4,     4,     1,
     1320       2,     2,     3,     1,     2,     2,     1,     2,     2,     3,
     1321       1,     2,     2,     1,     1,     4,     2,     5,     7,     2,
     1322       2,     2,     1,     2,     2,     3,     2,     3,     1,     2,
     1323       3,     2,     2,     4,     0,     1,     2,     2,     1,     0,
     1324       1,     2,     2,     5,     6,     2,     2,     4,     0,     2,
     1325       0,     1,     1,     1,     5,     5,     5,     1,     5,     5,
     1326       9,     1,     5,     0,     1,     1,     5,     1,     1,     5,
     1327       5,     1,     3,     3,     4,     1,     1,     1,     1,     2,
     1328       1,     3,     3,     1,     2,     1,     3,     1,     1,     1,
     1329       1,     1,     1,     1,     1,     1,     1,     1,     2,     1,
     1330       1,     1,     2,     0,     2,     1,     4,     1,     2,     3,
     1331       4,     2,     2,     1,     2,     1,     2,     5,     5,     7,
     1332       6,     1,     2,     2,     3,     1,     2,     2,     4,     2,
     1333       4,     0,     4,     2,     1,     1,     1,     0,     2,     5,
     1334       5,    13,     1,     1,     3,     3,     2,     3,     3,     2,
     1335       4,     1,     6,     9,     0,    11,     1,     3,     3,     3,
     1336       1,     1,     5,     2,     5,     0,     1,     1,     3,     0,
     1337       1,     1,     1,     1,     0,     6,     2,     1,     2,     4,
     1338       2,     3,     3,     3,     4,     5,     5,     5,     6,     1,
     1339       1,     1,     3,     0,     5,     0,     1,     1,     2,     6,
     1340       1,     3,     0,     1,     4,     1,     1,     1,     1,     2,
     1341       1,     2,     2,     1,     3,     2,     3,     3,     2,     4,
     1342       4,     3,     8,     3,     2,     1,     2,     6,     8,     3,
     1343       2,     3,     3,     4,     4,     3,     1,     1,     1,     4,
     1344       6,     3,     2,     3,     3,     4,     4,     3,     2,     1,
     1345       2,     2,     1,     3,     2,     3,     3,     2,     4,     4,
     1346       3,     6,     8,     3,     2,     1,     2,     2,     2,     3,
     1347       3,     2,     4,     4,     3,     6,     8,     3,     2,     1,
     1348       2,     2,     1,     1,     2,     3,     3,     2,     4,     6,
     1349       8,     1,     2,     2,     1,     2,     2,     3,     3,     1,
     1350       4,     4,     3,     5,     8,     3,     2,     3,     1,     5,
     1351       5,     6,     6,     1,     2,     2,     1,     2,     2,     3,
     1352       3,     1,     4,     4,     3,     5,     8,     3,     1,     2,
     1353       1,     2,     6,     5,     6,     7,     7,     1,     2,     2,
     1354       1,     2,     2,     3,     3,     1,     4,     4,     3,     8,
     1355       3,     1,     1,     2,     1,     1,     2,     3,     2,     3,
     1356       2,     3,     3,     2,     4,     3,     2,     3,     2,     4,
     1357       3,     2,     6,     6,     6,     7,     1,     2,     1,     1,
     1358       1,     2,     3,     2,     3,     2,     3,     3,     4,     2,
     1359       3,     4,     2,     5,     5,     6,     6,     0,     1,     0,
     1360       2
    13501361};
    13511362
     
    13551366static const yytype_uint16 yydefact[] =
    13561367{
    1357      278,   278,   299,   297,   300,   298,   301,   302,   284,   286,
    1358      285,     0,   287,   313,   305,   310,   308,   309,   307,   306,
    1359      311,   312,   314,   315,   316,   527,   527,   527,     0,     0,
    1360        0,   278,   278,   288,   303,   304,     7,   343,     0,     8,
    1361       13,    14,     0,     2,   278,   545,     9,   505,   503,   231,
    1362        3,   436,     3,   244,     0,     3,     3,     3,   232,     3,
    1363        0,     0,     0,   279,   280,   282,   278,   291,   294,   296,
    1364      324,   270,   317,   322,   271,   332,   272,   339,   336,   346,
    1365        0,     0,   347,   273,   453,   457,     3,     3,     0,     2,
    1366      499,   504,   509,   283,     0,     0,   527,   557,   527,     2,
    1367      568,   569,   570,   278,     0,   711,   712,     0,    12,   278,
    1368        0,   254,   255,     0,   279,   274,   275,   276,   277,   506,
    1369      289,   375,   528,   529,   353,   354,    12,   427,   428,    11,
    1370      423,   426,     0,   483,   478,   469,   427,   428,     0,     0,
    1371      508,     0,   279,   278,     0,     0,     0,     0,     0,     0,
    1372        0,     0,   278,   278,     2,     0,   713,   279,   562,   574,
    1373      717,   710,   708,   715,     0,     0,   238,     2,     0,   512,
    1374      421,   422,   420,     0,     0,     0,     0,   527,     0,   614,
    1375      615,     0,     0,   525,   521,   527,   542,   527,   527,   522,
    1376        2,   523,   527,   581,   527,   527,   584,     0,     0,     0,
    1377      278,   278,   297,   344,     2,   278,   245,   281,   292,   325,
    1378      337,   458,     0,     2,     0,   436,   246,   279,   318,   333,
    1379      340,   454,     0,     2,     0,   295,   319,   326,   327,     0,
    1380      334,   338,   341,   345,   428,   278,   278,   349,   352,     0,
    1381      378,   455,   459,     0,     0,     0,     1,   278,     2,   510,
    1382      556,   558,   278,     2,   721,   279,   724,   525,   525,   279,
    1383        0,     0,     0,   257,   527,   522,     2,   278,     0,     0,
    1384      278,   530,     2,   481,     2,   534,     0,     0,     0,     0,
    1385       17,    56,     4,     5,     6,    15,     0,     0,     0,   278,
    1386        2,     0,   278,    62,    63,    64,    65,    19,    18,    20,
    1387       23,    47,    66,     0,    69,    73,    76,    79,    84,    87,
    1388       89,    91,    93,    95,    97,   102,   475,   731,   434,   474,
    1389        0,   432,   433,     0,   546,   561,   564,   567,   573,   576,
    1390      579,   343,     0,     2,   719,     0,   278,   722,     2,   278,
    1391        3,   408,     0,   416,   279,   278,   291,   317,   271,   332,
    1392      339,     3,     3,   390,   394,   404,   409,   453,   278,   410,
    1393      686,   687,   278,   411,   413,   278,     2,   563,   575,   709,
    1394        2,     2,   233,     2,     0,     0,   438,   437,   137,     2,
    1395        2,   235,     2,     2,   234,     2,   265,     2,   266,     0,
    1396      264,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    1397      547,   586,     0,   436,     2,   541,   550,   640,   543,   544,
    1398      513,   278,     2,   580,   589,   582,   583,     0,   260,   278,
    1399      278,   323,     0,   279,     0,   278,   714,   718,   716,   514,
    1400      278,   525,   239,   247,   293,     0,     2,   515,   278,   479,
    1401      320,   321,   267,   335,   342,     0,   278,     2,   367,   278,
    1402      355,     0,     0,   361,   708,   278,   729,   381,     0,   456,
    1403      480,   236,   237,   500,   278,   418,     0,   278,   221,     0,
    1404        2,   223,     0,   279,     0,   241,     2,   242,   262,     0,
    1405        0,     2,   278,   525,   278,   466,   468,   467,     0,     0,
    1406      731,     0,   278,     0,   278,   470,   278,   540,   538,   539,
    1407      537,     0,   532,   535,    66,   101,     0,   278,    54,    50,
    1408      278,    59,   278,   278,    48,    49,    61,     2,   124,     0,
    1409        0,   430,     0,   429,   108,   278,    52,    53,    16,     0,
    1410       30,    31,    35,     2,     0,   114,   115,   116,   117,   118,
    1411      119,   120,   121,   122,   123,     0,     0,    51,     0,     0,
     1368     285,   285,   306,   304,   307,   305,   308,   309,   291,   293,
     1369     292,     0,   294,   320,   312,   317,   315,   316,   314,   313,
     1370     318,   319,   321,   322,   323,   535,   535,   535,     0,     0,
     1371       0,   285,   211,   295,   310,   311,     7,   350,     0,     8,
     1372      13,    14,     0,     2,   285,   553,     9,   513,   511,   238,
     1373       3,   443,     3,   251,     0,     3,     3,     3,   239,     3,
     1374       0,     0,     0,   286,   287,   289,   285,   298,   301,   303,
     1375     331,   277,   324,   329,   278,   339,   279,   346,   343,   353,
     1376       0,     0,   354,   280,   461,   465,     3,     3,     0,     2,
     1377     507,   512,   517,   290,     0,     0,   535,   565,   535,     2,
     1378     576,   577,   578,   285,     0,   719,   720,     0,    12,   285,
     1379       0,   261,   262,     0,   286,   281,   282,   283,   284,   514,
     1380     296,   382,   536,   537,   360,   361,    12,   434,   435,    11,
     1381     430,   433,     0,   491,   486,   477,   434,   435,     0,     0,
     1382     516,   212,     0,   285,     0,     0,     0,     0,     0,     0,
     1383       0,     0,   285,   285,     2,     0,   721,   286,   570,   582,
     1384     725,   718,   716,   723,     0,     0,   245,     2,     0,   520,
     1385     428,   429,   427,     0,     0,     0,     0,   535,     0,   622,
     1386     623,     0,     0,   533,   529,   535,   550,   535,   535,   530,
     1387       2,   531,   535,   589,   535,   535,   592,     0,     0,     0,
     1388     285,   285,   304,   351,     2,   285,   252,   288,   299,   332,
     1389     344,   466,     0,     2,     0,   443,   253,   286,   325,   340,
     1390     347,   462,     0,     2,     0,   302,   326,   333,   334,     0,
     1391     341,   345,   348,   352,   435,   285,   285,   356,   359,     0,
     1392     385,   463,   467,     0,     0,     0,     1,   285,     2,   518,
     1393     564,   566,   285,     2,   729,   286,   732,   533,   533,   286,
     1394       0,     0,     0,   264,   535,   530,     2,   285,     0,     0,
     1395     285,   538,     2,   489,     2,   542,     0,     0,     0,     0,
     1396       0,    17,    56,     4,     5,     6,    15,     0,     0,     0,
     1397     285,     2,     0,   285,    62,    63,    64,    65,    46,    18,
     1398      47,    21,    45,    66,     0,    69,    73,    76,    79,    84,
     1399      87,    89,    91,    93,    95,    97,   102,   483,   739,   441,
     1400     482,     0,   439,   440,     0,   554,   569,   572,   575,   581,
     1401     584,   587,   350,     0,     2,   727,     0,   285,   730,     2,
     1402     285,     3,   415,     0,   423,   286,   285,   298,   324,   278,
     1403     339,   346,     3,     3,   397,   401,   411,   416,   461,   285,
     1404     417,   694,   695,   285,   418,   420,   285,     2,   571,   583,
     1405     717,     2,     2,   240,     2,     0,     0,   445,   444,   137,
     1406       2,     2,   242,     2,     2,   241,     2,   272,     2,   273,
     1407       0,   271,     0,     0,     0,     0,     0,     0,     0,     0,
     1408       0,   555,   594,     0,   443,     2,   549,   558,   648,   551,
     1409     552,   521,   285,     2,   588,   597,   590,   591,     0,   267,
     1410     285,   285,   330,   286,     0,   286,     0,   285,   722,   726,
     1411     724,   522,   285,   533,   246,   254,   300,     0,     2,   523,
     1412     285,   487,   327,   328,   274,   342,   349,     0,   285,     2,
     1413     374,   285,   362,     0,     0,   368,   716,   285,   737,   388,
     1414       0,   464,   488,   243,   244,   508,   285,   425,     0,   285,
     1415     228,     0,     2,   230,     0,   286,     0,   248,     2,   249,
     1416     269,     0,     0,     2,   285,   533,   285,   474,   476,   475,
     1417       0,     0,   739,     0,   285,     0,   285,   478,   285,   548,
     1418     546,   547,   545,     0,   540,   543,     0,     0,   285,    54,
     1419      66,    50,   285,    59,   285,   285,    48,    49,    61,     2,
     1420     124,     0,     0,   437,     0,   436,   108,   285,    52,    53,
     1421      16,     0,    28,    29,    33,     2,     0,   114,   115,   116,
     1422     117,   118,   119,   120,   121,   122,   123,     0,     0,    51,
    14121423       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    1413        0,     0,     0,     0,     0,     0,     0,     0,   105,     2,
    1414      626,   435,   623,   527,   527,   631,   460,   278,     2,   565,
    1415      566,     0,   577,   578,     0,     2,   720,   723,   108,   278,
    1416        2,   278,     0,   688,   279,   692,   683,   684,   690,     0,
    1417        2,     2,   648,   527,   731,   597,   527,   527,   731,   527,
    1418      611,   527,   527,   662,   417,   645,   527,   527,   653,   660,
    1419      278,   412,   279,     0,     0,   278,   698,   279,   703,   731,
    1420      695,   278,   700,   731,   278,   278,   278,     0,   108,     0,
    1421       17,     2,     0,     0,   440,   729,     0,     0,   446,   225,
    1422        0,   278,     0,     0,     0,   525,   549,   553,   555,   585,
    1423      588,   592,   595,   548,   587,     0,   268,   638,     0,   278,
    1424      261,     0,     0,     0,     0,   259,     2,     0,   243,   516,
    1425      278,     0,     0,     0,     0,   278,   278,     0,     0,   672,
    1426      365,   368,   372,   527,   372,   677,   371,   669,   527,   527,
    1427      348,   356,   364,   357,   527,   359,   362,   278,   730,     0,
    1428        0,   379,   729,   279,     3,   397,     3,   401,   400,   571,
    1429        0,   511,   278,     3,     3,   278,   416,   279,     3,   410,
    1430      411,     2,     0,     0,     0,   465,   290,   278,   461,   463,
    1431        3,     2,     2,     0,   482,     3,     0,   534,   126,     0,
    1432      210,     0,     0,     2,     0,     0,    36,     0,     0,   108,
    1433      278,    21,     0,    22,     0,   672,   431,     0,   106,     3,
    1434        2,    28,     2,     0,    33,     0,     2,    26,   103,   104,
    1435       70,    71,    72,    74,    75,    77,    78,    82,    83,    80,
    1436       81,    85,    86,    88,    90,    92,    94,    96,     0,     0,
    1437      732,   278,     0,     0,     0,   627,   628,   624,   625,   477,
    1438      476,   278,     0,     3,   278,   694,   278,   699,   279,   278,
    1439      278,   278,   642,   685,   641,     2,   278,     0,     0,     0,
    1440        0,     0,     0,     0,     0,   663,     0,   649,   600,   616,
    1441      650,     2,   596,   603,   414,   598,   599,   415,     2,   610,
    1442      619,   612,   613,   646,   647,   661,   689,   693,   691,   731,
    1443      252,     2,   725,     2,   405,   697,   702,   406,     0,   384,
    1444        3,     3,     3,     3,   436,     3,     0,     2,   448,   445,
    1445      730,     0,   441,     2,   444,   447,     0,   278,   226,   248,
    1446        3,   256,   258,     0,   436,     2,   551,   552,     2,   590,
    1447      591,     0,   639,   517,     3,   329,   328,   331,   330,   278,
    1448      518,     0,   519,   278,   358,   360,     2,     0,     0,     0,
    1449        0,   374,   673,   674,   369,   373,   370,   670,   671,   363,
    1450      367,   350,   381,   376,   382,     0,     0,     0,   419,   224,
    1451        0,     0,     3,     2,   648,   412,     0,   507,     0,   731,
    1452      469,     0,   278,   278,   278,     0,   531,   533,   127,     0,
    1453      206,     0,     0,   211,   212,    55,    60,   278,     0,    58,
    1454       57,     0,   125,   673,     0,    67,    68,   107,   112,     3,
    1455      106,     0,     0,     0,    25,    35,     3,     0,    99,     0,
    1456        3,   630,   634,   637,   629,     3,   572,     3,   696,   701,
    1457        2,   278,     3,     3,   279,     0,     3,   602,   606,   609,
    1458      618,   652,   656,   659,   278,     3,   601,   617,   651,   278,
    1459      278,   407,   278,   278,   726,     0,     0,     0,     0,   240,
    1460        0,   101,     0,     3,     3,     0,   442,     0,   439,     0,
    1461        0,   229,   278,     0,     0,   126,     0,     0,     0,     0,
    1462        0,   126,     0,     0,     0,     2,     0,     0,     3,   128,
    1463      129,     2,   139,   130,   131,   132,   133,   134,   135,   141,
    1464      143,     0,     0,     0,   269,   278,   278,   527,     0,   520,
    1465      278,   108,   676,   680,   682,   675,   366,   380,   377,   559,
    1466        2,   644,   643,     0,   649,     2,   462,   464,   484,     3,
    1467      492,   493,     0,     2,   488,     3,     3,     0,     0,   536,
    1468        0,     0,   210,     0,     3,    37,   729,   106,     0,     3,
    1469      641,    42,     3,    40,     3,    34,     0,     3,    98,   100,
    1470        0,     2,   632,   633,     0,     0,   278,     0,     0,     0,
    1471        3,   618,     0,     2,   604,   605,     2,   620,     2,   654,
    1472      655,     0,     0,     3,     0,     3,     3,     3,     3,   392,
    1473      391,   395,     2,     2,   728,   727,   109,     0,     0,     0,
    1474        0,     3,   443,     3,     0,   227,   142,     3,   279,   278,
     1424       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     1425     105,     2,   634,   442,   631,   535,   535,   639,   468,   285,
     1426       2,   573,   574,     0,   585,   586,     0,     2,   728,   731,
     1427     108,   285,     2,   285,     0,   696,   286,   700,   691,   692,
     1428     698,     0,     2,     2,   656,   535,   739,   605,   535,   535,
     1429     739,   535,   619,   535,   535,   670,   424,   653,   535,   535,
     1430     661,   668,   285,   419,   286,     0,     0,   285,   706,   286,
     1431     711,   739,   703,   285,   708,   739,   285,   285,   285,     0,
     1432     108,     0,    17,     5,     2,     0,     0,   447,   737,     0,
     1433       0,   453,   232,     0,   285,     0,     0,     0,   533,   557,
     1434     561,   563,   593,   596,   600,   603,   556,   595,     0,   275,
     1435     646,     0,   285,   268,     0,     0,     0,     0,   266,     2,
     1436       0,   250,   524,   285,     0,     0,     0,     0,   285,   285,
     1437       0,     0,   680,   372,   375,   379,   535,   379,   685,   378,
     1438     677,   535,   535,   355,   363,   371,   364,   535,   366,   369,
     1439     285,   738,     0,     0,   386,   737,   286,     3,   404,     3,
     1440     408,   407,   579,     0,   519,   285,     3,     3,   285,   423,
     1441     286,     3,   417,   418,     2,     0,     0,     0,   473,   297,
     1442     285,   469,   471,     3,     2,     2,     0,   490,     3,     0,
     1443     542,   126,     0,     0,   213,     0,     0,     2,     0,     0,
     1444      34,     0,     0,   108,   285,    19,     0,    20,     0,   680,
     1445     438,     0,   106,     3,     2,    26,     2,     0,    31,     0,
     1446       2,    24,   103,   104,    70,    71,    72,    74,    75,    77,
     1447      78,    82,    83,    80,    81,    85,    86,    88,    90,    92,
     1448      94,    96,     0,     0,   740,   285,     0,     0,     0,   635,
     1449     636,   632,   633,   485,   484,   285,     0,     3,   285,   702,
     1450     285,   707,   286,   285,   285,   285,   650,   693,   649,     2,
     1451     285,     0,     0,     0,     0,     0,     0,     0,     0,   671,
     1452       0,   657,   608,   624,   658,     2,   604,   611,   421,   606,
     1453     607,   422,     2,   618,   627,   620,   621,   654,   655,   669,
     1454     697,   701,   699,   739,   259,     2,   733,     2,   412,   705,
     1455     710,   413,     0,   391,     3,     3,     3,     3,   443,     3,
     1456       0,     2,   456,   452,   738,     0,   448,   455,     2,   451,
     1457     454,     0,   285,   233,   255,     3,   263,   265,     0,   443,
     1458       2,   559,   560,     2,   598,   599,     0,   647,   525,     3,
     1459     336,   335,   338,   337,   285,   526,     0,   527,   285,   365,
     1460     367,     2,     0,     0,     0,     0,   101,   381,   681,   682,
     1461     376,   380,   377,   678,   679,   370,   374,   357,   388,   383,
     1462     389,     0,     0,     0,   426,   231,     0,     0,     3,     2,
     1463     656,   419,     0,   515,     0,   739,   477,     0,   285,   285,
     1464     285,     0,   539,   541,   127,     0,     0,   206,     0,     0,
     1465       0,   214,   215,    55,    60,   285,     0,    58,    57,     0,
     1466     125,   681,     0,    67,    68,   107,   112,     3,   106,     0,
     1467       0,     0,    23,    33,     3,     0,    99,     0,     3,   638,
     1468     642,   645,   637,     3,   580,     3,   704,   709,     2,   285,
     1469       3,     3,   286,     0,     3,   610,   614,   617,   626,   660,
     1470     664,   667,   285,     3,   609,   625,   659,   285,   285,   414,
     1471     285,   285,   734,     0,     0,     0,     0,   247,     0,   101,
     1472       0,     3,     3,     0,   449,     0,   446,     0,     0,   236,
     1473     285,     0,     0,   126,     0,     0,     0,     0,     0,   126,
     1474       0,     0,     0,     2,     0,     0,     3,   128,   129,     2,
     1475     139,   130,   131,   132,   133,   134,   135,   141,   143,     0,
     1476       0,     0,   276,   285,   285,   535,     0,   528,   285,   108,
     1477     684,   688,   690,   683,   373,   387,   384,   567,     2,   652,
     1478     651,     0,   657,     2,   470,   472,   492,     3,   500,   501,
     1479       0,     2,   496,     3,     3,     0,     0,   544,   213,     0,
     1480       0,     0,   213,     0,     3,    35,   737,   106,     0,     3,
     1481     649,    40,     3,    38,     3,    32,     0,     3,    98,   100,
     1482       0,     2,   640,   641,     0,     0,   285,     0,     0,     0,
     1483       3,   626,     0,     2,   612,   613,     2,   628,     2,   662,
     1484     663,     0,     0,     3,     0,     3,     3,     3,     3,   399,
     1485     398,   402,     2,     2,   736,   735,   109,     0,     0,     0,
     1486       0,     3,   450,     3,     0,   234,   142,     3,   286,   285,
    14751487       0,     0,     0,     0,     2,   187,     0,   185,     0,     0,
    1476        0,     0,     0,     0,   191,     0,   108,   527,   147,   144,
    1477      278,     0,     0,   251,   263,     3,     3,   526,   593,   351,
    1478        2,   678,   679,   278,   250,   278,     0,   495,   472,   278,
    1479        0,     0,   471,   486,     0,   207,     0,   213,   106,     0,
    1480        0,   113,   110,     0,     0,     0,     0,     0,     0,    24,
    1481        0,   635,   278,   560,   249,   704,   705,   706,     0,   657,
    1482      278,   278,   278,     3,     3,     0,   665,     0,     0,     0,
    1483        0,   278,   278,     3,   524,   109,   450,     0,     0,   230,
    1484      279,     0,     0,     0,     0,   278,   188,   186,     0,   183,
    1485      189,     0,     0,     0,   192,   195,   193,   190,   126,   140,
    1486      138,   228,     0,     0,   278,   399,   403,   402,     0,   489,
    1487        2,   490,     2,   491,   485,   278,   214,     0,     0,     3,
    1488      641,    32,   111,     2,    45,     2,    43,    41,    29,   109,
    1489       27,     3,   707,     3,     3,     3,     0,     0,   664,   666,
    1490      607,   621,   253,     2,   389,     3,   388,     0,   452,   449,
    1491      126,     0,     0,   126,     3,     0,   126,   184,     0,     2,
    1492      200,   194,     0,   136,   554,   594,     3,     2,     0,     0,
    1493        2,   208,   215,     0,     0,     0,     0,     0,     0,     0,
    1494        0,     0,   667,   668,   278,     0,   451,   148,     0,     0,
    1495        2,   161,   126,   150,     0,   178,     0,   126,     0,     2,
    1496      152,     0,     2,     2,     0,   278,   494,   496,   487,     0,
    1497        0,   111,    38,     3,     3,   636,   608,   622,   658,   393,
    1498      126,   154,   157,     0,   156,   160,     3,   163,   162,     0,
    1499      126,   180,   126,     3,     0,   278,     0,     2,   681,     2,
    1500      209,   216,     0,     0,     0,   149,     0,     0,   159,   217,
    1501      164,     2,   219,   179,     0,   182,   168,   196,     3,   201,
    1502      205,     0,   278,     0,    39,    46,    44,   155,   158,   126,
    1503        0,   165,   278,   126,   126,     0,   169,     0,     0,   672,
    1504      202,   203,   204,   197,     3,   278,   145,   166,   151,   126,
    1505      220,   181,   176,   174,   170,   153,   126,     0,   673,     0,
    1506        0,   146,   167,   177,   171,   175,   174,   172,     3,     0,
    1507      473,   173,   198,     3,   199
     1488       0,     0,     0,     0,   191,     0,   108,   535,   147,   144,
     1489     285,     0,     0,   258,   270,     3,     3,   534,   601,   358,
     1490       2,   686,   687,   285,   257,   285,     0,   503,   480,   285,
     1491       0,     0,   479,   494,     0,     0,     0,   207,     0,   216,
     1492     106,     0,     0,   113,   110,     0,     0,     0,     0,     0,
     1493       0,    22,     0,   643,   285,   568,   256,   712,   713,   714,
     1494       0,   665,   285,   285,   285,     3,     3,     0,   673,     0,
     1495       0,     0,     0,   285,   285,     3,   532,   457,   458,     0,
     1496       0,   237,   286,     0,     0,     0,     0,   285,   188,   186,
     1497       0,   183,   189,     0,     0,     0,   192,   195,   193,   190,
     1498     126,   140,   138,   235,     0,     0,   285,   406,   410,   409,
     1499       0,   497,     2,   498,     2,   499,   493,   285,   219,     0,
     1500     217,     0,   219,     3,   649,    30,   111,     2,    43,     2,
     1501      41,    39,    27,   109,    25,     3,   715,     3,     3,     3,
     1502       0,     0,   672,   674,   615,   629,   260,     2,   396,     3,
     1503     395,     0,   460,   457,   126,     0,     0,   126,     3,     0,
     1504     126,   184,     0,     2,   200,   194,     0,   136,   562,   602,
     1505       3,     2,     0,     0,     2,   220,     0,     0,   208,     0,
     1506       0,     0,     0,     0,     0,     0,     0,     0,   675,   676,
     1507     285,     0,   459,   148,     0,     0,     2,   161,   126,   150,
     1508       0,   178,     0,   126,     0,     2,   152,     0,     2,     2,
     1509       0,   285,   502,   504,   495,     0,     0,     0,     0,   111,
     1510      36,     3,     3,   644,   616,   630,   666,   400,   126,   154,
     1511     157,     0,   156,   160,     3,   163,   162,     0,   126,   180,
     1512     126,     3,     0,   285,     0,     2,   689,     2,   221,   222,
     1513       0,   218,   209,     0,     0,     0,   149,     0,     0,   159,
     1514     224,   164,     2,   226,   179,     0,   182,   168,   196,     3,
     1515     201,   205,     0,   285,     0,     0,     0,    37,    44,    42,
     1516     155,   158,   126,     0,   165,   285,   126,   126,     0,   169,
     1517       0,     0,   680,   202,   203,   204,   197,     3,   285,   210,
     1518     223,   145,   166,   151,   126,   227,   181,   176,   174,   170,
     1519     153,   126,     0,   681,     0,     0,   146,   167,   177,   171,
     1520     175,   174,   172,     3,     0,   481,   173,   198,     3,   199
    15081521};
    15091522
     
    15111524static const yytype_int16 yydefgoto[] =
    15121525{
    1513       -1,   826,   468,   297,    45,   130,   131,   298,   299,   300,
    1514      301,   773,   755,  1122,  1123,   302,   303,   304,   305,   306,
    1515      307,   308,   309,   310,   311,   312,   313,   314,   315,  1032,
    1516      518,   978,   317,   979,   546,   958,  1057,  1476,  1059,  1060,
    1517     1061,  1062,  1477,  1063,  1064,  1412,  1413,  1381,  1382,  1383,
    1518     1460,  1461,  1465,  1466,  1494,  1495,  1065,  1345,  1066,  1067,
    1519     1284,  1285,  1286,  1448,  1068,   962,   963,   964,  1363,  1440,
    1520     1441,   469,   470,   887,   888,  1040,    48,    49,    50,    51,
    1521       52,   341,   155,    55,    56,    57,    58,    59,   343,    61,
    1522       62,   259,    64,    65,   270,   345,   346,    68,    69,    70,
    1523       71,   115,    73,   200,   348,   116,    76,   117,    78,    79,
    1524       80,   449,   450,   451,   452,   690,   924,   691,    81,    82,
    1525      456,   711,   868,   869,   351,   352,   714,   715,   716,   353,
    1526      354,   355,   356,   466,   335,   132,   133,   522,   319,   166,
    1527      644,   645,   646,   647,   648,    83,   118,    85,   489,   490,
    1528      950,   491,   273,   495,   320,    86,   134,   135,    87,  1305,
    1529     1103,  1104,  1105,  1106,    88,    89,   732,    90,   269,    91,
    1530       92,   183,  1034,   678,   405,   122,    93,   501,   502,   503,
    1531      184,   264,   186,   187,   188,   265,    96,    97,    98,    99,
    1532      100,   101,   102,   191,   192,   193,   194,   195,   838,   605,
    1533      606,   607,   608,   196,   610,   611,   612,   571,   572,   573,
    1534      574,   695,   103,   614,   615,   616,   617,   618,   619,   923,
    1535      697,   698,   699,   595,   359,   360,   361,   362,   321,   161,
    1536      105,   106,   107,   364,   709,   568
     1526      -1,   830,   470,   298,    45,   130,   131,   299,   300,   301,
     1527     302,   777,   759,  1132,  1133,   303,   304,   305,   306,   307,
     1528     308,   309,   310,   311,   312,   313,   314,   315,   316,  1040,
     1529     520,   986,   318,   987,   548,   964,  1065,  1501,  1067,  1068,
     1530    1069,  1070,  1502,  1071,  1072,  1430,  1431,  1397,  1398,  1399,
     1531    1483,  1484,  1488,  1489,  1519,  1520,  1073,  1359,  1074,  1075,
     1532    1296,  1297,  1298,  1469,  1076,   142,   970,   971,   972,  1376,
     1533    1450,  1461,  1462,   471,   472,   892,   893,  1048,    48,    49,
     1534      50,    51,    52,   342,   155,    55,    56,    57,    58,    59,
     1535     344,    61,    62,   259,    64,    65,   270,   346,   347,    68,
     1536      69,    70,    71,   115,    73,   200,   349,   116,    76,   117,
     1537      78,    79,    80,   451,   452,   453,   454,   693,   930,   694,
     1538      81,    82,   458,   714,   872,   873,   352,   353,   717,   718,
     1539     719,   354,   355,   356,   357,   468,   336,   132,   133,   524,
     1540     320,   166,   647,   648,   649,   650,   651,    83,   118,    85,
     1541     491,   492,   956,   493,   273,   497,   321,    86,   134,   135,
     1542      87,  1317,  1111,  1112,  1113,  1114,    88,    89,   735,    90,
     1543     269,    91,    92,   183,  1042,   681,   406,   122,    93,   503,
     1544     504,   505,   184,   264,   186,   187,   188,   265,    96,    97,
     1545      98,    99,   100,   101,   102,   191,   192,   193,   194,   195,
     1546     842,   607,   608,   609,   610,   196,   612,   613,   614,   573,
     1547     574,   575,   576,   698,   103,   616,   617,   618,   619,   620,
     1548     621,   929,   700,   701,   702,   597,   360,   361,   362,   363,
     1549     322,   161,   105,   106,   107,   365,   712,   570
    15371550};
    15381551
    15391552/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    15401553   STATE-NUM.  */
    1541 #define YYPACT_NINF -1269
     1554#define YYPACT_NINF -1318
    15421555static const yytype_int16 yypact[] =
    15431556{
    1544     5632,  9056, -1269,    25, -1269, -1269, -1269, -1269, -1269, -1269,
    1545    -1269,    17, -1269, -1269, -1269, -1269, -1269, -1269, -1269, -1269,
    1546    -1269, -1269, -1269, -1269, -1269,   113,   113,   113,   803,   791,
    1547       56,  6940,   839, -1269, -1269, -1269, -1269, -1269,    59, -1269,
    1548    -1269, -1269,   628,    90,  8532, -1269, -1269, -1269, -1269, -1269,
    1549    -1269,    88,   155, -1269,   911, -1269, -1269, -1269, -1269,   140,
    1550     1450,   287,    96,  4240, -1269, -1269,  8601,  1048, -1269, -1269,
    1551    -1269,  1246,   329,  6299,  1010,   880,  1246,  1728, -1269, -1269,
    1552      332,   328, -1269,  1246,  1769, -1269,   227, -1269,   369,   379,
    1553    -1269, -1269, -1269, -1269,   256,   155,   113, -1269,   113, -1269,
    1554    -1269, -1269, -1269,  9292,   911, -1269, -1269,   911, -1269,  9351,
    1555      266, -1269, -1269,  1507,  9410, -1269,   839,   839,   839, -1269,
    1556    -1269, -1269,   113, -1269, -1269, -1269,   291,   341,   348, -1269,
    1557    -1269, -1269,   361, -1269, -1269, -1269, -1269, -1269,   391,   401,
    1558    -1269,   469,   839,  8040,  1076,   326,   352,   486,   522,   542,
    1559      576,   588,  8805,  6382,   474,   482, -1269,  8669, -1269, -1269,
    1560    -1269, -1269,   571, -1269,    47,  5492, -1269,   596,   239, -1269,
    1561    -1269, -1269, -1269,   597,   315,   324,   359,   113,   614, -1269,
    1562    -1269,  1450,  2466,   659, -1269,   128, -1269,   113,   113,   155,
    1563    -1269, -1269,   131, -1269,   113,   113, -1269,  3629,   647,   656,
    1564      839, 10211, -1269, -1269,   665,  8532, -1269, -1269,  1246, -1269,
    1565    -1269, -1269,   155, -1269,   911,    88, -1269,  7183, -1269,   839,
    1566      839,   839,   155, -1269,   803, -1269,  6072, -1269, -1269,   652,
    1567      839, -1269,   839, -1269,    59,  8040,  9115,   675, -1269,   791,
    1568      684,   839, -1269,   803,   674,   681, -1269,  6940,   744, -1269,
    1569    -1269, -1269,  8471, -1269, -1269,  5138, -1269,   659,    73,  9410,
    1570    10491,  1507,  3629, -1269,   138, -1269, -1269,  9351,   911,   708,
    1571    11267, -1269, -1269,   713, -1269, 11002, 10719, 10776, 10719, 10833,
    1572    -1269,   737, -1269, -1269, -1269, -1269, 10890, 10890,   744,  4439,
    1573      751, 10719,  8146, -1269, -1269, -1269, -1269, -1269, -1269,   766,
    1574    -1269,   828,  1924, 10719, -1269,   465,   544,   763,   389,   621,
    1575      755,   754,   759,   813,    65, -1269, -1269,   782,   510, -1269,
    1576      307, -1269, -1269,  1076, -1269, -1269,   774,   807, -1269,   784,
    1577      807,   815,    59, -1269, -1269,   821,  9292, -1269,   826,  7828,
    1578    -1269, -1269,   715,  2130,  7574, 10211,  1246, -1269,  1246,   839,
    1579      839, -1269, -1269, -1269, -1269, -1269, -1269,   839,  9469,   911,
    1580    -1269, -1269,  9528,  1378, -1269,  9174, -1269, -1269, -1269, -1269,
    1581    -1269, -1269, -1269,   831,  4897, 10719, -1269, -1269, -1269, -1269,
    1582    -1269, -1269, -1269, -1269, -1269, -1269, -1269, -1269, -1269,  1507,
    1583    -1269,   728,   842,   859,   891,   817,   925,   926,   927,  2466,
    1584    -1269, -1269,   865,    88,   869, -1269, -1269,   928, -1269, -1269,
    1585    -1269,  8471, -1269, -1269, -1269, -1269, -1269,  3629, -1269,  8040,
    1586     8040, -1269,  1507, 11295,   911,  7639, -1269, -1269, -1269, -1269,
    1587     8471,    73, -1269, -1269,  1246,   155, -1269, -1269,  8471, -1269,
    1588     6187, -1269, -1269,   839,   839,   339,  9587,   909,  1932,  2385,
    1589    -1269,   377,   414,   791, -1269,  9115,   924,   912,   791,   839,
    1590    -1269, -1269, -1269, -1269,  9947, -1269,   512,  7494, -1269,   155,
    1591      930, -1269,  1507, 11077, 10548, -1269, -1269, -1269, -1269,   824,
    1592     3629, -1269,  7704,   659,  6831, -1269, -1269, -1269,   746,   592,
    1593      782,   791, 11267,   530,  9351, -1269, 11267, -1269, -1269, -1269,
    1594    -1269,   613, -1269,   932, -1269, -1269,    12,  4439, -1269, -1269,
    1595     4439, -1269,  7934,  4439, -1269, -1269, -1269,   933, -1269,   625,
    1596      936,   545,   939, -1269,  8873,  5389, -1269, -1269, -1269,    67,
    1597    -1269, -1269, 10605, -1269,   249, -1269, -1269, -1269, -1269, -1269,
    1598    -1269, -1269, -1269, -1269, -1269, 10491, 10491, -1269, 10719, 10719,
    1599    10719, 10719, 10719, 10719, 10719, 10719, 10719, 10719, 10719, 10719,
    1600    10719, 10719, 10719, 10719, 10719, 10719,  4719, 10491, -1269,   510,
    1601     1578, -1269, -1269,   113,   113, -1269, -1269,  8040, -1269, -1269,
    1602      928,   744, -1269,   928, 10662, -1269, -1269, -1269,  4020,  5389,
    1603      938,  8252,   941, -1269,  9646, -1269, -1269,   571, -1269,   942,
    1604     1657,   947,  1802,   198,   782, -1269,   113,   113,   782,   245,
    1605    -1269,   113,   113,   928, -1269, -1269,   113,   113, -1269,   807,
    1606     9705,   911, 11208,   419,   426,  9705, -1269,  9882, -1269,   782,
    1607    -1269,  9469, -1269,   144,  7291,  7291,  7291,   911, -1269, 10434,
    1608      934,   831,   353,   949, -1269,   951,  5492,   583, -1269,  1032,
    1609      911,  7291,   744,  1507,   744,   659,   795,   807, -1269, -1269,
    1610      800,   807, -1269, -1269, -1269,   986, -1269,   807,   155,  9947,
    1611    -1269,   635,   960,   638,   961, -1269,   962,   155, -1269, -1269,
    1612     8471,   155,   958,   436,   443,  9764,  6494,  2437, 10719,  2673,
    1613    -1269, -1269,   956,    32,   956, -1269, -1269, -1269,   113,   113,
    1614    -1269, -1269,   791, -1269,   113, -1269, -1269,  2798,   791,   968,
    1615    10719, -1269,   924, 11208, -1269, -1269,   967, -1269, -1269, -1269,
    1616      744, -1269, 11143, 10719, -1269,  7291,   584,  7574, -1269, -1269,
    1617      571,   969,   972,   746,  2082, -1269, -1269, 11267, -1269, -1269,
    1618      965, -1269, -1269,   984, -1269,   965,   989, 11002, 10491,   944,
    1619     1017,   991,   992,   751,   987,   996, -1269,   997,  1000,  2971,
    1620     6158, -1269, 10491, -1269,   545,  1808, -1269,  5683, 10491,   998,
    1621    -1269, -1269,   831,   639, -1269, 10491, -1269, -1269, -1269, -1269,
    1622    -1269, -1269, -1269,   465,   465,   544,   544,   763,   763,   763,
    1623      763,   389,   389,   621,   755,   754,   759,   813, 10719,   616,
    1624    -1269,  9947,  1005,  1006,  1007,  1578, -1269, -1269, -1269, -1269,
    1625    -1269,  9947,   643, 10719,  7291, -1269,  9469, -1269,  6606,  8358,
    1626     9233,  6382, -1269, -1269, -1269,  1657,  9947,   846,  1012,  1013,
    1627     1015,  1019,  1020,  1023,  1024, -1269,  3182,  1802, -1269, -1269,
    1628    -1269, -1269, -1269, -1269, -1269, -1269, -1269, -1269, -1269, -1269,
    1629    -1269, -1269, -1269, -1269, -1269,   928, -1269, -1269, -1269,   782,
    1630    -1269, -1269, -1269, -1269, -1269, -1269, -1269, -1269,  1025, -1269,
    1631     1026,  1029, -1269, -1269,    88,   998, 10434, -1269, -1269, -1269,
    1632     4897,  1028, -1269, -1269, -1269, -1269,   791,  5798,  1104, -1269,
    1633    -1269, -1269, -1269,  1027,    88, -1269, -1269,   928, -1269, -1269,
    1634      928,   142,   928, -1269, -1269, -1269, -1269, -1269, -1269,  8737,
    1635    -1269,   155, -1269,  9115, -1269, -1269,  1034,   761,  1031,  1038,
    1636     1041, -1269,  2673, -1269, -1269, -1269, -1269, -1269, -1269, -1269,
    1637     1932, -1269,   912, -1269, -1269,  1044,  1046,  1047, -1269, -1269,
    1638     1042,  1050, -1269,   584,  1953, -1269,   534, -1269,  2082,   782,
    1639    -1269,  1054, 11267,  9823,  8040,  1055, -1269, -1269,  1051,  1056,
    1640    -1269,  1059,   169,  1057, -1269,  1058,  1058,  5389, 10491, -1269,
    1641    -1269,  1058, -1269,  1808,  4897, -1269, -1269, -1269, -1269,  1060,
    1642    10491,  1062,   744, 10434, -1269, 10605, -1269,   744, -1269, 10491,
    1643    -1269,   840,   807, -1269, -1269, -1269, -1269, -1269, -1269, -1269,
    1644      831,  7828, -1269, -1269,  6718,  1067, -1269,   864,   807, -1269,
    1645      871,   882,   807, -1269,   839,  3327, -1269, -1269, -1269,  9947,
    1646     9947, -1269,  7639,  7639, -1269,  1063,  1064,  1068,  1071, -1269,
    1647     1074,   541,    48,   998, -1269,   744, -1269,  5492, -1269, 10491,
    1648      455, -1269,  6043,  1080,  1081, 10377,  1083,  1084,    55,   173,
    1649       23, 10491,  1085,   155,  4287,  1089,  1086,  1065, -1269, -1269,
    1650    -1269,  1087, -1269, -1269, -1269, -1269, -1269, -1269, -1269, -1269,
    1651    -1269,   791,  1094, 10491, -1269,  9947,  9947,   113,  1095, -1269,
    1652     8997,  8935,   889,   807, -1269, -1269, -1269, -1269, -1269, -1269,
    1653    -1269, -1269, -1269,  1098,  1953, -1269, -1269,  1082, -1269,   965,
    1654    -1269, -1269,  1507,  1097, -1269, -1269, -1269,   650,  1096, -1269,
    1655    10719,  1077,  1017,  1017,  1102, -1269,   951, 10491,  1111,  1060,
    1656      559,    61,  1108, -1269,  1102, -1269,  1113,  1108, -1269, -1269,
    1657     1118, -1269, -1269,   928,  1120,  1121,  6270,  1123,  1124,  1125,
    1658    -1269, -1269,  1122, -1269, -1269,   928, -1269, -1269, -1269, -1269,
    1659      928, 10491, 10491, 10719,  1127, -1269, -1269, -1269, -1269, -1269,
    1660    -1269, -1269, -1269, -1269, -1269, -1269, -1269, 10719, 10719,  1128,
    1661     1133,  1108, -1269, -1269,   791, -1269, -1269, -1269,  7118,  9823,
    1662    10491, 10491,  1180, 10491, -1269, -1269,  1114, -1269,  1117, 10491,
    1663     1135,  1137, 10491,   901, -1269,  1138,  8499,   113, -1269, -1269,
    1664     5798,  1140,   467, -1269, -1269, -1269, -1269, -1269, -1269, -1269,
    1665    -1269, -1269,   928, 10183, -1269,  7704,  1147, -1269, -1269,  9823,
    1666      476,   481, -1269,  1157,  1165, -1269,   201, -1269, 10491,  1166,
    1667     1167, -1269, -1269,  1168,   257,   313,   744,  1169,  1171, -1269,
    1668     1172, -1269,  9947, -1269, -1269, -1269, -1269, -1269,  1174, -1269,
    1669     9947,  9947,  9947, -1269, -1269,  1175, -1269,  1179,  1182,  1183,
    1670      573,  7358,  7466, -1269, -1269,   609, -1269,  1184,  1185, -1269,
    1671     7769,   651,   662,  1141,   664,  5921, -1269, -1269,   508, -1269,
    1672    -1269,   687,  1189,   155,  1237,  1240, -1269, -1269, 10377, -1269,
    1673    -1269, -1269,  1193,  1197,  9947, -1269, -1269, -1269,  1196, -1269,
    1674    -1269, -1269, -1269, -1269, -1269,  9823, -1269,  1190,  1231,  1060,
    1675      253, -1269, -1269, -1269, -1269, -1269, -1269, -1269, -1269,  1204,
    1676    -1269, -1269, -1269, -1269, -1269, -1269,  1211,  1215, -1269, -1269,
    1677    -1269, -1269, -1269, -1269, -1269,  1219, -1269,  1218, -1269, -1269,
    1678    10377,   147, 10491, 10377, -1269,  1225, 10491, -1269,   264,  1239,
    1679    -1269, -1269,  1229, -1269, -1269, -1269, -1269, -1269,   911,  1507,
    1680     1233, -1269, -1269,   704,  1228, 10491,   744,   744,  1248,  1249,
    1681     1250,  1251, -1269, -1269,  7639,  1256, -1269,  1301, 10719,  1259,
    1682    -1269, -1269, 10297, -1269,   716, -1269,  1224, 10377,  1235, -1269,
    1683    -1269,  1268, -1269,  1282,  1270,  9823, -1269, -1269, -1269,  1252,
    1684     1302,  1273, -1269,  1108,  1108, -1269, -1269, -1269, -1269, -1269,
    1685    10377,    54, -1269,   897, -1269, -1269,  7049, -1269, -1269,  1255,
    1686    10491, -1269, 10491,  7049,   155,  9587,  1283, -1269, -1269,  1280,
    1687    -1269, -1269, 10491,  1284,  1285, -1269, 10719, 10719, -1269, -1269,
    1688      966,    99, -1269, -1269,  1266, -1269,   966, -1269, -1269,  2561,
    1689      744,   155,  9587,  1290, -1269, -1269, -1269, -1269, -1269, 10297,
    1690     1286,   966,  3510, 10491, 10217,  1287,   966,  1294,  2561,  3047,
    1691    -1269, -1269, -1269, -1269, -1269,  8040, -1269, 10062, -1269, 10297,
    1692    -1269, -1269,  1274,  9981, -1269, -1269, 10217,   155,  3047,  1297,
    1693      717, -1269, 10062, -1269, -1269, -1269,  9981, -1269, -1269,   155,
    1694    -1269, -1269, -1269, -1269, -1269
     1557    4413,  9104, -1318,    42, -1318, -1318, -1318, -1318, -1318, -1318,
     1558   -1318,   -27, -1318, -1318, -1318, -1318, -1318, -1318, -1318, -1318,
     1559   -1318, -1318, -1318, -1318, -1318,    95,    95,    95,   954,   850,
     1560      71,  5300,   201, -1318, -1318, -1318, -1318, -1318,   123, -1318,
     1561   -1318, -1318,   776,   164,  8401, -1318, -1318, -1318, -1318, -1318,
     1562   -1318,   226,   169, -1318,  1184, -1318, -1318, -1318, -1318,   272,
     1563    1531,   387,    89,  3759, -1318, -1318,  8469,  1998, -1318, -1318,
     1564   -1318,   935,   392,  5420,   741,  1183,   935,  1282, -1318, -1318,
     1565     356,   326, -1318,   935,  1429, -1318,   340, -1318,   453,   463,
     1566   -1318, -1318, -1318, -1318,   370,   169,    95, -1318,    95, -1318,
     1567   -1318, -1318, -1318,  9340,  1184, -1318, -1318,  1184, -1318,  9399,
     1568     389, -1318, -1318,  1617,  9458, -1318,  1087,  1087,  1087, -1318,
     1569   -1318, -1318,    95, -1318, -1318, -1318,   386,   435,   438, -1318,
     1570   -1318, -1318,   498, -1318, -1318, -1318, -1318, -1318,   510,   531,
     1571   -1318, -1318,    34,  7909,  1795,    48,   452,   575,   578,   583,
     1572     588,   593,  8673,  6319,   543,   605, -1318,  8537, -1318, -1318,
     1573   -1318, -1318,   652, -1318,   172,  5550, -1318,   473,   232, -1318,
     1574   -1318, -1318, -1318,   661,   301,   325,   403,    95,   646, -1318,
     1575   -1318,  1531,  2279,   739, -1318,    21, -1318,    95,    95,   169,
     1576   -1318, -1318,    35, -1318,    95,    95, -1318,  2781,   700,   710,
     1577    1087, 10200, -1318, -1318,   717,  8401, -1318, -1318,   935, -1318,
     1578   -1318, -1318,   169, -1318,  1184,   226, -1318,  7011, -1318,  1087,
     1579    1087,  1087,   169, -1318,   954, -1318,  3330, -1318, -1318,   704,
     1580    1087, -1318,  1087, -1318,   123,  7909,  9163,   736, -1318,   850,
     1581     769,  1087, -1318,   954,   737,   747, -1318,  5300,   814, -1318,
     1582   -1318, -1318,  2451, -1318, -1318,  3603, -1318,   739,    61,  9458,
     1583   10457,  1617,  2781, -1318,    68, -1318, -1318,  9399,  1184,   778,
     1584   11233, -1318, -1318,   428, -1318, 10968,   787,   870, 10685, 10742,
     1585   10799, -1318,   824, -1318, -1318, -1318, -1318, 10856, 10856,   814,
     1586    7591,   827, 10742,  8015, -1318, -1318, -1318, -1318, -1318, -1318,
     1587     874, -1318,   901,  2137, 10742, -1318,   237,   407,   632,   476,
     1588     638,   859,   855,   869,   890,   101, -1318, -1318,   877,   616,
     1589   -1318,   336, -1318, -1318,  1795, -1318, -1318,   518,   907, -1318,
     1590     633,   907,   892,   123, -1318, -1318,   914,  9340, -1318,   916,
     1591    7697, -1318, -1318,  1197,   771,  5233, 10200,   935, -1318,   935,
     1592    1087,  1087, -1318, -1318, -1318, -1318, -1318, -1318,  1087,  9517,
     1593    1184, -1318, -1318,  9576,  1658, -1318,  9222, -1318, -1318, -1318,
     1594   -1318, -1318, -1318, -1318,   924,  4543, 10742, -1318, -1318, -1318,
     1595   -1318, -1318, -1318, -1318, -1318, -1318, -1318, -1318, -1318, -1318,
     1596    1617, -1318,   676,   942,   945,   946,   690,   947,   948,   958,
     1597    2279, -1318, -1318,   952,   226,   957, -1318, -1318,   959, -1318,
     1598   -1318, -1318,  2451, -1318, -1318, -1318, -1318, -1318,  2781, -1318,
     1599    7909,  7909, -1318,  1087,  1617, 11261,  1184,  7402, -1318, -1318,
     1600   -1318, -1318,  2451,    61, -1318, -1318,   935,   169, -1318, -1318,
     1601    2451, -1318,  5128, -1318, -1318,  1087,  1087,   364,  9635,   960,
     1602    2086,  8865, -1318,   432,   454,   850, -1318,  9163,   955,   944,
     1603     850,  1087, -1318, -1318, -1318, -1318,  9936, -1318,   383,  7322,
     1604   -1318,   169,   962, -1318,  1617, 11043, 10514, -1318, -1318, -1318,
     1605   -1318,   755,  2781, -1318,  7467,   739,  6768, -1318, -1318, -1318,
     1606     885,   414,   877,   850, 11233,   619,  9399, -1318, 11233, -1318,
     1607   -1318, -1318, -1318,   479, -1318,   964,   870,   125,  7591, -1318,
     1608   -1318, -1318,  7591, -1318,  7803,  7591, -1318, -1318, -1318,   969,
     1609   -1318,   544,   972,   640,   974, -1318,  8741,  5983, -1318, -1318,
     1610   -1318,   103, -1318, -1318, 10571, -1318,   112, -1318, -1318, -1318,
     1611   -1318, -1318, -1318, -1318, -1318, -1318, -1318, 10457, 10457, -1318,
     1612   10742, 10742, 10742, 10742, 10742, 10742, 10742, 10742, 10742, 10742,
     1613   10742, 10742, 10742, 10742, 10742, 10742, 10742, 10742, 10343, 10457,
     1614   -1318,   616,   900, -1318, -1318,    95,    95, -1318, -1318,  7909,
     1615   -1318, -1318,   959,   814, -1318,   959, 10628, -1318, -1318, -1318,
     1616    8333,  5983,   973,  8121,   976, -1318,  9694, -1318, -1318,   652,
     1617   -1318,   978,   378,   980,  1782,   139,   877, -1318,    95,    95,
     1618     877,   166, -1318,    95,    95,   959, -1318, -1318,    95,    95,
     1619   -1318,   907,  9753,  1184, 11174,   137,   273,  9753, -1318,  4101,
     1620   -1318,   877, -1318,  9517, -1318,   278,  7119,  7119,  7119,  1184,
     1621   -1318,  3868,   982,   220,   924,   302,   984, -1318,   977,  5550,
     1622     238, -1318,  1061,  1184,  7119,   814,  1617,   814,   739,   705,
     1623     907, -1318, -1318,   765,   907, -1318, -1318, -1318,   870, -1318,
     1624     907,   169,  9936, -1318,   570,  1000,   655,  1005, -1318,  1004,
     1625     169, -1318, -1318,  2451,   169,  1003,   464,   465,  9812,  6431,
     1626    1947, 10742,  2536, -1318, -1318,  1001,    20,  1001, -1318, -1318,
     1627   -1318,    95,    95, -1318, -1318,   850, -1318,    95, -1318, -1318,
     1628    8924,   850,  1006, 10742, -1318,   955, 11174, -1318, -1318,  1017,
     1629   -1318, -1318, -1318,   814, -1318, 11109, 10742, -1318,  7119,   671,
     1630    5233, -1318, -1318,   652,  1013,  1014,   885,  2927, -1318, -1318,
     1631   11233, -1318, -1318,  1015, -1318, -1318,  1021, -1318,  1015,  1023,
     1632   10968, 10457,   243,  1002,    53,  1025,  1026,   827,  1027,  1028,
     1633   -1318,  1030,  1032,  8983,  6095, -1318, 10457, -1318,   640,  1104,
     1634   -1318, 10400, 10457,  1034, -1318, -1318,   924,   678, -1318, 10457,
     1635   -1318, -1318, -1318, -1318, -1318, -1318, -1318,   237,   237,   407,
     1636     407,   632,   632,   632,   632,   476,   476,   638,   859,   855,
     1637     869,   890, 10742,   716, -1318,  9936,  1038,  1041,  1042,   900,
     1638   -1318, -1318, -1318, -1318, -1318,  9936,   679, 10742,  7119, -1318,
     1639    9517, -1318,  6543,  8227,  9281,  6319, -1318, -1318, -1318,   378,
     1640    9936,   820,  1047,  1051,  1052,  1057,  1058,  1059,  1060, -1318,
     1641    3170,  1782, -1318, -1318, -1318, -1318, -1318, -1318, -1318, -1318,
     1642   -1318, -1318, -1318, -1318, -1318, -1318, -1318, -1318, -1318,   959,
     1643   -1318, -1318, -1318,   877, -1318, -1318, -1318, -1318, -1318, -1318,
     1644   -1318, -1318,  1063, -1318,  1064,  1065, -1318, -1318,   226,  1034,
     1645    3868, -1318, -1318, -1318,  4543,  1066, -1318, -1318, -1318, -1318,
     1646   -1318,   850,  5481,  1140, -1318, -1318, -1318, -1318,  1049,   226,
     1647   -1318, -1318,   959, -1318, -1318,   959,   127,   959, -1318, -1318,
     1648   -1318, -1318, -1318, -1318,  8605, -1318,   169, -1318,  9163, -1318,
     1649   -1318,  1070,   856,  1073,  1076,  1077, -1318, -1318,  2536, -1318,
     1650   -1318, -1318, -1318, -1318, -1318, -1318,  2086, -1318,   944, -1318,
     1651   -1318,  1075,  1078,  1082, -1318, -1318,  1080,  1096, -1318,   671,
     1652    1985, -1318,   514, -1318,  2927,   877, -1318,  1100, 11233,  9871,
     1653    7909,  1102, -1318, -1318,  1098,  1110,  1107, -1318, 10742,    12,
     1654     400,  1114, -1318,  1112,  1112,  5983, 10457, -1318, -1318,  1112,
     1655   -1318,  1104,  4543, -1318, -1318, -1318, -1318,  1115, 10457,  1120,
     1656     814,  3868, -1318, 10571, -1318,   814, -1318, 10457, -1318,   825,
     1657     907, -1318, -1318, -1318, -1318, -1318, -1318, -1318,   924,  7697,
     1658   -1318, -1318,  6655,  1125, -1318,   833,   907, -1318,   845,   852,
     1659     907, -1318,  1087,  4145, -1318, -1318, -1318,  9936,  9936, -1318,
     1660    7402,  7402, -1318,  1123,  1124,  1126,  1133, -1318,  1134,   553,
     1661      38,  1034, -1318,   814, -1318,  5550, -1318, 10457,   466, -1318,
     1662    5871,  1136,  1141,  5631,  1149,  1155,    13,    17,    14, 10457,
     1663    1156,   169,  3019,  1137,  1150,  1143, -1318, -1318, -1318,  1161,
     1664   -1318, -1318, -1318, -1318, -1318, -1318, -1318, -1318, -1318,   850,
     1665    1167, 10457, -1318,  9936,  9936,    95,  1169, -1318,  9045,  8803,
     1666     867,   907, -1318, -1318, -1318, -1318, -1318, -1318, -1318, -1318,
     1667   -1318,  1174,  1985, -1318, -1318,  1158, -1318,  1015, -1318, -1318,
     1668    1617,  1173, -1318, -1318, -1318,   686,  1175, -1318,    53,  1178,
     1669   10742,  1159,    53,    53,  1176, -1318,   977, 10457,  1185,  1115,
     1670     607,   130,  1192, -1318,  1176, -1318,  1198,  1192, -1318, -1318,
     1671    1199, -1318, -1318,   959,  1201,  1203,  6207,  1202,  1205,  1207,
     1672   -1318, -1318,  1210, -1318, -1318,   959, -1318, -1318, -1318, -1318,
     1673     959, 10457, 10457, 10742,  1209, -1318, -1318, -1318, -1318, -1318,
     1674   -1318, -1318, -1318, -1318, -1318, -1318, -1318, 10742, 10742,  1212,
     1675    1219,  1192, -1318, -1318,   850, -1318, -1318, -1318,  4876,  9871,
     1676   10457, 10457,  1262, 10457, -1318, -1318,  1213, -1318,  1214, 10457,
     1677    1216,  1220, 10457,   929, -1318,  1223,  5017,    95, -1318, -1318,
     1678    5481,  1224,   469, -1318, -1318, -1318, -1318, -1318, -1318, -1318,
     1679   -1318, -1318,   959, 10172, -1318,  7467,  1232, -1318, -1318,  9871,
     1680     478,   509, -1318,  1236,  1239,   870,  1248, -1318,   541, -1318,
     1681   10457,  1250,  1245, -1318, -1318,  1251,   128,   133,   814,  1253,
     1682    1254, -1318,  1256, -1318,  9936, -1318, -1318, -1318, -1318, -1318,
     1683    1258, -1318,  9936,  9936,  9936, -1318, -1318,  1260, -1318,  1263,
     1684    1269,  1270,   589,  7186,  7294, -1318, -1318,   351, -1318,  1273,
     1685    1275, -1318,  7532,   721,   742,  1272,   752,  5749, -1318, -1318,
     1686     545, -1318, -1318,   768,  1279,   169,  1330,  1332, -1318, -1318,
     1687    5631, -1318, -1318, -1318,  1285,  1286,  9936, -1318, -1318, -1318,
     1688    1283, -1318, -1318, -1318, -1318, -1318, -1318,  9871,   870,   206,
     1689   -1318,  1268,   870,  1115,   327, -1318, -1318, -1318, -1318, -1318,
     1690   -1318, -1318, -1318,  1284, -1318, -1318, -1318, -1318, -1318, -1318,
     1691    1291,  1294, -1318, -1318, -1318, -1318, -1318, -1318, -1318,  1297,
     1692   -1318,  1296, -1318, -1318,  5631,   124, 10457,  5631, -1318,  1299,
     1693   10457, -1318,   270,  1314, -1318, -1318,  1306, -1318, -1318, -1318,
     1694   -1318, -1318,  1184,  1617,  1301,   874,   879, 10742, -1318,   790,
     1695    1307, 10457,   814,   814,  1308,  1310,  1316,  1317, -1318, -1318,
     1696    7402,  1320, -1318,  1376, 10742,  1313, -1318, -1318, 10286, -1318,
     1697     791, -1318,  1300,  5631,  1305, -1318, -1318,  1323, -1318,  1341,
     1698    1329,  9871, -1318, -1318, -1318,   870,   814,  1334,  1327,  1325,
     1699   -1318,  1192,  1192, -1318, -1318, -1318, -1318, -1318,  5631,   246,
     1700   -1318,   917, -1318, -1318,  6877, -1318, -1318,  1335, 10457, -1318,
     1701   10457,  6877,   169,  9635,  1342, -1318, -1318,  1351,   874, -1318,
     1702     793, -1318, -1318, 10457,  1357,  1359, -1318, 10742, 10742, -1318,
     1703   -1318,   989,    88, -1318, -1318,  1340, -1318,   989, -1318, -1318,
     1704    2035,   814,   169,  9635,  1364,  1345,   814, -1318, -1318, -1318,
     1705   -1318, -1318, 10286,  1369,   989,  6946, 10457, 10206,  1373,   989,
     1706    1380,  2035,  2697, -1318, -1318, -1318, -1318, -1318,  7909, -1318,
     1707   -1318, -1318, 10051, -1318, 10286, -1318, -1318,  1347,  9970, -1318,
     1708   -1318, 10206,   169,  2697,  1383,   794, -1318, 10051, -1318, -1318,
     1709   -1318,  9970, -1318, -1318,   169, -1318, -1318, -1318, -1318, -1318
    16951710};
    16961711
     
    16981713static const yytype_int16 yypgoto[] =
    16991714{
    1700    -1269,  3902,  2604, -1269,   354, -1269,    -1,     2,   742, -1269,
    1701    -1269, -1269,  -489,  -961,  -282,  4749, -1269,   570,   459,   468,
    1702      357,   464,   844,   848,   849,   847,   850, -1269,  -229,  -231,
    1703     4555,   296,  -694,  -919, -1269,   166,  -721,   143, -1269,    86,
    1704    -1269,   216, -1143, -1269, -1269,   -17, -1269, -1146, -1036,    71,
    1705    -1269, -1269, -1269, -1269,   -75, -1160, -1269, -1269, -1269, -1269,
    1706    -1269, -1269,   141,   -26,    21,   316, -1269,   320, -1269,    13,
    1707    -1269,  -294, -1269, -1269, -1269,   364,  -829, -1269, -1269,    11,
    1708     -963,   125,  1704, -1269, -1269, -1269,   -72, -1269,    82,    49,
    1709      -18,  1039,  3754, -1269, -1269,    81,   133,   536,  -256,  1629,
    1710    -1269,  1307, -1269, -1269,   224,  1625, -1269,  1893,  1163, -1269,
    1711    -1269,  -426,  -421,   993,   994,   507,   747,   306, -1269, -1269,
    1712      980,   516,  -433, -1269,  -199,    75,   591, -1269, -1269,  -894,
    1713    -1000,     6,   910,   861,   176, -1269,   721,   158,  -317,  -210,
    1714     -149,   478,   577, -1269,   809, -1269,  2211,   740,  -443,   722,
    1715    -1269, -1269,   511, -1269,  -232, -1269,   -46, -1269, -1269, -1269,
    1716    -1268,   243, -1269, -1269, -1269,   981, -1269,    -7, -1269, -1269,
    1717     -827,   -35, -1227,  -161,  1978, -1269,  3527, -1269,   719, -1269,
    1718     -157,    41,  -172,  -170,  -163,     4,   -41,   -36,   -34,   777,
    1719       24,    33,    45,  -143,  -151,  -150,  -145,  -139,  -288,  -529,
    1720     -505,  -476,  -564,  -323,  -560, -1269, -1269,  -516,   899,   906,
    1721      915,  1643,  4256,  -522,  -566,  -549,  -514,  -546, -1269,  -372,
    1722     -680,  -674,  -672,  -603,  -208,  -186, -1269, -1269,    64,   293,
    1723      -93, -1269,  3162,   208,  -613,  -396
     1715   -1318,  3762,  2543, -1318,  1454, -1318,    -1,     2,   -89, -1318,
     1716   -1318, -1318,  -483,  -942,  -282,  4006, -1318,  1670,   483,   485,
     1717     347,   484,   927,   931,   926,   932,   937, -1318,   792,  -594,
     1718    4587,   375,  -691,  -946, -1318,  -112,  -722,  -695, -1318,   412,
     1719   -1318,   304, -1184, -1318, -1318,    54, -1318, -1317,  -763,   149,
     1720   -1318, -1318, -1318, -1318,    -3, -1151, -1318, -1318, -1318, -1318,
     1721   -1318, -1318,   223,    51,    55, -1318,  -364, -1318,   402,   204,
     1722   -1318,    86, -1318,  -320, -1318, -1318, -1318,   450,  -745, -1318,
     1723   -1318,    10,  -865,   258,   180, -1318, -1318, -1318,  -222, -1318,
     1724     126,    49,  -187,   951,  3574, -1318, -1318,   213,   151,   363,
     1725    -251,  2053, -1318,  1304, -1318, -1318,   344,  1615, -1318,  1898,
     1726    1496, -1318, -1318,  -417,  -439,  1083,  1084,   597,   837,   279,
     1727   -1318, -1318,  1086,   598,   -23, -1318,    37,  -463,   807, -1318,
     1728   -1318,  -923,  -977,   142,   669,   965,   280, -1318,   175,   -35,
     1729    -257,  -199,  -156,   555,   651, -1318,   888, -1318,  1925,  1031,
     1730    -460,   803, -1318, -1318,   594, -1318,  -228, -1318,   140, -1318,
     1731   -1318, -1318, -1268,   320, -1318, -1318, -1318,  1067, -1318,     6,
     1732   -1318, -1318,  -851,   -86, -1303,  -124,  2887, -1318,  2837, -1318,
     1733     812, -1318,  -168,   585,  -176,  -173,  -171,     4,   -41,   -39,
     1734     -36,   834,    47,    56,    79,  -167,  -162,  -161,  -159,  -158,
     1735    -273,  -557,  -498,  -458,  -543,  -318,  -539, -1318, -1318,  -499,
     1736     986,   992,   993,  1485,  4182,  -565,  -577,  -550,  -542,  -536,
     1737   -1318,  -384,  -672,  -658,  -654,  -591,  -211,  -316, -1318, -1318,
     1738     152,   299,   -75, -1318,  2880,   592,  -631,  -200
    17241739};
    17251740
     
    17271742   positive, shift that token.  If negative, reduce the rule which
    17281743   number is the opposite.  If YYTABLE_NINF, syntax error.  */
    1729 #define YYTABLE_NINF -503
     1744#define YYTABLE_NINF -511
    17301745static const yytype_int16 yytable[] =
    17311746{
    1732      110,   146,    46,   445,    95,   432,   147,   918,   148,   392,
    1733      256,   393,   111,   919,   141,   920,   377,   857,   394,   498,
    1734      609,    47,   403,  1161,   140,   400,  1127,   959,   701,   707,
    1735      395,   396,   881,    46,   832,    95,   397,  1360,   839,   401,
    1736      831,    94,   398,   774,    46,   506,    46,   505,   158,   740,
    1737      113,   833,    47,   745,   806,   604,    46,   843,  1069,   337,
    1738     1070,  1119,    46,   850,   189,    46,   149,   212,    46,    30,
    1739      222,   828,    94,   976,  1171,   150,   696,   215,   263,  1177,
    1740      840,    66,    60,   145,   918,    94,   834,   151,   108,   392,
    1741      919,   393,   920,   156,   738,   829,   475,   477,   394,   935,
    1742      119,   185,   672,   674,    94,   400,    46,    94,   160,    46,
    1743      395,   396,    66,    60,   749,    46,   397,   668,   120,   401,
    1744      108,   750,   398,   198,   830,    53,   112,  1429,  1159,  1160,
    1745      402,   596,   108,    67,  1189,   404,   677,  1167,   169,  1234,
    1746      146,  -218,  -218,  1436,   681,   147,    46,   148,   158,   766,
    1747       30,  1414,   254,   565,    46,   371,    53,   139,   156,    46,
    1748      143,   367,   418,  1168,    67,    30,  1235,   199,    30,  1168,
    1749      770,   372,   628,   160,   476,    30,   632,   744,   439,  1185,
    1750      471,   249,   421,    46,    46,    94,   158,   566,   206,  1378,
    1751     1379,   216,   318,   666,   152,   757,   208,   460,    94,    46,
    1752      735,   334,   872,   873,   828,   149,  -218,    46,   844,   158,
    1753     1414,   165,   847,  1176,   150,  1161,    46,   528,   890,    46,
    1754      146,   435,   391,   185,    74,   147,   151,   148,   829,   248,
    1755      173,   404,   412,   864,   404,    30,  1418,   867,   108,   481,
    1756      463,   404,   663,   587,  1077,   476,    94,   465,   177,    46,
    1757      422,    95,   163,  1380,   426,    74,   664,   830,    94,   832,
    1758      810,   167,  1161,    46,    46,  1005,   158,   567,    47,   427,
    1759       46,  1111,   337,  1017,   729,   410,   833,    46,  1112,   609,
    1760      257,   843,    30,   258,   318,   448,   701,   516,    94,   994,
    1761      197,   692,   942,   104,   104,  1129,   828,  1187,   429,   841,
    1762      453,   601,   479,  1307,  1484,   694,  1378,  1379,   437,  1309,
    1763     1308,   834,  1177,  1418,   108,  1018,   426,   163,  1418,   488,
    1764      829,  1483,   108,   663,   104,    46,  1497,   367,    66,    60,
    1765     1191,   427,  -274,  1418,   472,   243,  1492,   664,   521,   471,
    1766     1418,   156,   433,  1496,    46,    46,   848,   380,   601,   830,
    1767      434,   322,   776,   523,   655,  -109,   160,   248,   471,   104,
    1768     1313,    46,  1365,   381,    94,    46,   471,  1159,  1160,   246,
    1769     1389,  1069,    53,  1070,  1161,   520,  -109,   832,   108,  -498,
    1770       67,   997,   670,   596,   603,   586,   911,   675,   593,   260,
    1771      431,    46,   -10,   108,   833,   136,   137,   108,   857,   136,
    1772      234,    46,   817,   367,  1459,  1403,  1404,   626,   172,   576,
    1773     1464,   630,   596,   428,   334,   577,  1315,   596,   108,    46,
    1774      136,   137,   840,   383,    46,  1479,    46,   248,   324,   834,
    1775     1486,   337,   385,   235,   239,   870,   870,   870,   236,   384,
    1776      185,   682,  -424,   322,   483,   866,  1346,   577,   386,  -425,
    1777       46,   500,   870,  1177,   325,   519,   877,   921,   172,   505,
    1778     1177,   172,   272,  1021,  1147,  1149,   110,   387,   318,   318,
    1779      717,    74,   555,   556,    46,   428,    74,   208,   729,   934,
    1780     1409,   505,    46,   388,   367,   702,    46,  1080,    95,   693,
    1781       46,   498,   274,   472,   894,   448,  1125,   882,   448,  1177,
    1782      163,   703,   275,  1230,   448,    47,   172,   557,   558,  1099,
    1783      453,   754,   472,   453,   609,   392,   113,   393,   173,   453,
    1784      472,   679,   704,   860,   394,    94,   870,   861,   771,   603,
    1785      862,   754,   400,   777,   863,   629,   395,   396,   705,   633,
    1786      104,   488,   397,   318,   702,   488,   401,   598,   398,  1016,
    1787     1085,   704,   729,  1096,  1344,   721,   521,   728,   696,   521,
    1788      914,   318,   521,  1174,   726,    66,    60,   915,   172,   988,
    1789      276,   523,  1018,   334,   523,  1174,   548,   523,   365,  1175,
    1790      465,   549,   550,   366,  1300,   671,   673,  1442,   326,  1302,
    1791       46,  1291,   337,   520,  1442,   108,   520,   136,   137,   520,
    1792     1301,  1085,    46,   225,    46,  1303,   208,   226,   471,    53,
    1793      230,   569,   232,   404,   719,   870,   762,    67,   892,   241,
    1794      720,   570,   172,    46,   327,  1388,   318,   322,   322,   172,
    1795      999,   741,  1347,  1480,   817,    74,   742,   815,   862,    46,
    1796      593,   827,  1095,   603,   328,  -102,   764,  1031,   404,  -102,
    1797      939,   891,    46,   893,    74,    46,   765,   551,   552,   701,
    1798     1016,  -109,    74,  -109,  1029,   751,   337,  -109,   752,   856,
    1799      819,   758,   370,   519,   593,   717,   519,  1332,   329,   519,
    1800      865,  1333,  -109,  -109,  1074,   943,   883,   601,   642,    46,
    1801      330,    46,   884,    36,   736,   944,   172,    39,   382,  1444,
    1802      737,  1445,   322,   378,    40,    41,   559,   560,    74,   871,
    1803      871,   871,  -449,   172,  -449,   746,   402,   172,  -449,   938,
    1804      322,   747,  1107,   817,   762,   989,   871,   761,   917,    42,
    1805      693,  1036,   799,   762,   334,    46,    46,   905,   390,   144,
    1806      907,   984,  1481,   762,   225,   996,   762,   985,   419,    46,
    1807      138,   720,  1222,  1340,   903,   434,   448,   420,   577,   762,
    1808     1128,   728,   472,   910,  1341,   663,  1343,   912,   726,   424,
    1809      762,   453,   762,   692,   827,   603,   442,   104,   172,   664,
    1810       36,   455,   170,   171,    39,   322,   488,   694,   918,  1348,
    1811      458,    40,    41,   596,   919,   762,   920,   859,   461,   598,
    1812      871,   237,   240,   211,   472,   462,  1399,   717,   334,   108,
    1813     1031,    36,  1400,   874,   484,    39,   366,   717,  1419,  1500,
    1814      238,   159,    40,    41,   762,   577,   889,    46,   858,   248,
    1815      324,   404,   717,   598,   493,   728,   494,   190,   512,    46,
    1816      213,   528,   726,   223,   553,   554,   208,   733,   509,     8,
    1817        9,    10,    11,    12,   211,   524,   108,   734,   136,   137,
    1818      208,   526,   527,   324,   404,   998,   827,   561,   126,   815,
    1819      127,   128,   129,   547,   562,   578,    30,   404,   603,  1224,
    1820      563,   505,   225,  -275,   230,   581,  1056,   404,  1172,   871,
    1821        8,     9,    10,    11,    12,   817,   895,   211,   404,    33,
    1822      564,   898,   819,   404,    74,   567,   529,   530,   531,   527,
    1823      333,    46,   787,   788,   789,   790,  -421,    30,   412,   659,
    1824      404,   159,   585,   500,    46,   481,   324,   404,   729,   532,
    1825      588,   533,    46,   534,   368,   638,  1263,  1264,   505,   505,
    1826       33,  1131,   172,   404,   656,   527,    74,   841,   324,   601,
    1827       46,   208,  1314,  1316,  1317,  1282,  1283,   211,   815,   159,
    1828      457,   657,   448,   693,  1100,  1143,   665,   404,    66,    60,
    1829      225,   693,  1146,   667,   601,   172,    36,   453,   170,   171,
    1830       39,  1121,   159,  1148,   754,   601,  1121,    40,    41,   603,
    1831     1210,   172,   404,   658,   436,   211,  1151,  1079,   925,   211,
    1832      925,   488,  1102,   318,   172,  1437,  1438,   729,  1378,  1379,
    1833      783,   784,    53,   685,     2,   202,     4,     5,     6,     7,
    1834       67,   785,   786,   791,   792,   717,   717,   660,   661,   662,
    1835     1058,   253,   708,   748,  1121,   710,  -222,   759,   763,    63,
    1836      114,   767,   820,   -12,  1056,   822,   824,  1186,  1188,  1190,
    1837      856,   835,     2,   202,     4,     5,     6,     7,   879,   880,
    1838      886,   285,   906,   908,   913,   688,   909,  1217,   960,  -398,
    1839       63,   142,    34,   737,    35,   933,  -502,  1471,  1101,   947,
    1840      224,   717,   717,   157,   211,   954,     8,     9,    10,    11,
    1841       12,   956,   961,   965,   966,   643,   968,  1158,   969,   970,
    1842      368,   172,   971,   337,    46,   217,   980,   991,   992,   993,
    1843       34,    74,    35,    30,  1007,  1008,  1085,  1009,   780,   781,
    1844      782,  1010,  1011,  1179,   472,  1012,  1013,  1024,  -386,   448,
    1845      815,  -385,  1071,  1082,    -3,  1038,    33,   434,  1081,  1193,
    1846     1083,    36,   255,  1084,   453,    39,  1091,  1411,  1089,   505,
    1847     1073,  1088,    40,    41,  1092,  1090,  1098,  1108,  1109,   762,
    1848     1110,   527,   322,   211,   974,  1113,  1120,    53,  1117,  1141,
    1849     1164,  1162,  1163,  1165,   706,    67,   368,    42,  1166,   457,
    1850      104,  1180,  1181,   323,  1183,  1184,  1192,   144,  1182,  1198,
    1851      215,   255,   344,  1196,    -3,  1197,  1203,  1208,    46,  1056,
    1852     1214,  1225,  1223,   493,  1218,  1457,  1411,   505,   505,   858,
    1853     1228,   728,   739,   211,   743,  1232,  1236,  1239,   726,  1296,
    1854     1241,   399,  1243,  1244,  1249,  1273,   210,  1245,  1246,  1247,
    1855     1100,  1256,  1265,  1121,  1121,  1121,   417,  1266,  1276,   142,
    1856      423,  1277,  1342,  1490,   157,   334,   104,  1290,   717,  1298,
    1857        2,   202,     4,     5,     6,     7,   717,   717,   717,  1279,
    1858      904,  1280,  1287,   172,  1304,   440,    74,  1306,  1102,   443,
    1859     1310,   444,  1312,  1318,  1311,  1319,  1320,   210,  1322,  1328,
    1860      459,    66,    60,  1329,  1330,  1331,    63,  1056,  1338,  1339,
    1861     1349,   473,  1283,   527,  1352,  1354,   392,   726,   393,  1355,
    1862      717,   480,  1357,   206,   216,   394,  1362,    72,    34,   423,
    1863       35,   208,   400,  1365,  1361,  1372,  1100,   395,   396,  1373,
    1864      210,  -387,  1376,   397,  1397,    53,   401,  1387,  1391,   398,
    1865     1393,   663,  1401,    67,   211,   104,  1335,   975,    72,  1056,
    1866     1398,  1410,  1056,  1058,  1101,   664,  1271,  1272,  1420,  1274,
    1867     1405,  1406,  1407,  1408,  1102,  1278,  1179,   472,  1281,  1422,
    1868       46,    46,   211,   878,  1333,  1121,  1121,   211,  1415,  1350,
    1869     1424,  1426,  1428,   218,   718,   255,  1430,  1431,   594,  1443,
    1870      210,  1056,  1432,   527,   622,  1451,  1056,  1453,  1455,  1456,
    1871     1463,  1475,   990,  1478,  1485,   433,  1487,   627,  1493,  1499,
    1872       53,   627,   995,   434,   255,   793,  1100,   901,    67,  1056,
    1873      794,   796,   795,  1231,  1470,   797,  1289,  1006,   210,  1390,
    1874     1458,  1501,   210,   929,    74,  1351,  1474,   146,  1226,   932,
    1875     1101,  1353,   147,  1227,   148,  1202,  1446,  1086,   712,   683,
    1876      684,   926,   812,    36,  1102,   170,   171,    39,  1087,  1472,
    1877      473,    46,  1116,   211,    40,    41,   885,  1037,  1056,   949,
    1878      347,  1097,  1299,  1056,   344,   731,   957,   211,   802,   473,
    1879       46,    46,   104,   158,  1449,   803,  1056,   473,  1056,   370,
    1880        0,     0,  1056,  1377,   804,  1056,  1385,     0,     0,  1450,
    1881       46,  1056,   367,   104,     0,  1056,     0,  1179,   472,    74,
    1882        0,  1449,     0,   713,  1179,   472,   423,   210,  1384,   479,
    1883     1447,     0,   104,     0,     0,    36,  1450,   179,   180,    39,
    1884     1101,   727,     0,    63,   318,  1417,    40,    41,     0,     0,
    1885     1421,   423,     0,   441,  1396,   423,     0,  1473,     0,     0,
    1886        0,    53,     0,  1179,   472,     0,     0,     0,    53,    67,
    1887      172,   181,     0,  1435,    72,     0,    67,     0,   211,    72,
    1888        0,   182,     0,   255,   344,     0,     0,     0,   104,     0,
    1889        0,   527,    36,  1498,   179,   180,    39,     0,     0,   718,
    1890        0,     0,     0,    40,    41,  1503,   210,    53,     8,     9,
    1891       10,    11,    12,     0,     0,    67,     0,     0,   104,     0,
    1892        0,   643,     0,     0,     0,     0,     0,  1041,   261,   805,
    1893     1156,  1157,   509,     0,     0,    30,     0,     0,   262,     0,
    1894     1491,     0,     0,     0,     0,    75,  1491,   627,   818,     0,
    1895      594,     0,     0,     0,     0,  1491,   210,     0,    33,  1491,
    1896       74,   837,     0,     0,     0,     0,     0,    74,     0,     0,
    1897        0,     0,   218,     0,     0,     0,    75,     0,     0,   594,
    1898        0,     0,     0,     0,   594,     0,  1205,  1206,     0,     0,
    1899      627,     0,     0,   344,   344,   344,     0,     0,     0,   569,
    1900        0,   404,     0,   322,     0,     0,    74,     0,   104,   570,
    1901      344,   219,   209,     0,     0,   643,     0,     0,     0,     0,
    1902        0,     0,   228,     0,    54,    54,     0,     0,   713,   104,
    1903        0,   718,   172,     0,     0,     0,   104,     0,    72,   473,
    1904        0,   718,    36,   527,   255,   727,    39,     0,   922,     0,
    1905        0,  -276,   347,    40,    41,    54,   718,    72,     8,     9,
    1906       10,    11,    12,   209,   211,    72,     0,     0,     0,     0,
    1907        0,     0,     0,     0,     0,   104,     0,   210,   825,     0,
    1908      601,   473,     0,     0,   344,    30,     0,    54,   602,     0,
    1909       54,   347,  -277,   948,     0,     0,   423,     0,   349,     8,
    1910        9,    10,    11,    12,     0,   210,   209,     0,    33,   347,
    1911      210,    72,  1041,     0,     0,     0,     0,     0,   255,   727,
    1912        0,     0,     0,     0,   973,     0,    30,     0,     0,     0,
    1913        0,     0,     8,     9,    10,    11,    12,     0,     8,     9,
    1914       10,    11,    12,     0,     0,     0,     0,     0,   406,    33,
    1915        0,     0,   347,  1321,     0,   414,     0,     0,     0,    30,
    1916      713,  1323,  1324,  1325,     0,    30,   209,     0,     0,     0,
    1917      713,     0,     0,   344,     0,   627,     0,   342,  1004,   627,
    1918      818,     0,    33,     0,     0,   713,     0,    36,    33,   179,
    1919      180,    39,    75,     0,     0,  1015,   210,    75,    40,    41,
    1920        0,     0,     0,     0,   209,  1356,     0,     0,   209,     0,
    1921      210,     0,     0,    77,     0,  1269,   347,     0,     0,     0,
    1922        0,     0,     0,   600,   499,   601,     0,   406,     0,   764,
    1923        0,   404,     0,   602,     0,     0,     0,     0,   211,   765,
    1924        0,    54,     0,     0,    77,     0,    63,     0,     0,   718,
    1925      718,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    1926        0,   347,   347,   347,     0,     0,     0,     0,   627,     0,
    1927        0,    54,     0,     0,     0,     0,     0,     0,   347,   220,
    1928        0,   575,     0,     8,     9,    10,    11,    12,     0,   579,
    1929      219,     0,   582,   209,     0,     0,   347,     0,     0,     0,
    1930        0,   210,     0,  1094,     0,   718,   718,    72,     0,     0,
    1931       30,   423,   114,   347,     0,     0,     0,    36,     0,   179,
    1932      180,    39,     0,   121,   124,   125,   344,     0,    40,    41,
    1933      211,     0,     0,    33,   535,   536,   537,   538,   539,   540,
    1934      541,   542,   543,   544,     0,     0,     0,     0,     0,    72,
    1935        0,     0,   347,   687,   406,   404,    75,     0,   414,     0,
    1936      594,   688,     0,   689,     0,     0,   350,   545,     0,     0,
    1937      349,     0,   209,   142,   943,    75,   601,     0,   713,   713,
    1938        0,   344,   344,    75,   944,     0,     0,   347,     0,   209,
    1939        0,     0,     0,     0,   250,     0,   251,     0,     0,     0,
    1940        0,  1178,     0,     0,     0,     0,     0,     0,     0,   349,
    1941        0,     0,     8,     9,    10,    11,    12,     0,     0,     0,
    1942        0,     0,   209,     0,     0,     0,     0,   349,   347,    75,
    1943        0,     0,     0,     0,   713,   713,     0,     0,   347,    30,
    1944      627,   347,   406,  1297,     0,     0,   218,     0,   347,   342,
    1945        0,     0,     0,   347,     0,     0,     0,     0,     0,     0,
    1946       77,     0,    33,     0,     0,    77,     0,    36,     0,     0,
    1947      349,    39,   718,     0,     0,   389,     0,     0,    40,    41,
    1948      718,   718,   718,     0,     0,   408,   409,   210,     0,     0,
    1949      413,     0,   415,   416,     0,   727,     0,     0,     0,     0,
    1950        0,     0,     0,   733,     0,     0,     0,     0,    54,     0,
    1951        0,     0,     0,   734,    72,    36,     0,   179,   180,    39,
    1952        0,     0,     0,     0,   718,     0,    40,    41,     0,     0,
    1953        0,    84,   575,   575,   349,     0,     0,     0,  1270,     0,
    1954        0,     0,     0,   209,     0,     0,     0,     0,     0,   342,
    1955        0,   600,     0,   601,     0,   255,     0,     0,   220,    63,
    1956        0,   602,    84,     0,     0,     0,     0,     0,     0,     0,
    1957        0,   209,   713,     0,   727,     0,   209,     0,   114,   349,
    1958      349,   349,     0,     0,     0,     0,     0,     0,     0,     0,
    1959        0,     0,     0,     0,   347,     0,   349,   221,     0,     0,
    1960        0,   713,     0,     0,     0,     0,     0,     0,     0,   713,
    1961      713,   713,     0,   342,   349,     0,     0,     0,     0,   896,
    1962      344,   344,     0,   899,    77,    75,     0,     0,     0,     0,
    1963        0,   349,     0,     0,  1178,     0,     0,     0,   350,     0,
    1964        0,     0,     0,    77,     0,     0,   347,   347,     0,   347,
    1965      347,    77,     0,   713,     0,     0,   406,     0,   342,   342,
    1966      342,   210,   209,     0,   114,     0,     0,    75,     0,    72,
    1967      349,     0,     0,     0,     0,   342,   209,   350,     0,     0,
    1968        0,     0,     0,     0,   357,     0,     0,     0,     0,     0,
    1969        0,     0,     0,     0,     0,   350,   499,    77,     0,     0,
    1970        0,     0,   347,   347,     0,   349,     0,     0,     0,     0,
    1971        0,     0,     0,     0,     0,     8,     9,    10,    11,    12,
    1972       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    1973       23,    24,     0,   344,    25,    26,    27,     0,   350,     0,
    1974        0,     0,    30,   446,     0,     0,   349,     0,     0,   342,
    1975        0,     0,     0,   210,   114,     0,   349,     0,     0,   349,
    1976        0,     0,     0,   347,   219,    33,   349,   209,   575,     0,
    1977        0,   349,    37,    38,     0,  1178,     0,     0,    84,     0,
    1978        0,     0,  1178,    84,     0,     0,     0,     0,     0,     0,
     1747     110,   146,    46,   147,    95,   393,   148,   447,   394,   378,
     1748     395,   111,   704,   422,   401,   402,   434,   885,   923,   396,
     1749     397,   731,   398,   399,   500,   836,   611,   263,   256,   965,
     1750     473,   861,   924,    46,   743,    95,   925,   140,   748,   844,
     1751     710,  1078,  1129,   630,    46,   832,    46,   634,   158,  1374,
     1752     113,   778,   837,  1137,  1171,    47,    46,    30,    30,   404,
     1753     838,   843,    46,   835,   189,    46,   699,   212,    46,   847,
     1754     222,   606,    30,   810,   120,   854,   215,   338,   108,   108,
     1755     984,  1436,   108,   276,   941,   393,    47,   530,   394,   149,
     1756     395,  1432,   671,   156,   401,   402,   923,   927,   150,   396,
     1757     397,  1181,   398,   399,   833,    30,    46,  1169,  1170,    46,
     1758     924,   419,   680,  1120,   925,    46,   198,   119,   403,   940,
     1759     684,   151,   248,   405,   405,  1199,    60,  1177,   286,   598,
     1760    -225,  -225,    30,   477,   479,   277,   413,  1195,   405,   770,
     1761     146,  1197,   147,  1447,   834,   148,    46,  1077,   158,   248,
     1762     325,    67,   254,  1178,    46,  1432,   968,    60,   156,    46,
     1763     199,   368,   478,   675,   677,  1436,  1394,  1395,   108,   483,
     1764    1436,   405,   139,   875,   875,   875,    30,   108,   521,   832,
     1765      54,    54,    67,    46,    46,  1187,   158,  1436,   507,   567,
     1766     473,   875,   319,   108,  1436,  -225,   160,  1066,   108,    46,
     1767     530,   335,   530,    30,   138,   669,   774,    46,  1246,   158,
     1768     473,    54,   141,    66,   208,   780,    46,   738,   473,    46,
     1769     146,   437,   147,   568,   143,   148,   731,   753,   149,  1085,
     1770    1396,  1327,   666,   667,   754,  1247,  1329,   150,   833,   747,
     1771     845,   864,   603,    54,    66,   865,    54,   467,  1171,    46,
     1772     424,    95,   836,   465,   428,   237,   240,   761,    53,   112,
     1773     151,   160,   589,    46,    46,   875,   158,   852,   152,   603,
     1774      46,   704,   832,   732,   821,   167,  1026,    46,   834,   837,
     1775     372,   530,   695,   697,   319,   450,   611,   838,   518,    53,
     1776    1013,   338,   741,  -455,  1323,   847,   373,  1171,  1025,   104,
     1777     104,   731,    47,  1508,   658,  1186,  1139,  1377,   674,   676,
     1778    1002,   887,  1394,  1395,   666,   667,   428,   870,   530,   490,
     1779    1517,   206,   814,  -455,   216,  -455,    46,  1521,   368,  -455,
     1780     104,   833,   673,   343,   173,  1457,  1509,  1201,   678,   523,
     1781     381,   888,   156,   645,    74,    46,    46,   889,   550,   165,
     1782    1169,  1170,   966,   551,   552,   875,   382,   429,  1192,  1078,
     1783    1522,  1178,    46,   916,   441,   104,    46,   108,   436,   136,
     1784     137,   834,   836,    60,  1119,    74,  1405,   866,   474,   478,
     1785     177,   867,   598,   462,   257,   844,   588,   258,   455,   595,
     1786     197,   108,    46,   136,   137,  -281,   521,    54,    67,   837,
     1787     521,   569,    46,   521,   368,   881,   848,   838,   628,   384,
     1788     851,   598,   632,  1171,   459,   335,   598,   752,   861,   429,
     1789      46,   108,  1187,   136,   234,   385,    46,    54,    46,  -109,
     1790     225,   868,   239,   386,   226,   871,  1381,   230,   578,   232,
     1791    1421,  1422,   525,    36,   579,   160,   241,    39,   243,   387,
     1792    -109,   338,    46,   246,    40,    41,   803,   235,  -109,  -109,
     1793      66,   473,   236,  -506,   169,  1077,   685,  1427,   110,   319,
     1794     319,   248,   579,   755,  -109,   435,    46,   756,   732,   829,
     1795     762,   603,  1157,  1159,    46,   722,   368,   -10,    46,   604,
     1796      95,   723,    46,   886,   433,  1242,   208,   450,  1107,   500,
     1797     450,  1088,  1121,   945,  1007,    53,   450,   249,   821,  1122,
     1798    1135,   388,   260,   758,   393,  1066,   739,   394,   113,   395,
     1799     553,   554,   740,   611,   401,   402,  1236,   389,   396,   397,
     1800     775,   398,   399,   758,   899,   781,  -431,  1026,   474,  -432,
     1801     705,    47,  1360,   490,  1093,   319,   104,   490,   485,   495,
     1802     646,   496,   699,   732,   326,   502,   706,   523,   474,   557,
     1803     558,   523,   707,   319,   523,  1358,   474,  1168,  1024,  1187,
     1804     897,   225,   705,   707,  1184,   335,  1187,  1184,   708,   906,
     1805     379,   749,   467,  1275,  1276,    94,  1312,   750,   919,   920,
     1806    1185,    74,    46,  1303,   559,   560,    74,  1093,   821,   272,
     1807     455,   411,  1313,   455,    46,  1367,    46,   343,   720,   455,
     1808     729,   274,    60,   338,   876,   877,    94,  1314,   866,   580,
     1809    1187,   405,  1103,   173,   431,    46,   208,   145,   319,    94,
     1810     709,   895,   275,  1315,   439,   459,   163,    67,  1404,   819,
     1811     631,    46,   595,  1321,   635,   185,   765,   366,    94,   704,
     1812    1322,    94,   766,   766,   896,    46,   898,  -102,    46,  1393,
     1813     525,  -102,  1401,  1029,   525,   969,    54,   525,   742,  1361,
     1814     746,   860,   910,   874,   874,   874,   595,   327,   766,  1037,
     1815     328,  1024,   869,   731,   108,   329,   136,   137,   338,  1463,
     1816     330,   874,    46,  1346,    46,   331,  1463,  1347,  1482,    66,
     1817    1082,   163,   522,  1435,  1487,   948,   367,   343,  1439,  -109,
     1818     225,  -109,   230,   555,   556,  -109,  1465,   571,  1466,   405,
     1819     744,  1504,   944,   561,   562,   745,  1511,   572,  1044,    94,
     1820    -109,  -109,  1115,  1456,   583,   323,   405,   335,    46,    46,
     1821    1505,   768,    94,   405,    53,     2,   202,     4,     5,     6,
     1822       7,   769,    46,   371,  1234,  1104,    74,   912,  1238,   450,
     1823     666,   667,   383,   766,  1506,   874,   392,   185,   695,   697,
     1824     391,   343,   949,   821,   603,   436,    74,   248,   325,   405,
     1825     992,  1004,   950,  1417,    74,   104,   993,   723,  1232,   490,
     1826      94,   413,   662,   405,   579,  1005,   403,   430,   598,   225,
     1827    1429,   420,    94,    34,   823,    35,   900,  1516,   405,   474,
     1828    1349,   421,   335,  1516,   720,   729,   343,   343,   343,   923,
     1829     882,   426,  1516,  1354,   766,   997,  1516,   323,   444,   766,
     1830      74,    46,    94,   924,   343,  1161,    36,   925,   179,   180,
     1831      39,    36,   457,    46,  1355,    39,   481,    40,    41,   682,
     1832     766,   474,    40,    41,  1357,   874,   483,   325,   405,   430,
     1833     766,   463,   455,  1480,  1429,    -3,   903,   208,   405,  1006,
     1834    1362,   464,   602,   819,   603,   460,   766,    42,   159,   108,
     1835     935,   208,   604,   724,   486,   163,   938,   144,   506,  1182,
     1836     729,  1064,  1418,  1437,   190,  1475,  1525,   213,  1415,   766,
     1837     223,  1476,   579,   863,   791,   792,   793,   794,   343,    94,
     1838       8,     9,    10,    11,    12,   108,    46,   136,   137,   878,
     1839     522,   845,   325,   603,   522,   514,  1141,   522,   405,   605,
     1840      46,   526,   600,   894,  1153,   732,   405,    30,    46,     2,
     1841     202,     4,     5,     6,     7,   286,  1156,   720,   603,   530,
     1842      36,    63,   114,  1158,    39,   603,    46,   720,   325,   405,
     1843      33,    40,    41,   819,  1328,  1330,  1331,   450,  1220,  1108,
     1844     405,   563,   720,   208,   931,   564,   931,   566,   159,   531,
     1845     532,   533,    63,  1294,  1295,   185,   736,  1415,  1416,  1131,
     1846     565,   369,   758,  -428,  1131,   157,   737,    34,   343,    35,
     1847     569,   571,   534,   405,   535,   343,   536,   490,  1110,   319,
     1848     334,   572,   323,   323,   732,   587,   159,   217,    60,   126,
     1849     590,   127,   128,   129,  1227,  1458,  1459,    74,   640,   969,
     1850     502,  1394,  1395,   969,   969,   696,   787,   788,   823,   159,
     1851     789,   790,  1131,    67,   659,   795,   796,   660,   661,   663,
     1852     664,   438,  1064,   668,   255,  1196,  1198,  1200,   860,   646,
     1853     665,   670,   253,   711,   688,   751,  1049,   713,  -229,    74,
     1854     455,    94,    54,   763,   767,   605,   771,   824,  1283,  1284,
     1855     826,  1286,   828,   908,   839,   884,  1494,  1290,   323,   891,
     1856    1293,   -12,   915,   883,   211,   324,   917,     8,     9,    10,
     1857      11,    12,   911,   255,   345,    66,   323,   913,   914,   918,
     1858     691,   238,    46,   939,     8,     9,    10,    11,    12,  -405,
     1859    -510,   953,   960,   740,    30,   962,   967,   973,   974,  1093,
     1860     977,   338,   978,   400,   979,   721,   976,   450,   819,    54,
     1861     999,    30,   988,  1000,  1001,   211,  1319,    33,   418,  1015,
     1862      53,   423,   425,  1016,  1017,   343,   157,   646,   369,  1018,
     1863    1019,  1020,  1021,   436,    33,  1032,  -393,  -392,  1079,   720,
     1864     720,   323,  1081,  1046,  1089,  1090,   474,   442,  1091,  1092,
     1865    1097,   445,  1096,   446,  1099,   600,  -282,   831,   211,   605,
     1866    1098,   104,   461,     8,     9,    10,    11,    12,    63,   215,
     1867    1100,    67,  1106,   475,  1116,   768,   766,   405,    46,  1064,
     1868     343,   343,  1117,   482,   862,   769,  1118,  1109,   982,   600,
     1869      30,   425,  1123,  1127,  1130,   720,   720,  1151,  1174,  1375,
     1870      54,  1172,  1173,  1375,   369,  1175,    74,  1190,  1176,  1108,
     1871     455,  1206,  1191,    33,  1400,  1131,  1131,  1131,   211,    36,
     1872    1193,   170,   171,    39,  1049,   335,  1194,  1202,   104,  1207,
     1873      40,    41,    36,  1189,   170,   171,    39,  1208,    -3,  1213,
     1874    1515,  1218,   729,    40,    41,   922,  1224,   696,  1110,   495,
     1875    1228,  1233,  1235,  1237,  1240,  -283,   211,  1413,   255,  1244,
     1876     211,   596,     8,     9,    10,    11,    12,   624,   367,  1064,
     1877    1248,  1253,  1251,  1255,    72,  1256,  1257,  1285,    53,  1258,
     1878     629,  1259,  1261,  1268,   629,   393,  1277,   255,   394,    30,
     1879     395,   831,   605,  1278,   401,   402,  1448,  1108,  1087,   396,
     1880     397,  1302,   398,   399,  1310,    72,    60,  1288,  1289,   208,
     1881    1291,   721,    33,  1316,  1292,   666,   667,  1299,  1318,   104,
     1882    1320,   729,  1325,  1064,  1324,  1326,  1064,  1332,  1333,  1281,
     1883    1334,    67,  1336,   475,  1342,  1308,  1110,  1343,    54,    54,
     1884     218,  1344,  1345,  1356,    46,    46,   211,  1352,   345,  1353,
     1885    1363,  1131,  1131,   475,  1493,  1295,  1366,  1368,  1369,  1371,
     1886      54,   475,  1378,  1381,    74,  1388,   720,  1064,  1389,  -394,
     1887    1392,  1403,  1064,  1407,   720,   720,   720,  1409,  1414,    54,
     1888    1423,  1419,  1424,   474,   831,  1449,  1428,   716,  1425,  1426,
     1889     425,  1108,  1433,    66,  1438,  1442,   605,  1064,  1347,  1440,
     1890    1444,  1446,  -284,   436,  1453,   730,  1451,    63,    67,     8,
     1891       9,    10,    11,    12,  1472,   425,   206,   216,   720,   425,
     1892     146,  1452,   147,   343,   343,   148,   211,   348,  1474,  1464,
     1893    1110,  1478,    54,  1479,  1486,  1498,    30,    54,    53,  1499,
     1894    1495,  1518,    46,  1203,   721,  1500,  1503,   255,   345,   909,
     1895    1510,  1064,  1512,   926,   721,  1524,  1064,  1109,   104,    33,
     1896     797,   799,  1470,    46,    46,   798,   158,    54,   800,   721,
     1897    1189,  1064,  1243,  1064,   801,   926,   211,  1064,   172,   104,
     1898    1064,  1406,  1481,   696,  1301,    46,  1064,   368,  1526,  1365,
     1899    1064,   696,  1470,   809,  1497,  1239,  1379,  1467,   104,  1212,
     1900     443,   686,   687,  1094,   932,  1045,  1095,  1126,   890,   605,
     1901     435,   629,   822,   955,   596,    53,   715,   319,   816,  1311,
     1902    1105,    72,   323,   734,    74,   841,    72,   806,   172,   210,
     1903     474,   172,   963,   807,   808,     0,     0,   474,     0,     0,
     1904     343,     0,     0,   596,     0,  1109,     0,     0,   596,     0,
     1905       0,     0,     0,     0,   629,    67,   104,   345,   345,   345,
     1906       0,    54,    67,     0,   996,  1471,    36,     0,   179,   180,
     1907      39,   862,     0,     0,     0,   345,   172,    40,    41,     0,
     1908     210,   474,   998,     0,    54,    75,   104,     0,     0,     0,
     1909       0,    54,  1003,   716,     0,  1471,     0,   211,     0,     0,
     1910       0,    74,   181,     0,   475,     0,    67,  1014,     0,   255,
     1911     730,     0,   182,   928,     0,     0,    75,  1189,     0,     0,
     1912     218,     0,  1412,   210,  1189,   211,     0,     0,     0,     0,
     1913     211,     0,     0,     0,     0,    54,     0,     0,   172,  1109,
     1914     407,     0,  1039,     0,     0,     0,   475,   415,     0,   345,
     1915       0,   219,    36,     0,   179,   180,    39,     0,   954,     0,
     1916       0,   425,    53,    40,    41,     0,   721,   721,  1189,    53,
     1917       0,     0,     0,     0,     0,     0,     0,  1364,     0,     0,
     1918     104,     0,     0,   210,   255,   730,    72,     0,   261,     0,
     1919     981,     0,   172,    36,     0,   170,   171,    39,   262,   172,
     1920       0,   348,     0,   104,    40,    41,    72,     0,     0,     0,
     1921     104,     0,     0,    53,    72,     0,     0,   211,     0,   407,
     1922       0,   210,   721,   721,     0,   210,   716,     0,     0,   371,
     1923     926,   211,     0,     0,     0,     0,   716,     0,   350,   345,
     1924     348,   629,     0,     0,  1012,   629,   822,     0,    74,     0,
     1925       0,   716,     0,     0,   104,    74,     0,     0,   348,  1138,
     1926      72,  1023,     8,     9,    10,    11,    12,   172,     0,     0,
     1927       0,     0,     0,     0,   577,     8,     9,    10,    11,    12,
     1928       0,     0,   581,     0,   172,   584,     0,     0,   172,    30,
     1929       0,     0,     0,     0,     0,     0,     0,     0,     0,    74,
     1930       0,   348,    30,     0,  1166,  1167,     0,     0,     0,  1039,
     1931       0,   210,    33,    63,     0,     0,     0,    36,     0,   179,
     1932     180,    39,     0,   211,  1468,    33,     0,     0,    40,    41,
     1933      36,     0,    75,     0,    39,   629,     0,    75,     0,     0,
     1934       0,    40,    41,     0,     0,     0,     0,   407,     0,     0,
     1935     172,   415,     0,   602,  1496,   603,     0,     0,     0,     0,
     1936    1215,  1216,  1309,   604,     0,   348,    42,     0,    77,     0,
     1937       0,  1102,     0,     0,     0,     0,   144,     0,     0,   425,
     1938     114,     0,   926,     0,     0,     0,     0,     0,     0,     0,
     1939       0,   210,     0,   721,  1523,    84,   345,     0,     0,    77,
     1940       0,   721,   721,   721,     0,     0,  1528,     0,     0,     0,
     1941     348,   348,   348,     0,     0,     0,     0,     0,     0,   511,
     1942       0,     0,     0,     0,     0,     0,    84,     0,   348,     0,
     1943     596,   219,   528,   529,   220,     0,   407,     0,     0,   926,
     1944     926,   210,     0,   423,   549,   721,   348,     0,   716,   716,
     1945       0,   345,   345,     0,     0,     0,     0,    72,     0,     0,
     1946       0,   221,     0,   348,     0,     8,     9,    10,    11,    12,
     1947       0,  1188,     2,   202,     4,     5,     6,     7,     0,     0,
     1948     529,     0,    36,     0,   179,   180,    39,     0,     0,     0,
     1949       0,     0,    30,    40,    41,     0,     0,    75,     0,    72,
     1950     224,     0,   348,     0,   716,   716,     0,     0,     0,     0,
     1951     629,     0,   350,   211,   172,    33,   529,    75,   690,     0,
     1952     405,   351,     0,     0,     0,    75,   577,   577,   692,     0,
     1953      34,  1335,    35,     0,     0,     0,     0,     0,   348,  1337,
     1954    1338,  1339,     0,     0,     0,     0,   481,   172,   358,     0,
     1955       0,   350,     0,     0,     0,     0,   949,     0,   603,     0,
     1956     323,     0,   210,   172,     0,     0,   950,   730,     0,   350,
     1957      36,    75,   179,   180,    39,     0,     0,   172,     0,   348,
     1958       0,    40,    41,  1370,     0,     0,   209,     0,     0,   348,
     1959     210,     0,   348,     0,     0,   210,   228,   218,     0,   348,
     1960       0,     0,     0,     0,   348,     0,  1491,     0,   405,     0,
     1961    1282,     0,   350,     0,   901,    77,  1492,     0,   904,     0,
     1962      77,    36,     0,   179,   180,    39,     0,   255,     0,     0,
     1963       0,    63,    40,    41,     0,     0,     0,   209,     0,   926,
     1964       0,     0,    84,     0,   716,     0,   730,    84,     0,     0,
     1965     114,   407,     0,     0,     0,     0,   926,   690,     0,   405,
     1966       0,     0,     0,     0,     0,   691,    72,   692,     0,     0,
     1967       0,     0,     0,     0,   172,   716,   350,     0,     0,     0,
     1968     209,     0,   210,   716,   716,   716,     0,     0,     0,   211,
     1969     784,   785,   786,     0,   345,   345,   210,   537,   538,   539,
     1970     540,   541,   542,   543,   544,   545,   546,     0,  1188,     0,
     1971       0,     0,     0,     0,   220,     0,     0,     0,     0,   926,
     1972     926,   350,   350,   350,     0,     0,     0,   716,     0,     0,
     1973     547,     0,     0,   529,     0,     0,     0,     0,   114,   350,
     1974     209,   221,     0,     0,     0,     0,     0,     0,     0,   348,
     1975       0,     0,     0,     0,     0,     0,     0,   350,     0,     8,
     1976       9,    10,    11,    12,   577,     0,     0,     0,    75,     0,
     1977       0,     0,     0,     0,   350,     0,     0,     0,   209,     0,
     1978      77,     0,   209,   211,     0,     0,    30,     0,   210,     0,
     1979       0,     0,     0,     0,     0,   351,     0,     0,   501,     0,
     1980      77,   348,   348,     0,   348,   348,     0,    84,    77,    33,
     1981      75,   345,     0,   350,    36,     0,   179,   180,    39,     0,
     1982       0,     0,   358,     0,    72,    40,    41,    84,     0,     0,
     1983       0,     0,   114,     0,   351,    84,     0,     0,   172,     0,
     1984       0,     0,     0,     0,     0,     0,     0,     0,     0,   350,
     1985     181,     0,   351,     0,    77,  1188,     0,   348,   348,     0,
     1986     182,   358,  1188,     0,     0,     0,   529,     0,   209,     0,
     1987       0,     0,     0,     0,     0,     0,     0,   407,     0,   358,
     1988       0,    84,     0,     0,     0,     0,     0,     0,     0,     0,
     1989     350,     0,     0,     0,     0,   351,     0,     0,     0,     0,
     1990     350,     0,     0,   350,     0,     0,  1188,     0,   219,     0,
     1991     350,   983,     0,  1513,     0,   350,     0,     0,     0,     0,
     1992     348,     0,   358,     0,   469,     2,   202,     4,     5,     6,
     1993       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     1994      17,    18,    19,    20,    21,    22,    23,    24,   209,     0,
     1995      25,    26,    27,     0,  1142,     0,     0,   529,    30,   351,
     1996       0,     0,     0,   218,     0,   209,     0,     0,     0,     0,
     1997    1154,     0,     0,     0,     0,     0,     0,    75,   210,     0,
     1998       0,    33,     0,    34,    72,    35,   358,     0,    37,    38,
     1999       0,     0,     0,     0,     0,     0,     0,   348,   209,   348,
     2000       0,     0,     0,     0,   351,   351,   351,     0,     0,     0,
    19792001       0,     0,     0,     0,     0,     0,     8,     9,    10,    11,
    1980       12,     0,   350,     0,     0,     0,   218,     0,   447,     0,
    1981        0,     0,   700,     0,     0,     0,   109,     0,     0,     0,
    1982        0,  1178,    36,    30,   179,   180,    39,    72,  1488,     0,
    1983        0,     0,    75,    40,    41,     0,     0,     0,   342,     0,
    1984      347,     0,   347,     0,     0,   342,    33,   350,   350,   350,
    1985        0,    36,     0,   179,   180,    39,     0,     0,   687,     0,
    1986      404,     0,    40,    41,   350,     0,     0,     0,   689,   347,
    1987        0,   807,   808,     0,     0,     0,   221,   347,   347,   347,
    1988      406,     0,   350,     0,     0,     0,     0,   181,   347,   347,
    1989        0,     0,     0,    77,     0,     0,     0,   182,     0,   350,
    1990        0,   842,    72,     0,   845,   846,     0,   849,     0,   851,
    1991      852,    54,   349,     0,   853,   854,     0,     0,     0,     0,
    1992        0,   347,     0,     0,     0,     0,     0,     0,     0,     0,
    1993        0,     0,     0,     0,     0,    77,     0,     0,   350,     0,
    1994        0,     0,    84,     0,     0,     0,    36,     0,   179,   180,
    1995       39,     0,     0,   209,  1132,     0,   357,    40,    41,     0,
    1996        0,    84,     0,     0,   349,   349,     0,   349,   349,    84,
    1997     1144,     0,     0,   350,   164,     0,   168,    54,     0,   174,
    1998      175,   176,  1468,   178,   404,     0,     0,    75,     0,     0,
    1999        0,   342,  1469,     0,     0,   357,   927,   928,   229,     0,
    2000        0,   347,   930,     8,     9,    10,    11,    12,     0,     0,
    2001      244,   245,     0,   357,   350,    84,     0,     0,     0,     0,
    2002      349,   349,     0,     0,   350,     0,     0,   350,     0,     0,
    2003       30,     0,   220,     0,   350,     0,     0,     0,     0,   350,
    2004        0,     0,     0,    72,     0,  1211,   342,   342,     0,     0,
    2005       72,     0,     0,    33,     0,     0,   357,     0,    36,     0,
    2006      179,   180,    39,     0,     0,     0,    54,     0,     0,    40,
    2007       41,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2008        0,   349,     0,     0,     0,     0,     0,     0,     0,    72,
    2009        0,     0,     0,     0,   687,     0,   404,     0,     0,     0,
    2010       77,     0,     0,     0,   689,     0,     0,     0,     0,     0,
     2002      12,     0,   351,     0,     0,     0,     0,    -3,   348,     0,
     2003       0,   358,   358,   358,     0,     0,   348,   348,   348,     0,
     2004     351,     0,     0,    30,     0,  1221,     0,   348,   348,   358,
     2005       0,    77,     0,     0,     0,     0,     0,   351,     0,     0,
     2006     350,    72,     0,   164,     0,   168,    33,   358,   174,   175,
     2007     176,    36,   178,   179,   180,    39,     0,     0,    84,     0,
     2008     348,     0,    40,    41,   358,     0,     0,   229,     0,     0,
     2009       0,     0,     0,    77,     0,     0,   351,     0,     0,   244,
     2010     245,     0,     0,     0,     0,     0,     0,   690,     0,   405,
     2011       0,     0,   350,   350,     0,   350,   350,   692,     0,   209,
     2012      84,     0,     0,   358,     0,     0,     0,     0,     0,     0,
     2013     172,     0,   351,     0,     0,    75,     0,     0,     0,     0,
     2014       0,     0,     0,     0,     0,     0,     0,   209,     0,   529,
     2015       0,     0,   209,     0,   210,     0,     0,     0,     0,   358,
     2016       0,     0,     0,     0,   348,     0,     0,     0,   350,   350,
     2017       0,     0,     0,   351,     0,     0,     0,     8,     9,    10,
     2018      11,    12,     0,   351,     0,     0,   351,     0,     0,     0,
     2019     511,   220,     0,   351,     0,     0,     0,     0,   351,     0,
     2020     358,     0,     0,     0,    30,     0,     0,     0,    72,     0,
     2021     358,     0,     0,   358,     0,    72,     0,     0,   221,     0,
     2022     358,     0,     0,     0,     0,   358,     0,    33,     0,     0,
     2023       0,   350,    36,     0,   179,   180,    39,     0,     0,   209,
     2024       0,     0,     0,    40,    41,     0,     0,     0,   210,     0,
     2025       0,     0,     0,   209,     0,     0,     0,     0,     0,    72,
     2026      77,     8,     9,    10,    11,    12,     0,     0,  1491,     0,
     2027     405,     0,     0,   501,   219,     0,     0,     0,  1492,     0,
     2028       0,     0,     0,     0,     0,     0,     0,    84,    30,     0,
     2029       0,     0,     0,     0,     0,    75,   172,     0,     0,     0,
     2030       0,     0,     0,   529,     0,     0,     0,     0,   350,     0,
     2031     350,    33,     0,     0,     0,     0,    36,     0,   179,   180,
     2032      39,     0,     0,     0,     0,     0,     0,    40,    41,     0,
     2033       0,     0,   123,   123,   123,     0,     0,     0,     0,   350,
     2034       0,     0,     0,   351,     0,   209,     0,   350,   350,   350,
     2035       0,     0,   261,   594,   601,     0,     0,     0,   350,   350,
     2036       0,     0,   262,     0,     0,   625,   626,     0,     0,     0,
     2037     358,     0,    75,     0,     0,     0,     0,     0,     0,     0,
     2038       0,     0,   121,   124,   125,     0,     0,     0,     0,     0,
     2039       0,   350,     0,     0,   162,   351,   351,     0,   351,   351,
     2040       0,     0,     0,   123,     0,   123,     0,     8,     9,    10,
     2041      11,    12,     0,   214,     0,     0,     0,     0,    77,     0,
     2042       0,     0,   358,   358,     0,   358,   358,     0,     0,   271,
     2043       0,     0,     0,     0,    30,     0,     0,     0,     0,     0,
     2044       0,     0,     0,     0,     0,    84,     0,     0,     0,     0,
     2045       0,   351,   351,   250,     0,   251,     0,    33,     0,   162,
     2046       0,     0,    36,     0,   268,     0,    39,     0,     0,     0,
     2047       0,     0,     0,    40,    41,   350,     0,     0,   358,   358,
     2048       0,     0,     0,     0,   123,     0,     0,     0,     0,     0,
     2049       0,     0,   123,   162,   123,   123,     0,     0,   736,   123,
     2050       0,   123,   123,   364,     0,     0,     0,   370,   737,     0,
     2051       0,     0,     0,     0,   351,     0,     0,     0,     0,    75,
     2052       0,     0,     0,     0,     0,   278,    75,   279,     0,     0,
     2053       0,     0,     0,     0,   390,   209,     0,     0,     0,     0,
     2054       0,   358,     0,     0,   409,   410,     0,     0,   280,   414,
     2055       0,   416,   417,     0,   281,   162,     0,   220,   282,     0,
     2056       0,   283,   284,   285,   286,    40,    41,   214,   287,   288,
     2057      75,   123,     0,     0,     0,     0,   289,     0,    77,     0,
     2058       0,     0,     0,     0,   221,   162,   456,     0,     0,     0,
     2059     290,   351,   374,   351,     0,     0,     0,     0,     0,   292,
     2060     376,   294,   295,   296,   297,    84,     0,     0,     0,   370,
     2061       0,     0,     0,  1204,     0,     0,     0,   162,   358,     0,
     2062     358,     0,   351,     0,     0,     0,     0,     0,     0,     0,
     2063     351,   351,   351,     0,     0,     0,     0,     0,     0,     0,
     2064     456,   351,   351,   162,     0,     0,     0,  1022,     0,   358,
     2065       8,     9,    10,    11,    12,    77,     0,   358,   358,   358,
     2066       0,     0,     0,     0,     0,     0,     0,     0,   358,   358,
     2067       0,     0,     0,     0,   351,     0,   278,    30,   279,     0,
     2068       0,     0,    84,     0,     0,     0,     0,     0,     0,     0,
     2069     599,     0,     0,     0,     0,   623,     0,     0,     0,   280,
     2070      33,   358,     0,     0,     0,   281,     0,     0,     0,   282,
     2071       0,   209,   283,   284,   285,   286,    40,    41,     0,   287,
     2072     288,     0,     0,     0,     0,     0,     0,   289,     0,     0,
     2073     942,     0,   943,     0,     0,     0,     0,     0,     0,   946,
     2074     947,   290,     0,   374,   952,     0,     0,     0,     0,     0,
     2075     292,   817,   294,   295,   296,   297,   957,     0,   351,     0,
     2076       0,   961,     0,     0,     0,     0,     0,     0,     0,     0,
     2077     162,   162,     0,     0,     0,     0,     0,   364,     0,     0,
     2078       0,     0,     0,     0,     0,   358,   989,     0,     0,     0,
     2079       0,     0,     0,     0,     0,     0,     0,     0,   456,     0,
     2080       0,   456,    77,     0,     0,   209,     0,   456,     0,    77,
     2081       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2082      18,    19,    20,    21,    22,    23,    24,  -285,     0,    84,
     2083     594,     0,     0,     0,   733,     0,    84,    30,     0,     0,
     2084       0,     0,     0,     0,     0,     0,   162,     0,     0,     0,
     2085       0,     0,     0,    77,     0,     0,     0,     0,   456,     0,
     2086      33,     0,   456,     0,   162,   456,     0,     0,     0,     0,
     2087       0,  -285,     0,     0,     0,     0,     0,   364,     0,     0,
     2088      84,     0,   123,   123,     0,     0,     0,  1033,  1034,  1035,
     2089    1036,     0,  1038,     0,     0,     0,     0,     0,     0,     0,
     2090       0,     0,     0,     0,     0,     0,     0,     0,  1080,     0,
     2091       0,     0,   123,     0,     0,   123,   123,     0,   123,     0,
     2092     123,   123,  1086,     0,     0,   123,   123,     0,     0,   162,
     2093       0,     0,   811,   812,     0,     0,     0,     0,     0,     0,
     2094       0,   364,     0,   599,     0,     0,   827,     0,     0,     0,
    20112095       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2012      357,     0,     0,     0,   219,     0,     0,   209,     8,     9,
    2013       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2014       20,    21,    22,    23,    24,    75,     0,    25,    26,    27,
    2015        0,     0,     0,     0,     0,    30,   446,     0,   349,     0,
    2016      349,     0,     0,     0,     0,   357,   357,   357,     0,     0,
    2017        0,     0,     0,     0,     0,     0,     0,     0,    33,     0,
    2018      350,     0,   357,     0,     0,    37,    38,   349,     0,     0,
    2019        0,     0,     0,     0,     0,   349,   349,   349,     0,     0,
    2020      357,     0,    54,    54,     0,     0,   349,   349,     0,     0,
    2021        0,    84,     0,     0,     0,     0,     0,   357,     0,   209,
    2022       75,   447,     0,     0,    54,   931,     0,     0,     0,   109,
    2023        0,     0,   350,   350,     0,   350,   350,     0,     0,   349,
    2024        0,     0,     0,    54,     0,     0,     0,     0,     0,     0,
    2025        0,     0,     0,    84,     0,    77,   357,     0,     0,     0,
    2026        0,     0,     0,   592,   599,     0,     0,     0,     0,     0,
    2027        0,     0,     0,     0,     0,   623,   624,     0,     0,     0,
    2028        0,     0,     0,     0,     0,   342,   342,     0,   350,   350,
    2029        0,   357,     0,     0,    54,     0,     0,     0,     0,    54,
    2030        0,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2031       17,    18,    19,    20,    21,    22,    23,    24,  -278,   349,
    2032       25,    26,    27,     0,     0,     0,     0,     0,    30,    54,
    2033        0,     0,   357,     0,     0,     0,     0,     0,     0,     0,
    2034        0,     0,   357,     0,     0,   357,     0,     0,     0,   350,
    2035      221,    33,   357,     0,     0,     0,     0,   357,    37,    38,
    2036        0,    75,  -278,     0,     0,     0,     0,     0,    75,     0,
    2037        0,     0,     0,     0,     0,  1207,     0,     8,     9,    10,
    2038       11,    12,     0,     0,     0,     0,     0,     0,     0,     0,
    2039        0,     0,   220,     0,   333,     0,     0,     0,   342,     0,
    2040        0,     0,   109,     0,    30,     0,     0,    75,     0,     0,
    2041        0,     0,     0,    77,     0,     0,     0,     0,    84,    54,
    2042        0,     0,     0,     0,     0,     0,   350,    33,   350,     0,
    2043        0,     0,    36,     0,   179,   180,    39,     0,     0,     0,
    2044       54,     0,     0,    40,    41,     0,     0,    54,     0,     0,
    2045        0,     0,     0,     0,     0,   350,     0,     0,     0,     0,
    2046        0,     0,     0,   350,   350,   350,     0,     0,  1468,     0,
    2047      404,     0,     0,     0,   350,   350,     0,     0,  1469,     0,
    2048        0,     0,     0,     0,     0,     0,    54,     0,    77,     0,
    2049        0,     0,     0,     0,     0,  1288,     0,     0,   357,     0,
    2050        0,     0,     0,     0,     0,     0,     0,   350,     0,  1014,
    2051        0,     0,     8,     9,    10,    11,    12,     0,     0,     0,
    2052        0,     0,     0,     0,     0,     0,   162,     0,     0,     0,
    2053        0,     0,     0,     0,     0,     0,     0,     0,   277,    30,
    2054      278,     0,     0,     0,     0,   214,     0,     0,     0,     0,
    2055      357,   357,     0,   357,   357,     0,     0,     0,     0,     0,
    2056        0,   279,    33,     0,     0,     0,     0,   280,     0,     0,
    2057        0,   281,     0,    84,   282,   283,   284,   285,    40,    41,
    2058        0,   286,   287,     0,     0,     0,     0,   350,     0,   288,
    2059        0,   162,     0,     0,     0,     0,   268,     0,     0,     0,
    2060        0,     0,     0,   289,     0,   373,   357,   357,     0,     0,
    2061        0,     0,   291,   813,   293,   294,   295,   296,     0,     0,
    2062        0,     0,     0,     0,     0,   162,     0,     0,     0,    77,
    2063        0,     0,     0,     0,     0,   363,    77,     0,   936,   369,
    2064      937,     0,     0,     0,     0,     0,     0,   940,   941,     0,
    2065        0,     0,   946,     0,  1152,     0,     0,     8,     9,    10,
    2066       11,    12,     0,     0,   951,     0,     0,   357,     0,   955,
    2067        0,     0,     0,     0,     0,    77,     0,     0,     0,     0,
    2068        0,     0,     0,   277,    30,   278,     0,   162,     0,     0,
    2069        0,     0,     0,   981,     0,     0,     0,     0,     0,   214,
    2070        0,     0,     0,     0,     0,     0,   279,    33,     0,     0,
    2071      221,     0,   280,     0,     0,     0,   281,   162,   454,   282,
    2072      283,   284,   285,    40,    41,     0,   286,   287,     0,     0,
    2073        0,    84,     0,     0,   288,     0,     0,   592,     0,     0,
    2074        0,   369,     0,     0,   357,     0,   357,     0,   289,   162,
    2075      373,     0,     0,     0,     0,     0,     0,   291,  1153,   293,
    2076      294,   295,   296,     0,     0,     0,     0,     0,     0,     0,
    2077        0,   454,     0,   357,   162,     0,     0,     0,     0,     0,
    2078        0,   357,   357,   357,     0,     0,     0,     0,     0,     0,
    2079        0,     0,   357,   357,  1025,  1026,  1027,  1028,     0,  1030,
    2080        0,     0,     0,     0,     0,     0,    84,     0,     0,     0,
    2081        0,     0,     0,     0,  1072,     0,     0,     0,     0,     0,
    2082        0,   597,     0,     0,     0,   357,   621,     0,  1078,     0,
    2083        0,     0,     0,     1,     2,   202,     4,     5,     6,     7,
    2084        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2085       18,    19,    20,    21,    22,    23,    24,     0,     0,    25,
    2086       26,    27,    28,     0,     0,    29,  1093,    30,     0,     0,
    2087        0,     0,   123,   123,   123,     0,     0,     0,     0,     0,
     2096       0,  1101,   846,     0,     0,   849,   850,     0,   853,     0,
     2097     855,   856,   599,     0,     0,   857,   858,   599,     0,     0,
     2098       0,     0,     0,     0,     0,     0,   364,   364,   364,     0,
    20882099       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2089       33,     0,    34,     0,    35,     0,     0,    37,    38,     0,
    2090        0,   162,   162,  1118,     0,   357,     0,   363,     0,     0,
    2091     1126,     0,     0,     0,  1130,     0,     0,     0,     0,  1134,
    2092        0,  1135,     0,     0,     0,  1137,  1138,  1139,   454,     0,
    2093     1142,   454,     0,    43,     0,     0,     0,   454,     0,  1154,
    2094        0,   109,     0,   123,     0,   123,     0,    84,     0,     0,
    2095        0,     0,     0,     0,    84,     0,     0,  1169,  1170,     8,
    2096        9,    10,    11,    12,   730,     0,     0,     0,     0,   271,
    2097        0,     0,     0,     0,     0,     0,   162,     0,     0,     0,
    2098        0,     0,  1199,     0,     0,  1201,    30,     0,     0,   454,
    2099        0,     0,   454,    84,   162,   454,     0,     0,     0,     0,
    2100        0,     0,     0,     0,     0,     0,     0,   363,     0,    33,
    2101        0,     0,     0,     0,    36,     0,   179,   180,    39,     0,
    2102        0,     0,     0,  1216,   123,    40,    41,     0,     0,  1220,
    2103     1221,     0,   123,     0,   123,   123,     0,     0,  1229,   123,
    2104        0,   123,   123,  1233,     0,     0,  1237,     0,  1238,     0,
    2105      261,  1240,     0,     0,     0,     0,     0,     0,     0,   162,
    2106      262,     0,     0,     0,  1248,     0,     0,     0,     0,     0,
    2107        0,   363,     0,   597,     0,     0,   823,  1255,     0,  1257,
    2108     1258,  1259,  1260,     0,     0,     0,     0,     0,     0,     0,
    2109        0,     0,     0,     0,     0,  1267,     0,  1268,     0,     0,
    2110        0,   168,   597,     0,     0,     0,     0,   597,     0,     0,
    2111        0,   123,     0,     0,     0,     0,   363,   363,   363,     0,
    2112        0,     0,     0,     0,     0,     0,     0,     0,     0,  1292,
    2113     1293,     0,     0,   363,     0,     0,     0,   207,     0,     0,
    2114        0,     0,     0,     0,     0,     0,     0,   227,     0,   231,
    2115        0,   233,     0,     0,     0,     0,     0,     0,   242,     0,
    2116        0,     0,     0,     0,     0,     0,     0,     0,   730,     0,
    2117        0,     0,     0,     0,     0,     0,     0,  1326,  1327,     0,
    2118        0,     0,     0,     0,     0,     0,     0,  1337,   207,   454,
    2119      231,   233,   242,     0,     0,     0,     0,     0,     0,     0,
    2120        0,     0,     0,     0,     0,     0,     0,   363,     0,   945,
    2121        0,     0,     0,     0,     0,     0,   207,     0,     0,     0,
     2100    1128,     0,     0,   123,   364,     0,     0,  1136,   123,   123,
     2101       0,  1140,     0,     0,   123,     0,  1144,     0,  1145,     0,
     2102       0,     0,  1147,  1148,  1149,     0,     0,  1152,     0,     0,
     2103       0,     0,     0,     0,     0,     0,  1164,     0,     0,   733,
    21222104       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2123        0,   207,     0,  1364,     0,     0,     0,     0,     0,     0,
    2124        0,     0,   730,     0,     0,  1368,     0,  1369,  1370,  1371,
    2125        0,     0,     0,     0,     0,     0,     0,     0,     0,  1375,
    2126        0,     0,     0,     0,     0,   153,     0,     0,  1386,     0,
     2105       0,     0,     0,     0,  1179,  1180,     0,     0,   933,   934,
     2106     456,     0,     0,     0,   936,     0,     0,     0,     0,     0,
     2107       0,     0,     0,     0,     0,     0,     0,     0,   364,  1209,
     2108     951,     0,  1211,     8,     9,    10,    11,    12,    13,    14,
     2109      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2110       0,     0,    25,    26,    27,     0,     0,   207,     0,     0,
     2111      30,     0,     0,     0,   733,     0,     0,   227,     0,   231,
     2112    1226,   233,     0,     0,     0,     0,  1230,  1231,   242,     0,
     2113       0,     0,     0,    33,     0,     0,     0,  1241,     0,     0,
     2114     203,    38,  1245,     0,     0,  1249,     0,  1250,     0,     0,
     2115    1252,     0,     0,     0,     0,     0,     0,     0,   207,     0,
     2116     231,   233,   242,  1260,     0,     0,     0,     0,   364,     0,
     2117       0,     0,   623,     0,     0,   364,  1267,     0,  1269,  1270,
     2118    1271,  1272,     0,     0,   267,     0,     0,     0,     0,     0,
     2119       0,     0,     0,     0,  1279,     0,  1280,     0,     0,     0,
     2120     168,   207,     0,     0,     0,     0,     0,     0,     0,     0,
    21272121       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2128     1394,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2129        0,   207,     0,   231,   233,   242,   363,     0,     0,     0,
    2130      621,     0,     0,   363,     0,     0,     0,     0,     0,     0,
    2131        0,   247,     0,     0,     0,     0,     0,     0,     0,     0,
    2132        0,   252,     0,     0,     0,     0,     0,  1433,  1434,   207,
    2133        0,     0,     0,   207,     0,     0,     0,     0,     0,     0,
    2134     1439,     0,     0,     0,     0,     0,     0,  1439,     0,   497,
    2135        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2136       18,    19,    20,    21,    22,    23,    24,  -278,     0,    25,
    2137       26,    27,  1467,     0,     0,     0,   153,    30,     0,     0,
    2138        0,     0,     0,     0,     0,     0,     0,     0,     0,   379,
    2139        0,     0,     0,     0,     0,   454,     0,   207,  1489,     0,
    2140       33,     0,     0,     0,     0,    36,     0,   331,   332,    39,
    2141        0,  -278,   411,     0,     0,     0,    40,    41,   207,     0,
    2142      123,   123,  1502,   231,   233,     0,   425,  1504,     0,     0,
    2143        0,   242,     0,     0,     0,   430,   162,     0,     0,     0,
    2144        0,   634,     0,   333,     0,   438,     0,     0,     0,   363,
    2145      123,   625,     0,   123,   123,     0,   123,     0,   123,   123,
    2146        0,     0,     0,   123,   123,     0,     0,     0,     0,     0,
    2147      464,     0,     0,   207,     0,   474,     0,     0,     0,     0,
    2148        0,     0,     0,   597,     0,     0,     0,     0,   482,     0,
    2149        0,   207,     0,     0,   492,     0,   496,   207,     0,     0,
    2150        0,     0,     0,     0,   363,   363,     0,     0,     0,     0,
    2151        0,     0,   525,     0,   207,     0,     0,   207,   207,     0,
    2152        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2153        0,     0,     0,   207,     0,     0,     0,     0,     0,     0,
    2154      123,     0,     0,     0,     0,   123,   123,   207,     0,     0,
    2155        0,   123,     0,     0,   207,   584,     0,     0,     0,     0,
    2156      589,     0,   454,   201,     2,   202,     4,     5,     6,     7,
    2157        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2158       18,    19,    20,    21,    22,    23,    24,     0,   635,    25,
    2159       26,    27,   636,   637,     0,   639,     0,    30,     0,     0,
    2160        0,   649,   650,     0,   651,   652,     0,   653,     0,   654,
    2161        0,     0,     0,     0,     0,     0,     0,     0,   730,     0,
    2162       33,     0,    34,     0,    35,    36,   584,   203,    38,    39,
    2163        0,     0,     0,     0,   669,     0,    40,    41,     0,     0,
    2164        0,     0,     0,   277,     0,   278,     0,     0,     0,     0,
    2165        0,     0,     0,     0,     0,     0,     0,     0,   680,     0,
    2166      214,    42,     0,   204,     0,     0,   279,     0,   207,   686,
    2167        0,   205,   280,     0,     0,     0,   281,     0,     0,   282,
    2168      283,   284,   285,    40,    41,     0,   286,   287,     0,     0,
    2169        0,     0,   722,     0,   288,     0,   207,   730,   725,     0,
    2170        0,   207,     0,   464,     0,     0,     0,     0,   289,     0,
    2171      373,     0,     0,     0,     0,     0,     0,   291,   375,   293,
    2172      294,   295,   296,     0,     0,     0,     0,     0,   336,   358,
    2173        0,  1194,     0,     0,     0,     0,     0,     0,     0,   760,
    2174        0,     0,     0,   363,   363,     0,     0,     0,     0,     0,
    2175        0,     0,   214,     0,     0,   775,     0,     0,     0,     0,
    2176        0,   407,     0,     0,     0,     0,     0,     0,   407,     8,
    2177        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2178       19,    20,    21,    22,    23,    24,     0,   207,    25,    26,
    2179       27,   801,     0,     0,     0,   277,    30,   278,     0,     0,
    2180      811,   207,     0,     0,     0,     0,     0,   814,     0,     0,
    2181        0,     0,   821,     0,     0,     0,     0,     0,   279,    33,
    2182        0,   497,     0,   836,   280,     0,    37,    38,   281,     0,
    2183        0,   282,   283,   284,   285,    40,    41,     0,   286,   287,
    2184      407,     0,     0,     0,     0,     0,   288,     0,     0,     0,
    2185        0,     0,     0,     0,     0,     0,   363,     0,     0,     0,
    2186      289,     0,   517,   876,     0,   167,     0,     0,     0,   291,
    2187      292,   293,   294,   295,   296,     0,     0,     0,     0,   207,
    2188        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2189        0,     0,   207,     0,   407,     0,     0,     0,   821,     0,
    2190        0,     0,   407,   580,     0,   407,   583,   454,     0,     0,
    2191        0,   207,     0,     0,     0,   358,     0,     0,     0,   613,
    2192        0,     0,     0,     0,   123,     0,     0,     0,     0,     0,
    2193        0,     0,     0,     0,   454,     0,     0,     0,   631,     0,
    2194        0,   336,     0,     0,     0,     0,     0,     0,     0,     0,
    2195        0,     0,     0,   247,     0,     0,     0,   162,     0,     0,
    2196        0,     0,     0,   952,   953,     0,     0,   407,     0,     0,
    2197        0,   407,     0,     0,     0,   967,     0,     0,     0,     0,
    2198        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2199        0,     0,   982,     0,   983,     0,   207,     0,   987,     0,
    2200        0,   358,     0,     0,     0,     0,     0,     0,     0,     0,
    2201        0,     0,     0,     0,     0,     0,     0,     0,   316,     0,
    2202        0,     0,   207,     0,   407,     0,     0,     0,   340,     0,
    2203        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2204      376,     0,     0,     0,   123,     0,     0,   207,     0,     0,
    2205        0,     0,     0,     0,     0,   407,     0,     0,   358,     0,
    2206        0,     0,     0,  1019,     0,     0,     0,     0,     0,     0,
    2207     1020,     0,     0,     0,     0,   277,     0,   278,   207,     0,
    2208        0,     0,     0,  1022,     0,  1023,     0,     0,     0,   207,
    2209        0,     0,     0,     0,     0,     0,     0,   407,   279,  1035,
    2210      336,   358,     0,     0,   280,  1039,     0,     0,   281,     0,
    2211      316,   282,   283,   284,   285,    40,    41,  1075,   286,   287,
    2212     1076,     0,     0,     0,     0,     0,   288,     0,     0,     0,
    2213        0,     0,     0,     0,     0,   478,     0,     0,   589,     0,
    2214      289,     0,   373,     0,     0,   407,   407,     0,   798,   291,
    2215      375,   293,   294,   295,   296,     0,     0,     0,     0,     0,
    2216        0,     0,     0,     0,   816,   358,     0,   358,   207,     0,
    2217        0,     0,     0,     0,     0,     0,   613,     0,   613,   613,
    2218        0,     0,     0,     0,     0,   613,     0,     0,     0,     0,
    2219        0,     0,     0,     0,     0,   855,   358,     0,     0,     0,
    2220        0,   358,     0,     0,     0,     0,     0,     0,     0,     0,
    2221      358,   358,   358,     0,     0,     0,     0,     0,     0,     0,
    2222        0,     0,  1136,     0,     0,     0,     0,   358,     0,     0,
    2223        0,     0,   407,   897,     0,     0,   407,   900,     0,     0,
    2224        0,     0,     0,   902,     0,     0,     0,     0,     0,   376,
    2225        0,     0,   207,   277,     0,   278,     0,     0,     0,     0,
    2226        0,   336,   358,   407,     0,   407,     0,     0,     0,   407,
    2227        0,     0,     0,     0,     0,     0,   279,   525,     0,     0,
    2228        0,     0,   640,  1200,   136,   137,   281,     0,     0,   282,
    2229      283,   284,   285,    40,    41,     0,   286,   287,     0,     0,
    2230        0,   358,   613,     0,   288,     0,     0,     0,     0,     0,
    2231        0,     0,  1213,     0,     0,     0,     0,  1215,   289,     0,
    2232      641,     0,   642,   374,     0,  1219,     0,   291,   375,   293,
    2233      294,   295,   296,     0,     0,   336,   358,     0,     0,     0,
    2234      407,   407,     0,     0,   207,   504,   508,   504,   511,   724,
    2235        0,     0,     0,  1242,     0,   514,   515,     0,     0,     0,
    2236      504,   504,     0,     0,     0,  1250,     0,     0,  1251,     0,
    2237     1252,     0,   504,     0,     0,     0,     0,     0,     0,     0,
    2238        0,   407,     0,     0,  1261,  1262,     0,   756,     0,     0,
    2239      358,     0,     0,     0,     0,     0,   816,   358,     0,     0,
    2240      769,   613,     0,   613,     0,     0,  1275,   756,   504,     0,
    2241        0,     0,     0,   613,     0,     0,     0,     0,     0,     0,
    2242      778,   779,     0,     0,     0,     0,     0,     0,     0,     0,
    2243        0,     0,  1294,     0,     0,     0,     0,     0,     0,     0,
    2244        0,     0,   800,     0,   504,     0,     0,     0,     0,     0,
    2245        0,     0,   809,     0,     0,     0,     0,     0,     0,   340,
    2246        0,     0,     0,     0,   769,     0,     0,     0,     8,     9,
    2247       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2248       20,    21,    22,    23,    24,   816,     0,    25,    26,    27,
    2249        0,     0,     0,   407,     0,    30,     0,     0,   407,     0,
    2250        0,     0,     0,     0,     0,     0,   407,     0,     0,     0,
    2251        0,     0,     0,     0,   875,     0,     0,     0,    33,   613,
    2252      613,   376,  1358,     0,  1359,   203,    38,     0,     0,     0,
    2253        0,     0,     0,     0,     0,  1366,     0,  1367,     0,     0,
    2254        0,     0,     0,   358,     0,     0,     0,     0,     0,   407,
    2255        0,     0,     0,     0,     0,  1374,     0,     0,     0,     0,
    2256        0,   340,   207,     0,     0,     0,     0,   407,  1133,   267,
    2257        0,  1392,     0,     0,     0,     0,     0,   358,     0,  1395,
    2258        0,     0,  1219,   407,  1145,     0,   613,   613,  1150,     0,
    2259        0,     0,     0,     0,     0,     0,     0,     0,   358,   358,
    2260        0,     0,  1416,     0,     0,     0,     0,     0,     0,     0,
    2261        0,  1423,     0,     0,  1425,  1427,     0,   504,   504,   504,
    2262      504,   504,   504,   504,   504,   504,   504,   504,   504,   504,
    2263      504,   504,   504,   504,   504,   769,     0,   972,     0,     0,
    2264        0,     0,     0,   977,     0,     0,     0,     0,     0,  1452,
    2265      986,  1219,     0,     0,     0,     0,     0,   816,   407,  1212,
    2266      504,     0,     0,  1462,     0,     0,     0,     0,     0,     0,
    2267      613,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2268        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2269        0,     0,     0,  1002,  1003,     0,   340,     0,     0,     0,
    2270        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2271        0,   340,   358,     2,   202,     4,     5,     6,     7,     8,
     2122       0,     0,     0,     0,     0,     0,     0,     0,  1304,  1305,
     2123       0,     0,   201,     2,   202,     4,     5,     6,     7,     8,
    22722124       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    22732125      19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
    2274       27,     0,     0,     0,     0,   277,    30,   278,     0,     0,
    2275        0,  1033,     0,     0,     0,   376,     0,   504,     0,     0,
    2276        0,     0,     0,     0,     0,     0,     0,     0,   279,    33,
    2277        0,    34,   336,    35,   280,     0,    37,    38,   281,   504,
    2278        0,   282,   283,   284,   285,    40,    41,     0,   286,   287,
    2279        0,   358,   504,     0,     0,     0,   288,     0,     0,     0,
     2126      27,   207,     0,   231,   233,   242,    30,     0,   456,     0,
     2127       0,     0,     0,     0,     0,   153,     0,     0,  1340,  1341,
     2128       0,     0,     0,     0,     0,     0,     0,     0,  1351,    33,
     2129       0,    34,     0,    35,    36,     0,   203,    38,    39,   207,
     2130       0,     0,     0,   207,     0,    40,    41,     0,     0,     0,
     2131     162,     0,     0,     0,     0,     0,     0,     0,     0,   499,
     2132       0,   247,     0,     0,     0,   364,     0,     0,     0,     0,
     2133      42,   252,   204,     0,     0,     0,  1380,     0,     0,     0,
     2134     205,     0,     0,     0,     0,     0,     0,     0,  1384,     0,
     2135    1385,  1386,  1387,     0,     0,     0,     0,     0,     0,   599,
     2136       0,     0,  1391,     0,     0,     0,     0,     0,   207,     0,
     2137       0,  1402,     0,     0,   278,     0,   279,     0,     0,     0,
     2138     364,   364,     0,  1410,     0,     0,   153,     0,     0,   207,
     2139       0,     0,   123,     0,   231,   233,     0,   280,     0,   380,
     2140       0,     0,   242,   281,     0,     0,     0,   282,     0,     0,
     2141     283,   284,   285,   286,    40,    41,     0,   287,   288,     0,
     2142       0,     0,   412,     0,     0,   289,     0,     0,     0,     0,
     2143       0,     0,     0,     0,  1454,  1455,   427,     0,   456,   290,
     2144       0,   374,  1217,     0,   207,   432,   772,  1460,   292,   376,
     2145     294,   295,   296,   297,  1460,   440,     0,     0,     0,     0,
     2146       0,     0,   207,     0,     0,     0,     0,   207,     0,   207,
    22802147       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2281      289,     0,   338,     0,     0,     0,     0,   768,     0,   291,
    2282      339,   293,   294,   295,   296,     0,     0,     0,     0,   316,
    2283        0,     0,     0,     0,     0,     0,   504,   358,   358,     0,
    2284        0,     0,  1114,  1115,     0,     0,     0,     0,   277,   376,
    2285      278,     0,     0,     0,     0,   977,     0,     0,  1124,     0,
    2286      756,     0,     0,     0,     0,     0,     0,   504,     0,     0,
    2287        0,   279,     0,     0,     0,     0,     0,   280,     0,  1140,
    2288        0,   281,   504,     0,   282,   283,   284,   285,    40,    41,
    2289     1155,   286,   287,     0,     0,     0,     0,     0,     0,   288,
     2148     466,     0,  1490,     0,     0,   476,   207,     0,     0,   207,
     2149     207,     0,     0,     0,     0,     0,   733,     0,   484,     0,
     2150       0,     0,     0,     0,   494,   207,   498,     0,     0,     0,
     2151    1514,     0,     0,     0,   123,     0,     0,     0,     0,   207,
     2152       0,     0,     0,   527,     0,     0,   207,     0,     0,     0,
     2153       0,     0,     0,     0,     0,     0,  1527,     0,   214,     0,
     2154       0,  1529,     0,     0,     0,     0,     0,     0,     0,     0,
    22902155       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2291        0,     0,   376,   289,  1173,   373,     0,     0,   374,     0,
    2292        0,     0,   291,   375,   293,   294,   295,   296,     0,  1195,
     2156       0,     0,     0,     0,  1300,     0,   586,     0,     0,     0,
     2157       0,   591,     0,     0,     0,   733,     0,     0,     0,     0,
     2158       0,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2159      17,    18,    19,    20,    21,    22,    23,    24,     0,   637,
     2160      25,    26,    27,   638,   639,     0,   641,     0,    30,     0,
     2161       0,     0,   652,   653,     0,   654,   655,     0,   656,     0,
     2162     657,     0,  1162,   364,   364,     8,     9,    10,    11,    12,
     2163       0,    33,   214,     0,     0,     0,     0,   586,   203,    38,
     2164     207,     0,     0,     0,     0,   672,     0,     0,     0,     0,
     2165       0,   278,    30,   279,     0,     0,     0,     0,     0,     0,
     2166       0,     0,     0,     0,     0,     0,     0,     0,   207,     0,
     2167     683,     0,     0,   207,   280,    33,     0,     0,     0,     0,
     2168     281,   689,   622,     0,   282,     0,     0,   283,   284,   285,
     2169     286,    40,    41,     0,   287,   288,     0,     0,     0,     0,
     2170       0,     0,   289,     0,   725,     0,     0,     0,     0,     0,
     2171     728,     0,     0,     0,     0,   466,   290,     0,   374,     0,
     2172       0,     0,     0,     0,     0,   292,  1163,   294,   295,   296,
     2173     297,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2174     364,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2175       0,   764,     0,     0,   509,   510,   513,     0,     0,     0,
     2176     207,     0,     0,   516,   517,     0,     0,   779,   510,   510,
     2177       0,     0,     0,     0,   207,     0,     0,     0,     0,     0,
     2178     510,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2179       0,     0,     0,   456,   499,     0,     0,     0,     0,     0,
     2180       0,     0,     0,   805,   337,   359,     0,     0,     0,     0,
     2181       0,     0,   815,     0,     0,     0,   510,     0,     0,   818,
     2182       0,     0,     0,   456,   825,     0,     0,     0,     0,     0,
     2183       0,     0,     0,     0,     0,   840,     0,   408,     0,     0,
     2184       0,     0,     0,     0,   408,     0,     0,     0,   162,     0,
     2185       0,     0,   510,   207,     0,     0,     0,     0,     0,     0,
     2186       0,     0,     0,     0,     0,     0,   207,     0,     0,     0,
     2187       0,     0,     0,     0,     0,     0,   880,     0,     0,     0,
     2188       0,     0,     0,  -505,     0,   207,     1,     2,     3,     4,
     2189       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     2190      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2191       0,   825,    25,    26,    27,    28,   408,     0,    29,     0,
     2192      30,    31,     0,     0,     0,     0,     0,     0,     0,     0,
    22932193       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2294        0,     0,     0,     0,     0,     0,     0,     0,  1204,     0,
    2295      358,     0,  -497,     0,     0,     1,     2,     3,     4,     5,
    2296        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    2297       16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
    2298        0,    25,    26,    27,    28,     0,     0,    29,     0,    30,
    2299       31,     0,   977,     0,     0,     0,     0,     0,     0,     0,
    2300        0,     0,     0,     0,     0,     0,     0,     0,     0,    32,
    2301        0,   875,    33,     0,    34,     0,    35,    36,     0,    37,
    2302       38,    39,     0,     0,     0,   407,  1253,  1254,    40,    41,
    2303        0,     0,     0,     0,     0,     0,     0,     0,     0,   277,
    2304        0,   278,     0,     0,   407,   407,     0,     0,     0,     0,
    2305        0,     0,     0,    42,     0,    43,     0,     0,   504,     0,
    2306        0,     0,   279,    44,   407,     0,     0,     0,   280,     0,
    2307      504,     0,   281,     0,     0,   282,   283,   284,   285,    40,
    2308       41,     0,   286,   287,     0,     0,     0,     0,     0,     0,
    2309      288,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2310        0,     0,     0,   977,   289,     0,   373,     0,     0,   974,
    2311        0,   504,     0,   291,   375,   293,   294,   295,   296,     0,
    2312        0,     1,     2,   202,     4,     5,     6,     7,     8,     9,
     2194      32,     0,     0,    33,     0,    34,     0,    35,    36,     0,
     2195      37,    38,    39,     0,     0,     0,     0,     0,     0,    40,
     2196      41,     0,     0,     0,     0,     0,   247,     0,     0,     0,
     2197       0,   408,   207,     0,     0,     0,   958,   959,     0,   408,
     2198     582,     0,   408,   585,    42,     0,    43,     0,     0,   975,
     2199       0,     0,   359,     0,    44,     0,   615,     0,   207,     0,
     2200       0,     0,     0,     0,     0,     0,   990,     0,   991,     0,
     2201       0,     0,   995,     0,     0,   633,     0,     0,   337,     0,
     2202       0,     0,     0,     0,     0,   207,   510,   510,   510,   510,
     2203     510,   510,   510,   510,   510,   510,   510,   510,   510,   510,
     2204     510,   510,   510,   510,   408,     0,     0,     0,   408,   278,
     2205       0,   279,     0,     0,     0,     0,   207,     0,     0,     0,
     2206       0,     0,     0,     0,     0,     0,     0,   207,     0,   510,
     2207       0,     0,   280,     0,     0,     0,     0,  1027,   642,   359,
     2208     136,   137,   282,     0,  1028,   283,   643,   285,   286,    40,
     2209      41,     0,   287,   288,     0,     0,     0,  1030,     0,  1031,
     2210     289,     0,   408,     0,     0,     0,     0,     0,     0,     0,
     2211       0,     0,     0,  1043,   290,     0,   644,     0,   645,   375,
     2212    1047,     0,     0,   292,   376,   294,   295,   296,   297,     0,
     2213       0,     0,  1083,   408,     0,  1084,   359,     0,     0,     0,
     2214       0,     0,     0,     0,     0,     0,   207,     0,     0,     0,
     2215       0,     0,     0,   591,     0,     0,     0,     0,     0,     0,
     2216       0,     0,     0,     0,     0,     0,     0,   510,     0,     0,
     2217       0,     0,     0,     0,     0,   408,     0,     0,   337,   359,
     2218       0,     0,     0,     0,     0,     0,     0,     0,     0,   510,
     2219       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2220     317,     0,   510,     0,     0,     0,     0,     0,     0,     0,
     2221     341,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2222       0,     0,   377,   408,   408,     0,     0,     0,     0,     0,
     2223       0,     0,   207,     0,     0,     0,     0,     0,     0,     0,
     2224    1146,     0,   820,   359,     0,   359,     0,   510,     0,     0,
     2225       0,     0,     0,     0,   615,     0,   615,   615,     0,     0,
     2226       0,     0,     0,   615,     0,     0,     0,     0,     0,     0,
     2227       0,     0,     0,   859,   359,     0,     0,     0,   510,   359,
     2228       0,     0,     0,     0,     0,     0,     0,     0,   359,   359,
     2229     359,     0,   317,   510,     0,   527,     0,     0,     0,     0,
     2230       0,  1210,     0,     0,     0,     0,   359,     0,     0,     0,
     2231       0,   408,   902,     0,     0,   408,   905,   480,     0,     0,
     2232       0,     0,   907,     0,     0,     0,   207,     0,     0,     0,
     2233    1223,     0,     0,     0,     0,  1225,     0,     0,     0,     0,
     2234     337,   359,   408,  1229,   408,     0,     0,     0,   408,   201,
     2235       2,   202,     4,     5,     6,     7,     8,     9,    10,    11,
     2236      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2237      22,    23,    24,  1254,     0,    25,    26,    27,     0,     0,
     2238     359,   615,     0,    30,     0,  1262,     0,     0,  1263,     0,
     2239    1264,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2240       0,     0,     0,     0,  1273,  1274,    33,     0,    34,     0,
     2241      35,     0,     0,   203,    38,   337,   359,     0,     0,     0,
     2242     408,   408,     0,     0,     0,     0,  1287,     0,     0,     0,
     2243       0,     0,   377,     0,     0,     0,     0,     0,     0,     0,
     2244       0,     0,     0,     0,   510,     0,     0,     0,     0,   204,
     2245       0,     0,  1306,     0,     0,     0,     0,   267,     0,     0,
     2246       0,   408,     0,     0,     0,     0,     0,     0,     0,     0,
     2247     359,     0,     0,   510,     0,     0,   820,   359,     0,     0,
     2248       0,   615,     0,   615,     0,   510,     0,     0,     0,     0,
     2249       0,     0,     0,   615,     0,     0,     0,     8,     9,    10,
     2250      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2251      21,    22,    23,    24,  -285,     0,    25,    26,    27,     0,
     2252       0,     0,     0,     0,    30,     0,   510,     0,     0,     0,
     2253       0,     0,     0,   727,     0,     0,     0,     0,     0,     0,
     2254       0,     0,     0,     0,  1372,     0,  1373,    33,     0,     0,
     2255       0,     0,    36,     0,   332,   333,    39,   207,  -285,  1382,
     2256       0,  1383,     0,    40,    41,     0,   820,     0,     0,     0,
     2257       0,   760,     0,     0,   408,     0,     0,     0,     0,  1390,
     2258     408,     0,     0,     0,   773,     0,     0,     0,   408,     0,
     2259     334,   760,     0,     0,     0,  1408,   510,     0,   109,     0,
     2260       0,   615,   615,  1411,   782,   783,  1229,     0,     8,     9,
     2261      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2262      20,    21,    22,    23,    24,  -286,   804,   359,  1434,     0,
     2263       0,     0,     0,   408,     0,    30,   813,  1441,     0,   510,
     2264    1443,  1445,     0,   341,     0,     0,     0,     0,   773,     0,
     2265       0,   408,  1143,   510,   510,     0,     0,     0,    33,     0,
     2266       0,   359,     0,     0,     0,     0,     0,   408,  1155,  -286,
     2267     615,   615,  1160,     0,     0,     0,     0,  1473,     0,  1229,
     2268       0,     0,   359,   359,     0,     0,     0,     0,     0,     0,
     2269       0,     0,     0,     0,  1485,     0,     0,     0,   879,     0,
     2270       0,     0,     0,     0,     0,     0,   377,     2,   202,     4,
     2271       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     2272      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2273       0,     0,    25,    26,    27,     0,     0,     0,     0,     0,
     2274      30,   820,   408,  1222,     0,     0,   341,     0,     0,     0,
     2275       0,     0,     0,     0,   615,     0,     0,     0,     0,     0,
     2276       0,     0,     0,    33,     0,    34,     0,    35,     0,     0,
     2277     203,    38,     0,     1,     2,     3,     4,     5,     6,     7,
     2278       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2279      18,    19,    20,    21,    22,    23,    24,     0,   359,    25,
     2280      26,    27,    28,     0,     0,    29,   266,    30,    31,     0,
     2281       0,     0,     0,     0,   622,     0,     0,     0,     0,     0,
     2282       0,   773,     0,   980,     0,     0,     0,    32,     0,   985,
     2283      33,     0,    34,     0,    35,    36,   994,    37,    38,    39,
     2284       0,     0,     0,     0,     0,     0,    40,    41,     0,     0,
     2285       0,     0,     0,   510,     0,     0,     0,     0,   337,     0,
     2286       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2287     510,    42,     0,    43,     0,     0,     0,   359,     0,  1010,
     2288    1011,    44,   341,     0,     0,     0,     0,     0,     0,     0,
     2289       0,     0,     0,     0,     0,     0,     0,   341,     0,     0,
     2290       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2291      18,    19,    20,    21,    22,    23,    24,     0,     0,     0,
     2292       0,     0,     0,     0,     0,   359,   359,    30,     0,     0,
     2293       0,     0,     0,   510,   510,     0,     0,  1041,     0,     0,
     2294       0,   377,     0,     0,     0,     0,     0,     0,     0,     0,
     2295      33,     0,     0,     0,     1,     2,   202,     4,     5,     6,
     2296       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2297      17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
     2298      25,    26,    27,    28,     0,     0,    29,   278,    30,  1050,
     2299    1051,     0,  1052,     0,     0,  1053,  1054,  1055,  1056,  1057,
     2300    1058,  1059,  1060,     0,  1061,     0,     0,  1062,    32,     0,
     2301     280,    33,     0,    34,     0,    35,   642,   317,    37,    38,
     2302     282,     0,     0,   283,   284,   285,   286,    40,    41,     0,
     2303     287,   288,  1124,  1125,     0,     0,     0,     0,   289,   377,
     2304       0,     0,   359,     0,     0,   985,     0,     0,  1134,     0,
     2305     760,     0,   290,     0,  1063,     0,   278,   167,   279,     0,
     2306       0,   292,   293,   294,   295,   296,   297,     0,     0,  1150,
     2307       0,     0,     0,     0,     0,  -126,     0,     0,     0,   280,
     2308    1165,     0,     0,     0,     0,   281,     0,     0,     0,   282,
     2309       0,     0,   283,   284,   285,   286,    40,    41,     0,   287,
     2310     288,     0,   377,     0,  1183,     0,     0,   289,     0,     0,
     2311       0,     0,     0,     0,     0,     0,     0,     0,     0,  1205,
     2312       0,   290,   408,   374,     0,     0,   375,     0,     0,     0,
     2313     292,   376,   294,   295,   296,   297,     0,   278,  1214,   279,
     2314    1051,     0,  1052,   408,   408,  1053,  1054,  1055,  1056,  1057,
     2315    1058,  1059,  1060,     0,  1061,     0,     0,  1062,    32,     0,
     2316     280,     0,     0,     0,     0,   408,   642,     0,     0,     0,
     2317     282,     0,     0,   283,   284,   285,   286,    40,    41,     0,
     2318     287,   288,     0,     0,   985,     0,     0,     0,   289,     0,
     2319       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2320       0,     0,   290,   879,   374,     0,     0,   167,     0,     0,
     2321       0,   292,   376,   294,   295,   296,   297,     0,  1265,  1266,
     2322       0,     0,     1,     2,   202,     4,     5,     6,     7,     8,
     2323       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2324      19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
     2325      27,    28,     0,     0,    29,   278,    30,   279,     0,     0,
     2326       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2327       0,     0,     0,     0,     0,     0,     0,     0,   280,    33,
     2328       0,    34,     0,    35,   281,     0,    37,    38,   282,     0,
     2329       0,   283,   284,   285,   286,    40,    41,   985,   287,   288,
     2330       0,     0,     0,     0,     0,     0,   289,     0,     0,     0,
     2331       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2332     290,     0,  1063,     0,     0,     0,     0,     0,     0,   292,
     2333     293,   294,   295,   296,   297,     0,     0,     0,     0,     0,
     2334       0,     0,     0,  -126,     1,     2,   202,     4,     5,     6,
     2335       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2336      17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
     2337      25,    26,    27,    28,     0,     0,    29,   278,    30,   279,
     2338       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2339       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2340     280,    33,     0,    34,     0,    35,   281,     0,    37,    38,
     2341     282,     0,     0,   283,   284,   285,   286,    40,    41,     0,
     2342     287,   288,     0,     0,     0,     0,     0,     0,   289,     0,
     2343       0,     0,     0,     0,     0,     0,     0,     0,  1420,     0,
     2344       0,     0,   290,     0,    43,     0,     0,     0,     0,     0,
     2345       0,   292,   293,   294,   295,   296,   297,     2,   202,     4,
     2346       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     2347      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2348       0,     0,    25,    26,    27,     0,     0,     0,     0,   278,
     2349      30,   279,     0,     0,     0,     0,     0,     0,     0,     0,
     2350       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2351    1477,     0,   280,    33,     0,    34,     0,    35,   281,     0,
     2352      37,    38,   282,     0,     0,   283,   284,   285,   286,    40,
     2353      41,     0,   287,   288,     0,     0,     0,     0,     0,     0,
     2354     289,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2355       0,     0,     0,     0,   290,   317,   339,     0,     0,     0,
     2356       0,   772,     0,   292,   340,   294,   295,   296,   297,     2,
     2357     202,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     2358      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2359      23,    24,     0,     0,    25,    26,    27,     0,     0,     0,
     2360       0,   278,    30,   279,     0,     0,     0,     0,     0,     0,
     2361       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2362       0,     0,     0,     0,   280,    33,     0,    34,     0,    35,
     2363     281,     0,    37,    38,   282,     0,     0,   283,   284,   285,
     2364     286,    40,    41,     0,   287,   288,     0,     0,     0,     0,
     2365       0,     0,   289,     0,     0,     0,     0,     0,     0,     0,
     2366       0,     0,     0,     0,     0,     0,   290,     0,   921,     0,
     2367       0,     0,     0,   772,     0,   292,   340,   294,   295,   296,
     2368     297,     2,   202,     4,     5,     6,     7,     8,     9,    10,
     2369      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2370      21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
     2371       0,     0,     0,   278,    30,   279,     0,     0,     0,     0,
     2372       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2373       0,     0,     0,     0,     0,     0,   280,    33,     0,    34,
     2374       0,    35,   281,     0,    37,    38,   282,     0,     0,   283,
     2375     284,   285,   286,    40,    41,     0,   287,   288,     0,     0,
     2376       0,     0,     0,     0,   289,     0,     0,     0,     0,     0,
     2377       0,     0,     0,     0,     0,     0,     0,     0,   290,     0,
     2378     921,     0,     0,     0,     0,   772,     0,   292,   593,   294,
     2379     295,   296,   297,     2,   202,     4,     5,     6,     7,     8,
     2380       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2381      19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
     2382      27,     0,     0,     0,     0,   278,    30,   279,     0,     0,
     2383       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2384       0,     0,     0,     0,     0,     0,     0,     0,   280,    33,
     2385       0,    34,     0,    35,   281,     0,    37,    38,   282,     0,
     2386       0,   283,   284,   285,   286,    40,    41,     0,   287,   288,
     2387       0,     0,     0,     0,     0,     0,   289,     0,     0,     0,
     2388       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2389     290,     0,   339,     0,     0,     0,     0,     0,     0,   292,
     2390     340,   294,   295,   296,   297,     2,   202,     4,     5,     6,
     2391       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2392      17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
     2393      25,    26,    27,     0,     0,     0,     0,   278,    30,   279,
     2394       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2395       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2396     280,    33,     0,    34,     0,    35,   281,     0,    37,    38,
     2397     282,     0,     0,   283,   284,   285,   286,    40,    41,     0,
     2398     287,   288,     0,     0,     0,     0,     0,     0,   289,     0,
     2399       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2400       0,     0,   290,     0,   921,     0,     0,     0,     0,     0,
     2401       0,   292,   340,   294,   295,   296,   297,     2,   202,     4,
     2402       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     2403      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2404       0,     0,    25,    26,    27,     0,     0,     0,     0,   278,
     2405      30,   279,     0,     0,     0,     0,     0,     0,     0,     0,
     2406       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2407       0,     0,   280,    33,     0,    34,     0,    35,   281,     0,
     2408     203,    38,   282,     0,     0,   283,   284,   285,   286,    40,
     2409      41,     0,   287,   288,     0,     0,     0,     0,     0,     0,
     2410     289,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2411       0,     0,     0,     0,   290,     0,  1008,     0,     0,     0,
     2412       0,     0,     0,   292,  1009,   294,   295,   296,   297,     2,
     2413     202,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     2414      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2415      23,    24,     0,     0,    25,    26,    27,     0,     0,     0,
     2416       0,   278,    30,   279,     0,     0,     0,     0,     0,     0,
     2417       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2418       0,     0,     0,     0,   280,    33,     0,    34,     0,    35,
     2419     281,     0,   203,    38,   282,     0,     0,   283,   284,   285,
     2420     286,    40,    41,     0,   287,   288,     0,     0,     0,     0,
     2421       0,     0,   289,     0,     0,     0,     0,     0,     0,     0,
     2422       0,     0,     0,     0,     0,     0,   290,     0,   374,     0,
     2423       0,     0,     0,     0,     0,   292,   376,   294,   295,   296,
     2424     297,     1,     2,     3,     4,     5,     6,     7,     8,     9,
    23132425      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    23142426      20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
    2315       28,     0,     0,    29,   277,    30,  1042,  1043,     0,  1044,
    2316        0,     0,  1045,  1046,  1047,  1048,  1049,  1050,  1051,  1052,
    2317        0,  1053,     0,     0,  1054,    32,     0,   279,    33,   504,
    2318       34,     0,    35,   640,     0,    37,    38,   281,     0,     0,
    2319      282,   283,   284,   285,    40,    41,     0,   286,   287,     0,
    2320        0,     0,     0,     0,     0,   288,     0,     0,     0,     0,
    2321        0,     0,     0,     0,     0,     0,     0,     0,     0,   289,
    2322        0,  1055,   504,     0,   167,     0,     0,     0,   291,   292,
    2323      293,   294,   295,   296,     0,     0,   504,   504,     0,     0,
    2324     1402,     0,  -126,     0,     1,     2,   202,     4,     5,     6,
     2427      28,     0,     0,    29,     0,    30,    31,     0,     0,     0,
     2428       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2429       0,     0,     0,     0,     0,    32,     0,     0,    33,     0,
     2430      34,     0,    35,    36,     0,    37,    38,    39,     0,     0,
     2431       0,     0,     0,     0,    40,    41,     0,     0,     0,     0,
     2432       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2433       0,     0,     0,     0,     0,     0,     0,     0,     0,    42,
     2434       0,    43,     0,     0,     0,  -509,     0,     0,     0,    44,
     2435       1,     2,   202,     4,     5,     6,     7,     8,     9,    10,
     2436      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2437      21,    22,    23,    24,  -285,     0,    25,    26,    27,    28,
     2438       0,     0,    29,     0,    30,     0,     0,     0,     0,     0,
     2439       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2440       0,     0,     0,     0,     0,     0,     0,    33,     0,    34,
     2441       0,    35,     0,     0,    37,    38,     0,     0,  -285,     1,
     2442       2,   202,     4,     5,     6,     7,     8,     9,    10,    11,
     2443      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2444      22,    23,    24,     0,     0,    25,    26,    27,    28,     0,
     2445      43,    29,     0,    30,     0,     0,     0,     0,   109,     0,
     2446       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2447       0,     0,     0,     0,     0,     0,    33,     0,    34,     0,
     2448      35,     0,     0,    37,    38,     2,   202,     4,     5,     6,
    23252449       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    23262450      17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
    2327       25,    26,    27,    28,     0,     0,    29,   277,    30,   278,
     2451      25,    26,    27,     0,     0,     0,     0,     0,    30,    43,
     2452       0,     0,     0,     0,     0,     0,     0,   109,     0,     0,
     2453       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2454       0,    33,     0,    34,     0,    35,    36,     0,   203,    38,
     2455      39,     0,     0,     0,     0,     0,     0,    40,    41,     0,
    23282456       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    23292457       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2330      279,    33,     0,    34,     0,    35,   280,  1454,    37,    38,
    2331      281,     0,     0,   282,   283,   284,   285,    40,    41,     0,
    2332      286,   287,     0,     0,     0,     0,     0,     0,   288,     0,
     2458       0,     0,    42,     0,   204,     0,     0,     0,     0,     0,
     2459       0,     0,   205,     2,   202,     4,     5,     6,     7,     8,
     2460       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2461      19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
     2462      27,     0,     0,     0,     0,     0,    30,     0,     0,     0,
    23332463       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2334        0,     0,   289,     0,  1055,     0,     0,     0,     0,     0,
    2335      316,   291,   292,   293,   294,   295,   296,     0,     0,     0,
    2336        0,     0,     0,     0,     0,  -126,     1,     2,   202,     4,
    2337        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    2338       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2339        0,     0,    25,    26,    27,    28,     0,     0,    29,   277,
    2340       30,   278,     8,     9,    10,    11,    12,    13,    14,    15,
    2341       16,    17,    18,    19,    20,    21,    22,    23,    24,  -278,
    2342        0,     0,   279,    33,     0,    34,     0,    35,   280,    30,
    2343       37,    38,   281,     0,     0,   282,   283,   284,   285,    40,
    2344       41,     0,   286,   287,     0,     0,     0,   504,     0,     0,
    2345      288,     0,    33,     0,     0,     0,     0,     0,     0,     0,
    2346        0,     0,     0,  -278,   289,     0,    43,     0,     0,     0,
    2347        0,     0,     0,   291,   292,   293,   294,   295,   296,     0,
    2348        0,     0,     2,   202,     4,     5,     6,     7,     8,     9,
    2349       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2350       20,    21,    22,    23,    24,   504,   504,    25,    26,    27,
    2351        0,     0,     0,     0,   277,    30,   278,     8,     9,    10,
    2352       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2353       21,    22,    23,    24,  -279,     0,     0,   279,    33,     0,
    2354       34,     0,    35,   280,    30,    37,    38,   281,     0,     0,
    2355      282,   283,   284,   285,    40,    41,     0,   286,   287,     0,
    2356        0,     0,     0,     0,     0,   288,     0,    33,     0,     0,
    2357        0,     0,     0,     0,     0,     0,     0,     0,  -279,   289,
    2358        0,   916,     0,     0,     0,     0,   768,     0,   291,   339,
    2359      293,   294,   295,   296,     2,   202,     4,     5,     6,     7,
    2360        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2361       18,    19,    20,    21,    22,    23,    24,     0,     0,    25,
    2362       26,    27,     0,     0,     0,     0,   277,    30,   278,     8,
    2363        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2364       19,    20,    21,    22,    23,    24,     0,     0,     0,   279,
    2365       33,     0,    34,     0,    35,   280,    30,    37,    38,   281,
    2366        0,     0,   282,   283,   284,   285,    40,    41,     0,   286,
    2367      287,     0,     0,     0,     0,     0,     0,   288,     0,    33,
     2464       0,     0,     0,     0,     0,     0,     0,     0,     0,    33,
     2465       0,    34,     0,    35,     0,     0,    37,    38,     0,     0,
     2466       2,   202,     4,     5,     6,     7,     8,     9,    10,    11,
     2467      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2468      22,    23,    24,     0,     0,    25,    26,    27,     0,     0,
     2469       0,  -390,   679,    30,     0,     0,     0,     0,     0,     0,
     2470     627,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2471       0,     0,     0,     0,     0,     0,    33,     0,    34,     0,
     2472      35,     0,     0,    37,    38,     0,     0,     0,     0,     0,
    23682473       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2369        0,   289,     0,   916,     0,     0,     0,     0,   768,     0,
    2370      291,   591,   293,   294,   295,   296,     2,   202,     4,     5,
    2371        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    2372       16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
    2373        0,    25,    26,    27,     0,     0,     0,     0,   277,    30,
    2374      278,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2375        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2376        0,   279,    33,     0,    34,     0,    35,   280,     0,    37,
    2377       38,   281,     0,     0,   282,   283,   284,   285,    40,    41,
    2378        0,   286,   287,     0,     0,     0,     0,     0,     0,   288,
    2379        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2380        0,     0,     0,   289,     0,   338,     0,     0,     0,     0,
    2381        0,     0,   291,   339,   293,   294,   295,   296,     2,   202,
     2474       0,     0,     0,     0,     0,  1348,     0,     0,     0,     0,
     2475       0,     0,     0,     0,     0,     0,     0,     0,     0,   679,
     2476       0,     0,     0,     0,     0,     0,     0,   627,     2,   202,
    23822477       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    23832478      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    23842479      24,     0,     0,    25,    26,    27,     0,     0,     0,     0,
    2385      277,    30,   278,     0,     0,     0,     0,     0,     0,     0,
     2480       0,    30,     8,     9,    10,    11,    12,    13,    14,    15,
     2481      16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
     2482       0,    25,    26,    27,    33,     0,    34,     0,    35,    30,
     2483       0,    37,    38,     0,     0,     0,     0,     0,     0,     0,
    23862484       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2387        0,     0,     0,   279,    33,     0,    34,     0,    35,   280,
    2388        0,    37,    38,   281,     0,     0,   282,   283,   284,   285,
    2389       40,    41,     0,   286,   287,     0,     0,     0,     0,     0,
    2390        0,   288,     0,     0,     0,     0,     0,     0,     0,     0,
    2391        0,     0,     0,     0,     0,   289,     0,   916,     0,     0,
    2392        0,     0,     0,     0,   291,   339,   293,   294,   295,   296,
     2485       0,     0,    33,  1350,     0,     0,     0,   108,     0,    37,
     2486      38,     0,     0,     0,     0,     0,     0,   679,     0,     0,
     2487       0,     0,     0,     0,     0,   627,     2,   202,     4,     5,
     2488       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     2489      16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
     2490       0,    25,    26,    27,     0,     0,     0,     0,     0,    30,
     2491       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2492       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2493       0,     0,    33,     0,    34,     0,    35,     0,     0,    37,
     2494      38,     2,   202,     4,     5,     6,     7,     8,     9,    10,
     2495      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2496      21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
     2497       0,     0,     0,     0,    30,   679,     0,     0,     0,     0,
     2498       0,     0,     0,   627,     0,     0,     0,     0,     0,     0,
     2499       0,     0,     0,     0,     0,     0,     0,    33,     0,    34,
     2500       0,    35,     0,     0,    37,    38,     2,   202,     4,     5,
     2501       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     2502      16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
     2503       0,    25,    26,    27,     0,     0,     0,     0,     0,    30,
     2504     592,     0,     0,     0,     0,     0,     0,     0,   627,     0,
     2505       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2506       0,     0,    33,     0,    34,     0,    35,     0,     0,   203,
     2507      38,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2508      17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
     2509      25,    26,    27,     0,     0,     0,     0,   278,    30,   279,
     2510       0,     0,     0,     0,     0,   204,     0,     0,     0,     0,
     2511       0,     0,     0,   267,     0,     0,     0,     0,     0,     0,
     2512     280,    33,     0,     0,     0,     0,   281,     0,    37,    38,
     2513     282,     0,     0,   283,   284,   285,   286,    40,    41,     0,
     2514     287,   288,     0,     0,     0,     0,     0,     0,   289,     0,
     2515       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2516       0,     0,   290,     0,   519,     0,     0,   167,     0,     0,
     2517       0,   292,   293,   294,   295,   296,   297,     8,     9,    10,
     2518      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2519      21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
     2520       0,     0,     0,   278,    30,   279,     0,     0,     0,     0,
     2521       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2522       0,     0,     0,     0,     0,     0,   280,    33,     0,     0,
     2523       0,     0,   281,     0,    37,    38,   282,     0,     0,   283,
     2524     284,   285,   286,    40,    41,     0,   287,   288,     0,     0,
     2525       0,     0,     0,     0,   289,     0,     0,     0,     0,     0,
     2526       0,     0,     0,     0,     0,     0,     0,     0,   290,     0,
     2527     592,    -3,     0,     0,     0,     0,     0,   292,   593,   294,
     2528     295,   296,   297,     8,     9,    10,    11,    12,    13,    14,
     2529      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2530       0,     0,    25,    26,    27,     0,     0,     0,     0,   278,
     2531      30,   279,     0,     0,     0,     0,     0,     0,     0,     0,
     2532       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2533       0,     0,   280,    33,     0,     0,     0,     0,   642,     0,
     2534      37,    38,   282,     0,     0,   283,   284,   285,   286,    40,
     2535      41,     0,   287,   288,     0,     0,     0,     0,     0,     0,
     2536     289,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2537       0,     0,     0,     0,   290,   -33,   757,     0,     0,     0,
     2538       0,     0,     0,   292,   293,   294,   295,   296,   297,     8,
     2539       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2540      19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
     2541      27,     0,     0,     0,     0,   278,    30,   279,     0,     0,
     2542       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2543       0,     0,     0,     0,     0,     0,     0,     0,   280,    33,
     2544       0,     0,     0,     0,   281,     0,    37,    38,   282,     0,
     2545       0,   283,   284,   285,   286,    40,    41,     0,   287,   288,
     2546       0,     0,     0,     0,     0,     0,   289,     0,     0,     0,
     2547       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2548     290,     0,   291,     0,     0,     0,     0,     0,     0,   292,
     2549     293,   294,   295,   296,   297,     8,     9,    10,    11,    12,
     2550      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2551      23,    24,     0,     0,    25,    26,    27,     0,     0,     0,
     2552       0,   278,    30,   279,     0,     0,     0,     0,     0,     0,
     2553       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2554       0,     0,     0,     0,   280,    33,     0,     0,     0,     0,
     2555     281,     0,    37,    38,   282,     0,     0,   283,   284,   285,
     2556     286,    40,    41,     0,   287,   288,     0,     0,     0,     0,
     2557       0,     0,   289,     0,     0,     0,     0,     0,     0,     0,
     2558       0,     0,     0,     0,     0,     0,   290,     0,   154,     0,
     2559       0,     0,     0,     0,     0,   292,   293,   294,   295,   296,
     2560     297,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2561      17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
     2562      25,    26,    27,     0,     0,     0,     0,   278,    30,   279,
     2563       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2564       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2565     280,    33,     0,     0,     0,     0,   281,     0,    37,    38,
     2566     282,     0,     0,   283,   284,   285,   286,    40,    41,     0,
     2567     287,   288,     0,     0,     0,     0,     0,     0,   289,     0,
     2568       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2569       0,     0,   290,     0,   592,     0,     0,     0,     0,     0,
     2570       0,   292,   593,   294,   295,   296,   297,     8,     9,    10,
     2571      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2572      21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
     2573       0,     0,     0,   278,    30,   279,     0,     0,     0,     0,
     2574       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2575       0,     0,     0,     0,     0,     0,   280,    33,     0,     0,
     2576       0,     0,   281,     0,    37,    38,   282,     0,     0,   283,
     2577     284,   285,   286,    40,    41,     0,   287,   288,     0,     0,
     2578       0,     0,     0,     0,   289,     0,     0,     0,     0,     0,
     2579       0,     0,     0,     0,     0,     0,     0,     0,   290,     0,
     2580     374,     0,     0,     0,     0,     0,     0,   292,   376,   294,
     2581     295,   296,   297,     8,     9,    10,    11,    12,    13,    14,
     2582      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2583    -285,     0,    25,    26,    27,     0,     0,     0,     0,     0,
     2584      30,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2585       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2586       0,     0,     0,    33,     0,     0,     0,     0,    36,     0,
     2587     332,   333,    39,     0,  -285,     0,     0,     0,     0,    40,
     2588      41,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2589      17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
     2590      25,    26,    27,     0,   636,     0,   334,     0,    30,     0,
     2591       0,     0,     0,     0,   627,     0,     0,     0,     0,     0,
     2592       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2593       0,    33,     0,     0,     0,     0,    36,     0,    37,    38,
     2594      39,     0,     0,     0,     0,     0,     0,    40,    41,     8,
     2595       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2596      19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
     2597      27,     0,    42,     0,   154,     0,    30,     0,     0,     0,
     2598       0,     0,    44,     0,     0,     0,     0,     0,     0,     0,
     2599       0,     0,     0,     0,     0,     0,     0,     0,     0,    33,
     2600       0,     0,     0,     0,    36,     0,    37,    38,    39,     0,
     2601       0,     0,     0,     0,     0,    40,    41,     8,     9,    10,
     2602      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2603      21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
     2604      42,     0,    43,     0,    30,     0,     0,     0,     0,     0,
     2605      44,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2606       0,     0,     0,     0,     0,     0,     0,    33,     0,     0,
     2607       0,     0,    36,     0,   203,    38,    39,     0,     0,     0,
     2608       0,     0,     0,    40,    41,     8,     9,    10,    11,    12,
     2609      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2610      23,    24,     0,     0,    25,    26,    27,     0,    42,     0,
     2611     266,     0,    30,     0,     0,     0,     0,     0,   205,     0,
     2612       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2613       0,     0,     0,     0,     0,    33,     0,     0,     0,     0,
     2614      36,     0,   332,   333,    39,     0,     0,     0,     0,     0,
     2615       0,    40,    41,     8,     9,    10,    11,    12,    13,    14,
     2616      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2617       0,     0,    25,    26,    27,     0,   636,     0,   334,     0,
     2618      30,     0,     0,     0,     0,     0,   627,     0,     0,     0,
     2619       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2620       0,     0,     0,    33,     0,     0,     0,     0,    36,     0,
     2621     332,   333,    39,     0,     0,     0,     0,     0,     0,    40,
     2622      41,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2623      17,    18,    19,    20,    21,    22,    23,    24,  -285,     0,
     2624      25,    26,    27,     0,     0,     0,   334,     0,    30,     0,
     2625       0,     0,     0,     0,   109,     0,     0,     0,     0,     0,
     2626       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2627       0,    33,     0,     0,     0,     0,     0,     0,    37,    38,
     2628       0,     0,  -285,     8,     9,    10,    11,    12,    13,    14,
     2629      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2630    -285,     0,    25,    26,    27,     0,     0,     0,     0,     0,
     2631      30,     0,   636,     0,   334,     0,     0,     0,     0,     0,
     2632       0,     0,   109,     0,     0,     0,     0,     0,     0,     0,
     2633       0,     0,     0,    33,     0,     0,     0,     0,     0,     0,
     2634      37,    38,     0,     0,  -285,     8,     9,    10,    11,    12,
     2635      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2636      23,    24,     0,     0,    25,    26,    27,     0,     0,     0,
     2637       0,     0,    30,   448,   636,     0,   334,     0,     0,     0,
     2638       0,     0,     0,     0,   627,     0,     0,     0,     0,     0,
     2639       0,     0,     0,     0,     0,    33,     0,     0,     0,     0,
     2640       0,     0,    37,    38,     8,     9,    10,    11,    12,    13,
     2641      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2642      24,     0,     0,    25,    26,    27,     0,     0,     0,     0,
     2643       0,    30,   448,     0,     0,     0,     0,     0,   449,     0,
     2644       0,     0,   703,     0,     0,     0,   109,     0,     0,     0,
     2645       0,     0,     0,     0,    33,     0,     0,     0,     0,     0,
     2646       0,    37,    38,     8,     9,    10,    11,    12,    13,    14,
     2647      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2648    -285,     0,    25,    26,    27,     0,     0,     0,     0,     0,
     2649      30,     0,     0,     0,     0,     0,     0,   449,     0,     0,
     2650       0,   937,     0,     0,     0,   109,     0,     0,     0,     0,
     2651       0,     0,     0,    33,     0,     0,     0,     0,     0,     0,
     2652      37,    38,     0,     0,  -285,     8,     9,    10,    11,    12,
     2653      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2654      23,    24,     0,     0,    25,    26,    27,     0,     0,     0,
     2655       0,     0,    30,   448,     0,     0,   334,     0,     0,     0,
     2656       0,     0,     0,     0,   109,     0,     0,     0,     0,     0,
     2657       0,     0,     0,     0,     0,    33,     0,     0,     0,     0,
     2658       0,     0,    37,    38,     8,     9,    10,    11,    12,    13,
     2659      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2660      24,     0,     0,    25,    26,    27,     0,     0,     0,     0,
     2661       0,    30,     0,     0,     0,     0,     0,     0,   449,     0,
     2662       0,     0,  1219,     0,     0,     0,   109,     0,     0,     0,
     2663       0,     0,     0,     0,    33,     0,     0,     0,     0,   108,
     2664       0,    37,    38,     8,     9,    10,    11,    12,    13,    14,
     2665      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2666       0,     0,    25,    26,    27,     0,     0,     0,     0,     0,
     2667      30,   448,     0,     0,     0,     0,     0,    43,     0,     0,
     2668       0,     0,     0,     0,     0,   109,     0,     0,     0,     0,
     2669       0,     0,     0,    33,     0,     0,     0,     0,     0,     0,
     2670      37,    38,     8,     9,    10,    11,    12,    13,    14,    15,
     2671      16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
     2672       0,    25,    26,    27,     0,     0,     0,     0,     0,    30,
     2673       0,     0,     0,     0,     0,     0,   449,     0,     0,     0,
     2674       0,     0,     0,     0,   109,     0,     0,     0,     0,     0,
     2675       0,     0,    33,     0,     0,     0,     0,     0,     0,    37,
     2676      38,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2677      17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
     2678      25,    26,    27,     0,     0,     0,     0,     0,    30,     0,
     2679       0,     0,     0,   636,     0,   334,     0,     0,     0,     0,
     2680       0,     0,     0,   109,     0,     0,     0,     0,     0,     0,
     2681       0,    33,     0,     0,     0,     0,     0,     0,    37,    38,
     2682       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2683      18,    19,    20,    21,    22,    23,    24,     0,     0,    25,
     2684      26,    27,     0,     0,     0,     0,     0,    30,     0,     0,
     2685       0,     0,   636,     0,   334,     0,     0,     0,     0,     0,
     2686       0,     0,   627,     0,     0,     0,     0,     0,     0,     0,
     2687      33,     0,     0,     0,     0,     0,     0,    37,    38,     8,
     2688       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2689      19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
     2690      27,     0,     0,     0,     0,     0,    30,     0,     0,     0,
     2691       0,     0,     0,   253,     0,     0,     0,     0,     0,     0,
     2692       0,   109,     0,     0,     0,     0,     0,     0,     0,    33,
     2693       0,     0,     0,     0,     0,     0,    37,    38,     8,     9,
     2694      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2695      20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
     2696       0,     0,     0,     0,     0,    30,     0,     0,     0,     0,
     2697       0,     0,   154,     0,     0,     0,     0,     0,     0,     0,
     2698     109,     0,     0,     0,     0,     0,     0,     0,    33,     0,
     2699       0,     0,     0,     0,     0,   203,    38,     8,     9,    10,
     2700      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2701      21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
     2702       0,     0,     0,     0,    30,     0,     0,     0,     0,     0,
     2703       0,   266,     0,     0,     0,     0,     0,     0,     0,   267,
     2704       0,     0,     0,     0,     0,     0,     0,    33,     0,     0,
     2705       0,     0,     0,     0,    37,    38,     8,     9,    10,    11,
     2706      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2707      22,    23,    24,     0,     0,    25,    26,    27,     0,     0,
     2708       0,     0,     0,    30,     0,     0,     0,     0,     0,     0,
     2709     253,     0,     0,     0,     0,     0,     0,     0,   627,     0,
     2710       0,     0,     0,     0,     0,     0,    33,     0,     0,     0,
     2711       0,     0,     0,    37,    38,     8,     9,    10,    11,    12,
     2712      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2713      23,    24,     0,     0,    25,    26,    27,     0,     0,     0,
     2714       0,     0,    30,     0,     0,     0,     0,     0,     0,   334,
     2715       0,     0,     0,     0,     0,     0,     0,   627,     0,     0,
     2716       0,     0,     0,     0,     0,    33,     0,     0,     0,     0,
     2717       0,     0,    37,    38,     8,     9,    10,    11,    12,    13,
     2718      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2719      24,     0,     0,    25,    26,    27,     0,     0,     0,     0,
     2720       0,    30,     0,     0,     0,     0,     0,     0,   449,     0,
     2721       0,     0,     0,     0,     0,     0,   109,     0,     0,     0,
     2722       0,     0,     0,     0,    33,     0,     0,     0,     0,     0,
     2723       0,   203,    38,     8,     9,    10,    11,    12,    13,    14,
     2724      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2725       0,     0,    25,    26,    27,     0,     0,     0,     0,     0,
     2726      30,     0,     0,     0,     0,     0,     0,   266,     0,     0,
     2727       0,     0,     0,     0,     0,   622,     0,     0,     0,     0,
     2728       0,     0,     0,    33,     0,     0,     0,     0,     0,     0,
     2729      37,    38,     8,     9,    10,    11,    12,    13,    14,    15,
     2730      16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
     2731       0,    25,    26,    27,     0,     0,     0,     0,     0,    30,
     2732       0,     0,     0,     0,     0,     0,   592,     0,     0,     0,
     2733       0,     0,     0,     0,   627,     0,     0,     0,     0,     0,
     2734       0,     0,    33,     0,     0,     0,     0,     0,     0,    37,
     2735      38,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2736      17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
     2737      25,    26,    27,     0,     0,     0,     0,     0,    30,     0,
     2738       0,     0,     0,     0,     0,   334,     0,     0,     0,     0,
     2739       0,     0,     0,   109,     0,     0,     0,     0,     0,     0,
     2740       0,    33,     0,     0,     0,     0,     0,     0,    37,    38,
    23932741       2,   202,     4,     5,     6,     7,     8,     9,    10,    11,
    23942742      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    23952743      22,    23,    24,     0,     0,    25,    26,    27,     0,     0,
    2396        0,     0,   277,    30,   278,     0,     0,     0,     0,     0,
     2744       0,     0,     0,    30,    43,     0,     0,     0,     0,     0,
     2745       0,     0,   109,     0,     0,     0,     0,     0,     0,     0,
     2746       0,     0,     0,     0,     0,     0,    33,     0,    34,     0,
     2747      35,     0,     0,    37,    38,     0,   278,     0,   279,  1051,
     2748       0,  1052,     0,     0,  1053,  1054,  1055,  1056,  1057,  1058,
     2749    1059,  1060,  1507,  1061,     0,     0,  1062,    32,     0,   280,
     2750       0,     0,     0,     0,     0,   642,     0,     0,  -403,   282,
     2751       0,     0,   283,   284,   285,   286,    40,    41,     0,   287,
     2752     288,     0,     0,     0,     0,     0,     0,   289,     0,     0,
    23972753       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2398        0,     0,     0,     0,     0,   279,    33,     0,    34,     0,
    2399       35,   280,     0,   203,    38,   281,     0,     0,   282,   283,
    2400      284,   285,    40,    41,     0,   286,   287,     0,     0,     0,
    2401        0,     0,     0,   288,     0,     0,     0,     0,     0,     0,
    2402        0,     0,     0,     0,     0,     0,     0,   289,     0,  1000,
    2403        0,     0,     0,     0,     0,     0,   291,  1001,   293,   294,
    2404      295,   296,     2,   202,     4,     5,     6,     7,     8,     9,
    2405       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2406       20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
    2407        0,     0,     0,     0,   277,    30,   278,     0,     0,     0,
     2754       0,   290,     0,   374,     0,     0,   167,     0,     0,     0,
     2755     292,   376,   294,   295,   296,   297,     0,   278,     0,   279,
     2756    1051,     0,  1052,     0,  -126,  1053,  1054,  1055,  1056,  1057,
     2757    1058,  1059,  1060,     0,  1061,     0,     0,  1062,    32,     0,
     2758     280,     0,     0,     0,     0,     0,   642,     0,     0,     0,
     2759     282,     0,     0,   283,   284,   285,   286,    40,    41,     0,
     2760     287,   288,     0,     0,     0,     0,     0,     0,   289,     0,
    24082761       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2409        0,     0,     0,     0,     0,     0,     0,   279,    33,     0,
    2410       34,     0,    35,   280,     0,   203,    38,   281,     0,     0,
    2411      282,   283,   284,   285,    40,    41,     0,   286,   287,     0,
    2412        0,     0,     0,     0,     0,   288,     0,     0,     0,     0,
    2413        0,     0,     0,     0,     0,     0,     0,     0,     0,   289,
    2414        0,   373,     0,     0,     0,     0,     0,     0,   291,   375,
    2415      293,   294,   295,   296,     1,     2,     3,     4,     5,     6,
    2416        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2417       17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
    2418       25,    26,    27,    28,     0,     0,    29,     0,    30,    31,
    2419        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2420        0,     0,     0,     0,     0,     0,     0,     0,    32,     0,
    2421        0,    33,     0,    34,     0,    35,    36,     0,    37,    38,
    2422       39,     0,     0,     0,     0,     0,     0,    40,    41,     0,
    2423        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2424        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2425        0,     0,    42,     0,    43,     0,     0,     0,  -501,     0,
    2426        0,     0,    44,     1,     2,     3,     4,     5,     6,     7,
     2762       0,     0,   290,     0,   374,     0,     0,   167,     0,     0,
     2763       0,   292,   376,   294,   295,   296,   297,     0,     0,     0,
     2764       0,     0,     0,     0,     0,  -126,     2,   202,     4,     5,
     2765       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     2766      16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
     2767       0,    25,    26,    27,     0,     0,     0,     0,     0,    30,
    24272768       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    24282769      18,    19,    20,    21,    22,    23,    24,     0,     0,    25,
    2429       26,    27,    28,     0,     0,    29,     0,    30,    31,     0,
     2770      26,    27,    33,     0,    34,     0,    35,    30,     0,    37,
     2771      38,     0,   278,     0,   279,  1051,     0,  1052,  1394,  1395,
     2772    1053,  1054,  1055,  1056,  1057,  1058,  1059,  1060,  1507,  1061,
     2773      33,  1307,  1062,    32,     0,   280,     0,    37,    38,     0,
     2774       0,   642,     0,     0,     0,   282,     0,     0,   283,   284,
     2775     285,   286,    40,    41,     0,   287,   288,     0,     0,     0,
     2776       0,     0,     0,   289,     0,     0,     0,     0,     0,     0,
     2777       0,     0,     0,     0,     0,     0,     0,   290,     0,   374,
     2778       0,     0,   167,     0,     0,     0,   292,   376,   294,   295,
     2779     296,   297,   278,     0,   279,  1051,     0,  1052,  1394,  1395,
     2780    1053,  1054,  1055,  1056,  1057,  1058,  1059,  1060,     0,  1061,
     2781       0,     0,  1062,    32,     0,   280,     0,     0,     0,     0,
     2782       0,   642,     0,     0,     0,   282,     0,     0,   283,   284,
     2783     285,   286,    40,    41,     0,   287,   288,     0,     0,     0,
     2784       0,     0,     0,   289,     0,     0,     0,     0,     0,   278,
     2785       0,   279,     0,     0,     0,     0,     0,   290,     0,   374,
     2786       0,     0,   167,     0,     0,     0,   292,   376,   294,   295,
     2787     296,   297,   280,     0,     0,     0,     0,     0,   281,     0,
     2788       0,     0,   282,     0,     0,   283,   284,   285,   286,    40,
     2789      41,     0,   287,   288,     0,     0,     0,     0,     0,     0,
     2790     289,     0,     0,     0,     0,     0,   278,     0,   279,     0,
     2791       0,     0,     0,     0,   290,     0,   374,     0,     0,     0,
     2792       0,     0,   802,   292,   376,   294,   295,   296,   297,   280,
     2793       0,     0,     0,     0,     0,   281,     0,     0,     0,   282,
     2794       0,     0,   283,   284,   285,   286,    40,    41,     0,   287,
     2795     288,     0,     0,     0,     0,     0,     0,   289,     0,     0,
     2796       0,     0,     0,   278,     0,   279,     0,     0,     0,     0,
     2797       0,   290,     0,   374,     0,     0,   982,     0,     0,     0,
     2798     292,   376,   294,   295,   296,   297,   280,     0,     0,     0,
     2799       0,     0,   281,     0,     0,     0,   282,     0,     0,   283,
     2800     284,   285,   286,    40,    41,     0,   287,   288,     0,     0,
     2801       0,     0,     0,     0,   289,     0,     0,     0,     0,     0,
     2802     278,     0,   279,     0,     0,     0,     0,     0,   290,     0,
     2803     374,     0,     0,     0,     0,     0,     0,   292,   376,   294,
     2804     295,   296,   297,   280,     0,     0,     0,     0,     0,   281,
     2805       0,     0,     0,   282,     0,     0,   283,   284,   285,   286,
     2806      40,    41,     0,   287,   288,     0,     0,     0,     0,     0,
     2807       0,   289,     0,     0,     0,     0,     0,   278,     0,   279,
     2808       0,     0,     0,     0,     0,   290,     0,   374,     0,     0,
     2809       0,     0,     0,     0,   292,   726,   294,   295,   296,   297,
     2810     280,     0,     0,     0,     0,     0,   642,     0,     0,     0,
     2811     282,     0,     0,   283,   284,   285,   286,    40,    41,     0,
     2812     287,   288,     0,     0,     0,     0,     0,     0,   289,     0,
     2813       0,     0,     0,     0,   278,     0,   279,     0,     0,     0,
     2814       0,     0,   290,     0,   776,     0,     0,     0,     0,     0,
     2815       0,   292,   376,   294,   295,   296,   297,   280,     0,     0,
     2816       0,     0,     0,   281,     0,     0,     0,   282,     0,     0,
     2817     283,   284,   285,   286,    40,    41,     0,   287,   288,     0,
     2818       0,     0,     0,     0,     0,   289,     0,     0,     0,     0,
     2819       0,   278,     0,   279,     0,     0,     0,     0,     0,   290,
     2820       0,   374,     0,     0,     0,     0,     0,     0,   292,   817,
     2821     294,   295,   296,   297,   280,     0,     0,     0,     0,     0,
     2822     281,     0,     0,     0,   282,     0,     0,   283,   284,   285,
     2823     286,    40,    41,     0,   287,   288,     0,     0,     0,     0,
     2824       0,     0,   289,     0,     0,     0,     0,     0,   278,     0,
     2825     279,     0,     0,     0,     0,     0,   508,     0,     0,     0,
     2826       0,     0,     0,     0,     0,   292,   376,   294,   295,   296,
     2827     297,   280,     0,     0,     0,     0,     0,   281,     0,     0,
     2828       0,   282,     0,     0,   283,   284,   285,   286,    40,    41,
     2829       0,   287,   288,     0,     0,     0,     0,     0,     0,   289,
     2830       0,     0,     0,     0,     0,   278,     0,   279,     0,     0,
     2831       0,     0,     0,   290,     0,     0,     0,     0,     0,     0,
     2832       0,     0,   292,   376,   294,   295,   296,   297,   280,     0,
     2833       0,     0,     0,     0,   281,     0,     0,     0,   282,     0,
     2834       0,   283,   284,   285,   286,    40,    41,     0,   287,   288,
     2835       0,     0,     0,     0,     0,     0,   289,     0,     0,     0,
     2836       0,     0,   278,     0,   279,     0,     0,     0,     0,     0,
     2837     512,     0,     0,     0,     0,     0,     0,     0,     0,   292,
     2838     376,   294,   295,   296,   297,   280,     0,     0,     0,     0,
     2839       0,   281,     0,     0,     0,   282,     0,     0,   283,   284,
     2840     285,   286,    40,    41,     0,   287,   288,     0,     0,     0,
     2841       0,     0,     0,   289,     0,     0,     0,     0,     0,     0,
     2842       0,     0,     0,     0,     0,     0,     0,   515,     0,     0,
     2843       0,     0,     0,     0,     0,     0,   292,   376,   294,   295,
     2844     296,   297,     2,   202,     4,     5,     6,     7,     8,     9,
     2845      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2846      20,    21,    22,    23,    24,     0,     0,     0,     0,     0,
     2847       0,     0,     0,     0,     0,    30,     0,     0,     0,     0,
    24302848       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2431        0,     0,     0,     0,     0,     0,     0,    32,     0,     0,
    2432       33,     0,    34,     0,    35,    36,     0,    37,    38,    39,
    2433        0,     0,     0,     0,     0,     0,    40,    41,     0,     0,
    2434        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2435        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2436        0,    42,     0,    43,     0,     0,     0,     0,     0,     0,
    2437        0,    44,     1,     2,   202,     4,     5,     6,     7,     8,
    2438        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2439       19,    20,    21,    22,    23,    24,  -278,     0,    25,    26,
    2440       27,    28,     0,     0,    29,     0,    30,     0,     0,     0,
    2441        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2442        0,     0,     0,     0,     0,     0,     0,     0,     0,    33,
    2443        0,    34,     0,    35,     0,     0,    37,    38,     0,     0,
    2444     -278,   201,     2,   202,     4,     5,     6,     7,     8,     9,
    2445       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2446       20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
    2447        0,     0,    43,     0,     0,    30,     0,     0,     0,     0,
    2448      109,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    24492849       0,     0,     0,     0,     0,     0,     0,     0,    33,     0,
    2450       34,     0,    35,     0,     0,   203,    38,     2,   202,     4,
     2850      34,     0,    35,    36,     0,   170,   171,    39,     0,     0,
     2851       0,     0,     0,     0,    40,    41,   201,     2,   202,     4,
    24512852       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    24522853      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    24532854       0,     0,    25,    26,    27,     0,     0,     0,     0,     0,
    2454       30,   204,     0,     0,     0,     0,     0,     0,     0,   267,
     2855      30,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    24552856       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2456        0,     0,     0,    33,     0,    34,     0,    35,    36,     0,
    2457      203,    38,    39,     0,     0,     0,     0,     0,     0,    40,
    2458       41,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2857       0,     0,     0,    33,     0,    34,     0,    35,     0,     0,
     2858     203,    38,   469,     2,   202,     4,     5,     6,     7,     8,
     2859       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2860      19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
     2861      27,     0,     0,     0,     0,     0,    30,     0,     0,     0,
    24592862       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2460        0,     0,     0,     0,    42,     0,   204,     0,     0,     0,
    2461        0,     0,     0,     0,   205,     2,   202,     4,     5,     6,
    2462        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2463       17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
    2464       25,    26,    27,     0,     0,     0,     0,     0,    30,     0,
    2465        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2466        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2467        0,    33,     0,    34,     0,    35,     0,     0,    37,    38,
    2468        0,     0,     2,   202,     4,     5,     6,     7,     8,     9,
    2469       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2470       20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
    2471        0,     0,     0,  -383,   676,    30,     0,     0,     0,     0,
    2472        0,     0,   625,     0,     0,     0,     0,     0,     0,     0,
    2473        0,     0,     0,     0,     0,     0,     0,     0,    33,     0,
    2474       34,     0,    35,     0,     0,    37,    38,     0,     0,     0,
    2475        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2476        0,     0,     0,     0,     0,     0,     0,  1334,     0,     0,
    2477        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2478        0,   676,     0,     0,     0,     0,     0,     0,     0,   625,
    2479        2,   202,     4,     5,     6,     7,     8,     9,    10,    11,
    2480       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2481       22,    23,    24,     0,     0,    25,    26,    27,     0,     0,
    2482        0,     0,     0,    30,     8,     9,    10,    11,    12,    13,
    2483       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2484       24,     0,     0,    25,    26,    27,    33,     0,    34,     0,
    2485       35,    30,     0,    37,    38,     0,     0,     0,     0,     0,
    2486        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2487        0,     0,     0,     0,    33,  1336,     0,     0,     0,   108,
    2488        0,    37,    38,     0,     0,     0,     0,     0,     0,   676,
    2489        0,     0,     0,     0,     0,     0,     0,   625,     2,   202,
     2863       0,     0,     0,     0,     0,     0,     0,     0,     0,    33,
     2864       0,    34,     0,    35,     0,     0,    37,    38,     2,   202,
    24902865       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    24912866      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     
    24942869       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    24952870       0,     0,     0,     0,    33,     0,    34,     0,    35,     0,
    2496        0,   203,    38,     2,   202,     4,     5,     6,     7,     8,
     2871       0,   203,    38,     8,     9,    10,    11,    12,    13,    14,
     2872      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2873       0,     0,    25,    26,    27,   487,   488,   489,     0,     0,
     2874      30,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2875      17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
     2876      25,    26,    27,    33,     0,     0,     0,     0,    30,     0,
     2877      37,    38,     0,     0,     0,     0,     0,     0,     0,     0,
     2878       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2879       0,    33,     0,     0,     0,     0,     0,     0,   203,    38
     2880};
     2881
     2882#define yypact_value_is_default(yystate) \
     2883  ((yystate) == (-1318))
     2884
     2885#define yytable_value_is_error(yytable_value) \
     2886  YYID (0)
     2887
     2888static const yytype_int16 yycheck[] =
     2889{
     2890       1,    42,     0,    42,     0,   181,    42,   235,   181,   165,
     2891     181,     1,   451,   200,   182,   182,   215,   648,   690,   181,
     2892     181,   484,   181,   181,   275,   602,   344,   113,   103,   751,
     2893     252,   622,   690,    31,   494,    31,   690,    31,   498,   604,
     2894     457,   892,   988,   359,    42,   602,    44,   363,    44,  1317,
     2895       1,   534,   602,   995,  1031,     0,    54,    37,    37,   183,
     2896     602,   604,    60,   602,    60,    63,   450,    63,    66,   605,
     2897      66,   344,    37,   572,   101,   611,    66,   152,    65,    65,
     2898     771,  1398,    65,    49,   715,   261,    31,    75,   261,    42,
     2899     261,  1394,   412,    44,   262,   262,   768,   691,    42,   261,
     2900     261,  1043,   261,   261,   602,    37,   104,  1030,  1031,   107,
     2901     768,   197,   432,   101,   768,   113,    27,    75,    57,   713,
     2902     440,    42,   101,   103,   103,   111,     0,    89,    75,   340,
     2903      42,    43,    37,   257,   258,   101,   101,   124,   103,   523,
     2904     181,   124,   181,  1411,   602,   181,   144,   892,   144,   101,
     2905     102,     0,   103,   115,   152,  1458,   103,    31,   109,   157,
     2906      71,   157,   101,   420,   421,  1482,    42,    43,    65,   101,
     2907    1487,   103,   101,   636,   637,   638,    37,    65,   290,   736,
     2908       0,     1,    31,   181,   182,  1050,   182,  1504,   277,    88,
     2909     412,   654,   143,    65,  1511,   107,    44,   892,    65,   197,
     2910      75,   152,    75,    37,    29,   404,   103,   205,    78,   205,
     2911     432,    31,    11,     0,    63,   103,   214,   490,   440,   217,
     2912     261,   217,   261,   122,   101,   261,   689,   102,   181,   102,
     2913     106,   103,   400,   400,   109,   105,   103,   181,   736,   496,
     2914     101,   104,   103,    63,    31,   108,    66,   248,  1225,   247,
     2915     201,   247,   829,   247,   205,    80,    81,   514,     0,     1,
     2916     181,   109,   337,   261,   262,   728,   262,   101,   104,   103,
     2917     268,   710,   829,   484,   590,   106,   841,   275,   736,   829,
     2918     108,    75,   450,   450,   235,   236,   604,   829,   289,    31,
     2919     829,   366,   492,    73,  1240,   831,   124,  1274,   841,     0,
     2920       1,   764,   247,  1487,   390,  1050,   997,   101,   420,   421,
     2921     809,    73,    42,    43,   482,   482,   267,   633,    75,   270,
     2922    1504,    63,   579,   103,    66,   105,   324,  1511,   324,   109,
     2923      31,   829,   418,   153,    54,    89,  1487,  1059,   424,   290,
     2924     108,   103,   293,   105,     0,   343,   344,   109,   111,   123,
     2925    1273,  1274,   109,   116,   117,   818,   124,   205,  1053,  1210,
     2926    1511,   115,   360,   683,   224,    66,   364,    65,   217,    67,
     2927      68,   829,   949,   247,   968,    31,   106,   104,   252,   101,
     2928     108,   108,   593,   243,   104,   950,   337,   107,   236,   340,
     2929       3,    65,   390,    67,    68,     3,   508,   217,   247,   949,
     2930     512,   123,   400,   515,   400,   103,   606,   949,   359,   108,
     2931     610,   622,   363,  1390,   239,   366,   627,   506,  1009,   267,
     2932     418,    65,  1287,    67,    68,   124,   424,   247,   426,   102,
     2933      67,   631,   106,   108,    71,   635,   109,    74,   102,    76,
     2934    1382,  1383,   290,    65,   108,   293,    83,    69,   108,   124,
     2935     123,   526,   450,     0,    76,    77,   568,   101,   107,   108,
     2936     247,   683,   106,     0,    52,  1210,   102,  1390,   469,   420,
     2937     421,   101,   108,   508,   123,   217,   474,   512,   689,   101,
     2938     515,   103,  1018,  1019,   482,   102,   482,   101,   486,   111,
     2939     486,   108,   490,   649,   214,  1126,   345,   448,   958,   750,
     2940     451,   918,   102,   725,   820,   247,   457,    95,   824,   109,
     2941     993,   108,   123,   514,   690,  1210,   102,   690,   469,   690,
     2942     113,   114,   108,   841,   692,   692,  1120,   124,   690,   690,
     2943     531,   690,   690,   534,   658,   536,   101,  1102,   412,   101,
     2944     108,   486,  1287,   494,   928,   496,   247,   498,   268,   121,
     2945     375,   123,   936,   764,   102,   275,   124,   508,   432,    83,
     2946      84,   512,   108,   514,   515,  1287,   440,  1030,   841,  1434,
     2947     656,   208,   108,   108,   108,   526,  1441,   108,   124,   668,
     2948     107,   102,   583,  1177,  1178,     0,   108,   108,   124,   124,
     2949     124,   247,   590,   124,   118,   119,   252,   981,   914,   101,
     2950     448,   189,   124,   451,   602,  1300,   604,   427,   466,   457,
     2951     484,   101,   486,   688,   637,   638,    31,   108,   104,   101,
     2952    1485,   103,   108,   343,   212,   623,   475,    42,   579,    44,
     2953     455,   654,   101,   124,   222,   460,    44,   486,  1360,   590,
     2954     360,   639,   593,   102,   364,    60,   102,   104,    63,  1088,
     2955     109,    66,   108,   108,   655,   653,   657,   104,   656,  1354,
     2956     508,   108,  1357,   863,   512,   754,   486,   515,   493,   124,
     2957     495,   622,   102,   636,   637,   638,   627,   102,   108,   878,
     2958     102,   954,   633,  1146,    65,   102,    67,    68,   763,  1434,
     2959     102,   654,   690,   104,   692,   102,  1441,   108,  1461,   486,
     2960     899,   109,   290,  1398,  1467,   728,   101,   527,  1403,   102,
     2961     347,   104,   349,    81,    82,   108,  1438,   101,  1440,   103,
     2962     101,  1484,   723,    85,    86,   106,  1489,   111,   884,   144,
     2963     123,   124,   960,  1428,   101,   143,   103,   688,   736,   737,
     2964    1485,   101,   157,   103,   486,     4,     5,     6,     7,     8,
     2965       9,   111,   750,   101,  1118,   955,   412,   102,  1122,   710,
     2966     928,   928,   101,   108,  1486,   728,   181,   182,   936,   936,
     2967     124,   591,   101,  1089,   103,   624,   432,   101,   102,   103,
     2968     102,   102,   111,  1377,   440,   486,   108,   108,   102,   740,
     2969     205,   101,   102,   103,   108,   818,    57,   205,  1009,   436,
     2970    1394,   101,   217,    62,   591,    64,   101,  1502,   103,   683,
     2971    1273,   101,   763,  1508,   672,   689,   636,   637,   638,  1491,
     2972     645,   104,  1517,   102,   108,   109,  1521,   235,   124,   108,
     2973     486,   829,   247,  1491,   654,  1022,    65,  1491,    67,    68,
     2974      69,    65,   106,   841,   102,    69,   261,    76,    77,   437,
     2975     108,   725,    76,    77,   102,   818,   101,   102,   103,   267,
     2976     108,   124,   710,  1457,  1458,   124,   101,   716,   103,   820,
     2977     102,   124,   101,   824,   103,   106,   108,   101,    44,    65,
     2978     705,   730,   111,   471,   106,   293,   711,   111,   101,  1045,
     2979     764,   892,   102,   102,    60,   102,   102,    63,   108,   108,
     2980      66,   108,   108,   623,   557,   558,   559,   560,   728,   324,
     2981      10,    11,    12,    13,    14,    65,   914,    67,    68,   639,
     2982     508,   101,   102,   103,   512,   101,   101,   515,   103,   344,
     2983     928,   104,   340,   653,   101,  1146,   103,    37,   936,     4,
     2984       5,     6,     7,     8,     9,    75,   101,   805,   103,    75,
     2985      65,     0,     1,   101,    69,   103,   954,   815,   102,   103,
     2986      60,    76,    77,   914,  1246,  1247,  1248,   918,   101,   959,
     2987     103,   112,   830,   822,   695,   120,   697,    87,   144,    78,
     2988      79,    80,    31,    54,    55,   400,   101,   108,   109,   990,
     2989     121,   157,   993,   101,   995,    44,   111,    62,   818,    64,
     2990     123,   101,   101,   103,   103,   825,   105,   958,   959,   960,
     2991     103,   111,   420,   421,  1225,   101,   182,    66,   892,    65,
     2992     104,    67,    68,    69,  1110,   108,   109,   683,   104,  1118,
     2993     750,    42,    43,  1122,  1123,   450,   553,   554,   825,   205,
     2994     555,   556,  1043,   892,   102,   561,   562,   102,   102,   102,
     2995     102,   217,  1053,   101,   103,  1056,  1057,  1058,  1009,   884,
     2996     102,   104,   103,   108,   104,   101,   891,   123,   106,   725,
     2997     918,   486,   892,   104,   102,   490,   102,   104,  1190,  1191,
     2998     104,  1193,   104,   671,   104,   108,  1470,  1199,   496,    28,
     2999    1202,   109,   680,   109,    63,   144,   684,    10,    11,    12,
     3000      13,    14,   102,   152,   153,   892,   514,   102,   104,   106,
     3001     109,    80,  1110,   107,    10,    11,    12,    13,    14,   102,
     3002     107,   107,   101,   108,    37,   102,   124,   102,   102,  1513,
     3003     102,  1206,   102,   182,   102,   466,   109,  1088,  1089,   959,
     3004     102,    37,   108,   102,   102,   114,  1235,    60,   197,   102,
     3005     892,   200,   201,   102,   102,   975,   205,   982,   324,   102,
     3006     102,   102,   102,  1012,    60,   102,   102,   102,    28,  1027,
     3007    1028,   579,   123,   107,   104,   102,  1050,   226,   102,   102,
     3008     102,   230,   107,   232,   104,   593,     3,   602,   157,   604,
     3009     108,   892,   241,    10,    11,    12,    13,    14,   247,  1189,
     3010     104,  1050,   102,   252,   102,   101,   108,   103,  1206,  1210,
     3011    1030,  1031,   102,   262,   622,   111,   109,   959,   106,   627,
     3012      37,   270,   108,   108,   104,  1083,  1084,   102,   102,  1318,
     3013    1050,   108,   108,  1322,   400,   102,   892,   101,   104,  1229,
     3014    1088,   104,   101,    60,  1356,  1246,  1247,  1248,   217,    65,
     3015     101,    67,    68,    69,  1079,  1206,   101,   101,   959,   109,
     3016      76,    77,    65,  1050,    67,    68,    69,   124,   107,   102,
     3017    1498,   102,  1146,    76,    77,   690,   102,   692,  1229,   121,
     3018     107,   106,   104,   124,   108,     3,   255,  1373,   337,   104,
     3019     259,   340,    10,    11,    12,    13,    14,   346,   101,  1300,
     3020     108,   102,   104,   102,     0,   102,   104,    45,  1050,   104,
     3021     359,   104,   102,   104,   363,  1491,   104,   366,  1491,    37,
     3022    1491,   736,   737,   104,  1492,  1492,  1415,  1317,   916,  1491,
     3023    1491,   107,  1491,  1491,   102,    31,  1210,   124,   124,  1188,
     3024     124,   672,    60,   107,   124,  1513,  1513,   124,   109,  1050,
     3025     102,  1225,   107,  1354,   104,   104,  1357,   104,   104,  1184,
     3026     104,  1210,   104,   412,   104,  1223,  1317,   104,  1188,  1189,
     3027      66,   102,   102,   101,  1372,  1373,   345,   104,   427,   104,
     3028     101,  1382,  1383,   432,  1470,    55,    54,   102,   102,   106,
     3029    1210,   440,   124,   109,  1050,   104,  1254,  1398,   104,   102,
     3030     104,   102,  1403,    89,  1262,  1263,  1264,   101,   107,  1229,
     3031     102,   104,   102,  1287,   829,  1416,    40,   466,   102,   102,
     3032     469,  1411,   109,  1210,   124,   102,   841,  1428,   108,   124,
     3033      89,   102,     3,  1282,   109,   484,   102,   486,  1287,    10,
     3034      11,    12,    13,    14,   102,   494,  1188,  1189,  1306,   498,
     3035    1491,   124,  1491,  1273,  1274,  1491,   425,   153,   107,   124,
     3036    1411,   104,  1282,   104,   124,   101,    37,  1287,  1210,   124,
     3037    1471,   124,  1470,  1061,   805,  1476,   107,   526,   527,   672,
     3038     107,  1482,   102,   691,   815,   102,  1487,  1229,  1189,    60,
     3039     563,   565,  1443,  1491,  1492,   564,  1492,  1317,   566,   830,
     3040    1287,  1502,  1127,  1504,   567,   713,   475,  1508,    54,  1210,
     3041    1511,  1362,  1458,   928,  1210,  1513,  1517,  1513,  1521,  1296,
     3042    1521,   936,  1473,   572,  1473,  1123,  1322,  1441,  1229,  1079,
     3043     226,   448,   448,   936,   697,   884,   938,   982,   650,   954,
     3044    1282,   590,   591,   740,   593,  1287,   460,  1498,   583,  1229,
     3045     956,   247,   960,   486,  1210,   604,   252,   571,   104,    63,
     3046    1434,   107,   750,   571,   571,    -1,    -1,  1441,    -1,    -1,
     3047    1390,    -1,    -1,   622,    -1,  1317,    -1,    -1,   627,    -1,
     3048      -1,    -1,    -1,    -1,   633,  1434,  1287,   636,   637,   638,
     3049      -1,  1411,  1441,    -1,   802,  1443,    65,    -1,    67,    68,
     3050      69,  1009,    -1,    -1,    -1,   654,   152,    76,    77,    -1,
     3051     114,  1485,   805,    -1,  1434,     0,  1317,    -1,    -1,    -1,
     3052      -1,  1441,   815,   672,    -1,  1473,    -1,   596,    -1,    -1,
     3053      -1,  1287,   101,    -1,   683,    -1,  1485,   830,    -1,   688,
     3054     689,    -1,   111,   692,    -1,    -1,    31,  1434,    -1,    -1,
     3055     346,    -1,  1372,   157,  1441,   624,    -1,    -1,    -1,    -1,
     3056     629,    -1,    -1,    -1,    -1,  1485,    -1,    -1,   214,  1411,
     3057     185,    -1,   880,    -1,    -1,    -1,   725,   192,    -1,   728,
     3058      -1,    66,    65,    -1,    67,    68,    69,    -1,   737,    -1,
     3059      -1,   740,  1434,    76,    77,    -1,  1027,  1028,  1485,  1441,
     3060      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1295,    -1,    -1,
     3061    1411,    -1,    -1,   217,   763,   764,   412,    -1,   101,    -1,
     3062     769,    -1,   268,    65,    -1,    67,    68,    69,   111,   275,
     3063      -1,   427,    -1,  1434,    76,    77,   432,    -1,    -1,    -1,
     3064    1441,    -1,    -1,  1485,   440,    -1,    -1,   716,    -1,   264,
     3065      -1,   255,  1083,  1084,    -1,   259,   805,    -1,    -1,   101,
     3066     968,   730,    -1,    -1,    -1,    -1,   815,    -1,   153,   818,
     3067     466,   820,    -1,    -1,   823,   824,   825,    -1,  1434,    -1,
     3068      -1,   830,    -1,    -1,  1485,  1441,    -1,    -1,   484,   997,
     3069     486,   840,    10,    11,    12,    13,    14,   343,    -1,    -1,
     3070      -1,    -1,    -1,    -1,   319,    10,    11,    12,    13,    14,
     3071      -1,    -1,   327,    -1,   360,   330,    -1,    -1,   364,    37,
     3072      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1485,
     3073      -1,   527,    37,    -1,  1027,  1028,    -1,    -1,    -1,  1047,
     3074      -1,   345,    60,   892,    -1,    -1,    -1,    65,    -1,    67,
     3075      68,    69,    -1,   822,  1442,    60,    -1,    -1,    76,    77,
     3076      65,    -1,   247,    -1,    69,   914,    -1,   252,    -1,    -1,
     3077      -1,    76,    77,    -1,    -1,    -1,    -1,   392,    -1,    -1,
     3078     426,   396,    -1,   101,  1472,   103,    -1,    -1,    -1,    -1,
     3079    1083,  1084,  1223,   111,    -1,   591,   101,    -1,     0,    -1,
     3080      -1,   950,    -1,    -1,    -1,    -1,   111,    -1,    -1,   958,
     3081     959,    -1,  1120,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3082      -1,   425,    -1,  1254,  1512,     0,   975,    -1,    -1,    31,
     3083      -1,  1262,  1263,  1264,    -1,    -1,  1524,    -1,    -1,    -1,
     3084     636,   637,   638,    -1,    -1,    -1,    -1,    -1,    -1,   279,
     3085      -1,    -1,    -1,    -1,    -1,    -1,    31,    -1,   654,    -1,
     3086    1009,   346,   292,   293,    66,    -1,   481,    -1,    -1,  1177,
     3087    1178,   475,    -1,  1022,   304,  1306,   672,    -1,  1027,  1028,
     3088      -1,  1030,  1031,    -1,    -1,    -1,    -1,   683,    -1,    -1,
     3089      -1,    66,    -1,   689,    -1,    10,    11,    12,    13,    14,
     3090      -1,  1050,     4,     5,     6,     7,     8,     9,    -1,    -1,
     3091     340,    -1,    65,    -1,    67,    68,    69,    -1,    -1,    -1,
     3092      -1,    -1,    37,    76,    77,    -1,    -1,   412,    -1,   725,
     3093      32,    -1,   728,    -1,  1083,  1084,    -1,    -1,    -1,    -1,
     3094    1089,    -1,   427,  1012,   590,    60,   376,   432,   101,    -1,
     3095     103,   153,    -1,    -1,    -1,   440,   571,   572,   111,    -1,
     3096      62,  1254,    64,    -1,    -1,    -1,    -1,    -1,   764,  1262,
     3097    1263,  1264,    -1,    -1,    -1,    -1,  1491,   623,   153,    -1,
     3098      -1,   466,    -1,    -1,    -1,    -1,   101,    -1,   103,    -1,
     3099    1498,    -1,   596,   639,    -1,    -1,   111,  1146,    -1,   484,
     3100      65,   486,    67,    68,    69,    -1,    -1,   653,    -1,   805,
     3101      -1,    76,    77,  1306,    -1,    -1,    63,    -1,    -1,   815,
     3102     624,    -1,   818,    -1,    -1,   629,    73,   823,    -1,   825,
     3103      -1,    -1,    -1,    -1,   830,    -1,   101,    -1,   103,    -1,
     3104    1189,    -1,   527,    -1,   659,   247,   111,    -1,   663,    -1,
     3105     252,    65,    -1,    67,    68,    69,    -1,  1206,    -1,    -1,
     3106      -1,  1210,    76,    77,    -1,    -1,    -1,   114,    -1,  1377,
     3107      -1,    -1,   247,    -1,  1223,    -1,  1225,   252,    -1,    -1,
     3108    1229,   696,    -1,    -1,    -1,    -1,  1394,   101,    -1,   103,
     3109      -1,    -1,    -1,    -1,    -1,   109,   892,   111,    -1,    -1,
     3110      -1,    -1,    -1,    -1,   750,  1254,   591,    -1,    -1,    -1,
     3111     157,    -1,   716,  1262,  1263,  1264,    -1,    -1,    -1,  1188,
     3112     550,   551,   552,    -1,  1273,  1274,   730,    90,    91,    92,
     3113      93,    94,    95,    96,    97,    98,    99,    -1,  1287,    -1,
     3114      -1,    -1,    -1,    -1,   346,    -1,    -1,    -1,    -1,  1457,
     3115    1458,   636,   637,   638,    -1,    -1,    -1,  1306,    -1,    -1,
     3116     123,    -1,    -1,   593,    -1,    -1,    -1,    -1,  1317,   654,
     3117     217,   346,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   975,
     3118      -1,    -1,    -1,    -1,    -1,    -1,    -1,   672,    -1,    10,
     3119      11,    12,    13,    14,   809,    -1,    -1,    -1,   683,    -1,
     3120      -1,    -1,    -1,    -1,   689,    -1,    -1,    -1,   255,    -1,
     3121     412,    -1,   259,  1282,    -1,    -1,    37,    -1,   822,    -1,
     3122      -1,    -1,    -1,    -1,    -1,   427,    -1,    -1,   275,    -1,
     3123     432,  1027,  1028,    -1,  1030,  1031,    -1,   412,   440,    60,
     3124     725,  1390,    -1,   728,    65,    -1,    67,    68,    69,    -1,
     3125      -1,    -1,   427,    -1,  1050,    76,    77,   432,    -1,    -1,
     3126      -1,    -1,  1411,    -1,   466,   440,    -1,    -1,   914,    -1,
     3127      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   764,
     3128     101,    -1,   484,    -1,   486,  1434,    -1,  1083,  1084,    -1,
     3129     111,   466,  1441,    -1,    -1,    -1,   726,    -1,   345,    -1,
     3130      -1,    -1,    -1,    -1,    -1,    -1,    -1,   922,    -1,   484,
     3131      -1,   486,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3132     805,    -1,    -1,    -1,    -1,   527,    -1,    -1,    -1,    -1,
     3133     815,    -1,    -1,   818,    -1,    -1,  1485,    -1,   823,    -1,
     3134     825,   771,    -1,  1492,    -1,   830,    -1,    -1,    -1,    -1,
     3135    1146,    -1,   527,    -1,     3,     4,     5,     6,     7,     8,
    24973136       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2498       19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
    2499       27,     0,     0,     0,     0,     0,    30,   266,     0,     0,
    2500        0,     0,     0,     0,     0,   620,     0,     0,     0,     0,
    2501        0,     0,     0,     0,     0,     0,     0,     0,     0,    33,
    2502        0,    34,     0,    35,     0,     0,    37,    38,     2,   202,
     3137      19,    20,    21,    22,    23,    24,    25,    26,   425,    -1,
     3138      29,    30,    31,    -1,   999,    -1,    -1,   817,    37,   591,
     3139      -1,    -1,    -1,  1189,    -1,   442,    -1,    -1,    -1,    -1,
     3140    1015,    -1,    -1,    -1,    -1,    -1,    -1,   892,  1012,    -1,
     3141      -1,    60,    -1,    62,  1210,    64,   591,    -1,    67,    68,
     3142      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1223,   475,  1225,
     3143      -1,    -1,    -1,    -1,   636,   637,   638,    -1,    -1,    -1,
     3144      -1,    -1,    -1,    -1,    -1,    -1,    10,    11,    12,    13,
     3145      14,    -1,   654,    -1,    -1,    -1,    -1,   106,  1254,    -1,
     3146      -1,   636,   637,   638,    -1,    -1,  1262,  1263,  1264,    -1,
     3147     672,    -1,    -1,    37,    -1,  1090,    -1,  1273,  1274,   654,
     3148      -1,   683,    -1,    -1,    -1,    -1,    -1,   689,    -1,    -1,
     3149     975,  1287,    -1,    50,    -1,    52,    60,   672,    55,    56,
     3150      57,    65,    59,    67,    68,    69,    -1,    -1,   683,    -1,
     3151    1306,    -1,    76,    77,   689,    -1,    -1,    74,    -1,    -1,
     3152      -1,    -1,    -1,   725,    -1,    -1,   728,    -1,    -1,    86,
     3153      87,    -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,   103,
     3154      -1,    -1,  1027,  1028,    -1,  1030,  1031,   111,    -1,   596,
     3155     725,    -1,    -1,   728,    -1,    -1,    -1,    -1,    -1,    -1,
     3156    1206,    -1,   764,    -1,    -1,  1050,    -1,    -1,    -1,    -1,
     3157      -1,    -1,    -1,    -1,    -1,    -1,    -1,   624,    -1,  1009,
     3158      -1,    -1,   629,    -1,  1188,    -1,    -1,    -1,    -1,   764,
     3159      -1,    -1,    -1,    -1,  1390,    -1,    -1,    -1,  1083,  1084,
     3160      -1,    -1,    -1,   805,    -1,    -1,    -1,    10,    11,    12,
     3161      13,    14,    -1,   815,    -1,    -1,   818,    -1,    -1,    -1,
     3162    1050,   823,    -1,   825,    -1,    -1,    -1,    -1,   830,    -1,
     3163     805,    -1,    -1,    -1,    37,    -1,    -1,    -1,  1434,    -1,
     3164     815,    -1,    -1,   818,    -1,  1441,    -1,    -1,   823,    -1,
     3165     825,    -1,    -1,    -1,    -1,   830,    -1,    60,    -1,    -1,
     3166      -1,  1146,    65,    -1,    67,    68,    69,    -1,    -1,   716,
     3167      -1,    -1,    -1,    76,    77,    -1,    -1,    -1,  1282,    -1,
     3168      -1,    -1,    -1,   730,    -1,    -1,    -1,    -1,    -1,  1485,
     3169     892,    10,    11,    12,    13,    14,    -1,    -1,   101,    -1,
     3170     103,    -1,    -1,   750,  1189,    -1,    -1,    -1,   111,    -1,
     3171      -1,    -1,    -1,    -1,    -1,    -1,    -1,   892,    37,    -1,
     3172      -1,    -1,    -1,    -1,    -1,  1210,  1372,    -1,    -1,    -1,
     3173      -1,    -1,    -1,  1163,    -1,    -1,    -1,    -1,  1223,    -1,
     3174    1225,    60,    -1,    -1,    -1,    -1,    65,    -1,    67,    68,
     3175      69,    -1,    -1,    -1,    -1,    -1,    -1,    76,    77,    -1,
     3176      -1,    -1,    25,    26,    27,    -1,    -1,    -1,    -1,  1254,
     3177      -1,    -1,    -1,   975,    -1,   822,    -1,  1262,  1263,  1264,
     3178      -1,    -1,   101,   340,   341,    -1,    -1,    -1,  1273,  1274,
     3179      -1,    -1,   111,    -1,    -1,   352,   353,    -1,    -1,    -1,
     3180     975,    -1,  1287,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3181      -1,    -1,    25,    26,    27,    -1,    -1,    -1,    -1,    -1,
     3182      -1,  1306,    -1,    -1,    44,  1027,  1028,    -1,  1030,  1031,
     3183      -1,    -1,    -1,    96,    -1,    98,    -1,    10,    11,    12,
     3184      13,    14,    -1,    63,    -1,    -1,    -1,    -1,  1050,    -1,
     3185      -1,    -1,  1027,  1028,    -1,  1030,  1031,    -1,    -1,   122,
     3186      -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,    -1,
     3187      -1,    -1,    -1,    -1,    -1,  1050,    -1,    -1,    -1,    -1,
     3188      -1,  1083,  1084,    96,    -1,    98,    -1,    60,    -1,   109,
     3189      -1,    -1,    65,    -1,   114,    -1,    69,    -1,    -1,    -1,
     3190      -1,    -1,    -1,    76,    77,  1390,    -1,    -1,  1083,  1084,
     3191      -1,    -1,    -1,    -1,   177,    -1,    -1,    -1,    -1,    -1,
     3192      -1,    -1,   185,   143,   187,   188,    -1,    -1,   101,   192,
     3193      -1,   194,   195,   153,    -1,    -1,    -1,   157,   111,    -1,
     3194      -1,    -1,    -1,    -1,  1146,    -1,    -1,    -1,    -1,  1434,
     3195      -1,    -1,    -1,    -1,    -1,    36,  1441,    38,    -1,    -1,
     3196      -1,    -1,    -1,    -1,   177,  1012,    -1,    -1,    -1,    -1,
     3197      -1,  1146,    -1,    -1,   187,   188,    -1,    -1,    59,   192,
     3198      -1,   194,   195,    -1,    65,   205,    -1,  1189,    69,    -1,
     3199      -1,    72,    73,    74,    75,    76,    77,   217,    79,    80,
     3200    1485,   264,    -1,    -1,    -1,    -1,    87,    -1,  1210,    -1,
     3201      -1,    -1,    -1,    -1,  1189,   235,   236,    -1,    -1,    -1,
     3202     101,  1223,   103,  1225,    -1,    -1,    -1,    -1,    -1,   110,
     3203     111,   112,   113,   114,   115,  1210,    -1,    -1,    -1,   259,
     3204      -1,    -1,    -1,   124,    -1,    -1,    -1,   267,  1223,    -1,
     3205    1225,    -1,  1254,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3206    1262,  1263,  1264,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3207     290,  1273,  1274,   293,    -1,    -1,    -1,     7,    -1,  1254,
     3208      10,    11,    12,    13,    14,  1287,    -1,  1262,  1263,  1264,
     3209      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1273,  1274,
     3210      -1,    -1,    -1,    -1,  1306,    -1,    36,    37,    38,    -1,
     3211      -1,    -1,  1287,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3212     340,    -1,    -1,    -1,    -1,   345,    -1,    -1,    -1,    59,
     3213      60,  1306,    -1,    -1,    -1,    65,    -1,    -1,    -1,    69,
     3214      -1,  1188,    72,    73,    74,    75,    76,    77,    -1,    79,
     3215      80,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,
     3216     717,    -1,   719,    -1,    -1,    -1,    -1,    -1,    -1,   726,
     3217     727,   101,    -1,   103,   731,    -1,    -1,    -1,    -1,    -1,
     3218     110,   111,   112,   113,   114,   115,   743,    -1,  1390,    -1,
     3219      -1,   748,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3220     420,   421,    -1,    -1,    -1,    -1,    -1,   427,    -1,    -1,
     3221      -1,    -1,    -1,    -1,    -1,  1390,   773,    -1,    -1,    -1,
     3222      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   448,    -1,
     3223      -1,   451,  1434,    -1,    -1,  1282,    -1,   457,    -1,  1441,
     3224      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3225      20,    21,    22,    23,    24,    25,    26,    27,    -1,  1434,
     3226     817,    -1,    -1,    -1,   484,    -1,  1441,    37,    -1,    -1,
     3227      -1,    -1,    -1,    -1,    -1,    -1,   496,    -1,    -1,    -1,
     3228      -1,    -1,    -1,  1485,    -1,    -1,    -1,    -1,   508,    -1,
     3229      60,    -1,   512,    -1,   514,   515,    -1,    -1,    -1,    -1,
     3230      -1,    71,    -1,    -1,    -1,    -1,    -1,   527,    -1,    -1,
     3231    1485,    -1,   575,   576,    -1,    -1,    -1,   874,   875,   876,
     3232     877,    -1,   879,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3233      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   895,    -1,
     3234      -1,    -1,   605,    -1,    -1,   608,   609,    -1,   611,    -1,
     3235     613,   614,   909,    -1,    -1,   618,   619,    -1,    -1,   579,
     3236      -1,    -1,   575,   576,    -1,    -1,    -1,    -1,    -1,    -1,
     3237      -1,   591,    -1,   593,    -1,    -1,   596,    -1,    -1,    -1,
     3238      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3239      -1,   948,   605,    -1,    -1,   608,   609,    -1,   611,    -1,
     3240     613,   614,   622,    -1,    -1,   618,   619,   627,    -1,    -1,
     3241      -1,    -1,    -1,    -1,    -1,    -1,   636,   637,   638,    -1,
     3242      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3243     987,    -1,    -1,   696,   654,    -1,    -1,   994,   701,   702,
     3244      -1,   998,    -1,    -1,   707,    -1,  1003,    -1,  1005,    -1,
     3245      -1,    -1,  1009,  1010,  1011,    -1,    -1,  1014,    -1,    -1,
     3246      -1,    -1,    -1,    -1,    -1,    -1,  1023,    -1,    -1,   689,
     3247      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3248      -1,    -1,    -1,    -1,  1041,  1042,    -1,    -1,   701,   702,
     3249     710,    -1,    -1,    -1,   707,    -1,    -1,    -1,    -1,    -1,
     3250      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   728,  1066,
     3251     730,    -1,  1069,    10,    11,    12,    13,    14,    15,    16,
     3252      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3253      -1,    -1,    29,    30,    31,    -1,    -1,    63,    -1,    -1,
     3254      37,    -1,    -1,    -1,   764,    -1,    -1,    73,    -1,    75,
     3255    1107,    77,    -1,    -1,    -1,    -1,  1113,  1114,    84,    -1,
     3256      -1,    -1,    -1,    60,    -1,    -1,    -1,  1124,    -1,    -1,
     3257      67,    68,  1129,    -1,    -1,  1132,    -1,  1134,    -1,    -1,
     3258    1137,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   114,    -1,
     3259     116,   117,   118,  1150,    -1,    -1,    -1,    -1,   818,    -1,
     3260      -1,    -1,   822,    -1,    -1,   825,  1163,    -1,  1165,  1166,
     3261    1167,  1168,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
     3262      -1,    -1,    -1,    -1,  1181,    -1,  1183,    -1,    -1,    -1,
     3263    1187,   157,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3264      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3265      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1215,  1216,
     3266      -1,    -1,     3,     4,     5,     6,     7,     8,     9,    10,
     3267      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3268      21,    22,    23,    24,    25,    26,    -1,    -1,    29,    30,
     3269      31,   217,    -1,   219,   220,   221,    37,    -1,   918,    -1,
     3270      -1,    -1,    -1,    -1,    -1,    43,    -1,    -1,  1265,  1266,
     3271      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1275,    60,
     3272      -1,    62,    -1,    64,    65,    -1,    67,    68,    69,   255,
     3273      -1,    -1,    -1,   259,    -1,    76,    77,    -1,    -1,    -1,
     3274     960,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   275,
     3275      -1,    89,    -1,    -1,    -1,   975,    -1,    -1,    -1,    -1,
     3276     101,    99,   103,    -1,    -1,    -1,  1323,    -1,    -1,    -1,
     3277     111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1335,    -1,
     3278    1337,  1338,  1339,    -1,    -1,    -1,    -1,    -1,    -1,  1009,
     3279      -1,    -1,  1349,    -1,    -1,    -1,    -1,    -1,   324,    -1,
     3280      -1,  1358,    -1,    -1,    36,    -1,    38,    -1,    -1,    -1,
     3281    1030,  1031,    -1,  1370,    -1,    -1,   154,    -1,    -1,   345,
     3282      -1,    -1,  1085,    -1,   350,   351,    -1,    59,    -1,   167,
     3283      -1,    -1,   358,    65,    -1,    -1,    -1,    69,    -1,    -1,
     3284      72,    73,    74,    75,    76,    77,    -1,    79,    80,    -1,
     3285      -1,    -1,   190,    -1,    -1,    87,    -1,    -1,    -1,    -1,
     3286      -1,    -1,    -1,    -1,  1421,  1422,   204,    -1,  1088,   101,
     3287      -1,   103,  1085,    -1,   400,   213,   108,  1434,   110,   111,
     3288     112,   113,   114,   115,  1441,   223,    -1,    -1,    -1,    -1,
     3289      -1,    -1,   418,    -1,    -1,    -1,    -1,   423,    -1,   425,
     3290      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3291     248,    -1,  1469,    -1,    -1,   253,   442,    -1,    -1,   445,
     3292     446,    -1,    -1,    -1,    -1,    -1,  1146,    -1,   266,    -1,
     3293      -1,    -1,    -1,    -1,   272,   461,   274,    -1,    -1,    -1,
     3294    1497,    -1,    -1,    -1,  1207,    -1,    -1,    -1,    -1,   475,
     3295      -1,    -1,    -1,   291,    -1,    -1,   482,    -1,    -1,    -1,
     3296      -1,    -1,    -1,    -1,    -1,    -1,  1523,    -1,  1188,    -1,
     3297      -1,  1528,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3298      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3299      -1,    -1,    -1,    -1,  1207,    -1,   334,    -1,    -1,    -1,
     3300      -1,   339,    -1,    -1,    -1,  1225,    -1,    -1,    -1,    -1,
     3301      -1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3302      19,    20,    21,    22,    23,    24,    25,    26,    -1,   367,
     3303      29,    30,    31,   371,   372,    -1,   374,    -1,    37,    -1,
     3304      -1,    -1,   380,   381,    -1,   383,   384,    -1,   386,    -1,
     3305     388,    -1,     7,  1273,  1274,    10,    11,    12,    13,    14,
     3306      -1,    60,  1282,    -1,    -1,    -1,    -1,   405,    67,    68,
     3307     596,    -1,    -1,    -1,    -1,   413,    -1,    -1,    -1,    -1,
     3308      -1,    36,    37,    38,    -1,    -1,    -1,    -1,    -1,    -1,
     3309      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   624,    -1,
     3310     438,    -1,    -1,   629,    59,    60,    -1,    -1,    -1,    -1,
     3311      65,   449,   111,    -1,    69,    -1,    -1,    72,    73,    74,
     3312      75,    76,    77,    -1,    79,    80,    -1,    -1,    -1,    -1,
     3313      -1,    -1,    87,    -1,   472,    -1,    -1,    -1,    -1,    -1,
     3314     478,    -1,    -1,    -1,    -1,   483,   101,    -1,   103,    -1,
     3315      -1,    -1,    -1,    -1,    -1,   110,   111,   112,   113,   114,
     3316     115,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3317    1390,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3318      -1,   519,    -1,    -1,   278,   279,   280,    -1,    -1,    -1,
     3319     716,    -1,    -1,   287,   288,    -1,    -1,   535,   292,   293,
     3320      -1,    -1,    -1,    -1,   730,    -1,    -1,    -1,    -1,    -1,
     3321     304,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3322      -1,    -1,    -1,  1443,   750,    -1,    -1,    -1,    -1,    -1,
     3323      -1,    -1,    -1,   571,   152,   153,    -1,    -1,    -1,    -1,
     3324      -1,    -1,   580,    -1,    -1,    -1,   340,    -1,    -1,   587,
     3325      -1,    -1,    -1,  1473,   592,    -1,    -1,    -1,    -1,    -1,
     3326      -1,    -1,    -1,    -1,    -1,   603,    -1,   185,    -1,    -1,
     3327      -1,    -1,    -1,    -1,   192,    -1,    -1,    -1,  1498,    -1,
     3328      -1,    -1,   376,   809,    -1,    -1,    -1,    -1,    -1,    -1,
     3329      -1,    -1,    -1,    -1,    -1,    -1,   822,    -1,    -1,    -1,
     3330      -1,    -1,    -1,    -1,    -1,    -1,   644,    -1,    -1,    -1,
     3331      -1,    -1,    -1,     0,    -1,   841,     3,     4,     5,     6,
     3332       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     3333      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3334      -1,   679,    29,    30,    31,    32,   264,    -1,    35,    -1,
     3335      37,    38,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3336      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3337      57,    -1,    -1,    60,    -1,    62,    -1,    64,    65,    -1,
     3338      67,    68,    69,    -1,    -1,    -1,    -1,    -1,    -1,    76,
     3339      77,    -1,    -1,    -1,    -1,    -1,   734,    -1,    -1,    -1,
     3340      -1,   319,   928,    -1,    -1,    -1,   744,   745,    -1,   327,
     3341     328,    -1,   330,   331,   101,    -1,   103,    -1,    -1,   757,
     3342      -1,    -1,   340,    -1,   111,    -1,   344,    -1,   954,    -1,
     3343      -1,    -1,    -1,    -1,    -1,    -1,   774,    -1,   776,    -1,
     3344      -1,    -1,   780,    -1,    -1,   363,    -1,    -1,   366,    -1,
     3345      -1,    -1,    -1,    -1,    -1,   981,   550,   551,   552,   553,
     3346     554,   555,   556,   557,   558,   559,   560,   561,   562,   563,
     3347     564,   565,   566,   567,   392,    -1,    -1,    -1,   396,    36,
     3348      -1,    38,    -1,    -1,    -1,    -1,  1012,    -1,    -1,    -1,
     3349      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1023,    -1,   593,
     3350      -1,    -1,    59,    -1,    -1,    -1,    -1,   845,    65,   427,
     3351      67,    68,    69,    -1,   852,    72,    73,    74,    75,    76,
     3352      77,    -1,    79,    80,    -1,    -1,    -1,   865,    -1,   867,
     3353      87,    -1,   450,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3354      -1,    -1,    -1,   881,   101,    -1,   103,    -1,   105,   106,
     3355     888,    -1,    -1,   110,   111,   112,   113,   114,   115,    -1,
     3356      -1,    -1,   900,   481,    -1,   903,   484,    -1,    -1,    -1,
     3357      -1,    -1,    -1,    -1,    -1,    -1,  1102,    -1,    -1,    -1,
     3358      -1,    -1,    -1,   921,    -1,    -1,    -1,    -1,    -1,    -1,
     3359      -1,    -1,    -1,    -1,    -1,    -1,    -1,   691,    -1,    -1,
     3360      -1,    -1,    -1,    -1,    -1,   523,    -1,    -1,   526,   527,
     3361      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   713,
     3362      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3363     143,    -1,   726,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3364     153,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3365      -1,    -1,   165,   571,   572,    -1,    -1,    -1,    -1,    -1,
     3366      -1,    -1,  1188,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3367    1008,    -1,   590,   591,    -1,   593,    -1,   771,    -1,    -1,
     3368      -1,    -1,    -1,    -1,   602,    -1,   604,   605,    -1,    -1,
     3369      -1,    -1,    -1,   611,    -1,    -1,    -1,    -1,    -1,    -1,
     3370      -1,    -1,    -1,   621,   622,    -1,    -1,    -1,   802,   627,
     3371      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   636,   637,
     3372     638,    -1,   235,   817,    -1,  1063,    -1,    -1,    -1,    -1,
     3373      -1,  1069,    -1,    -1,    -1,    -1,   654,    -1,    -1,    -1,
     3374      -1,   659,   660,    -1,    -1,   663,   664,   260,    -1,    -1,
     3375      -1,    -1,   670,    -1,    -1,    -1,  1282,    -1,    -1,    -1,
     3376    1098,    -1,    -1,    -1,    -1,  1103,    -1,    -1,    -1,    -1,
     3377     688,   689,   690,  1111,   692,    -1,    -1,    -1,   696,     3,
    25033378       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    25043379      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2505       24,     0,     0,    25,    26,    27,     0,     0,     0,     0,
    2506        0,    30,   676,     0,     0,     0,     0,     0,     0,     0,
    2507      625,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2508        0,     0,     0,     0,    33,     0,    34,     0,    35,     0,
    2509        0,    37,    38,     2,   202,     4,     5,     6,     7,     8,
     3380      24,    25,    26,  1141,    -1,    29,    30,    31,    -1,    -1,
     3381     728,   729,    -1,    37,    -1,  1153,    -1,    -1,  1156,    -1,
     3382    1158,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3383      -1,    -1,    -1,    -1,  1172,  1173,    60,    -1,    62,    -1,
     3384      64,    -1,    -1,    67,    68,   763,   764,    -1,    -1,    -1,
     3385     768,   769,    -1,    -1,    -1,    -1,  1194,    -1,    -1,    -1,
     3386      -1,    -1,   375,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3387      -1,    -1,    -1,    -1,   968,    -1,    -1,    -1,    -1,   103,
     3388      -1,    -1,  1220,    -1,    -1,    -1,    -1,   111,    -1,    -1,
     3389      -1,   809,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3390     818,    -1,    -1,   997,    -1,    -1,   824,   825,    -1,    -1,
     3391      -1,   829,    -1,   831,    -1,  1009,    -1,    -1,    -1,    -1,
     3392      -1,    -1,    -1,   841,    -1,    -1,    -1,    10,    11,    12,
     3393      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3394      23,    24,    25,    26,    27,    -1,    29,    30,    31,    -1,
     3395      -1,    -1,    -1,    -1,    37,    -1,  1050,    -1,    -1,    -1,
     3396      -1,    -1,    -1,   476,    -1,    -1,    -1,    -1,    -1,    -1,
     3397      -1,    -1,    -1,    -1,  1312,    -1,  1314,    60,    -1,    -1,
     3398      -1,    -1,    65,    -1,    67,    68,    69,  1513,    71,  1327,
     3399      -1,  1329,    -1,    76,    77,    -1,   914,    -1,    -1,    -1,
     3400      -1,   514,    -1,    -1,   922,    -1,    -1,    -1,    -1,  1347,
     3401     928,    -1,    -1,    -1,   527,    -1,    -1,    -1,   936,    -1,
     3402     103,   534,    -1,    -1,    -1,  1363,  1120,    -1,   111,    -1,
     3403      -1,   949,   950,  1371,   547,   548,  1374,    -1,    10,    11,
     3404      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3405      22,    23,    24,    25,    26,    27,   569,   975,  1396,    -1,
     3406      -1,    -1,    -1,   981,    -1,    37,   579,  1405,    -1,  1163,
     3407    1408,  1409,    -1,   586,    -1,    -1,    -1,    -1,   591,    -1,
     3408      -1,   999,  1000,  1177,  1178,    -1,    -1,    -1,    60,    -1,
     3409      -1,  1009,    -1,    -1,    -1,    -1,    -1,  1015,  1016,    71,
     3410    1018,  1019,  1020,    -1,    -1,    -1,    -1,  1445,    -1,  1447,
     3411      -1,    -1,  1030,  1031,    -1,    -1,    -1,    -1,    -1,    -1,
     3412      -1,    -1,    -1,    -1,  1462,    -1,    -1,    -1,   641,    -1,
     3413      -1,    -1,    -1,    -1,    -1,    -1,   649,     4,     5,     6,
     3414       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     3415      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3416      -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,
     3417      37,  1089,  1090,  1091,    -1,    -1,   689,    -1,    -1,    -1,
     3418      -1,    -1,    -1,    -1,  1102,    -1,    -1,    -1,    -1,    -1,
     3419      -1,    -1,    -1,    60,    -1,    62,    -1,    64,    -1,    -1,
     3420      67,    68,    -1,     3,     4,     5,     6,     7,     8,     9,
     3421      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3422      20,    21,    22,    23,    24,    25,    26,    -1,  1146,    29,
     3423      30,    31,    32,    -1,    -1,    35,   103,    37,    38,    -1,
     3424      -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
     3425      -1,   764,    -1,   766,    -1,    -1,    -1,    57,    -1,   772,
     3426      60,    -1,    62,    -1,    64,    65,   779,    67,    68,    69,
     3427      -1,    -1,    -1,    -1,    -1,    -1,    76,    77,    -1,    -1,
     3428      -1,    -1,    -1,  1377,    -1,    -1,    -1,    -1,  1206,    -1,
     3429      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3430    1394,   101,    -1,   103,    -1,    -1,    -1,  1225,    -1,   822,
     3431     823,   111,   825,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3432      -1,    -1,    -1,    -1,    -1,    -1,    -1,   840,    -1,    -1,
     3433      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3434      20,    21,    22,    23,    24,    25,    26,    -1,    -1,    -1,
     3435      -1,    -1,    -1,    -1,    -1,  1273,  1274,    37,    -1,    -1,
     3436      -1,    -1,    -1,  1457,  1458,    -1,    -1,   880,    -1,    -1,
     3437      -1,   884,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3438      60,    -1,    -1,    -1,     3,     4,     5,     6,     7,     8,
    25103439       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2511       19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
    2512       27,     0,     0,     0,     0,     0,    30,   590,     0,     0,
    2513        0,     0,     0,     0,     0,   625,     0,     0,     0,     0,
    2514        0,     0,     0,     0,     0,     0,     0,     0,     0,    33,
    2515        0,    34,     0,    35,     0,     0,   203,    38,     8,     9,
    2516       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2517       20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
    2518        0,     0,     0,     0,   277,    30,   278,     0,     0,     0,
    2519        0,     0,   204,     0,     0,     0,     0,     0,     0,     0,
    2520      267,     0,     0,     0,     0,     0,     0,   279,    33,     0,
    2521        0,     0,     0,   280,     0,    37,    38,   281,     0,     0,
    2522      282,   283,   284,   285,    40,    41,     0,   286,   287,     0,
    2523        0,     0,     0,     0,     0,   288,     0,     0,     0,     0,
    2524        0,     0,     0,     0,     0,     0,     0,     0,     0,   289,
    2525        0,   590,    -3,     0,     0,     0,     0,     0,   291,   591,
    2526      293,   294,   295,   296,     8,     9,    10,    11,    12,    13,
    2527       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2528       24,     0,     0,    25,    26,    27,     0,     0,     0,     0,
    2529      277,    30,   278,     0,     0,     0,     0,     0,     0,     0,
    2530        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2531        0,     0,     0,   279,    33,     0,     0,     0,     0,   640,
    2532        0,    37,    38,   281,     0,     0,   282,   283,   284,   285,
    2533       40,    41,     0,   286,   287,     0,     0,     0,     0,     0,
    2534        0,   288,     0,     0,     0,     0,     0,     0,     0,     0,
    2535        0,     0,     0,     0,     0,   289,   -35,   753,     0,     0,
    2536        0,     0,     0,     0,   291,   292,   293,   294,   295,   296,
    2537        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2538       18,    19,    20,    21,    22,    23,    24,     0,     0,    25,
    2539       26,    27,     0,     0,     0,     0,   277,    30,   278,     0,
    2540        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2541        0,     0,     0,     0,     0,     0,     0,     0,     0,   279,
    2542       33,     0,     0,     0,     0,   280,     0,    37,    38,   281,
    2543        0,     0,   282,   283,   284,   285,    40,    41,     0,   286,
    2544      287,     0,     0,     0,     0,     0,     0,   288,     0,     0,
    2545        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2546        0,   289,     0,   290,     0,     0,     0,     0,     0,     0,
    2547      291,   292,   293,   294,   295,   296,     8,     9,    10,    11,
    2548       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2549       22,    23,    24,     0,     0,    25,    26,    27,     0,     0,
    2550        0,     0,   277,    30,   278,     0,     0,     0,     0,     0,
    2551        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2552        0,     0,     0,     0,     0,   279,    33,     0,     0,     0,
    2553        0,   280,     0,    37,    38,   281,     0,     0,   282,   283,
    2554      284,   285,    40,    41,     0,   286,   287,     0,     0,     0,
    2555        0,     0,     0,   288,     0,     0,     0,     0,     0,     0,
    2556        0,     0,     0,     0,     0,     0,     0,   289,     0,   154,
    2557        0,     0,     0,     0,     0,     0,   291,   292,   293,   294,
    2558      295,   296,     8,     9,    10,    11,    12,    13,    14,    15,
    2559       16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
    2560        0,    25,    26,    27,     0,     0,     0,     0,   277,    30,
    2561      278,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2562        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2563        0,   279,    33,     0,     0,     0,     0,   280,     0,    37,
    2564       38,   281,     0,     0,   282,   283,   284,   285,    40,    41,
    2565        0,   286,   287,     0,     0,     0,     0,     0,     0,   288,
    2566        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2567        0,     0,     0,   289,     0,   590,     0,     0,     0,     0,
    2568        0,     0,   291,   591,   293,   294,   295,   296,     8,     9,
    2569       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2570       20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
    2571        0,     0,     0,     0,   277,    30,   278,     0,     0,     0,
    2572        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2573        0,     0,     0,     0,     0,     0,     0,   279,    33,     0,
    2574        0,     0,     0,   280,     0,    37,    38,   281,     0,     0,
    2575      282,   283,   284,   285,    40,    41,     0,   286,   287,     0,
    2576        0,     0,     0,     0,     0,   288,     0,     0,     0,     0,
    2577        0,     0,     0,     0,     0,     0,     0,     0,     0,   289,
    2578        0,   373,     0,     0,     0,     0,     0,     0,   291,   375,
    2579      293,   294,   295,   296,   467,     2,   202,     4,     5,     6,
    2580        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2581       17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
    2582       25,    26,    27,     0,     0,     0,     0,     0,    30,     8,
    2583        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2584       19,    20,    21,    22,    23,    24,  -278,     0,    25,    26,
    2585       27,    33,     0,    34,     0,    35,    30,     0,    37,    38,
    2586        0,     0,     8,     9,    10,    11,    12,    13,    14,    15,
    2587       16,    17,    18,    19,    20,    21,    22,    23,    24,    33,
    2588        0,    25,    26,    27,    36,     0,   331,   332,    39,    30,
    2589     -278,     0,     0,     0,     0,    40,    41,    -3,     0,     0,
    2590        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2591        0,     0,    33,     0,     0,     0,     0,    36,     0,    37,
    2592       38,    39,   333,     0,     0,     0,     0,     0,    40,    41,
    2593      109,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2594       17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
    2595       25,    26,    27,    42,     0,   154,     0,     0,    30,     0,
    2596        0,     0,     0,    44,     0,     0,     0,     0,     0,     0,
    2597        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2598        0,    33,     0,     0,     0,     0,    36,     0,    37,    38,
    2599       39,     0,     0,     0,     0,     0,     0,    40,    41,     8,
    2600        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2601       19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
    2602       27,     0,    42,     0,    43,     0,    30,     0,     0,     0,
    2603        0,     0,    44,     0,     0,     0,     0,     0,     0,     0,
    2604        0,     0,     0,     0,     0,     0,     0,     0,     0,    33,
    2605        0,     0,     0,     0,    36,     0,   203,    38,    39,     0,
    2606        0,     0,     0,     0,     0,    40,    41,     8,     9,    10,
    2607       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2608       21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
    2609       42,     0,   266,     0,    30,     0,     0,     0,     0,     0,
    2610      205,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2611        0,     0,     0,     0,     0,     0,     0,    33,     0,     0,
    2612        0,     0,    36,     0,   331,   332,    39,     0,     0,     0,
    2613        0,     0,     0,    40,    41,     8,     9,    10,    11,    12,
    2614       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2615       23,    24,     0,     0,    25,    26,    27,     0,   634,     0,
    2616      333,     0,    30,     0,     0,     0,     0,     0,   625,     0,
    2617        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2618        0,     0,     0,     0,     0,    33,     0,     0,     0,     0,
    2619       36,     0,   331,   332,    39,     0,     0,     0,     0,     0,
    2620        0,    40,    41,     8,     9,    10,    11,    12,    13,    14,
    2621       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2622     -278,     0,    25,    26,    27,     0,     0,     0,   333,     0,
    2623       30,     0,     0,     0,     0,     0,   109,     0,     0,     0,
    2624        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2625        0,     0,     0,    33,     0,     0,     0,     0,     0,     0,
    2626       37,    38,     0,     0,  -278,     8,     9,    10,    11,    12,
    2627       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2628       23,    24,  -278,     0,    25,    26,    27,     0,     0,     0,
    2629        0,     0,    30,     0,   634,     0,   333,     0,     0,     0,
    2630        0,     0,     0,     0,   109,     0,     0,     0,     0,     0,
    2631        0,     0,     0,     0,     0,    33,     0,     0,     0,     0,
    2632        0,     0,    37,    38,     0,     0,  -278,     8,     9,    10,
    2633       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2634       21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
    2635        0,     0,     0,     0,    30,   446,   634,     0,   333,     0,
    2636        0,     0,     0,     0,     0,     0,   625,     0,     0,     0,
    2637        0,     0,     0,     0,     0,     0,     0,    33,     0,     0,
    2638        0,     0,     0,     0,    37,    38,     8,     9,    10,    11,
    2639       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2640       22,    23,    24,     0,     0,    25,    26,    27,     0,     0,
    2641        0,     0,     0,    30,     0,     0,     0,     0,     0,     0,
    2642      447,     0,     0,     0,  1209,     0,     0,     0,   109,     0,
    2643        0,     0,     0,     0,     0,     0,    33,     0,     0,     0,
    2644        0,   108,     0,    37,    38,     8,     9,    10,    11,    12,
    2645       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2646       23,    24,     0,     0,    25,    26,    27,     0,     0,     0,
    2647        0,     0,    30,   446,     0,     0,     0,     0,     0,    43,
    2648        0,     0,     0,     0,     0,     0,     0,   109,     0,     0,
    2649        0,     0,     0,     0,     0,    33,     0,     0,     0,     0,
    2650        0,     0,    37,    38,     8,     9,    10,    11,    12,    13,
    2651       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2652       24,     0,     0,    25,    26,    27,     0,     0,     0,     0,
    2653        0,    30,     0,     0,     0,     0,     0,     0,   447,     0,
    2654        0,     0,     0,     0,     0,     0,   109,     0,     0,     0,
    2655        0,     0,     0,     0,    33,     0,     0,     0,     0,     0,
    2656        0,    37,    38,     8,     9,    10,    11,    12,    13,    14,
    2657       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2658        0,     0,    25,    26,    27,     0,     0,     0,     0,     0,
    2659       30,     0,     0,     0,     0,   634,     0,   333,     0,     0,
    2660        0,     0,     0,     0,     0,   109,     0,     0,     0,     0,
    2661        0,     0,     0,    33,     0,     0,     0,     0,     0,     0,
    2662       37,    38,     8,     9,    10,    11,    12,    13,    14,    15,
    2663       16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
    2664        0,    25,    26,    27,     0,     0,     0,     0,     0,    30,
    2665        0,     0,     0,     0,   634,     0,   333,     0,     0,     0,
    2666        0,     0,     0,     0,   625,     0,     0,     0,     0,     0,
    2667        0,     0,    33,     0,     0,     0,     0,     0,     0,    37,
    2668       38,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2669       17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
    2670       25,    26,    27,     0,     0,     0,     0,     0,    30,     0,
    2671        0,     0,     0,     0,     0,   253,     0,     0,     0,     0,
    2672        0,     0,     0,   109,     0,     0,     0,     0,     0,     0,
    2673        0,    33,     0,     0,     0,     0,     0,     0,    37,    38,
    2674        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2675       18,    19,    20,    21,    22,    23,    24,     0,     0,    25,
    2676       26,    27,     0,     0,     0,     0,     0,    30,     0,     0,
    2677        0,     0,     0,     0,   154,     0,     0,     0,     0,     0,
    2678        0,     0,   109,     0,     0,     0,     0,     0,     0,     0,
    2679       33,     0,     0,     0,     0,     0,     0,   203,    38,     8,
    2680        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2681       19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
    2682       27,     0,     0,     0,     0,     0,    30,     0,     0,     0,
    2683        0,     0,     0,   266,     0,     0,     0,     0,     0,     0,
    2684        0,   267,     0,     0,     0,     0,     0,     0,     0,    33,
    2685        0,     0,     0,     0,     0,     0,    37,    38,     8,     9,
    2686       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2687       20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
    2688        0,     0,     0,     0,     0,    30,     0,     0,     0,     0,
    2689        0,     0,   253,     0,     0,     0,     0,     0,     0,     0,
    2690      625,     0,     0,     0,     0,     0,     0,     0,    33,     0,
    2691        0,     0,     0,     0,     0,    37,    38,     8,     9,    10,
    2692       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2693       21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
    2694        0,     0,     0,     0,    30,     0,     0,     0,     0,     0,
    2695        0,   333,     0,     0,     0,     0,     0,     0,     0,   625,
    2696        0,     0,     0,     0,     0,     0,     0,    33,     0,     0,
    2697        0,     0,     0,     0,    37,    38,     8,     9,    10,    11,
    2698       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2699       22,    23,    24,     0,     0,    25,    26,    27,     0,     0,
    2700        0,     0,     0,    30,     0,     0,     0,     0,     0,     0,
    2701      447,     0,     0,     0,     0,     0,     0,     0,   109,     0,
    2702        0,     0,     0,     0,     0,     0,    33,     0,     0,     0,
    2703        0,     0,     0,   203,    38,     8,     9,    10,    11,    12,
    2704       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2705       23,    24,     0,     0,    25,    26,    27,     0,     0,     0,
    2706        0,     0,    30,     0,     0,     0,     0,     0,     0,   266,
    2707        0,     0,     0,     0,     0,     0,     0,   620,     0,     0,
    2708        0,     0,     0,     0,     0,    33,     0,     0,     0,     0,
    2709        0,     0,    37,    38,     8,     9,    10,    11,    12,    13,
    2710       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2711       24,     0,     0,    25,    26,    27,     0,     0,     0,     0,
    2712        0,    30,     0,     0,     0,     0,     0,     0,   590,     0,
    2713        0,     0,     0,     0,     0,     0,   625,     0,     0,     0,
    2714        0,     0,     0,     0,    33,     0,     0,     0,     0,     0,
    2715        0,    37,    38,     8,     9,    10,    11,    12,    13,    14,
    2716       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2717        0,     0,    25,    26,    27,     0,     0,     0,     0,     0,
    2718       30,     0,     0,     0,     0,     0,     0,   333,     0,     0,
    2719        0,     0,     0,     0,     0,   109,     0,     0,     0,     0,
    2720        0,     0,     0,    33,     0,     0,     0,     0,     0,     0,
    2721       37,    38,     8,     9,    10,    11,    12,    13,    14,    15,
    2722       16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
    2723        0,    25,    26,    27,     0,     0,     0,     0,     0,    30,
    2724        0,     0,     0,     0,     0,     0,    43,     0,     0,     0,
    2725        0,     0,     0,     0,   109,     0,     0,     0,     0,     0,
    2726        0,     0,    33,     0,     0,     0,     0,     0,     0,   203,
    2727       38,     2,   202,     4,     5,     6,     7,     8,     9,    10,
    2728       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2729       21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
    2730        0,     0,     0,     0,    30,     0,     0,     0,     0,     0,
    2731        0,     0,     0,   620,     0,     0,     0,     0,     0,     0,
    2732        0,     0,     0,     0,     0,     0,     0,    33,     0,    34,
    2733        0,    35,     0,     0,    37,    38,     0,   277,     0,   278,
    2734     1043,     0,  1044,     0,     0,  1045,  1046,  1047,  1048,  1049,
    2735     1050,  1051,  1052,  1482,  1053,     0,     0,  1054,    32,     0,
    2736      279,     0,     0,     0,     0,     0,   640,     0,     0,  -396,
    2737      281,     0,     0,   282,   283,   284,   285,    40,    41,     0,
    2738      286,   287,     0,     0,     0,     0,     0,     0,   288,     0,
    2739        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2740        0,     0,   289,     0,   373,     0,     0,   167,     0,     0,
    2741        0,   291,   375,   293,   294,   295,   296,     0,   277,     0,
    2742      278,  1043,     0,  1044,     0,  -126,  1045,  1046,  1047,  1048,
    2743     1049,  1050,  1051,  1052,     0,  1053,     0,     0,  1054,    32,
    2744        0,   279,     0,     0,     0,     0,     0,   640,     0,     0,
    2745        0,   281,     0,     0,   282,   283,   284,   285,    40,    41,
    2746        0,   286,   287,     0,     0,     0,     0,     0,     0,   288,
    2747        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2748        0,     0,     0,   289,     0,   373,     0,     0,   167,     0,
    2749        0,     0,   291,   375,   293,   294,   295,   296,     0,     0,
    2750        0,     0,     0,     0,     0,     0,  -126,     2,   202,     4,
    2751        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    2752       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2753        0,     0,    25,    26,    27,     0,     0,     0,     0,     0,
    2754       30,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2755       17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
    2756       25,    26,    27,    33,     0,    34,     0,    35,    30,     0,
    2757       37,    38,     0,   277,     0,   278,  1043,     0,  1044,  1378,
    2758     1379,  1045,  1046,  1047,  1048,  1049,  1050,  1051,  1052,  1482,
    2759     1053,    33,  1295,  1054,    32,     0,   279,     0,    37,    38,
    2760        0,     0,   640,     0,     0,     0,   281,     0,     0,   282,
    2761      283,   284,   285,    40,    41,     0,   286,   287,     0,     0,
    2762        0,     0,     0,     0,   288,     0,     0,     0,     0,     0,
    2763        0,     0,     0,     0,     0,     0,     0,     0,   289,     0,
    2764      373,     0,     0,   167,     0,     0,     0,   291,   375,   293,
    2765      294,   295,   296,   277,     0,   278,  1043,     0,  1044,  1378,
    2766     1379,  1045,  1046,  1047,  1048,  1049,  1050,  1051,  1052,     0,
    2767     1053,     0,     0,  1054,    32,     0,   279,     0,     0,     0,
    2768        0,     0,   640,     0,     0,     0,   281,     0,     0,   282,
    2769      283,   284,   285,    40,    41,     0,   286,   287,     0,     0,
    2770        0,     0,     0,     0,   288,     0,     0,     0,     0,     0,
    2771        0,     0,     0,     0,     0,     0,     0,     0,   289,     0,
    2772      373,     0,     0,   167,     0,     0,     0,   291,   375,   293,
    2773      294,   295,   296,   277,     0,   278,  1043,     0,  1044,     0,
    2774        0,  1045,  1046,  1047,  1048,  1049,  1050,  1051,  1052,     0,
    2775     1053,     0,     0,  1054,    32,     0,   279,     0,     0,     0,
    2776        0,     0,   640,     0,     0,     0,   281,     0,     0,   282,
    2777      283,   284,   285,    40,    41,     0,   286,   287,     0,     0,
    2778        0,     0,     0,     0,   288,     0,     0,     0,     0,     0,
    2779      277,     0,   278,     0,     0,     0,     0,     0,   289,     0,
    2780      373,     0,     0,   167,     0,     0,     0,   291,   375,   293,
    2781      294,   295,   296,   279,     0,     0,     0,     0,     0,   280,
    2782        0,     0,     0,   281,     0,     0,   282,   283,   284,   285,
    2783       40,    41,     0,   286,   287,     0,     0,     0,     0,     0,
    2784        0,   288,     0,     0,     0,     0,     0,   277,     0,   278,
    2785        0,     0,     0,     0,     0,   289,     0,   373,     0,     0,
    2786        0,     0,   768,     0,   291,   375,   293,   294,   295,   296,
    2787      279,     0,     0,     0,     0,     0,   280,     0,     0,     0,
    2788      281,     0,     0,   282,   283,   284,   285,    40,    41,     0,
    2789      286,   287,     0,     0,     0,     0,     0,     0,   288,     0,
    2790        0,     0,     0,     0,   277,     0,   278,     0,     0,     0,
    2791        0,     0,   289,     0,   373,     0,     0,     0,     0,     0,
    2792        0,   291,   375,   293,   294,   295,   296,   279,     0,     0,
    2793        0,     0,     0,   280,     0,     0,     0,   281,     0,     0,
    2794      282,   283,   284,   285,    40,    41,     0,   286,   287,     0,
    2795        0,     0,     0,     0,     0,   288,     0,     0,     0,     0,
    2796        0,   277,     0,   278,     0,     0,     0,     0,     0,   289,
    2797        0,   373,     0,     0,     0,     0,     0,     0,   291,   723,
    2798      293,   294,   295,   296,   279,     0,     0,     0,     0,     0,
    2799      640,     0,     0,     0,   281,     0,     0,   282,   283,   284,
    2800      285,    40,    41,     0,   286,   287,     0,     0,     0,     0,
    2801        0,     0,   288,     0,     0,     0,     0,     0,   277,     0,
    2802      278,     0,     0,     0,     0,     0,   289,     0,   772,     0,
    2803        0,     0,     0,     0,     0,   291,   375,   293,   294,   295,
    2804      296,   279,     0,     0,     0,     0,     0,   280,     0,     0,
    2805        0,   281,     0,     0,   282,   283,   284,   285,    40,    41,
    2806        0,   286,   287,     0,     0,     0,     0,     0,     0,   288,
    2807        0,     0,     0,     0,     0,   277,     0,   278,     0,     0,
    2808        0,     0,     0,   289,     0,   373,     0,     0,     0,     0,
    2809        0,     0,   291,   813,   293,   294,   295,   296,   279,     0,
    2810        0,     0,     0,     0,   280,     0,     0,     0,   281,     0,
    2811        0,   282,   283,   284,   285,    40,    41,     0,   286,   287,
    2812        0,     0,     0,     0,     0,     0,   288,     0,     0,     0,
    2813        0,     0,   277,     0,   278,     0,     0,     0,     0,     0,
    2814      289,     0,     0,     0,     0,     0,     0,     0,     0,   291,
    2815      375,   293,   294,   295,   296,   279,     0,     0,     0,     0,
    2816        0,   280,     0,     0,     0,   281,     0,     0,   282,   283,
    2817      284,   285,    40,    41,     0,   286,   287,     0,     0,     0,
    2818        0,     0,     0,   288,     0,     0,     0,     0,     0,   277,
    2819        0,   278,     0,     0,     0,     0,     0,   507,     0,     0,
    2820        0,     0,     0,     0,     0,     0,   291,   375,   293,   294,
    2821      295,   296,   279,     0,     0,     0,     0,     0,   280,     0,
    2822        0,     0,   281,     0,     0,   282,   283,   284,   285,    40,
    2823       41,     0,   286,   287,     0,     0,     0,     0,     0,     0,
    2824      288,     0,     0,     0,     0,     0,   277,     0,   278,     0,
    2825        0,     0,     0,     0,   510,     0,     0,     0,     0,     0,
    2826        0,     0,     0,   291,   375,   293,   294,   295,   296,   279,
    2827        0,     0,     0,     0,     0,   280,     0,     0,     0,   281,
    2828        0,     0,   282,   283,   284,   285,    40,    41,     0,   286,
    2829      287,     0,     0,     0,     0,     0,     0,   288,     0,     0,
    2830        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2831        0,   513,     0,     0,     0,     0,     0,     0,     0,     0,
    2832      291,   375,   293,   294,   295,   296,     2,   202,     4,     5,
    2833        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    2834       16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
    2835        0,     0,     0,     0,     0,     0,     0,     0,     0,    30,
    2836        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2837        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2838        0,     0,    33,     0,    34,     0,    35,    36,     0,   170,
    2839      171,    39,     0,     0,     0,     0,     0,     0,    40,    41,
    2840      201,     2,   202,     4,     5,     6,     7,     8,     9,    10,
    2841       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2842       21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
    2843        0,     0,     0,     0,    30,     0,     0,     0,     0,     0,
    2844        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2845        0,     0,     0,     0,     0,     0,     0,    33,     0,    34,
    2846        0,    35,     0,     0,   203,    38,   467,     2,   202,     4,
    2847        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    2848       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2849        0,     0,    25,    26,    27,     0,     0,     0,     0,     0,
    2850       30,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2851        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2852        0,     0,     0,    33,     0,    34,     0,    35,     0,     0,
    2853       37,    38,     2,   202,     4,     5,     6,     7,     8,     9,
    2854       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2855       20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
    2856        0,     0,     0,     0,     0,    30,     0,     0,     0,     0,
    2857        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2858        0,     0,     0,     0,     0,     0,     0,     0,    33,     0,
    2859       34,     0,    35,     0,     0,   203,    38,     8,     9,    10,
    2860       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2861       21,    22,    23,    24,     0,     0,    25,    26,    27,   485,
    2862      486,   487,     0,     0,    30,     8,     9,    10,    11,    12,
    2863       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2864       23,    24,     0,     0,    25,    26,    27,    33,     0,     0,
    2865        0,     0,    30,     0,    37,    38,     0,     0,     0,     0,
    2866        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2867        0,     0,     0,     0,     0,    33,     0,     0,     0,     0,
    2868        0,     0,   203,    38
    2869 };
    2870 
    2871 #define yypact_value_is_default(yystate) \
    2872   ((yystate) == (-1269))
    2873 
    2874 #define yytable_value_is_error(yytable_value) \
    2875   YYID (0)
    2876 
    2877 static const yytype_int16 yycheck[] =
    2878 {
    2879        1,    42,     0,   235,     0,   215,    42,   687,    42,   181,
    2880      103,   181,     1,   687,    32,   687,   165,   620,   181,   275,
    2881      343,     0,   183,  1023,    31,   182,   987,   748,   449,   455,
    2882      181,   181,   645,    31,   600,    31,   181,  1305,   602,   182,
    2883      600,     0,   181,   532,    42,   276,    44,   276,    44,   492,
    2884        1,   600,    31,   496,   570,   343,    54,   603,   887,   152,
    2885      887,   980,    60,   609,    60,    63,    42,    63,    66,    37,
    2886       66,   600,    31,   767,  1035,    42,   448,    66,   113,  1042,
    2887      602,     0,     0,    42,   764,    44,   600,    42,    65,   261,
    2888      764,   261,   764,    44,   490,   600,   257,   258,   261,   712,
    2889       75,    60,   419,   420,    63,   262,   104,    66,    44,   107,
    2890      261,   261,    31,    31,   102,   113,   261,   411,   101,   262,
    2891       65,   109,   261,    27,   600,     0,     1,  1395,  1022,  1023,
    2892       57,   339,    65,     0,   111,   103,   430,    89,    52,    78,
    2893      181,    42,    43,    89,   438,   181,   144,   181,   144,   521,
    2894       37,  1378,   103,    88,   152,   108,    31,   101,   109,   157,
    2895      101,   157,   197,   115,    31,    37,   105,    71,    37,   115,
    2896      103,   124,   358,   109,   101,    37,   362,   494,   224,   124,
    2897      252,    95,   200,   181,   182,   144,   182,   122,    63,    42,
    2898       43,    66,   143,   403,   104,   512,    63,   243,   157,   197,
    2899      488,   152,   635,   636,   733,   181,   107,   205,   604,   205,
    2900     1437,   123,   608,  1042,   181,  1215,   214,    75,   651,   217,
    2901      261,   217,   181,   182,     0,   261,   181,   261,   733,   101,
    2902       54,   103,   101,   629,   103,    37,  1382,   633,    65,   101,
    2903      247,   103,   399,   336,   102,   101,   205,   248,   108,   247,
    2904      201,   247,    44,   106,   205,    31,   399,   733,   217,   825,
    2905      577,   106,  1262,   261,   262,   825,   262,   123,   247,   205,
    2906      268,   102,   365,   837,   482,   189,   825,   275,   109,   602,
    2907      104,   827,    37,   107,   235,   236,   707,   288,   247,   805,
    2908        3,   448,   725,     0,     1,   989,   825,   124,   212,   101,
    2909      236,   103,   261,   102,  1464,   448,    42,    43,   222,  1228,
    2910      109,   825,  1275,  1459,    65,   837,   267,   109,  1464,   270,
    2911      825,  1464,    65,   480,    31,   323,  1486,   323,   247,   247,
    2912     1051,   267,     3,  1479,   252,   108,  1479,   480,   289,   411,
    2913     1486,   292,   217,  1486,   342,   343,   101,   108,   103,   825,
    2914      217,   143,   103,   289,   389,   102,   292,   101,   430,    66,
    2915      103,   359,   109,   124,   323,   363,   438,  1261,  1262,     0,
    2916      106,  1200,   247,  1200,  1374,   289,   123,   943,    65,     0,
    2917      247,   814,   417,   591,   343,   336,   680,   422,   339,   123,
    2918      214,   389,   101,    65,   943,    67,    68,    65,  1001,    67,
    2919       68,   399,   588,   399,  1440,  1366,  1367,   358,    54,   102,
    2920     1446,   362,   620,   205,   365,   108,   103,   625,    65,   417,
    2921       67,    68,   944,   108,   422,  1461,   424,   101,   102,   943,
    2922     1466,   524,   108,   101,   106,   634,   635,   636,   106,   124,
    2923      399,   102,   101,   235,   268,   631,  1275,   108,   124,   101,
    2924      448,   275,   651,  1416,   102,   289,   103,   688,   104,   688,
    2925     1423,   107,   101,   859,  1010,  1011,   467,   108,   419,   420,
    2926      464,   247,    83,    84,   472,   267,   252,   344,   686,   710,
    2927     1374,   710,   480,   124,   480,   108,   484,   913,   484,   448,
    2928      488,   747,   101,   411,   655,   446,   985,   646,   449,  1462,
    2929      292,   124,   101,  1116,   455,   484,   152,   118,   119,   952,
    2930      446,   512,   430,   449,   837,   687,   467,   687,   342,   455,
    2931      438,   435,   108,   104,   687,   484,   725,   108,   529,   488,
    2932      104,   532,   689,   534,   108,   359,   687,   687,   124,   363,
    2933      247,   492,   687,   494,   108,   496,   689,   339,   687,   837,
    2934      922,   108,   760,   949,  1275,   469,   507,   482,   930,   510,
    2935      124,   512,   513,   108,   482,   484,   484,   124,   214,   798,
    2936      101,   507,  1094,   524,   510,   108,   111,   513,   104,   124,
    2937      581,   116,   117,   101,   108,   419,   420,  1416,   102,   108,
    2938      588,   124,   685,   507,  1423,    65,   510,    67,    68,   513,
    2939      124,   973,   600,    67,   602,   124,   473,    71,   680,   484,
    2940       74,   101,    76,   103,   102,   814,   108,   484,   653,    83,
    2941      108,   111,   268,   621,   102,  1346,   577,   419,   420,   275,
    2942      816,   101,   124,  1462,   820,   411,   106,   588,   104,   637,
    2943      591,   600,   108,   602,   102,   104,   101,   876,   103,   108,
    2944      722,   652,   650,   654,   430,   653,   111,   113,   114,  1080,
    2945      948,   102,   438,   104,   874,   507,   759,   108,   510,   620,
    2946      589,   513,   101,   507,   625,   669,   510,   104,   102,   513,
    2947      631,   108,   123,   124,   894,   101,   103,   103,   105,   687,
    2948      102,   689,   109,    65,   102,   111,   342,    69,   101,  1420,
    2949      108,  1422,   494,   107,    76,    77,    85,    86,   484,   634,
    2950      635,   636,   103,   359,   105,   102,    57,   363,   109,   720,
    2951      512,   108,   954,   909,   108,   109,   651,   102,   687,   101,
    2952      689,   880,   566,   108,   685,   733,   734,   102,   124,   111,
    2953      102,   102,  1463,   108,   208,   102,   108,   108,   101,   747,
    2954       29,   108,   102,   102,   668,   622,   707,   101,   108,   108,
    2955      989,   686,   680,   677,   102,   922,   102,   681,   686,   104,
    2956      108,   707,   108,   930,   733,   734,   124,   484,   424,   922,
    2957       65,   106,    67,    68,    69,   577,   737,   930,  1468,   102,
    2958      106,    76,    77,  1001,  1468,   108,  1468,   621,   124,   591,
    2959      725,    80,    81,    63,   722,   124,   102,   801,   759,    65,
    2960     1039,    65,   108,   637,   106,    69,   101,   811,   102,   102,
    2961       80,    44,    76,    77,   108,   108,   650,   825,   620,   101,
    2962      102,   103,   826,   625,   121,   760,   123,    60,   101,   837,
    2963       63,    75,   760,    66,    81,    82,   713,   101,   278,    10,
    2964       11,    12,    13,    14,   114,   104,    65,   111,    67,    68,
    2965      727,   291,   292,   102,   103,   816,   825,   112,    65,   820,
    2966       67,    68,    69,   303,   120,   101,    37,   103,   837,  1110,
    2967      121,  1110,   346,     3,   348,   101,   887,   103,  1037,   814,
    2968       10,    11,    12,    13,    14,  1081,   101,   157,   103,    60,
    2969       87,   101,   821,   103,   680,   123,    78,    79,    80,   339,
    2970      103,   909,   555,   556,   557,   558,   101,    37,   101,   102,
    2971      103,   144,   101,   747,   922,   101,   102,   103,  1136,   101,
    2972      104,   103,   930,   105,   157,   104,  1167,  1168,  1167,  1168,
    2973       60,   101,   588,   103,   102,   375,   722,   101,   102,   103,
    2974      948,   818,  1234,  1235,  1236,    54,    55,   217,   909,   182,
    2975      239,   102,   913,   922,   953,   101,   101,   103,   887,   887,
    2976      434,   930,   101,   104,   103,   621,    65,   913,    67,    68,
    2977       69,   982,   205,   101,   985,   103,   987,    76,    77,   948,
    2978      101,   637,   103,   102,   217,   255,  1014,   911,   692,   259,
    2979      694,   952,   953,   954,   650,   108,   109,  1215,    42,    43,
    2980      551,   552,   887,   104,     4,     5,     6,     7,     8,     9,
    2981      887,   553,   554,   559,   560,  1019,  1020,   102,   102,   102,
    2982      887,   103,   108,   101,  1035,   123,   106,   104,   102,     0,
    2983        1,   102,   104,   109,  1045,   104,   104,  1048,  1049,  1050,
    2984     1001,   104,     4,     5,     6,     7,     8,     9,   109,   108,
    2985       28,    75,   102,   102,   106,   109,   104,  1102,   124,   102,
    2986       31,    32,    62,   108,    64,   107,   107,  1449,   953,   107,
    2987       32,  1075,  1076,    44,   344,   101,    10,    11,    12,    13,
    2988       14,   102,    75,   102,   102,   374,   109,  1022,   102,   102,
    2989      323,   747,   102,  1196,  1102,    66,   108,   102,   102,   102,
    2990       62,   887,    64,    37,   102,   102,  1488,   102,   548,   549,
    2991      550,   102,   102,  1042,  1042,   102,   102,   102,   102,  1080,
    2992     1081,   102,    28,   102,   124,   107,    60,  1004,   104,  1053,
    2993      102,    65,   103,   102,  1080,    69,   104,  1378,   102,  1378,
    2994      123,   107,    76,    77,   104,   108,   102,   102,   102,   108,
    2995      101,   591,   954,   423,   106,   108,   104,  1042,   108,   102,
    2996      102,   108,   108,   102,   453,  1042,   399,   101,   104,   458,
    2997      887,   101,   101,   144,   101,   101,   101,   111,  1045,   124,
    2998     1179,   152,   153,   104,   107,   109,   102,   102,  1196,  1200,
    2999      102,   124,   106,   121,   107,  1436,  1437,  1436,  1437,  1001,
    3000      108,  1136,   491,   473,   493,   104,   108,   104,  1136,  1213,
    3001      102,   182,   102,   102,   102,    45,    63,   104,   104,   104,
    3002     1219,   104,   104,  1234,  1235,  1236,   197,   104,   124,   200,
    3003      201,   124,   101,  1475,   205,  1196,   953,   107,  1242,   102,
    3004        4,     5,     6,     7,     8,     9,  1250,  1251,  1252,   124,
    3005      669,   124,   124,   909,   107,   226,  1042,   102,  1219,   230,
    3006      104,   232,   104,   104,   107,   104,   104,   114,   104,   104,
    3007      241,  1200,  1200,   104,   102,   102,   247,  1288,   104,   104,
    3008      101,   252,    55,   723,    54,   102,  1468,  1215,  1468,   102,
    3009     1294,   262,   106,  1178,  1179,  1468,    75,     0,    62,   270,
    3010       64,  1178,  1469,   109,   124,   104,  1305,  1468,  1468,   104,
    3011      157,   102,   104,  1468,  1359,  1200,  1469,   102,    89,  1468,
    3012      101,  1488,   104,  1200,   594,  1042,  1261,   767,    31,  1340,
    3013      107,    40,  1343,  1200,  1219,  1488,  1180,  1181,   124,  1183,
    3014      102,   102,   102,   102,  1305,  1189,  1275,  1275,  1192,   124,
    3015     1358,  1359,   622,   642,   108,  1366,  1367,   627,   109,  1283,
    3016      102,    89,   102,    66,   464,   336,   124,    75,   339,   124,
    3017      217,  1382,   109,   813,   345,   102,  1387,   107,   104,   104,
    3018      124,   101,   801,   107,   107,  1270,   102,   358,   124,   102,
    3019     1275,   362,   811,  1270,   365,   561,  1395,   665,  1275,  1410,
    3020      562,   564,   563,  1117,  1449,   565,  1200,   826,   255,  1348,
    3021     1437,  1496,   259,   702,  1200,  1284,  1452,  1468,  1112,   708,
    3022     1305,  1288,  1468,  1113,  1468,  1071,  1423,   930,   458,   446,
    3023      446,   694,   581,    65,  1395,    67,    68,    69,   932,  1450,
    3024      411,  1449,   974,   713,    76,    77,   647,   880,  1459,   737,
    3025      153,   950,  1219,  1464,   425,   484,   747,   727,   569,   430,
    3026     1468,  1469,  1179,  1469,  1425,   569,  1477,   438,  1479,   101,
    3027       -1,    -1,  1483,  1340,   569,  1486,  1343,    -1,    -1,  1425,
    3028     1488,  1492,  1488,  1200,    -1,  1496,    -1,  1416,  1416,  1275,
    3029       -1,  1452,    -1,   464,  1423,  1423,   467,   344,  1342,  1468,
    3030     1424,    -1,  1219,    -1,    -1,    65,  1452,    67,    68,    69,
    3031     1395,   482,    -1,   484,  1475,  1382,    76,    77,    -1,    -1,
    3032     1387,   492,    -1,   226,  1358,   496,    -1,  1451,    -1,    -1,
    3033       -1,  1416,    -1,  1462,  1462,    -1,    -1,    -1,  1423,  1416,
    3034     1196,   101,    -1,  1410,   247,    -1,  1423,    -1,   818,   252,
    3035       -1,   111,    -1,   524,   525,    -1,    -1,    -1,  1275,    -1,
    3036       -1,  1001,    65,  1487,    67,    68,    69,    -1,    -1,   669,
    3037       -1,    -1,    -1,    76,    77,  1499,   423,  1462,    10,    11,
    3038       12,    13,    14,    -1,    -1,  1462,    -1,    -1,  1305,    -1,
    3039       -1,   880,    -1,    -1,    -1,    -1,    -1,   886,   101,   570,
    3040     1019,  1020,  1042,    -1,    -1,    37,    -1,    -1,   111,    -1,
    3041     1477,    -1,    -1,    -1,    -1,     0,  1483,   588,   589,    -1,
    3042      591,    -1,    -1,    -1,    -1,  1492,   473,    -1,    60,  1496,
    3043     1416,   602,    -1,    -1,    -1,    -1,    -1,  1423,    -1,    -1,
    3044       -1,    -1,   345,    -1,    -1,    -1,    31,    -1,    -1,   620,
    3045       -1,    -1,    -1,    -1,   625,    -1,  1075,  1076,    -1,    -1,
    3046      631,    -1,    -1,   634,   635,   636,    -1,    -1,    -1,   101,
    3047       -1,   103,    -1,  1475,    -1,    -1,  1462,    -1,  1395,   111,
    3048      651,    66,    63,    -1,    -1,   974,    -1,    -1,    -1,    -1,
    3049       -1,    -1,    73,    -1,     0,     1,    -1,    -1,   669,  1416,
    3050       -1,   801,  1358,    -1,    -1,    -1,  1423,    -1,   411,   680,
    3051       -1,   811,    65,  1153,   685,   686,    69,    -1,   689,    -1,
    3052       -1,     3,   425,    76,    77,    31,   826,   430,    10,    11,
    3053       12,    13,    14,   114,  1004,   438,    -1,    -1,    -1,    -1,
    3054       -1,    -1,    -1,    -1,    -1,  1462,    -1,   594,   101,    -1,
    3055      103,   722,    -1,    -1,   725,    37,    -1,    63,   111,    -1,
    3056       66,   464,     3,   734,    -1,    -1,   737,    -1,   153,    10,
    3057       11,    12,    13,    14,    -1,   622,   157,    -1,    60,   482,
    3058      627,   484,  1071,    -1,    -1,    -1,    -1,    -1,   759,   760,
    3059       -1,    -1,    -1,    -1,   765,    -1,    37,    -1,    -1,    -1,
    3060       -1,    -1,    10,    11,    12,    13,    14,    -1,    10,    11,
    3061       12,    13,    14,    -1,    -1,    -1,    -1,    -1,   185,    60,
    3062       -1,    -1,   525,  1242,    -1,   192,    -1,    -1,    -1,    37,
    3063      801,  1250,  1251,  1252,    -1,    37,   217,    -1,    -1,    -1,
    3064      811,    -1,    -1,   814,    -1,   816,    -1,   153,   819,   820,
    3065      821,    -1,    60,    -1,    -1,   826,    -1,    65,    60,    67,
    3066       68,    69,   247,    -1,    -1,   836,   713,   252,    76,    77,
    3067       -1,    -1,    -1,    -1,   255,  1294,    -1,    -1,   259,    -1,
    3068      727,    -1,    -1,     0,    -1,  1174,   589,    -1,    -1,    -1,
    3069       -1,    -1,    -1,   101,   275,   103,    -1,   264,    -1,   101,
    3070       -1,   103,    -1,   111,    -1,    -1,    -1,    -1,  1178,   111,
    3071       -1,   217,    -1,    -1,    31,    -1,   887,    -1,    -1,  1019,
    3072     1020,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3073       -1,   634,   635,   636,    -1,    -1,    -1,    -1,   909,    -1,
    3074       -1,   247,    -1,    -1,    -1,    -1,    -1,    -1,   651,    66,
    3075       -1,   318,    -1,    10,    11,    12,    13,    14,    -1,   326,
    3076      345,    -1,   329,   344,    -1,    -1,   669,    -1,    -1,    -1,
    3077       -1,   818,    -1,   944,    -1,  1075,  1076,   680,    -1,    -1,
    3078       37,   952,   953,   686,    -1,    -1,    -1,    65,    -1,    67,
    3079       68,    69,    -1,    25,    26,    27,   967,    -1,    76,    77,
    3080     1270,    -1,    -1,    60,    90,    91,    92,    93,    94,    95,
    3081       96,    97,    98,    99,    -1,    -1,    -1,    -1,    -1,   722,
    3082       -1,    -1,   725,   101,   391,   103,   411,    -1,   395,    -1,
    3083     1001,   109,    -1,   111,    -1,    -1,   153,   123,    -1,    -1,
    3084      425,    -1,   423,  1014,   101,   430,   103,    -1,  1019,  1020,
    3085       -1,  1022,  1023,   438,   111,    -1,    -1,   760,    -1,   440,
    3086       -1,    -1,    -1,    -1,    96,    -1,    98,    -1,    -1,    -1,
    3087       -1,  1042,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   464,
    3088       -1,    -1,    10,    11,    12,    13,    14,    -1,    -1,    -1,
    3089       -1,    -1,   473,    -1,    -1,    -1,    -1,   482,   801,   484,
    3090       -1,    -1,    -1,    -1,  1075,  1076,    -1,    -1,   811,    37,
    3091     1081,   814,   479,  1213,    -1,    -1,   819,    -1,   821,   425,
    3092       -1,    -1,    -1,   826,    -1,    -1,    -1,    -1,    -1,    -1,
    3093      247,    -1,    60,    -1,    -1,   252,    -1,    65,    -1,    -1,
    3094      525,    69,  1242,    -1,    -1,   177,    -1,    -1,    76,    77,
    3095     1250,  1251,  1252,    -1,    -1,   187,   188,  1004,    -1,    -1,
    3096      192,    -1,   194,   195,    -1,  1136,    -1,    -1,    -1,    -1,
    3097       -1,    -1,    -1,   101,    -1,    -1,    -1,    -1,   484,    -1,
    3098       -1,    -1,    -1,   111,   887,    65,    -1,    67,    68,    69,
    3099       -1,    -1,    -1,    -1,  1294,    -1,    76,    77,    -1,    -1,
    3100       -1,     0,   569,   570,   589,    -1,    -1,    -1,  1179,    -1,
    3101       -1,    -1,    -1,   594,    -1,    -1,    -1,    -1,    -1,   525,
    3102       -1,   101,    -1,   103,    -1,  1196,    -1,    -1,   345,  1200,
    3103       -1,   111,    31,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3104       -1,   622,  1213,    -1,  1215,    -1,   627,    -1,  1219,   634,
    3105      635,   636,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3106       -1,    -1,    -1,    -1,   967,    -1,   651,    66,    -1,    -1,
    3107       -1,  1242,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1250,
    3108     1251,  1252,    -1,   589,   669,    -1,    -1,    -1,    -1,   656,
    3109     1261,  1262,    -1,   660,   411,   680,    -1,    -1,    -1,    -1,
    3110       -1,   686,    -1,    -1,  1275,    -1,    -1,    -1,   425,    -1,
    3111       -1,    -1,    -1,   430,    -1,    -1,  1019,  1020,    -1,  1022,
    3112     1023,   438,    -1,  1294,    -1,    -1,   693,    -1,   634,   635,
    3113      636,  1178,   713,    -1,  1305,    -1,    -1,   722,    -1,  1042,
    3114      725,    -1,    -1,    -1,    -1,   651,   727,   464,    -1,    -1,
    3115       -1,    -1,    -1,    -1,   153,    -1,    -1,    -1,    -1,    -1,
    3116       -1,    -1,    -1,    -1,    -1,   482,   747,   484,    -1,    -1,
    3117       -1,    -1,  1075,  1076,    -1,   760,    -1,    -1,    -1,    -1,
    3118       -1,    -1,    -1,    -1,    -1,    10,    11,    12,    13,    14,
    3119       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3120       25,    26,    -1,  1374,    29,    30,    31,    -1,   525,    -1,
    3121       -1,    -1,    37,    38,    -1,    -1,   801,    -1,    -1,   725,
    3122       -1,    -1,    -1,  1270,  1395,    -1,   811,    -1,    -1,   814,
    3123       -1,    -1,    -1,  1136,   819,    60,   821,   818,   805,    -1,
    3124       -1,   826,    67,    68,    -1,  1416,    -1,    -1,   247,    -1,
    3125       -1,    -1,  1423,   252,    -1,    -1,    -1,    -1,    -1,    -1,
    3126       -1,    -1,    -1,    -1,    -1,    -1,    10,    11,    12,    13,
    3127       14,    -1,   589,    -1,    -1,    -1,  1179,    -1,   103,    -1,
    3128       -1,    -1,   107,    -1,    -1,    -1,   111,    -1,    -1,    -1,
    3129       -1,  1462,    65,    37,    67,    68,    69,  1200,  1469,    -1,
    3130       -1,    -1,   887,    76,    77,    -1,    -1,    -1,   814,    -1,
    3131     1213,    -1,  1215,    -1,    -1,   821,    60,   634,   635,   636,
    3132       -1,    65,    -1,    67,    68,    69,    -1,    -1,   101,    -1,
    3133      103,    -1,    76,    77,   651,    -1,    -1,    -1,   111,  1242,
    3134       -1,   573,   574,    -1,    -1,    -1,   345,  1250,  1251,  1252,
    3135      917,    -1,   669,    -1,    -1,    -1,    -1,   101,  1261,  1262,
    3136       -1,    -1,    -1,   680,    -1,    -1,    -1,   111,    -1,   686,
    3137       -1,   603,  1275,    -1,   606,   607,    -1,   609,    -1,   611,
    3138      612,   887,   967,    -1,   616,   617,    -1,    -1,    -1,    -1,
    3139       -1,  1294,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3140       -1,    -1,    -1,    -1,    -1,   722,    -1,    -1,   725,    -1,
    3141       -1,    -1,   411,    -1,    -1,    -1,    65,    -1,    67,    68,
    3142       69,    -1,    -1,  1004,   991,    -1,   425,    76,    77,    -1,
    3143       -1,   430,    -1,    -1,  1019,  1020,    -1,  1022,  1023,   438,
    3144     1007,    -1,    -1,   760,    50,    -1,    52,   953,    -1,    55,
    3145       56,    57,   101,    59,   103,    -1,    -1,  1042,    -1,    -1,
    3146       -1,   967,   111,    -1,    -1,   464,   698,   699,    74,    -1,
    3147       -1,  1374,   704,    10,    11,    12,    13,    14,    -1,    -1,
    3148       86,    87,    -1,   482,   801,   484,    -1,    -1,    -1,    -1,
    3149     1075,  1076,    -1,    -1,   811,    -1,    -1,   814,    -1,    -1,
    3150       37,    -1,   819,    -1,   821,    -1,    -1,    -1,    -1,   826,
    3151       -1,    -1,    -1,  1416,    -1,  1082,  1022,  1023,    -1,    -1,
    3152     1423,    -1,    -1,    60,    -1,    -1,   525,    -1,    65,    -1,
    3153       67,    68,    69,    -1,    -1,    -1,  1042,    -1,    -1,    76,
    3154       77,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3155       -1,  1136,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1462,
    3156       -1,    -1,    -1,    -1,   101,    -1,   103,    -1,    -1,    -1,
    3157      887,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
     3440      19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
     3441      29,    30,    31,    32,    -1,    -1,    35,    36,    37,    38,
     3442      39,    -1,    41,    -1,    -1,    44,    45,    46,    47,    48,
     3443      49,    50,    51,    -1,    53,    -1,    -1,    56,    57,    -1,
     3444      59,    60,    -1,    62,    -1,    64,    65,   960,    67,    68,
     3445      69,    -1,    -1,    72,    73,    74,    75,    76,    77,    -1,
     3446      79,    80,   975,   976,    -1,    -1,    -1,    -1,    87,   982,
     3447      -1,    -1,  1390,    -1,    -1,   988,    -1,    -1,   991,    -1,
     3448     993,    -1,   101,    -1,   103,    -1,    36,   106,    38,    -1,
     3449      -1,   110,   111,   112,   113,   114,   115,    -1,    -1,  1012,
     3450      -1,    -1,    -1,    -1,    -1,   124,    -1,    -1,    -1,    59,
     3451    1023,    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,    69,
     3452      -1,    -1,    72,    73,    74,    75,    76,    77,    -1,    79,
     3453      80,    -1,  1045,    -1,  1047,    -1,    -1,    87,    -1,    -1,
     3454      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1062,
     3455      -1,   101,  1470,   103,    -1,    -1,   106,    -1,    -1,    -1,
     3456     110,   111,   112,   113,   114,   115,    -1,    36,  1081,    38,
     3457      39,    -1,    41,  1491,  1492,    44,    45,    46,    47,    48,
     3458      49,    50,    51,    -1,    53,    -1,    -1,    56,    57,    -1,
     3459      59,    -1,    -1,    -1,    -1,  1513,    65,    -1,    -1,    -1,
     3460      69,    -1,    -1,    72,    73,    74,    75,    76,    77,    -1,
     3461      79,    80,    -1,    -1,  1127,    -1,    -1,    -1,    87,    -1,
    31583462      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3159      589,    -1,    -1,    -1,  1179,    -1,    -1,  1178,    10,    11,
    3160       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3161       22,    23,    24,    25,    26,  1200,    -1,    29,    30,    31,
    3162       -1,    -1,    -1,    -1,    -1,    37,    38,    -1,  1213,    -1,
    3163     1215,    -1,    -1,    -1,    -1,   634,   635,   636,    -1,    -1,
    3164       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,
    3165      967,    -1,   651,    -1,    -1,    67,    68,  1242,    -1,    -1,
    3166       -1,    -1,    -1,    -1,    -1,  1250,  1251,  1252,    -1,    -1,
    3167      669,    -1,  1178,  1179,    -1,    -1,  1261,  1262,    -1,    -1,
    3168       -1,   680,    -1,    -1,    -1,    -1,    -1,   686,    -1,  1270,
    3169     1275,   103,    -1,    -1,  1200,   107,    -1,    -1,    -1,   111,
    3170       -1,    -1,  1019,  1020,    -1,  1022,  1023,    -1,    -1,  1294,
    3171       -1,    -1,    -1,  1219,    -1,    -1,    -1,    -1,    -1,    -1,
    3172       -1,    -1,    -1,   722,    -1,  1042,   725,    -1,    -1,    -1,
    3173       -1,    -1,    -1,   339,   340,    -1,    -1,    -1,    -1,    -1,
    3174       -1,    -1,    -1,    -1,    -1,   351,   352,    -1,    -1,    -1,
    3175       -1,    -1,    -1,    -1,    -1,  1261,  1262,    -1,  1075,  1076,
    3176       -1,   760,    -1,    -1,  1270,    -1,    -1,    -1,    -1,  1275,
    3177       -1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3178       19,    20,    21,    22,    23,    24,    25,    26,    27,  1374,
    3179       29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,  1305,
    3180       -1,    -1,   801,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3181       -1,    -1,   811,    -1,    -1,   814,    -1,    -1,    -1,  1136,
    3182      819,    60,   821,    -1,    -1,    -1,    -1,   826,    67,    68,
    3183       -1,  1416,    71,    -1,    -1,    -1,    -1,    -1,  1423,    -1,
    3184       -1,    -1,    -1,    -1,    -1,  1077,    -1,    10,    11,    12,
    3185       13,    14,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3186       -1,    -1,  1179,    -1,   103,    -1,    -1,    -1,  1374,    -1,
    3187       -1,    -1,   111,    -1,    37,    -1,    -1,  1462,    -1,    -1,
    3188       -1,    -1,    -1,  1200,    -1,    -1,    -1,    -1,   887,  1395,
    3189       -1,    -1,    -1,    -1,    -1,    -1,  1213,    60,  1215,    -1,
    3190       -1,    -1,    65,    -1,    67,    68,    69,    -1,    -1,    -1,
    3191     1416,    -1,    -1,    76,    77,    -1,    -1,  1423,    -1,    -1,
    3192       -1,    -1,    -1,    -1,    -1,  1242,    -1,    -1,    -1,    -1,
    3193       -1,    -1,    -1,  1250,  1251,  1252,    -1,    -1,   101,    -1,
    3194      103,    -1,    -1,    -1,  1261,  1262,    -1,    -1,   111,    -1,
    3195       -1,    -1,    -1,    -1,    -1,    -1,  1462,    -1,  1275,    -1,
    3196       -1,    -1,    -1,    -1,    -1,  1197,    -1,    -1,   967,    -1,
    3197       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1294,    -1,     7,
    3198       -1,    -1,    10,    11,    12,    13,    14,    -1,    -1,    -1,
    3199       -1,    -1,    -1,    -1,    -1,    -1,    44,    -1,    -1,    -1,
    3200       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    36,    37,
    3201       38,    -1,    -1,    -1,    -1,    63,    -1,    -1,    -1,    -1,
    3202     1019,  1020,    -1,  1022,  1023,    -1,    -1,    -1,    -1,    -1,
    3203       -1,    59,    60,    -1,    -1,    -1,    -1,    65,    -1,    -1,
    3204       -1,    69,    -1,  1042,    72,    73,    74,    75,    76,    77,
    3205       -1,    79,    80,    -1,    -1,    -1,    -1,  1374,    -1,    87,
    3206       -1,   109,    -1,    -1,    -1,    -1,   114,    -1,    -1,    -1,
    3207       -1,    -1,    -1,   101,    -1,   103,  1075,  1076,    -1,    -1,
    3208       -1,    -1,   110,   111,   112,   113,   114,   115,    -1,    -1,
    3209       -1,    -1,    -1,    -1,    -1,   143,    -1,    -1,    -1,  1416,
    3210       -1,    -1,    -1,    -1,    -1,   153,  1423,    -1,   714,   157,
    3211      716,    -1,    -1,    -1,    -1,    -1,    -1,   723,   724,    -1,
    3212       -1,    -1,   728,    -1,     7,    -1,    -1,    10,    11,    12,
    3213       13,    14,    -1,    -1,   740,    -1,    -1,  1136,    -1,   745,
    3214       -1,    -1,    -1,    -1,    -1,  1462,    -1,    -1,    -1,    -1,
    3215       -1,    -1,    -1,    36,    37,    38,    -1,   205,    -1,    -1,
    3216       -1,    -1,    -1,   769,    -1,    -1,    -1,    -1,    -1,   217,
    3217       -1,    -1,    -1,    -1,    -1,    -1,    59,    60,    -1,    -1,
    3218     1179,    -1,    65,    -1,    -1,    -1,    69,   235,   236,    72,
    3219       73,    74,    75,    76,    77,    -1,    79,    80,    -1,    -1,
    3220       -1,  1200,    -1,    -1,    87,    -1,    -1,   813,    -1,    -1,
    3221       -1,   259,    -1,    -1,  1213,    -1,  1215,    -1,   101,   267,
    3222      103,    -1,    -1,    -1,    -1,    -1,    -1,   110,   111,   112,
    3223      113,   114,   115,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3224       -1,   289,    -1,  1242,   292,    -1,    -1,    -1,    -1,    -1,
    3225       -1,  1250,  1251,  1252,    -1,    -1,    -1,    -1,    -1,    -1,
    3226       -1,    -1,  1261,  1262,   870,   871,   872,   873,    -1,   875,
    3227       -1,    -1,    -1,    -1,    -1,    -1,  1275,    -1,    -1,    -1,
    3228       -1,    -1,    -1,    -1,   890,    -1,    -1,    -1,    -1,    -1,
    3229       -1,   339,    -1,    -1,    -1,  1294,   344,    -1,   904,    -1,
    3230       -1,    -1,    -1,     3,     4,     5,     6,     7,     8,     9,
    3231       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3232       20,    21,    22,    23,    24,    25,    26,    -1,    -1,    29,
    3233       30,    31,    32,    -1,    -1,    35,   942,    37,    -1,    -1,
    3234       -1,    -1,    25,    26,    27,    -1,    -1,    -1,    -1,    -1,
    3235       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3236       60,    -1,    62,    -1,    64,    -1,    -1,    67,    68,    -1,
    3237       -1,   419,   420,   979,    -1,  1374,    -1,   425,    -1,    -1,
    3238      986,    -1,    -1,    -1,   990,    -1,    -1,    -1,    -1,   995,
    3239       -1,   997,    -1,    -1,    -1,  1001,  1002,  1003,   446,    -1,
    3240     1006,   449,    -1,   103,    -1,    -1,    -1,   455,    -1,  1015,
    3241       -1,   111,    -1,    96,    -1,    98,    -1,  1416,    -1,    -1,
    3242       -1,    -1,    -1,    -1,  1423,    -1,    -1,  1033,  1034,    10,
    3243       11,    12,    13,    14,   482,    -1,    -1,    -1,    -1,   122,
    3244       -1,    -1,    -1,    -1,    -1,    -1,   494,    -1,    -1,    -1,
    3245       -1,    -1,  1058,    -1,    -1,  1061,    37,    -1,    -1,   507,
    3246       -1,    -1,   510,  1462,   512,   513,    -1,    -1,    -1,    -1,
    3247       -1,    -1,    -1,    -1,    -1,    -1,    -1,   525,    -1,    60,
    3248       -1,    -1,    -1,    -1,    65,    -1,    67,    68,    69,    -1,
    3249       -1,    -1,    -1,  1099,   177,    76,    77,    -1,    -1,  1105,
    3250     1106,    -1,   185,    -1,   187,   188,    -1,    -1,  1114,   192,
    3251       -1,   194,   195,  1119,    -1,    -1,  1122,    -1,  1124,    -1,
    3252      101,  1127,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   577,
    3253      111,    -1,    -1,    -1,  1140,    -1,    -1,    -1,    -1,    -1,
    3254       -1,   589,    -1,   591,    -1,    -1,   594,  1153,    -1,  1155,
    3255     1156,  1157,  1158,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3256       -1,    -1,    -1,    -1,    -1,  1171,    -1,  1173,    -1,    -1,
    3257       -1,  1177,   620,    -1,    -1,    -1,    -1,   625,    -1,    -1,
    3258       -1,   264,    -1,    -1,    -1,    -1,   634,   635,   636,    -1,
    3259       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1205,
    3260     1206,    -1,    -1,   651,    -1,    -1,    -1,    63,    -1,    -1,
    3261       -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    -1,    75,
    3262       -1,    77,    -1,    -1,    -1,    -1,    -1,    -1,    84,    -1,
    3263       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   686,    -1,
    3264       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1253,  1254,    -1,
    3265       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1263,   114,   707,
    3266      116,   117,   118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3267       -1,    -1,    -1,    -1,    -1,    -1,    -1,   725,    -1,   727,
    3268       -1,    -1,    -1,    -1,    -1,    -1,   142,    -1,    -1,    -1,
    3269       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3270       -1,   157,    -1,  1309,    -1,    -1,    -1,    -1,    -1,    -1,
    3271       -1,    -1,   760,    -1,    -1,  1321,    -1,  1323,  1324,  1325,
    3272       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1335,
    3273       -1,    -1,    -1,    -1,    -1,    43,    -1,    -1,  1344,    -1,
    3274       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3275     1356,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3276       -1,   217,    -1,   219,   220,   221,   814,    -1,    -1,    -1,
    3277      818,    -1,    -1,   821,    -1,    -1,    -1,    -1,    -1,    -1,
    3278       -1,    89,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3279       -1,    99,    -1,    -1,    -1,    -1,    -1,  1403,  1404,   255,
    3280       -1,    -1,    -1,   259,    -1,    -1,    -1,    -1,    -1,    -1,
    3281     1416,    -1,    -1,    -1,    -1,    -1,    -1,  1423,    -1,   275,
    3282       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3283       20,    21,    22,    23,    24,    25,    26,    27,    -1,    29,
    3284       30,    31,  1448,    -1,    -1,    -1,   154,    37,    -1,    -1,
    3285       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   167,
    3286       -1,    -1,    -1,    -1,    -1,   913,    -1,   323,  1474,    -1,
    3287       60,    -1,    -1,    -1,    -1,    65,    -1,    67,    68,    69,
    3288       -1,    71,   190,    -1,    -1,    -1,    76,    77,   344,    -1,
    3289      573,   574,  1498,   349,   350,    -1,   204,  1503,    -1,    -1,
    3290       -1,   357,    -1,    -1,    -1,   213,   954,    -1,    -1,    -1,
    3291       -1,   101,    -1,   103,    -1,   223,    -1,    -1,    -1,   967,
    3292      603,   111,    -1,   606,   607,    -1,   609,    -1,   611,   612,
    3293       -1,    -1,    -1,   616,   617,    -1,    -1,    -1,    -1,    -1,
    3294      248,    -1,    -1,   399,    -1,   253,    -1,    -1,    -1,    -1,
    3295       -1,    -1,    -1,  1001,    -1,    -1,    -1,    -1,   266,    -1,
    3296       -1,   417,    -1,    -1,   272,    -1,   274,   423,    -1,    -1,
    3297       -1,    -1,    -1,    -1,  1022,  1023,    -1,    -1,    -1,    -1,
    3298       -1,    -1,   290,    -1,   440,    -1,    -1,   443,   444,    -1,
    3299       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3300       -1,    -1,    -1,   459,    -1,    -1,    -1,    -1,    -1,    -1,
    3301      693,    -1,    -1,    -1,    -1,   698,   699,   473,    -1,    -1,
    3302       -1,   704,    -1,    -1,   480,   333,    -1,    -1,    -1,    -1,
    3303      338,    -1,  1080,     3,     4,     5,     6,     7,     8,     9,
    3304       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3305       20,    21,    22,    23,    24,    25,    26,    -1,   366,    29,
    3306       30,    31,   370,   371,    -1,   373,    -1,    37,    -1,    -1,
    3307       -1,   379,   380,    -1,   382,   383,    -1,   385,    -1,   387,
    3308       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1136,    -1,
    3309       60,    -1,    62,    -1,    64,    65,   404,    67,    68,    69,
    3310       -1,    -1,    -1,    -1,   412,    -1,    76,    77,    -1,    -1,
    3311       -1,    -1,    -1,    36,    -1,    38,    -1,    -1,    -1,    -1,
    3312       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   436,    -1,
    3313     1178,   101,    -1,   103,    -1,    -1,    59,    -1,   594,   447,
    3314       -1,   111,    65,    -1,    -1,    -1,    69,    -1,    -1,    72,
    3315       73,    74,    75,    76,    77,    -1,    79,    80,    -1,    -1,
    3316       -1,    -1,   470,    -1,    87,    -1,   622,  1215,   476,    -1,
    3317       -1,   627,    -1,   481,    -1,    -1,    -1,    -1,   101,    -1,
    3318      103,    -1,    -1,    -1,    -1,    -1,    -1,   110,   111,   112,
    3319      113,   114,   115,    -1,    -1,    -1,    -1,    -1,   152,   153,
    3320       -1,   124,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   517,
    3321       -1,    -1,    -1,  1261,  1262,    -1,    -1,    -1,    -1,    -1,
    3322       -1,    -1,  1270,    -1,    -1,   533,    -1,    -1,    -1,    -1,
    3323       -1,   185,    -1,    -1,    -1,    -1,    -1,    -1,   192,    10,
    3324       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3325       21,    22,    23,    24,    25,    26,    -1,   713,    29,    30,
    3326       31,   569,    -1,    -1,    -1,    36,    37,    38,    -1,    -1,
    3327      578,   727,    -1,    -1,    -1,    -1,    -1,   585,    -1,    -1,
    3328       -1,    -1,   590,    -1,    -1,    -1,    -1,    -1,    59,    60,
    3329       -1,   747,    -1,   601,    65,    -1,    67,    68,    69,    -1,
    3330       -1,    72,    73,    74,    75,    76,    77,    -1,    79,    80,
    3331      264,    -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,
    3332       -1,    -1,    -1,    -1,    -1,    -1,  1374,    -1,    -1,    -1,
    3333      101,    -1,   103,   641,    -1,   106,    -1,    -1,    -1,   110,
    3334      111,   112,   113,   114,   115,    -1,    -1,    -1,    -1,   805,
    3335       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3336       -1,    -1,   818,    -1,   318,    -1,    -1,    -1,   676,    -1,
    3337       -1,    -1,   326,   327,    -1,   329,   330,  1425,    -1,    -1,
    3338       -1,   837,    -1,    -1,    -1,   339,    -1,    -1,    -1,   343,
    3339       -1,    -1,    -1,    -1,  1077,    -1,    -1,    -1,    -1,    -1,
    3340       -1,    -1,    -1,    -1,  1452,    -1,    -1,    -1,   362,    -1,
    3341       -1,   365,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3342       -1,    -1,    -1,   731,    -1,    -1,    -1,  1475,    -1,    -1,
    3343       -1,    -1,    -1,   741,   742,    -1,    -1,   391,    -1,    -1,
    3344       -1,   395,    -1,    -1,    -1,   753,    -1,    -1,    -1,    -1,
    3345       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3346       -1,    -1,   770,    -1,   772,    -1,   922,    -1,   776,    -1,
    3347       -1,   425,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3348       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   143,    -1,
    3349       -1,    -1,   948,    -1,   448,    -1,    -1,    -1,   153,    -1,
    3350       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3351      165,    -1,    -1,    -1,  1197,    -1,    -1,   973,    -1,    -1,
    3352       -1,    -1,    -1,    -1,    -1,   479,    -1,    -1,   482,    -1,
    3353       -1,    -1,    -1,   841,    -1,    -1,    -1,    -1,    -1,    -1,
    3354      848,    -1,    -1,    -1,    -1,    36,    -1,    38,  1004,    -1,
    3355       -1,    -1,    -1,   861,    -1,   863,    -1,    -1,    -1,  1015,
    3356       -1,    -1,    -1,    -1,    -1,    -1,    -1,   521,    59,   877,
    3357      524,   525,    -1,    -1,    65,   883,    -1,    -1,    69,    -1,
    3358      235,    72,    73,    74,    75,    76,    77,   895,    79,    80,
    3359      898,    -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,
    3360       -1,    -1,    -1,    -1,    -1,   260,    -1,    -1,   916,    -1,
    3361      101,    -1,   103,    -1,    -1,   569,   570,    -1,   109,   110,
    3362      111,   112,   113,   114,   115,    -1,    -1,    -1,    -1,    -1,
    3363       -1,    -1,    -1,    -1,   588,   589,    -1,   591,  1094,    -1,
    3364       -1,    -1,    -1,    -1,    -1,    -1,   600,    -1,   602,   603,
    3365       -1,    -1,    -1,    -1,    -1,   609,    -1,    -1,    -1,    -1,
    3366       -1,    -1,    -1,    -1,    -1,   619,   620,    -1,    -1,    -1,
    3367       -1,   625,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3368      634,   635,   636,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3369       -1,    -1,  1000,    -1,    -1,    -1,    -1,   651,    -1,    -1,
    3370       -1,    -1,   656,   657,    -1,    -1,   660,   661,    -1,    -1,
    3371       -1,    -1,    -1,   667,    -1,    -1,    -1,    -1,    -1,   374,
    3372       -1,    -1,  1178,    36,    -1,    38,    -1,    -1,    -1,    -1,
    3373       -1,   685,   686,   687,    -1,   689,    -1,    -1,    -1,   693,
    3374       -1,    -1,    -1,    -1,    -1,    -1,    59,  1055,    -1,    -1,
    3375       -1,    -1,    65,  1061,    67,    68,    69,    -1,    -1,    72,
    3376       73,    74,    75,    76,    77,    -1,    79,    80,    -1,    -1,
    3377       -1,   725,   726,    -1,    87,    -1,    -1,    -1,    -1,    -1,
    3378       -1,    -1,  1090,    -1,    -1,    -1,    -1,  1095,   101,    -1,
    3379      103,    -1,   105,   106,    -1,  1103,    -1,   110,   111,   112,
    3380      113,   114,   115,    -1,    -1,   759,   760,    -1,    -1,    -1,
    3381      764,   765,    -1,    -1,  1270,   276,   277,   278,   279,   474,
    3382       -1,    -1,    -1,  1131,    -1,   286,   287,    -1,    -1,    -1,
    3383      291,   292,    -1,    -1,    -1,  1143,    -1,    -1,  1146,    -1,
    3384     1148,    -1,   303,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3385       -1,   805,    -1,    -1,  1162,  1163,    -1,   512,    -1,    -1,
    3386      814,    -1,    -1,    -1,    -1,    -1,   820,   821,    -1,    -1,
    3387      525,   825,    -1,   827,    -1,    -1,  1184,   532,   339,    -1,
    3388       -1,    -1,    -1,   837,    -1,    -1,    -1,    -1,    -1,    -1,
    3389      545,   546,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3390       -1,    -1,  1210,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3391       -1,    -1,   567,    -1,   375,    -1,    -1,    -1,    -1,    -1,
    3392       -1,    -1,   577,    -1,    -1,    -1,    -1,    -1,    -1,   584,
    3393       -1,    -1,    -1,    -1,   589,    -1,    -1,    -1,    10,    11,
    3394       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3395       22,    23,    24,    25,    26,   909,    -1,    29,    30,    31,
    3396       -1,    -1,    -1,   917,    -1,    37,    -1,    -1,   922,    -1,
    3397       -1,    -1,    -1,    -1,    -1,    -1,   930,    -1,    -1,    -1,
    3398       -1,    -1,    -1,    -1,   639,    -1,    -1,    -1,    60,   943,
    3399      944,   646,  1300,    -1,  1302,    67,    68,    -1,    -1,    -1,
    3400       -1,    -1,    -1,    -1,    -1,  1313,    -1,  1315,    -1,    -1,
    3401       -1,    -1,    -1,   967,    -1,    -1,    -1,    -1,    -1,   973,
    3402       -1,    -1,    -1,    -1,    -1,  1333,    -1,    -1,    -1,    -1,
    3403       -1,   686,  1488,    -1,    -1,    -1,    -1,   991,   992,   111,
    3404       -1,  1349,    -1,    -1,    -1,    -1,    -1,  1001,    -1,  1357,
    3405       -1,    -1,  1360,  1007,  1008,    -1,  1010,  1011,  1012,    -1,
    3406       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1022,  1023,
    3407       -1,    -1,  1380,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3408       -1,  1389,    -1,    -1,  1392,  1393,    -1,   548,   549,   550,
    3409      551,   552,   553,   554,   555,   556,   557,   558,   559,   560,
    3410      561,   562,   563,   564,   565,   760,    -1,   762,    -1,    -1,
    3411       -1,    -1,    -1,   768,    -1,    -1,    -1,    -1,    -1,  1427,
    3412      775,  1429,    -1,    -1,    -1,    -1,    -1,  1081,  1082,  1083,
    3413      591,    -1,    -1,  1441,    -1,    -1,    -1,    -1,    -1,    -1,
    3414     1094,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3415       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3416       -1,    -1,    -1,   818,   819,    -1,   821,    -1,    -1,    -1,
    3417       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3418       -1,   836,  1136,     4,     5,     6,     7,     8,     9,    10,
     3463      -1,    -1,   101,  1146,   103,    -1,    -1,   106,    -1,    -1,
     3464      -1,   110,   111,   112,   113,   114,   115,    -1,  1161,  1162,
     3465      -1,    -1,     3,     4,     5,     6,     7,     8,     9,    10,
    34193466      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    34203467      21,    22,    23,    24,    25,    26,    -1,    -1,    29,    30,
    3421       31,    -1,    -1,    -1,    -1,    36,    37,    38,    -1,    -1,
    3422       -1,   876,    -1,    -1,    -1,   880,    -1,   688,    -1,    -1,
     3468      31,    32,    -1,    -1,    35,    36,    37,    38,    -1,    -1,
     3469      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    34233470      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    59,    60,
    3424       -1,    62,  1196,    64,    65,    -1,    67,    68,    69,   710,
    3425       -1,    72,    73,    74,    75,    76,    77,    -1,    79,    80,
    3426       -1,  1215,   723,    -1,    -1,    -1,    87,    -1,    -1,    -1,
     3471      -1,    62,    -1,    64,    65,    -1,    67,    68,    69,    -1,
     3472      -1,    72,    73,    74,    75,    76,    77,  1240,    79,    80,
     3473      -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,
    34273474      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3428      101,    -1,   103,    -1,    -1,    -1,    -1,   108,    -1,   110,
    3429      111,   112,   113,   114,   115,    -1,    -1,    -1,    -1,   954,
    3430       -1,    -1,    -1,    -1,    -1,    -1,   767,  1261,  1262,    -1,
    3431       -1,    -1,   967,   968,    -1,    -1,    -1,    -1,    36,   974,
    3432       38,    -1,    -1,    -1,    -1,   980,    -1,    -1,   983,    -1,
    3433      985,    -1,    -1,    -1,    -1,    -1,    -1,   798,    -1,    -1,
    3434       -1,    59,    -1,    -1,    -1,    -1,    -1,    65,    -1,  1004,
    3435       -1,    69,   813,    -1,    72,    73,    74,    75,    76,    77,
    3436     1015,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    87,
    3437       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3438       -1,    -1,  1037,   101,  1039,   103,    -1,    -1,   106,    -1,
    3439       -1,    -1,   110,   111,   112,   113,   114,   115,    -1,  1054,
    3440       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3441       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1073,    -1,
    3442     1374,    -1,     0,    -1,    -1,     3,     4,     5,     6,     7,
    3443        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    3444       18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
    3445       -1,    29,    30,    31,    32,    -1,    -1,    35,    -1,    37,
    3446       38,    -1,  1117,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3447       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    57,
    3448       -1,  1136,    60,    -1,    62,    -1,    64,    65,    -1,    67,
    3449       68,    69,    -1,    -1,    -1,  1449,  1151,  1152,    76,    77,
    3450       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    36,
    3451       -1,    38,    -1,    -1,  1468,  1469,    -1,    -1,    -1,    -1,
    3452       -1,    -1,    -1,   101,    -1,   103,    -1,    -1,   989,    -1,
    3453       -1,    -1,    59,   111,  1488,    -1,    -1,    -1,    65,    -1,
    3454     1001,    -1,    69,    -1,    -1,    72,    73,    74,    75,    76,
    3455       77,    -1,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,
    3456       87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3457       -1,    -1,    -1,  1228,   101,    -1,   103,    -1,    -1,   106,
    3458       -1,  1042,    -1,   110,   111,   112,   113,   114,   115,    -1,
    3459       -1,     3,     4,     5,     6,     7,     8,     9,    10,    11,
    3460       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3461       22,    23,    24,    25,    26,    -1,    -1,    29,    30,    31,
    3462       32,    -1,    -1,    35,    36,    37,    38,    39,    -1,    41,
    3463       -1,    -1,    44,    45,    46,    47,    48,    49,    50,    51,
    3464       -1,    53,    -1,    -1,    56,    57,    -1,    59,    60,  1110,
    3465       62,    -1,    64,    65,    -1,    67,    68,    69,    -1,    -1,
    3466       72,    73,    74,    75,    76,    77,    -1,    79,    80,    -1,
    3467       -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,
    3468       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,
    3469       -1,   103,  1153,    -1,   106,    -1,    -1,    -1,   110,   111,
    3470      112,   113,   114,   115,    -1,    -1,  1167,  1168,    -1,    -1,
    3471     1365,    -1,   124,    -1,     3,     4,     5,     6,     7,     8,
     3475     101,    -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,   110,
     3476     111,   112,   113,   114,   115,    -1,    -1,    -1,    -1,    -1,
     3477      -1,    -1,    -1,   124,     3,     4,     5,     6,     7,     8,
    34723478       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    34733479      19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
     
    34753481      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    34763482      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3477       59,    60,    -1,    62,    -1,    64,    65,  1432,    67,    68,
     3483      59,    60,    -1,    62,    -1,    64,    65,    -1,    67,    68,
     3484      69,    -1,    -1,    72,    73,    74,    75,    76,    77,    -1,
     3485      79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,
     3486      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1381,    -1,
     3487      -1,    -1,   101,    -1,   103,    -1,    -1,    -1,    -1,    -1,
     3488      -1,   110,   111,   112,   113,   114,   115,     4,     5,     6,
     3489       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     3490      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3491      -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,    36,
     3492      37,    38,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3493      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3494    1453,    -1,    59,    60,    -1,    62,    -1,    64,    65,    -1,
     3495      67,    68,    69,    -1,    -1,    72,    73,    74,    75,    76,
     3496      77,    -1,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,
     3497      87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3498      -1,    -1,    -1,    -1,   101,  1498,   103,    -1,    -1,    -1,
     3499      -1,   108,    -1,   110,   111,   112,   113,   114,   115,     4,
     3500       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     3501      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3502      25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,
     3503      -1,    36,    37,    38,    -1,    -1,    -1,    -1,    -1,    -1,
     3504      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3505      -1,    -1,    -1,    -1,    59,    60,    -1,    62,    -1,    64,
     3506      65,    -1,    67,    68,    69,    -1,    -1,    72,    73,    74,
     3507      75,    76,    77,    -1,    79,    80,    -1,    -1,    -1,    -1,
     3508      -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3509      -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,   103,    -1,
     3510      -1,    -1,    -1,   108,    -1,   110,   111,   112,   113,   114,
     3511     115,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     3512      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3513      23,    24,    25,    26,    -1,    -1,    29,    30,    31,    -1,
     3514      -1,    -1,    -1,    36,    37,    38,    -1,    -1,    -1,    -1,
     3515      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3516      -1,    -1,    -1,    -1,    -1,    -1,    59,    60,    -1,    62,
     3517      -1,    64,    65,    -1,    67,    68,    69,    -1,    -1,    72,
     3518      73,    74,    75,    76,    77,    -1,    79,    80,    -1,    -1,
     3519      -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,
     3520      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,
     3521     103,    -1,    -1,    -1,    -1,   108,    -1,   110,   111,   112,
     3522     113,   114,   115,     4,     5,     6,     7,     8,     9,    10,
     3523      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3524      21,    22,    23,    24,    25,    26,    -1,    -1,    29,    30,
     3525      31,    -1,    -1,    -1,    -1,    36,    37,    38,    -1,    -1,
     3526      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3527      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    59,    60,
     3528      -1,    62,    -1,    64,    65,    -1,    67,    68,    69,    -1,
     3529      -1,    72,    73,    74,    75,    76,    77,    -1,    79,    80,
     3530      -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,
     3531      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3532     101,    -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,   110,
     3533     111,   112,   113,   114,   115,     4,     5,     6,     7,     8,
     3534       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3535      19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
     3536      29,    30,    31,    -1,    -1,    -1,    -1,    36,    37,    38,
     3537      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3538      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3539      59,    60,    -1,    62,    -1,    64,    65,    -1,    67,    68,
    34783540      69,    -1,    -1,    72,    73,    74,    75,    76,    77,    -1,
    34793541      79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,
    34803542      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    34813543      -1,    -1,   101,    -1,   103,    -1,    -1,    -1,    -1,    -1,
    3482     1475,   110,   111,   112,   113,   114,   115,    -1,    -1,    -1,
    3483       -1,    -1,    -1,    -1,    -1,   124,     3,     4,     5,     6,
     3544      -1,   110,   111,   112,   113,   114,   115,     4,     5,     6,
    34843545       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    34853546      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3486       -1,    -1,    29,    30,    31,    32,    -1,    -1,    35,    36,
    3487       37,    38,    10,    11,    12,    13,    14,    15,    16,    17,
    3488       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3489       -1,    -1,    59,    60,    -1,    62,    -1,    64,    65,    37,
     3547      -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,    36,
     3548      37,    38,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3549      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3550      -1,    -1,    59,    60,    -1,    62,    -1,    64,    65,    -1,
    34903551      67,    68,    69,    -1,    -1,    72,    73,    74,    75,    76,
    3491       77,    -1,    79,    80,    -1,    -1,    -1,  1378,    -1,    -1,
    3492       87,    -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3493       -1,    -1,    -1,    71,   101,    -1,   103,    -1,    -1,    -1,
    3494       -1,    -1,    -1,   110,   111,   112,   113,   114,   115,    -1,
    3495       -1,    -1,     4,     5,     6,     7,     8,     9,    10,    11,
     3552      77,    -1,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,
     3553      87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3554      -1,    -1,    -1,    -1,   101,    -1,   103,    -1,    -1,    -1,
     3555      -1,    -1,    -1,   110,   111,   112,   113,   114,   115,     4,
     3556       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     3557      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3558      25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,
     3559      -1,    36,    37,    38,    -1,    -1,    -1,    -1,    -1,    -1,
     3560      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3561      -1,    -1,    -1,    -1,    59,    60,    -1,    62,    -1,    64,
     3562      65,    -1,    67,    68,    69,    -1,    -1,    72,    73,    74,
     3563      75,    76,    77,    -1,    79,    80,    -1,    -1,    -1,    -1,
     3564      -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3565      -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,   103,    -1,
     3566      -1,    -1,    -1,    -1,    -1,   110,   111,   112,   113,   114,
     3567     115,     3,     4,     5,     6,     7,     8,     9,    10,    11,
    34963568      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3497       22,    23,    24,    25,    26,  1436,  1437,    29,    30,    31,
    3498       -1,    -1,    -1,    -1,    36,    37,    38,    10,    11,    12,
     3569      22,    23,    24,    25,    26,    -1,    -1,    29,    30,    31,
     3570      32,    -1,    -1,    35,    -1,    37,    38,    -1,    -1,    -1,
     3571      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3572      -1,    -1,    -1,    -1,    -1,    57,    -1,    -1,    60,    -1,
     3573      62,    -1,    64,    65,    -1,    67,    68,    69,    -1,    -1,
     3574      -1,    -1,    -1,    -1,    76,    77,    -1,    -1,    -1,    -1,
     3575      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3576      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,
     3577      -1,   103,    -1,    -1,    -1,   107,    -1,    -1,    -1,   111,
     3578       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    34993579      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3500       23,    24,    25,    26,    27,    -1,    -1,    59,    60,    -1,
    3501       62,    -1,    64,    65,    37,    67,    68,    69,    -1,    -1,
    3502       72,    73,    74,    75,    76,    77,    -1,    79,    80,    -1,
    3503       -1,    -1,    -1,    -1,    -1,    87,    -1,    60,    -1,    -1,
    3504       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    71,   101,
    3505       -1,   103,    -1,    -1,    -1,    -1,   108,    -1,   110,   111,
    3506      112,   113,   114,   115,     4,     5,     6,     7,     8,     9,
    3507       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3508       20,    21,    22,    23,    24,    25,    26,    -1,    -1,    29,
    3509       30,    31,    -1,    -1,    -1,    -1,    36,    37,    38,    10,
    3510       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3511       21,    22,    23,    24,    25,    26,    -1,    -1,    -1,    59,
    3512       60,    -1,    62,    -1,    64,    65,    37,    67,    68,    69,
    3513       -1,    -1,    72,    73,    74,    75,    76,    77,    -1,    79,
    3514       80,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,    60,
     3580      23,    24,    25,    26,    27,    -1,    29,    30,    31,    32,
     3581      -1,    -1,    35,    -1,    37,    -1,    -1,    -1,    -1,    -1,
    35153582      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3516       -1,   101,    -1,   103,    -1,    -1,    -1,    -1,   108,    -1,
    3517      110,   111,   112,   113,   114,   115,     4,     5,     6,     7,
    3518        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    3519       18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
    3520       -1,    29,    30,    31,    -1,    -1,    -1,    -1,    36,    37,
    3521       38,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3522       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3523       -1,    59,    60,    -1,    62,    -1,    64,    65,    -1,    67,
    3524       68,    69,    -1,    -1,    72,    73,    74,    75,    76,    77,
    3525       -1,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    87,
    3526       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3527       -1,    -1,    -1,   101,    -1,   103,    -1,    -1,    -1,    -1,
    3528       -1,    -1,   110,   111,   112,   113,   114,   115,     4,     5,
    3529        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    3530       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3531       26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,
    3532       36,    37,    38,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3533       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3534       -1,    -1,    -1,    59,    60,    -1,    62,    -1,    64,    65,
    3535       -1,    67,    68,    69,    -1,    -1,    72,    73,    74,    75,
    3536       76,    77,    -1,    79,    80,    -1,    -1,    -1,    -1,    -1,
    3537       -1,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3538       -1,    -1,    -1,    -1,    -1,   101,    -1,   103,    -1,    -1,
    3539       -1,    -1,    -1,    -1,   110,   111,   112,   113,   114,   115,
     3583      -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    62,
     3584      -1,    64,    -1,    -1,    67,    68,    -1,    -1,    71,     3,
    35403585       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    35413586      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3542       24,    25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,
    3543       -1,    -1,    36,    37,    38,    -1,    -1,    -1,    -1,    -1,
     3587      24,    25,    26,    -1,    -1,    29,    30,    31,    32,    -1,
     3588     103,    35,    -1,    37,    -1,    -1,    -1,    -1,   111,    -1,
    35443589      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3545       -1,    -1,    -1,    -1,    -1,    59,    60,    -1,    62,    -1,
    3546       64,    65,    -1,    67,    68,    69,    -1,    -1,    72,    73,
    3547       74,    75,    76,    77,    -1,    79,    80,    -1,    -1,    -1,
    3548       -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,    -1,
    3549       -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,   103,
    3550       -1,    -1,    -1,    -1,    -1,    -1,   110,   111,   112,   113,
    3551      114,   115,     4,     5,     6,     7,     8,     9,    10,    11,
    3552       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3553       22,    23,    24,    25,    26,    -1,    -1,    29,    30,    31,
    3554       -1,    -1,    -1,    -1,    36,    37,    38,    -1,    -1,    -1,
    3555       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3556       -1,    -1,    -1,    -1,    -1,    -1,    -1,    59,    60,    -1,
    3557       62,    -1,    64,    65,    -1,    67,    68,    69,    -1,    -1,
    3558       72,    73,    74,    75,    76,    77,    -1,    79,    80,    -1,
    3559       -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,
    3560       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,
    3561       -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,   110,   111,
    3562      112,   113,   114,   115,     3,     4,     5,     6,     7,     8,
     3590      -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    62,    -1,
     3591      64,    -1,    -1,    67,    68,     4,     5,     6,     7,     8,
    35633592       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    35643593      19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
    3565       29,    30,    31,    32,    -1,    -1,    35,    -1,    37,    38,
     3594      29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,   103,
     3595      -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,
    35663596      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3567       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    57,    -1,
    35683597      -1,    60,    -1,    62,    -1,    64,    65,    -1,    67,    68,
    35693598      69,    -1,    -1,    -1,    -1,    -1,    -1,    76,    77,    -1,
    35703599      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    35713600      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3572       -1,    -1,   101,    -1,   103,    -1,    -1,    -1,   107,    -1,
    3573       -1,    -1,   111,     3,     4,     5,     6,     7,     8,     9,
    3574       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3575       20,    21,    22,    23,    24,    25,    26,    -1,    -1,    29,
    3576       30,    31,    32,    -1,    -1,    35,    -1,    37,    38,    -1,
    3577       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3578       -1,    -1,    -1,    -1,    -1,    -1,    -1,    57,    -1,    -1,
    3579       60,    -1,    62,    -1,    64,    65,    -1,    67,    68,    69,
    3580       -1,    -1,    -1,    -1,    -1,    -1,    76,    77,    -1,    -1,
    3581       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3582       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3583       -1,   101,    -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,
    3584       -1,   111,     3,     4,     5,     6,     7,     8,     9,    10,
     3601      -1,    -1,   101,    -1,   103,    -1,    -1,    -1,    -1,    -1,
     3602      -1,    -1,   111,     4,     5,     6,     7,     8,     9,    10,
    35853603      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3586       21,    22,    23,    24,    25,    26,    27,    -1,    29,    30,
    3587       31,    32,    -1,    -1,    35,    -1,    37,    -1,    -1,    -1,
     3604      21,    22,    23,    24,    25,    26,    -1,    -1,    29,    30,
     3605      31,    -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,
    35883606      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    35893607      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,
    35903608      -1,    62,    -1,    64,    -1,    -1,    67,    68,    -1,    -1,
    3591       71,     3,     4,     5,     6,     7,     8,     9,    10,    11,
    3592       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3593       22,    23,    24,    25,    26,    -1,    -1,    29,    30,    31,
    3594       -1,    -1,   103,    -1,    -1,    37,    -1,    -1,    -1,    -1,
    3595      111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3596       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,
    3597       62,    -1,    64,    -1,    -1,    67,    68,     4,     5,     6,
    3598        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    3599       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3600       -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,
    3601       37,   103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,
    3602       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3603       -1,    -1,    -1,    60,    -1,    62,    -1,    64,    65,    -1,
    3604       67,    68,    69,    -1,    -1,    -1,    -1,    -1,    -1,    76,
    3605       77,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3606       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3607       -1,    -1,    -1,    -1,   101,    -1,   103,    -1,    -1,    -1,
    3608       -1,    -1,    -1,    -1,   111,     4,     5,     6,     7,     8,
    3609        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3610       19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
    3611       29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,    -1,
    3612       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3613       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3614       -1,    60,    -1,    62,    -1,    64,    -1,    -1,    67,    68,
    3615       -1,    -1,     4,     5,     6,     7,     8,     9,    10,    11,
    3616       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3617       22,    23,    24,    25,    26,    -1,    -1,    29,    30,    31,
    3618       -1,    -1,    -1,   102,   103,    37,    -1,    -1,    -1,    -1,
    3619       -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3620       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,
    3621       62,    -1,    64,    -1,    -1,    67,    68,    -1,    -1,    -1,
    3622       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3623       -1,    -1,    -1,    -1,    -1,    -1,    -1,    89,    -1,    -1,
    3624       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3625       -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,
    36263609       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    36273610      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    36283611      24,    25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,
    3629       -1,    -1,    -1,    37,    10,    11,    12,    13,    14,    15,
    3630       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3631       26,    -1,    -1,    29,    30,    31,    60,    -1,    62,    -1,
    3632       64,    37,    -1,    67,    68,    -1,    -1,    -1,    -1,    -1,
     3612      -1,   102,   103,    37,    -1,    -1,    -1,    -1,    -1,    -1,
     3613     111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3614      -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    62,    -1,
     3615      64,    -1,    -1,    67,    68,    -1,    -1,    -1,    -1,    -1,
    36333616      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3634       -1,    -1,    -1,    -1,    60,    89,    -1,    -1,    -1,    65,
    3635       -1,    67,    68,    -1,    -1,    -1,    -1,    -1,    -1,   103,
     3617      -1,    -1,    -1,    -1,    -1,    89,    -1,    -1,    -1,    -1,
     3618      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   103,
    36363619      -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,     4,     5,
    36373620       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    36383621      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    36393622      26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,
    3640       -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3623      -1,    37,    10,    11,    12,    13,    14,    15,    16,    17,
     3624      18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
     3625      -1,    29,    30,    31,    60,    -1,    62,    -1,    64,    37,
     3626      -1,    67,    68,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    36413627      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3642       -1,    -1,    -1,    -1,    60,    -1,    62,    -1,    64,    -1,
    3643       -1,    67,    68,     4,     5,     6,     7,     8,     9,    10,
     3628      -1,    -1,    60,    89,    -1,    -1,    -1,    65,    -1,    67,
     3629      68,    -1,    -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,
     3630      -1,    -1,    -1,    -1,    -1,   111,     4,     5,     6,     7,
     3631       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     3632      18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
     3633      -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,
     3634      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3635      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3636      -1,    -1,    60,    -1,    62,    -1,    64,    -1,    -1,    67,
     3637      68,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     3638      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3639      23,    24,    25,    26,    -1,    -1,    29,    30,    31,    -1,
     3640      -1,    -1,    -1,    -1,    37,   103,    -1,    -1,    -1,    -1,
     3641      -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,
     3642      -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    62,
     3643      -1,    64,    -1,    -1,    67,    68,     4,     5,     6,     7,
     3644       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     3645      18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
     3646      -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,
     3647     103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,
     3648      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3649      -1,    -1,    60,    -1,    62,    -1,    64,    -1,    -1,    67,
     3650      68,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3651      19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
     3652      29,    30,    31,    -1,    -1,    -1,    -1,    36,    37,    38,
     3653      -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,    -1,    -1,
     3654      -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,
     3655      59,    60,    -1,    -1,    -1,    -1,    65,    -1,    67,    68,
     3656      69,    -1,    -1,    72,    73,    74,    75,    76,    77,    -1,
     3657      79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,
     3658      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3659      -1,    -1,   101,    -1,   103,    -1,    -1,   106,    -1,    -1,
     3660      -1,   110,   111,   112,   113,   114,   115,    10,    11,    12,
     3661      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3662      23,    24,    25,    26,    -1,    -1,    29,    30,    31,    -1,
     3663      -1,    -1,    -1,    36,    37,    38,    -1,    -1,    -1,    -1,
     3664      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3665      -1,    -1,    -1,    -1,    -1,    -1,    59,    60,    -1,    -1,
     3666      -1,    -1,    65,    -1,    67,    68,    69,    -1,    -1,    72,
     3667      73,    74,    75,    76,    77,    -1,    79,    80,    -1,    -1,
     3668      -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,
     3669      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,
     3670     103,   104,    -1,    -1,    -1,    -1,    -1,   110,   111,   112,
     3671     113,   114,   115,    10,    11,    12,    13,    14,    15,    16,
     3672      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3673      -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,    36,
     3674      37,    38,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3675      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3676      -1,    -1,    59,    60,    -1,    -1,    -1,    -1,    65,    -1,
     3677      67,    68,    69,    -1,    -1,    72,    73,    74,    75,    76,
     3678      77,    -1,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,
     3679      87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3680      -1,    -1,    -1,    -1,   101,   102,   103,    -1,    -1,    -1,
     3681      -1,    -1,    -1,   110,   111,   112,   113,   114,   115,    10,
    36443682      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    36453683      21,    22,    23,    24,    25,    26,    -1,    -1,    29,    30,
    3646       31,    -1,    -1,    -1,    -1,    -1,    37,   103,    -1,    -1,
    3647       -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,
    3648       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,
    3649       -1,    62,    -1,    64,    -1,    -1,    67,    68,     4,     5,
    3650        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    3651       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3652       26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,
    3653       -1,    37,   103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3654      111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3655       -1,    -1,    -1,    -1,    60,    -1,    62,    -1,    64,    -1,
    3656       -1,    67,    68,     4,     5,     6,     7,     8,     9,    10,
    3657       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3658       21,    22,    23,    24,    25,    26,    -1,    -1,    29,    30,
    3659       31,    -1,    -1,    -1,    -1,    -1,    37,   103,    -1,    -1,
    3660       -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,
    3661       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,
    3662       -1,    62,    -1,    64,    -1,    -1,    67,    68,    10,    11,
    3663       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3664       22,    23,    24,    25,    26,    -1,    -1,    29,    30,    31,
    3665       -1,    -1,    -1,    -1,    36,    37,    38,    -1,    -1,    -1,
    3666       -1,    -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3667      111,    -1,    -1,    -1,    -1,    -1,    -1,    59,    60,    -1,
    3668       -1,    -1,    -1,    65,    -1,    67,    68,    69,    -1,    -1,
    3669       72,    73,    74,    75,    76,    77,    -1,    79,    80,    -1,
    3670       -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,
    3671       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,
    3672       -1,   103,   104,    -1,    -1,    -1,    -1,    -1,   110,   111,
    3673      112,   113,   114,   115,    10,    11,    12,    13,    14,    15,
    3674       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3675       26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,
    3676       36,    37,    38,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3684      31,    -1,    -1,    -1,    -1,    36,    37,    38,    -1,    -1,
    36773685      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3678       -1,    -1,    -1,    59,    60,    -1,    -1,    -1,    -1,    65,
    3679       -1,    67,    68,    69,    -1,    -1,    72,    73,    74,    75,
    3680       76,    77,    -1,    79,    80,    -1,    -1,    -1,    -1,    -1,
    3681       -1,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3682       -1,    -1,    -1,    -1,    -1,   101,   102,   103,    -1,    -1,
    3683       -1,    -1,    -1,    -1,   110,   111,   112,   113,   114,   115,
    3684       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3685       20,    21,    22,    23,    24,    25,    26,    -1,    -1,    29,
    3686       30,    31,    -1,    -1,    -1,    -1,    36,    37,    38,    -1,
     3686      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    59,    60,
     3687      -1,    -1,    -1,    -1,    65,    -1,    67,    68,    69,    -1,
     3688      -1,    72,    73,    74,    75,    76,    77,    -1,    79,    80,
     3689      -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,
    36873690      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3688       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    59,
    3689       60,    -1,    -1,    -1,    -1,    65,    -1,    67,    68,    69,
    3690       -1,    -1,    72,    73,    74,    75,    76,    77,    -1,    79,
    3691       80,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,
     3691     101,    -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,   110,
     3692     111,   112,   113,   114,   115,    10,    11,    12,    13,    14,
     3693      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3694      25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,
     3695      -1,    36,    37,    38,    -1,    -1,    -1,    -1,    -1,    -1,
    36923696      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3693       -1,   101,    -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,
    3694      110,   111,   112,   113,   114,   115,    10,    11,    12,    13,
    3695       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3696       24,    25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,
    3697       -1,    -1,    36,    37,    38,    -1,    -1,    -1,    -1,    -1,
     3697      -1,    -1,    -1,    -1,    59,    60,    -1,    -1,    -1,    -1,
     3698      65,    -1,    67,    68,    69,    -1,    -1,    72,    73,    74,
     3699      75,    76,    77,    -1,    79,    80,    -1,    -1,    -1,    -1,
     3700      -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3701      -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,   103,    -1,
     3702      -1,    -1,    -1,    -1,    -1,   110,   111,   112,   113,   114,
     3703     115,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3704      19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
     3705      29,    30,    31,    -1,    -1,    -1,    -1,    36,    37,    38,
    36983706      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3699       -1,    -1,    -1,    -1,    -1,    59,    60,    -1,    -1,    -1,
    3700       -1,    65,    -1,    67,    68,    69,    -1,    -1,    72,    73,
    3701       74,    75,    76,    77,    -1,    79,    80,    -1,    -1,    -1,
    3702       -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,    -1,
    3703       -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,   103,
    3704       -1,    -1,    -1,    -1,    -1,    -1,   110,   111,   112,   113,
    3705      114,   115,    10,    11,    12,    13,    14,    15,    16,    17,
    3706       18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
    3707       -1,    29,    30,    31,    -1,    -1,    -1,    -1,    36,    37,
    3708       38,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    37093707      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3710       -1,    59,    60,    -1,    -1,    -1,    -1,    65,    -1,    67,
    3711       68,    69,    -1,    -1,    72,    73,    74,    75,    76,    77,
    3712       -1,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    87,
     3708      59,    60,    -1,    -1,    -1,    -1,    65,    -1,    67,    68,
     3709      69,    -1,    -1,    72,    73,    74,    75,    76,    77,    -1,
     3710      79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,
    37133711      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3714       -1,    -1,    -1,   101,    -1,   103,    -1,    -1,    -1,    -1,
    3715       -1,    -1,   110,   111,   112,   113,   114,   115,    10,    11,
    3716       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3717       22,    23,    24,    25,    26,    -1,    -1,    29,    30,    31,
    3718       -1,    -1,    -1,    -1,    36,    37,    38,    -1,    -1,    -1,
     3712      -1,    -1,   101,    -1,   103,    -1,    -1,    -1,    -1,    -1,
     3713      -1,   110,   111,   112,   113,   114,   115,    10,    11,    12,
     3714      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3715      23,    24,    25,    26,    -1,    -1,    29,    30,    31,    -1,
     3716      -1,    -1,    -1,    36,    37,    38,    -1,    -1,    -1,    -1,
    37193717      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3720       -1,    -1,    -1,    -1,    -1,    -1,    -1,    59,    60,    -1,
    3721       -1,    -1,    -1,    65,    -1,    67,    68,    69,    -1,    -1,
    3722       72,    73,    74,    75,    76,    77,    -1,    79,    80,    -1,
    3723       -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,
    3724       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,
    3725       -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,   110,   111,
    3726      112,   113,   114,   115,     3,     4,     5,     6,     7,     8,
    3727        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3718      -1,    -1,    -1,    -1,    -1,    -1,    59,    60,    -1,    -1,
     3719      -1,    -1,    65,    -1,    67,    68,    69,    -1,    -1,    72,
     3720      73,    74,    75,    76,    77,    -1,    79,    80,    -1,    -1,
     3721      -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,
     3722      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,
     3723     103,    -1,    -1,    -1,    -1,    -1,    -1,   110,   111,   112,
     3724     113,   114,   115,    10,    11,    12,    13,    14,    15,    16,
     3725      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3726      27,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,
     3727      37,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3728      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3729      -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    65,    -1,
     3730      67,    68,    69,    -1,    71,    -1,    -1,    -1,    -1,    76,
     3731      77,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    37283732      19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
    3729       29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,    10,
    3730       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3731       21,    22,    23,    24,    25,    26,    27,    -1,    29,    30,
    3732       31,    60,    -1,    62,    -1,    64,    37,    -1,    67,    68,
    3733       -1,    -1,    10,    11,    12,    13,    14,    15,    16,    17,
    3734       18,    19,    20,    21,    22,    23,    24,    25,    26,    60,
    3735       -1,    29,    30,    31,    65,    -1,    67,    68,    69,    37,
    3736       71,    -1,    -1,    -1,    -1,    76,    77,   106,    -1,    -1,
    3737       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3738       -1,    -1,    60,    -1,    -1,    -1,    -1,    65,    -1,    67,
    3739       68,    69,   103,    -1,    -1,    -1,    -1,    -1,    76,    77,
    3740      111,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3741       19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
    3742       29,    30,    31,   101,    -1,   103,    -1,    -1,    37,    -1,
    3743       -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,
     3733      29,    30,    31,    -1,   101,    -1,   103,    -1,    37,    -1,
     3734      -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
    37443735      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    37453736      -1,    60,    -1,    -1,    -1,    -1,    65,    -1,    67,    68,
     
    37673758      -1,    76,    77,    10,    11,    12,    13,    14,    15,    16,
    37683759      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3769       27,    -1,    29,    30,    31,    -1,    -1,    -1,   103,    -1,
     3760      -1,    -1,    29,    30,    31,    -1,   101,    -1,   103,    -1,
    37703761      37,    -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,
    37713762      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3763      -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    65,    -1,
     3764      67,    68,    69,    -1,    -1,    -1,    -1,    -1,    -1,    76,
     3765      77,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3766      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
     3767      29,    30,    31,    -1,    -1,    -1,   103,    -1,    37,    -1,
     3768      -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
     3769      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3770      -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,    67,    68,
     3771      -1,    -1,    71,    10,    11,    12,    13,    14,    15,    16,
     3772      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3773      27,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,
     3774      37,    -1,   101,    -1,   103,    -1,    -1,    -1,    -1,    -1,
     3775      -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    37723776      -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,
    37733777      67,    68,    -1,    -1,    71,    10,    11,    12,    13,    14,
    37743778      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3775       25,    26,    27,    -1,    29,    30,    31,    -1,    -1,    -1,
    3776       -1,    -1,    37,    -1,   101,    -1,   103,    -1,    -1,    -1,
     3779      25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,
     3780      -1,    -1,    37,    38,   101,    -1,   103,    -1,    -1,    -1,
    37773781      -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
    37783782      -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,
    3779       -1,    -1,    67,    68,    -1,    -1,    71,    10,    11,    12,
    3780       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3781       23,    24,    25,    26,    -1,    -1,    29,    30,    31,    -1,
    3782       -1,    -1,    -1,    -1,    37,    38,   101,    -1,   103,    -1,
    3783       -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,
    3784       -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,
    3785       -1,    -1,    -1,    -1,    67,    68,    10,    11,    12,    13,
    3786       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3787       24,    25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,
    3788       -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,
    3789      103,    -1,    -1,    -1,   107,    -1,    -1,    -1,   111,    -1,
    3790       -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,
    3791       -1,    65,    -1,    67,    68,    10,    11,    12,    13,    14,
     3783      -1,    -1,    67,    68,    10,    11,    12,    13,    14,    15,
     3784      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3785      26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,
     3786      -1,    37,    38,    -1,    -1,    -1,    -1,    -1,   103,    -1,
     3787      -1,    -1,   107,    -1,    -1,    -1,   111,    -1,    -1,    -1,
     3788      -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,
     3789      -1,    67,    68,    10,    11,    12,    13,    14,    15,    16,
     3790      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3791      27,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,
     3792      37,    -1,    -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,
     3793      -1,   107,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,
     3794      -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,
     3795      67,    68,    -1,    -1,    71,    10,    11,    12,    13,    14,
    37923796      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    37933797      25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,
    3794       -1,    -1,    37,    38,    -1,    -1,    -1,    -1,    -1,   103,
    3795       -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,
     3798      -1,    -1,    37,    38,    -1,    -1,   103,    -1,    -1,    -1,
     3799      -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
    37963800      -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,
    37973801      -1,    -1,    67,    68,    10,    11,    12,    13,    14,    15,
     
    37993803      26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,
    38003804      -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,   103,    -1,
    3801       -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,
    3802       -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,
     3805      -1,    -1,   107,    -1,    -1,    -1,   111,    -1,    -1,    -1,
     3806      -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    65,
    38033807      -1,    67,    68,    10,    11,    12,    13,    14,    15,    16,
    38043808      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    38053809      -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,
    3806       37,    -1,    -1,    -1,    -1,   101,    -1,   103,    -1,    -1,
     3810      37,    38,    -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,
    38073811      -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,
    38083812      -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,
     
    38103814      18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
    38113815      -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,
    3812       -1,    -1,    -1,    -1,   101,    -1,   103,    -1,    -1,    -1,
     3816      -1,    -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,    -1,
    38133817      -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
    38143818      -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,    67,
     
    38163820      19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
    38173821      29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,    -1,
    3818       -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,    -1,    -1,
     3822      -1,    -1,    -1,   101,    -1,   103,    -1,    -1,    -1,    -1,
    38193823      -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,
    38203824      -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,    67,    68,
     
    38223826      20,    21,    22,    23,    24,    25,    26,    -1,    -1,    29,
    38233827      30,    31,    -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,
    3824       -1,    -1,    -1,    -1,   103,    -1,    -1,    -1,    -1,    -1,
     3828      -1,    -1,   101,    -1,   103,    -1,    -1,    -1,    -1,    -1,
    38253829      -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    38263830      60,    -1,    -1,    -1,    -1,    -1,    -1,    67,    68,    10,
     
    38723876      -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
    38733877      -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,    67,
    3874       68,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    3875       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3876       23,    24,    25,    26,    -1,    -1,    29,    30,    31,    -1,
    3877       -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,    -1,
     3878      68,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3879      19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
     3880      29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,    -1,
     3881      -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,    -1,    -1,
    38783882      -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,
    3879       -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    62,
    3880       -1,    64,    -1,    -1,    67,    68,    -1,    36,    -1,    38,
    3881       39,    -1,    41,    -1,    -1,    44,    45,    46,    47,    48,
    3882       49,    50,    51,    52,    53,    -1,    -1,    56,    57,    -1,
    3883       59,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,   102,
     3883      -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,    67,    68,
     3884       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     3885      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     3886      24,    25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,
     3887      -1,    -1,    -1,    37,   103,    -1,    -1,    -1,    -1,    -1,
     3888      -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3889      -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    62,    -1,
     3890      64,    -1,    -1,    67,    68,    -1,    36,    -1,    38,    39,
     3891      -1,    41,    -1,    -1,    44,    45,    46,    47,    48,    49,
     3892      50,    51,    52,    53,    -1,    -1,    56,    57,    -1,    59,
     3893      -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,   102,    69,
     3894      -1,    -1,    72,    73,    74,    75,    76,    77,    -1,    79,
     3895      80,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,
     3896      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3897      -1,   101,    -1,   103,    -1,    -1,   106,    -1,    -1,    -1,
     3898     110,   111,   112,   113,   114,   115,    -1,    36,    -1,    38,
     3899      39,    -1,    41,    -1,   124,    44,    45,    46,    47,    48,
     3900      49,    50,    51,    -1,    53,    -1,    -1,    56,    57,    -1,
     3901      59,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,
    38843902      69,    -1,    -1,    72,    73,    74,    75,    76,    77,    -1,
    38853903      79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,
    38863904      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    38873905      -1,    -1,   101,    -1,   103,    -1,    -1,   106,    -1,    -1,
    3888       -1,   110,   111,   112,   113,   114,   115,    -1,    36,    -1,
    3889       38,    39,    -1,    41,    -1,   124,    44,    45,    46,    47,
    3890       48,    49,    50,    51,    -1,    53,    -1,    -1,    56,    57,
    3891       -1,    59,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,
    3892       -1,    69,    -1,    -1,    72,    73,    74,    75,    76,    77,
    3893       -1,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    87,
    3894       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3895       -1,    -1,    -1,   101,    -1,   103,    -1,    -1,   106,    -1,
    3896       -1,    -1,   110,   111,   112,   113,   114,   115,    -1,    -1,
    3897       -1,    -1,    -1,    -1,    -1,    -1,   124,     4,     5,     6,
    3898        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    3899       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3900       -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,
    3901       37,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3902       19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
    3903       29,    30,    31,    60,    -1,    62,    -1,    64,    37,    -1,
    3904       67,    68,    -1,    36,    -1,    38,    39,    -1,    41,    42,
    3905       43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
    3906       53,    60,    89,    56,    57,    -1,    59,    -1,    67,    68,
    3907       -1,    -1,    65,    -1,    -1,    -1,    69,    -1,    -1,    72,
    3908       73,    74,    75,    76,    77,    -1,    79,    80,    -1,    -1,
    3909       -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,
    3910       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,
    3911      103,    -1,    -1,   106,    -1,    -1,    -1,   110,   111,   112,
    3912      113,   114,   115,    36,    -1,    38,    39,    -1,    41,    42,
    3913       43,    44,    45,    46,    47,    48,    49,    50,    51,    -1,
    3914       53,    -1,    -1,    56,    57,    -1,    59,    -1,    -1,    -1,
    3915       -1,    -1,    65,    -1,    -1,    -1,    69,    -1,    -1,    72,
    3916       73,    74,    75,    76,    77,    -1,    79,    80,    -1,    -1,
    3917       -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,
    3918       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,
    3919      103,    -1,    -1,   106,    -1,    -1,    -1,   110,   111,   112,
    3920      113,   114,   115,    36,    -1,    38,    39,    -1,    41,    -1,
    3921       -1,    44,    45,    46,    47,    48,    49,    50,    51,    -1,
    3922       53,    -1,    -1,    56,    57,    -1,    59,    -1,    -1,    -1,
     3906      -1,   110,   111,   112,   113,   114,   115,    -1,    -1,    -1,
     3907      -1,    -1,    -1,    -1,    -1,   124,     4,     5,     6,     7,
     3908       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     3909      18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
     3910      -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,
     3911      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3912      20,    21,    22,    23,    24,    25,    26,    -1,    -1,    29,
     3913      30,    31,    60,    -1,    62,    -1,    64,    37,    -1,    67,
     3914      68,    -1,    36,    -1,    38,    39,    -1,    41,    42,    43,
     3915      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
     3916      60,    89,    56,    57,    -1,    59,    -1,    67,    68,    -1,
     3917      -1,    65,    -1,    -1,    -1,    69,    -1,    -1,    72,    73,
     3918      74,    75,    76,    77,    -1,    79,    80,    -1,    -1,    -1,
     3919      -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,    -1,
     3920      -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,   103,
     3921      -1,    -1,   106,    -1,    -1,    -1,   110,   111,   112,   113,
     3922     114,   115,    36,    -1,    38,    39,    -1,    41,    42,    43,
     3923      44,    45,    46,    47,    48,    49,    50,    51,    -1,    53,
     3924      -1,    -1,    56,    57,    -1,    59,    -1,    -1,    -1,    -1,
     3925      -1,    65,    -1,    -1,    -1,    69,    -1,    -1,    72,    73,
     3926      74,    75,    76,    77,    -1,    79,    80,    -1,    -1,    -1,
     3927      -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,    36,
     3928      -1,    38,    -1,    -1,    -1,    -1,    -1,   101,    -1,   103,
     3929      -1,    -1,   106,    -1,    -1,    -1,   110,   111,   112,   113,
     3930     114,   115,    59,    -1,    -1,    -1,    -1,    -1,    65,    -1,
     3931      -1,    -1,    69,    -1,    -1,    72,    73,    74,    75,    76,
     3932      77,    -1,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,
     3933      87,    -1,    -1,    -1,    -1,    -1,    36,    -1,    38,    -1,
     3934      -1,    -1,    -1,    -1,   101,    -1,   103,    -1,    -1,    -1,
     3935      -1,    -1,   109,   110,   111,   112,   113,   114,   115,    59,
     3936      -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,    69,
     3937      -1,    -1,    72,    73,    74,    75,    76,    77,    -1,    79,
     3938      80,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,
     3939      -1,    -1,    -1,    36,    -1,    38,    -1,    -1,    -1,    -1,
     3940      -1,   101,    -1,   103,    -1,    -1,   106,    -1,    -1,    -1,
     3941     110,   111,   112,   113,   114,   115,    59,    -1,    -1,    -1,
    39233942      -1,    -1,    65,    -1,    -1,    -1,    69,    -1,    -1,    72,
    39243943      73,    74,    75,    76,    77,    -1,    79,    80,    -1,    -1,
    39253944      -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,
    39263945      36,    -1,    38,    -1,    -1,    -1,    -1,    -1,   101,    -1,
    3927      103,    -1,    -1,   106,    -1,    -1,    -1,   110,   111,   112,
     3946     103,    -1,    -1,    -1,    -1,    -1,    -1,   110,   111,   112,
    39283947     113,   114,   115,    59,    -1,    -1,    -1,    -1,    -1,    65,
    39293948      -1,    -1,    -1,    69,    -1,    -1,    72,    73,    74,    75,
     
    39313950      -1,    87,    -1,    -1,    -1,    -1,    -1,    36,    -1,    38,
    39323951      -1,    -1,    -1,    -1,    -1,   101,    -1,   103,    -1,    -1,
    3933       -1,    -1,   108,    -1,   110,   111,   112,   113,   114,   115,
     3952      -1,    -1,    -1,    -1,   110,   111,   112,   113,   114,   115,
    39343953      59,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,
    39353954      69,    -1,    -1,    72,    73,    74,    75,    76,    77,    -1,
     
    39473966      75,    76,    77,    -1,    79,    80,    -1,    -1,    -1,    -1,
    39483967      -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,    36,    -1,
    3949       38,    -1,    -1,    -1,    -1,    -1,   101,    -1,   103,    -1,
     3968      38,    -1,    -1,    -1,    -1,    -1,   101,    -1,    -1,    -1,
    39503969      -1,    -1,    -1,    -1,    -1,   110,   111,   112,   113,   114,
    39513970     115,    59,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,
     
    39533972      -1,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    87,
    39543973      -1,    -1,    -1,    -1,    -1,    36,    -1,    38,    -1,    -1,
    3955       -1,    -1,    -1,   101,    -1,   103,    -1,    -1,    -1,    -1,
     3974      -1,    -1,    -1,   101,    -1,    -1,    -1,    -1,    -1,    -1,
    39563975      -1,    -1,   110,   111,   112,   113,   114,   115,    59,    -1,
    39573976      -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,    69,    -1,
     
    39633982      -1,    65,    -1,    -1,    -1,    69,    -1,    -1,    72,    73,
    39643983      74,    75,    76,    77,    -1,    79,    80,    -1,    -1,    -1,
    3965       -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,    36,
    3966       -1,    38,    -1,    -1,    -1,    -1,    -1,   101,    -1,    -1,
     3984      -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,    -1,
     3985      -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,    -1,
    39673986      -1,    -1,    -1,    -1,    -1,    -1,   110,   111,   112,   113,
    3968      114,   115,    59,    -1,    -1,    -1,    -1,    -1,    65,    -1,
    3969       -1,    -1,    69,    -1,    -1,    72,    73,    74,    75,    76,
    3970       77,    -1,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,
    3971       87,    -1,    -1,    -1,    -1,    -1,    36,    -1,    38,    -1,
    3972       -1,    -1,    -1,    -1,   101,    -1,    -1,    -1,    -1,    -1,
    3973       -1,    -1,    -1,   110,   111,   112,   113,   114,   115,    59,
    3974       -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,    69,
    3975       -1,    -1,    72,    73,    74,    75,    76,    77,    -1,    79,
    3976       80,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,
     3987     114,   115,     4,     5,     6,     7,     8,     9,    10,    11,
     3988      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3989      22,    23,    24,    25,    26,    -1,    -1,    -1,    -1,    -1,
     3990      -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,
    39773991      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3978       -1,   101,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3979      110,   111,   112,   113,   114,   115,     4,     5,     6,     7,
    3980        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    3981       18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
    3982       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    37,
    3983       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3984       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3985       -1,    -1,    60,    -1,    62,    -1,    64,    65,    -1,    67,
    3986       68,    69,    -1,    -1,    -1,    -1,    -1,    -1,    76,    77,
    3987        3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    3988       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3989       23,    24,    25,    26,    -1,    -1,    29,    30,    31,    -1,
    3990       -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,    -1,
    3991       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3992       -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    62,
    3993       -1,    64,    -1,    -1,    67,    68,     3,     4,     5,     6,
     3992      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,
     3993      62,    -1,    64,    65,    -1,    67,    68,    69,    -1,    -1,
     3994      -1,    -1,    -1,    -1,    76,    77,     3,     4,     5,     6,
    39943995       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    39953996      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     
    39983999      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    39994000      -1,    -1,    -1,    60,    -1,    62,    -1,    64,    -1,    -1,
    4000       67,    68,     4,     5,     6,     7,     8,     9,    10,    11,
    4001       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    4002       22,    23,    24,    25,    26,    -1,    -1,    29,    30,    31,
    4003       -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,
     4001      67,    68,     3,     4,     5,     6,     7,     8,     9,    10,
     4002      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     4003      21,    22,    23,    24,    25,    26,    -1,    -1,    29,    30,
     4004      31,    -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,
    40044005      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4005       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,
    4006       62,    -1,    64,    -1,    -1,    67,    68,    10,    11,    12,
    4007       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    4008       23,    24,    25,    26,    -1,    -1,    29,    30,    31,    32,
    4009       33,    34,    -1,    -1,    37,    10,    11,    12,    13,    14,
    4010       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    4011       25,    26,    -1,    -1,    29,    30,    31,    60,    -1,    -1,
    4012       -1,    -1,    37,    -1,    67,    68,    -1,    -1,    -1,    -1,
     4006      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,
     4007      -1,    62,    -1,    64,    -1,    -1,    67,    68,     4,     5,
     4008       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     4009      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     4010      26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,
     4011      -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    40134012      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4014       -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,
    4015       -1,    -1,    67,    68
     4013      -1,    -1,    -1,    -1,    60,    -1,    62,    -1,    64,    -1,
     4014      -1,    67,    68,    10,    11,    12,    13,    14,    15,    16,
     4015      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     4016      -1,    -1,    29,    30,    31,    32,    33,    34,    -1,    -1,
     4017      37,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     4018      19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
     4019      29,    30,    31,    60,    -1,    -1,    -1,    -1,    37,    -1,
     4020      67,    68,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4021      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4022      -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,    67,    68
    40164023};
    40174024
     
    40244031      22,    23,    24,    25,    26,    29,    30,    31,    32,    35,
    40254032      37,    38,    57,    60,    62,    64,    65,    67,    68,    69,
    4026       76,    77,   101,   103,   111,   129,   132,   189,   201,   202,
    4027      203,   204,   205,   206,   207,   208,   209,   210,   211,   212,
    4028      213,   214,   215,   216,   217,   218,   220,   221,   222,   223,
    4029      224,   225,   226,   227,   229,   230,   231,   232,   233,   234,
    4030      235,   243,   244,   270,   271,   272,   280,   283,   289,   290,
    4031      292,   294,   295,   301,   306,   310,   311,   312,   313,   314,
    4032      315,   316,   317,   337,   354,   355,   356,   357,    65,   111,
    4033      131,   204,   206,   214,   216,   226,   230,   232,   271,    75,
    4034      101,   299,   300,   301,   299,   299,    65,    67,    68,    69,
    4035      130,   131,   260,   261,   281,   282,    67,    68,   261,   101,
    4036      292,   215,   216,   101,   111,   306,   311,   312,   313,   315,
    4037      316,   317,   104,   126,   103,   207,   214,   216,   310,   314,
    4038      353,   354,   357,   358,   127,   123,   264,   106,   127,   164,
    4039       67,    68,   129,   259,   127,   127,   127,   108,   127,    67,
    4040       68,   101,   111,   296,   305,   306,   307,   308,   309,   310,
    4041      314,   318,   319,   320,   321,   322,   328,     3,    27,    71,
    4042      228,     3,     5,    67,   103,   111,   206,   217,   221,   224,
    4043      233,   272,   310,   314,   357,   204,   206,   216,   226,   230,
    4044      232,   271,   310,   314,    32,   222,   222,   217,   224,   127,
    4045      222,   217,   222,   217,    68,   101,   106,   261,   272,   106,
    4046      261,   222,   217,   108,   127,   127,     0,   126,   101,   164,
    4047      299,   299,   126,   103,   214,   216,   355,   259,   259,   216,
    4048      123,   101,   111,   296,   306,   310,   103,   111,   357,   293,
    4049      219,   301,   101,   277,   101,   101,   101,    36,    38,    59,
    4050       65,    69,    72,    73,    74,    75,    79,    80,    87,   101,
    4051      103,   110,   111,   112,   113,   114,   115,   128,   132,   133,
    4052      134,   135,   140,   141,   142,   143,   144,   145,   146,   147,
    4053      148,   149,   150,   151,   152,   153,   155,   157,   214,   263,
    4054      279,   353,   358,   216,   102,   102,   102,   102,   102,   102,
    4055      102,    67,    68,   103,   214,   259,   337,   355,   103,   111,
    4056      155,   206,   207,   213,   216,   220,   221,   226,   229,   230,
    4057      232,   249,   250,   254,   255,   256,   257,   271,   337,   349,
    4058      350,   351,   352,   357,   358,   104,   101,   310,   314,   357,
    4059      101,   108,   124,   103,   106,   111,   155,   265,   107,   126,
    4060      108,   124,   101,   108,   124,   108,   124,   108,   124,   299,
    4061      124,   306,   307,   308,   309,   319,   320,   321,   322,   216,
    4062      305,   318,    57,   298,   103,   299,   336,   337,   299,   299,
    4063      164,   126,   101,   299,   336,   299,   299,   216,   296,   101,
    4064      101,   215,   214,   216,   104,   126,   214,   353,   358,   164,
    4065      126,   259,   264,   206,   221,   310,   314,   164,   126,   281,
    4066      216,   226,   124,   216,   216,   279,    38,   103,   214,   236,
    4067      237,   238,   239,   353,   357,   106,   245,   261,   106,   216,
    4068      281,   124,   124,   292,   126,   131,   258,     3,   127,   196,
    4069      197,   211,   213,   216,   126,   298,   101,   298,   155,   306,
    4070      216,   101,   126,   259,   106,    32,    33,    34,   214,   273,
    4071      274,   276,   126,   121,   123,   278,   126,   217,   223,   224,
    4072      259,   302,   303,   304,   140,   153,   154,   101,   140,   142,
    4073      101,   140,   101,   101,   140,   140,   131,   103,   155,   160,
    4074      164,   214,   262,   353,   104,   126,   142,   142,    75,    78,
    4075       79,    80,   101,   103,   105,    90,    91,    92,    93,    94,
    4076       95,    96,    97,    98,    99,   123,   159,   142,   111,   116,
    4077      117,   113,   114,    81,    82,    83,    84,   118,   119,    85,
    4078       86,   112,   120,   121,    87,    88,   122,   123,   360,   101,
    4079      111,   332,   333,   334,   335,   336,   102,   108,   101,   336,
    4080      337,   101,   336,   337,   126,   101,   214,   355,   104,   126,
    4081      103,   111,   127,   214,   216,   348,   349,   357,   358,   127,
    4082      101,   103,   111,   306,   323,   324,   325,   326,   327,   328,
    4083      329,   330,   331,   337,   338,   339,   340,   341,   342,   343,
    4084      111,   357,   216,   127,   127,   111,   214,   216,   350,   259,
    4085      214,   337,   350,   259,   101,   126,   126,   126,   104,   126,
    4086       65,   103,   105,   261,   265,   266,   267,   268,   269,   126,
    4087      126,   126,   126,   126,   126,   296,   102,   102,   102,   102,
    4088      102,   102,   102,   305,   318,   101,   264,   104,   196,   126,
    4089      296,   160,   263,   160,   263,   296,   103,   196,   298,   164,
    4090      126,   196,   102,   238,   239,   104,   126,   101,   109,   111,
    4091      240,   242,   305,   306,   318,   336,   344,   345,   346,   347,
    4092      107,   237,   108,   124,   108,   124,   261,   236,   108,   359,
    4093      123,   246,   245,   216,   251,   252,   253,   256,   257,   102,
    4094      108,   164,   126,   111,   155,   126,   213,   216,   250,   349,
    4095      357,   290,   291,   101,   111,   323,   102,   108,   360,   261,
    4096      273,   101,   106,   261,   263,   273,   102,   108,   101,   102,
    4097      109,   262,   262,   103,   131,   137,   155,   263,   262,   104,
    4098      126,   102,   108,   102,   101,   111,   344,   102,   108,   155,
    4099      103,   131,   103,   136,   137,   126,   103,   131,   155,   155,
    4100      142,   142,   142,   143,   143,   144,   144,   145,   145,   145,
    4101      145,   146,   146,   147,   148,   149,   150,   151,   109,   160,
    4102      155,   126,   333,   334,   335,   216,   332,   299,   299,   155,
    4103      263,   126,   258,   111,   126,   214,   337,   350,   216,   220,
    4104      104,   126,   104,   357,   104,   101,   126,   306,   324,   325,
    4105      326,   329,   339,   340,   341,   104,   126,   216,   323,   327,
    4106      338,   101,   299,   342,   360,   299,   299,   360,   101,   299,
    4107      342,   299,   299,   299,   299,   337,   214,   348,   358,   259,
    4108      104,   108,   104,   108,   360,   214,   350,   360,   247,   248,
    4109      249,   250,   247,   247,   259,   155,   126,   103,   261,   109,
    4110      108,   359,   265,   103,   109,   269,    28,   198,   199,   259,
    4111      247,   131,   296,   131,   298,   101,   336,   337,   101,   336,
    4112      337,   133,   337,   164,   251,   102,   102,   102,   102,   104,
    4113      164,   196,   164,   106,   124,   124,   103,   306,   345,   346,
    4114      347,   154,   216,   344,   241,   242,   241,   299,   299,   261,
    4115      299,   107,   261,   107,   154,   359,   127,   127,   131,   211,
    4116      127,   127,   247,   101,   111,   357,   127,   107,   216,   274,
    4117      275,   127,   126,   126,   101,   127,   102,   303,   160,   161,
    4118      124,    75,   190,   191,   192,   102,   102,   126,   109,   102,
    4119      102,   102,   155,   216,   106,   142,   157,   155,   156,   158,
    4120      108,   127,   126,   126,   102,   108,   155,   126,   153,   109,
    4121      251,   102,   102,   102,   332,   251,   102,   247,   214,   350,
    4122      103,   111,   155,   155,   216,   329,   251,   102,   102,   102,
    4123      102,   102,   102,   102,     7,   216,   323,   327,   338,   126,
    4124      126,   360,   126,   126,   102,   127,   127,   127,   127,   264,
    4125      127,   153,   154,   155,   297,   126,   265,   267,   107,   126,
    4126      200,   261,    38,    39,    41,    44,    45,    46,    47,    48,
    4127       49,    50,    51,    53,    56,   103,   131,   161,   162,   163,
    4128      164,   165,   166,   168,   169,   181,   183,   184,   189,   201,
    4129      295,    28,   127,   123,   264,   126,   126,   102,   127,   164,
    4130      236,   104,   102,   102,   102,   344,   240,   246,   107,   102,
    4131      108,   104,   104,   127,   216,   108,   360,   277,   102,   273,
    4132      204,   206,   214,   285,   286,   287,   288,   279,   102,   102,
    4133      101,   102,   109,   108,   155,   155,   266,   108,   127,   158,
     4033      76,    77,   101,   103,   111,   129,   132,   189,   203,   204,
     4034     205,   206,   207,   208,   209,   210,   211,   212,   213,   214,
     4035     215,   216,   217,   218,   219,   220,   222,   223,   224,   225,
     4036     226,   227,   228,   229,   231,   232,   233,   234,   235,   236,
     4037     237,   245,   246,   272,   273,   274,   282,   285,   291,   292,
     4038     294,   296,   297,   303,   308,   312,   313,   314,   315,   316,
     4039     317,   318,   319,   339,   356,   357,   358,   359,    65,   111,
     4040     131,   206,   208,   216,   218,   228,   232,   234,   273,    75,
     4041     101,   301,   302,   303,   301,   301,    65,    67,    68,    69,
     4042     130,   131,   262,   263,   283,   284,    67,    68,   263,   101,
     4043     294,    11,   190,   101,   111,   308,   313,   314,   315,   317,
     4044     318,   319,   104,   126,   103,   209,   216,   218,   312,   316,
     4045     355,   356,   359,   360,   127,   123,   266,   106,   127,   164,
     4046      67,    68,   129,   261,   127,   127,   127,   108,   127,    67,
     4047      68,   101,   111,   298,   307,   308,   309,   310,   311,   312,
     4048     316,   320,   321,   322,   323,   324,   330,     3,    27,    71,
     4049     230,     3,     5,    67,   103,   111,   208,   219,   223,   226,
     4050     235,   274,   312,   316,   359,   206,   208,   218,   228,   232,
     4051     234,   273,   312,   316,    32,   224,   224,   219,   226,   127,
     4052     224,   219,   224,   219,    68,   101,   106,   263,   274,   106,
     4053     263,   224,   219,   108,   127,   127,     0,   126,   101,   164,
     4054     301,   301,   126,   103,   216,   218,   357,   261,   261,   218,
     4055     123,   101,   111,   298,   308,   312,   103,   111,   359,   295,
     4056     221,   303,   101,   279,   101,   101,    49,   101,    36,    38,
     4057      59,    65,    69,    72,    73,    74,    75,    79,    80,    87,
     4058     101,   103,   110,   111,   112,   113,   114,   115,   128,   132,
     4059     133,   134,   135,   140,   141,   142,   143,   144,   145,   146,
     4060     147,   148,   149,   150,   151,   152,   153,   155,   157,   216,
     4061     265,   281,   355,   360,   218,   102,   102,   102,   102,   102,
     4062     102,   102,    67,    68,   103,   216,   261,   339,   357,   103,
     4063     111,   155,   208,   209,   215,   218,   222,   223,   228,   231,
     4064     232,   234,   251,   252,   256,   257,   258,   259,   273,   339,
     4065     351,   352,   353,   354,   359,   360,   104,   101,   312,   316,
     4066     359,   101,   108,   124,   103,   106,   111,   155,   267,   107,
     4067     126,   108,   124,   101,   108,   124,   108,   124,   108,   124,
     4068     301,   124,   308,   309,   310,   311,   321,   322,   323,   324,
     4069     218,   307,   320,    57,   300,   103,   301,   338,   339,   301,
     4070     301,   164,   126,   101,   301,   338,   301,   301,   218,   298,
     4071     101,   101,   217,   218,   216,   218,   104,   126,   216,   355,
     4072     360,   164,   126,   261,   266,   208,   223,   312,   316,   164,
     4073     126,   283,   218,   228,   124,   218,   218,   281,    38,   103,
     4074     216,   238,   239,   240,   241,   355,   359,   106,   247,   263,
     4075     106,   218,   283,   124,   124,   294,   126,   131,   260,     3,
     4076     127,   198,   199,   213,   215,   218,   126,   300,   101,   300,
     4077     155,   308,   218,   101,   126,   261,   106,    32,    33,    34,
     4078     216,   275,   276,   278,   126,   121,   123,   280,   126,   219,
     4079     225,   226,   261,   304,   305,   306,   101,   133,   101,   140,
     4080     140,   142,   101,   140,   101,   101,   140,   140,   131,   103,
     4081     155,   160,   164,   216,   264,   355,   104,   126,   142,   142,
     4082      75,    78,    79,    80,   101,   103,   105,    90,    91,    92,
     4083      93,    94,    95,    96,    97,    98,    99,   123,   159,   142,
     4084     111,   116,   117,   113,   114,    81,    82,    83,    84,   118,
     4085     119,    85,    86,   112,   120,   121,    87,    88,   122,   123,
     4086     362,   101,   111,   334,   335,   336,   337,   338,   102,   108,
     4087     101,   338,   339,   101,   338,   339,   126,   101,   216,   357,
     4088     104,   126,   103,   111,   127,   216,   218,   350,   351,   359,
     4089     360,   127,   101,   103,   111,   308,   325,   326,   327,   328,
     4090     329,   330,   331,   332,   333,   339,   340,   341,   342,   343,
     4091     344,   345,   111,   359,   218,   127,   127,   111,   216,   218,
     4092     352,   261,   216,   339,   352,   261,   101,   126,   126,   126,
     4093     104,   126,    65,    73,   103,   105,   263,   267,   268,   269,
     4094     270,   271,   126,   126,   126,   126,   126,   126,   298,   102,
     4095     102,   102,   102,   102,   102,   102,   307,   320,   101,   266,
     4096     104,   198,   126,   298,   160,   265,   160,   265,   298,   103,
     4097     198,   300,   164,   126,   198,   102,   240,   241,   104,   126,
     4098     101,   109,   111,   242,   244,   307,   308,   320,   338,   346,
     4099     347,   348,   349,   107,   239,   108,   124,   108,   124,   263,
     4100     238,   108,   361,   123,   248,   247,   218,   253,   254,   255,
     4101     258,   259,   102,   108,   164,   126,   111,   155,   126,   215,
     4102     218,   252,   351,   359,   292,   293,   101,   111,   325,   102,
     4103     108,   362,   263,   275,   101,   106,   263,   265,   275,   102,
     4104     108,   101,   133,   102,   109,   264,   264,   103,   131,   137,
     4105     155,   265,   264,   104,   126,   102,   108,   102,   101,   111,
     4106     346,   102,   108,   155,   103,   131,   103,   136,   137,   126,
     4107     103,   131,   155,   155,   142,   142,   142,   143,   143,   144,
     4108     144,   145,   145,   145,   145,   146,   146,   147,   148,   149,
     4109     150,   151,   109,   160,   155,   126,   335,   336,   337,   218,
     4110     334,   301,   301,   155,   265,   126,   260,   111,   126,   216,
     4111     339,   352,   218,   222,   104,   126,   104,   359,   104,   101,
     4112     126,   308,   326,   327,   328,   331,   341,   342,   343,   104,
     4113     126,   218,   325,   329,   340,   101,   301,   344,   362,   301,
     4114     301,   362,   101,   301,   344,   301,   301,   301,   301,   339,
     4115     216,   350,   360,   261,   104,   108,   104,   108,   362,   216,
     4116     352,   362,   249,   250,   251,   252,   249,   249,   261,   155,
     4117     126,   103,   263,   109,   108,   361,   267,    73,   103,   109,
     4118     271,    28,   200,   201,   261,   249,   131,   298,   131,   300,
     4119     101,   338,   339,   101,   338,   339,   133,   339,   164,   253,
     4120     102,   102,   102,   102,   104,   164,   198,   164,   106,   124,
     4121     124,   103,   308,   347,   348,   349,   153,   154,   218,   346,
     4122     243,   244,   243,   301,   301,   263,   301,   107,   263,   107,
     4123     154,   361,   127,   127,   131,   213,   127,   127,   249,   101,
     4124     111,   359,   127,   107,   218,   276,   277,   127,   126,   126,
     4125     101,   127,   102,   305,   160,   161,   109,   124,   103,   133,
     4126     191,   192,   193,   102,   102,   126,   109,   102,   102,   102,
     4127     155,   218,   106,   142,   157,   155,   156,   158,   108,   127,
     4128     126,   126,   102,   108,   155,   126,   153,   109,   253,   102,
     4129     102,   102,   334,   253,   102,   249,   216,   352,   103,   111,
     4130     155,   155,   218,   331,   253,   102,   102,   102,   102,   102,
     4131     102,   102,     7,   218,   325,   329,   340,   126,   126,   362,
     4132     126,   126,   102,   127,   127,   127,   127,   266,   127,   153,
     4133     154,   155,   299,   126,   267,   269,   107,   126,   202,   263,
     4134      38,    39,    41,    44,    45,    46,    47,    48,    49,    50,
     4135      51,    53,    56,   103,   131,   161,   162,   163,   164,   165,
     4136     166,   168,   169,   181,   183,   184,   189,   203,   297,    28,
     4137     127,   123,   266,   126,   126,   102,   127,   164,   238,   104,
     4138     102,   102,   102,   346,   242,   248,   107,   102,   108,   104,
     4139     104,   127,   218,   108,   362,   279,   102,   275,   206,   208,
     4140     216,   287,   288,   289,   290,   281,   102,   102,   109,   154,
     4141     101,   102,   109,   108,   155,   155,   268,   108,   127,   158,
    41344142     104,   131,   138,   139,   155,   137,   127,   138,   153,   157,
    4135      127,   101,   336,   337,   127,   127,   126,   127,   127,   127,
    4136      155,   102,   127,   101,   336,   337,   101,   342,   101,   342,
    4137      337,   215,     7,   111,   127,   155,   251,   251,   250,   254,
    4138      254,   255,   108,   108,   102,   102,   104,    89,   115,   127,
    4139      127,   138,   265,   155,   108,   124,   201,   205,   216,   220,
     4143     127,   101,   338,   339,   127,   127,   126,   127,   127,   127,
     4144     155,   102,   127,   101,   338,   339,   101,   344,   101,   344,
     4145     339,   217,     7,   111,   127,   155,   253,   253,   252,   256,
     4146     256,   257,   108,   108,   102,   102,   104,    89,   115,   127,
     4147     127,   138,   267,   155,   108,   124,   203,   207,   218,   222,
    41404148     101,   101,   162,   101,   101,   124,   131,   124,   131,   111,
    41414149     131,   161,   101,   164,   124,   155,   104,   109,   124,   127,
    4142      126,   127,   200,   102,   155,   251,   251,   299,   102,   107,
    4143      101,   336,   337,   126,   102,   126,   127,   296,   107,   126,
    4144      127,   127,   102,   106,   154,   124,   190,   192,   108,   127,
    4145      359,   156,   104,   127,    78,   105,   108,   127,   127,   104,
    4146      127,   102,   126,   102,   102,   104,   104,   104,   127,   102,
    4147      126,   126,   126,   155,   155,   127,   104,   127,   127,   127,
    4148      127,   126,   126,   154,   154,   104,   104,   127,   127,   261,
    4149      216,   160,   160,    45,   160,   126,   124,   124,   160,   124,
    4150      124,   160,    54,    55,   185,   186,   187,   124,   299,   166,
    4151      107,   124,   127,   127,   126,    89,   256,   257,   102,   286,
    4152      108,   124,   108,   124,   107,   284,   102,   102,   109,   158,
    4153      104,   107,   104,   103,   139,   103,   139,   139,   104,   104,
    4154      104,   251,   104,   251,   251,   251,   127,   127,   104,   104,
    4155      102,   102,   104,   108,    89,   250,    89,   127,   104,   104,
    4156      102,   102,   101,   102,   161,   182,   201,   124,   102,   101,
    4157      164,   187,    54,   162,   102,   102,   251,   106,   126,   126,
    4158      285,   124,    75,   193,   127,   109,   126,   126,   127,   127,
    4159      127,   127,   104,   104,   126,   127,   104,   162,    42,    43,
    4160      106,   172,   173,   174,   160,   162,   127,   102,   161,   106,
    4161      174,    89,   126,   101,   127,   126,   259,   296,   107,   102,
    4162      108,   104,   155,   138,   138,   102,   102,   102,   102,   254,
    4163       40,   154,   170,   171,   297,   109,   126,   162,   172,   102,
    4164      124,   162,   124,   126,   102,   126,    89,   126,   102,   285,
    4165      124,    75,   109,   127,   127,   162,    89,   108,   109,   127,
    4166      194,   195,   201,   124,   161,   161,   194,   164,   188,   214,
    4167      353,   102,   126,   107,   155,   104,   104,   154,   170,   173,
    4168      175,   176,   126,   124,   173,   177,   178,   127,   101,   111,
    4169      296,   344,   131,   164,   188,   101,   162,   167,   107,   173,
    4170      201,   161,    52,   167,   180,   107,   173,   102,   216,   127,
    4171      279,   162,   167,   124,   179,   180,   167,   180,   164,   102,
    4172      102,   179,   127,   164,   127
     4150     126,   127,   202,   102,   155,   253,   253,   301,   102,   107,
     4151     101,   338,   339,   126,   102,   126,   127,   298,   107,   126,
     4152     127,   127,   102,   106,   191,   104,   154,   124,   191,   193,
     4153     108,   127,   361,   156,   104,   127,    78,   105,   108,   127,
     4154     127,   104,   127,   102,   126,   102,   102,   104,   104,   104,
     4155     127,   102,   126,   126,   126,   155,   155,   127,   104,   127,
     4156     127,   127,   127,   126,   126,   154,   154,   104,   104,   127,
     4157     127,   263,   218,   160,   160,    45,   160,   126,   124,   124,
     4158     160,   124,   124,   160,    54,    55,   185,   186,   187,   124,
     4159     301,   166,   107,   124,   127,   127,   126,    89,   258,   259,
     4160     102,   288,   108,   124,   108,   124,   107,   286,   109,   133,
     4161     102,   102,   109,   158,   104,   107,   104,   103,   139,   103,
     4162     139,   139,   104,   104,   104,   253,   104,   253,   253,   253,
     4163     127,   127,   104,   104,   102,   102,   104,   108,    89,   252,
     4164      89,   127,   104,   104,   102,   102,   101,   102,   161,   182,
     4165     203,   124,   102,   101,   164,   187,    54,   162,   102,   102,
     4166     253,   106,   126,   126,   287,   133,   194,   101,   124,   194,
     4167     127,   109,   126,   126,   127,   127,   127,   127,   104,   104,
     4168     126,   127,   104,   162,    42,    43,   106,   172,   173,   174,
     4169     160,   162,   127,   102,   161,   106,   174,    89,   126,   101,
     4170     127,   126,   261,   298,   107,   108,   109,   154,   102,   104,
     4171     155,   138,   138,   102,   102,   102,   102,   256,    40,   154,
     4172     170,   171,   299,   109,   126,   162,   172,   102,   124,   162,
     4173     124,   126,   102,   126,    89,   126,   102,   287,   133,   131,
     4174     195,   102,   124,   109,   127,   127,   162,    89,   108,   109,
     4175     127,   196,   197,   203,   124,   161,   161,   196,   164,   188,
     4176     216,   355,   102,   126,   107,   102,   108,   155,   104,   104,
     4177     154,   170,   173,   175,   176,   126,   124,   173,   177,   178,
     4178     127,   101,   111,   298,   346,   131,   164,   188,   101,   124,
     4179     131,   162,   167,   107,   173,   203,   161,    52,   167,   180,
     4180     107,   173,   102,   218,   127,   281,   162,   167,   124,   179,
     4181     180,   167,   180,   164,   102,   102,   179,   127,   164,   127
    41734182};
    41744183
     
    50075016
    50085017/* Line 1806 of yacc.c  */
    5009 #line 279 "parser.yy"
     5018#line 288 "parser.yy"
    50105019    {
    50115020                        typedefTable.enterScope();
     
    50165025
    50175026/* Line 1806 of yacc.c  */
    5018 #line 285 "parser.yy"
     5027#line 294 "parser.yy"
    50195028    {
    50205029                        typedefTable.leaveScope();
     
    50255034
    50265035/* Line 1806 of yacc.c  */
    5027 #line 294 "parser.yy"
     5036#line 303 "parser.yy"
    50285037    { (yyval.constant) = new ConstantNode( ConstantNode::Integer, (yyvsp[(1) - (1)].tok) ); }
    50295038    break;
     
    50325041
    50335042/* Line 1806 of yacc.c  */
    5034 #line 295 "parser.yy"
     5043#line 304 "parser.yy"
    50355044    { (yyval.constant) = new ConstantNode( ConstantNode::Float, (yyvsp[(1) - (1)].tok) ); }
    50365045    break;
     
    50395048
    50405049/* Line 1806 of yacc.c  */
    5041 #line 296 "parser.yy"
     5050#line 305 "parser.yy"
    50425051    { (yyval.constant) = new ConstantNode( ConstantNode::Character, (yyvsp[(1) - (1)].tok) ); }
    50435052    break;
     
    50465055
    50475056/* Line 1806 of yacc.c  */
    5048 #line 320 "parser.yy"
     5057#line 329 "parser.yy"
    50495058    { (yyval.constant) = new ConstantNode( ConstantNode::String, (yyvsp[(1) - (1)].tok) ); }
    50505059    break;
     
    50535062
    50545063/* Line 1806 of yacc.c  */
    5055 #line 321 "parser.yy"
     5064#line 330 "parser.yy"
    50565065    { (yyval.constant) = (yyvsp[(1) - (2)].constant)->appendstr( (yyvsp[(2) - (2)].tok) ); }
    50575066    break;
     
    50605069
    50615070/* Line 1806 of yacc.c  */
    5062 #line 328 "parser.yy"
     5071#line 337 "parser.yy"
    50635072    { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); }
    50645073    break;
     
    50675076
    50685077/* Line 1806 of yacc.c  */
    5069 #line 330 "parser.yy"
     5078#line 339 "parser.yy"
    50705079    { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); }
    50715080    break;
     
    50745083
    50755084/* Line 1806 of yacc.c  */
    5076 #line 332 "parser.yy"
     5085#line 341 "parser.yy"
     5086    { (yyval.en) = (yyvsp[(2) - (3)].en); }
     5087    break;
     5088
     5089  case 20:
     5090
     5091/* Line 1806 of yacc.c  */
     5092#line 343 "parser.yy"
     5093    { (yyval.en) = new ValofExprNode( (yyvsp[(2) - (3)].sn) ); }
     5094    break;
     5095
     5096  case 22:
     5097
     5098/* Line 1806 of yacc.c  */
     5099#line 353 "parser.yy"
     5100    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Index ), (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en) ); }
     5101    break;
     5102
     5103  case 23:
     5104
     5105/* Line 1806 of yacc.c  */
     5106#line 355 "parser.yy"
     5107    { (yyval.en) = new CompositeExprNode( (yyvsp[(1) - (4)].en), (yyvsp[(3) - (4)].en) ); }
     5108    break;
     5109
     5110  case 24:
     5111
     5112/* Line 1806 of yacc.c  */
     5113#line 357 "parser.yy"
     5114    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), (yyvsp[(1) - (3)].en), new VarRefNode( (yyvsp[(3) - (3)].tok) )); }
     5115    break;
     5116
     5117  case 26:
     5118
     5119/* Line 1806 of yacc.c  */
     5120#line 360 "parser.yy"
     5121    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), (yyvsp[(1) - (3)].en), new VarRefNode( (yyvsp[(3) - (3)].tok) )); }
     5122    break;
     5123
     5124  case 28:
     5125
     5126/* Line 1806 of yacc.c  */
     5127#line 363 "parser.yy"
     5128    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::IncrPost ), (yyvsp[(1) - (2)].en) ); }
     5129    break;
     5130
     5131  case 29:
     5132
     5133/* Line 1806 of yacc.c  */
     5134#line 365 "parser.yy"
     5135    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::DecrPost ), (yyvsp[(1) - (2)].en) ); }
     5136    break;
     5137
     5138  case 30:
     5139
     5140/* Line 1806 of yacc.c  */
     5141#line 368 "parser.yy"
     5142    { (yyval.en) = 0; }
     5143    break;
     5144
     5145  case 32:
     5146
     5147/* Line 1806 of yacc.c  */
     5148#line 374 "parser.yy"
     5149    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) )); }
     5150    break;
     5151
     5152  case 33:
     5153
     5154/* Line 1806 of yacc.c  */
     5155#line 379 "parser.yy"
     5156    { (yyval.en) = 0; }
     5157    break;
     5158
     5159  case 35:
     5160
     5161/* Line 1806 of yacc.c  */
     5162#line 382 "parser.yy"
     5163    { (yyval.en) = (yyvsp[(3) - (3)].en)->set_argName( (yyvsp[(1) - (3)].tok) ); }
     5164    break;
     5165
     5166  case 36:
     5167
     5168/* Line 1806 of yacc.c  */
     5169#line 387 "parser.yy"
     5170    { (yyval.en) = (yyvsp[(7) - (7)].en)->set_argName( (yyvsp[(3) - (7)].en) ); }
     5171    break;
     5172
     5173  case 37:
     5174
     5175/* Line 1806 of yacc.c  */
     5176#line 389 "parser.yy"
     5177    { (yyval.en) = (yyvsp[(9) - (9)].en)->set_argName( new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(yyvsp[(3) - (9)].en)->set_link( flattenCommas( (yyvsp[(5) - (9)].en) )))); }
     5178    break;
     5179
     5180  case 39:
     5181
     5182/* Line 1806 of yacc.c  */
     5183#line 394 "parser.yy"
     5184    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }
     5185    break;
     5186
     5187  case 40:
     5188
     5189/* Line 1806 of yacc.c  */
     5190#line 399 "parser.yy"
     5191    { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); }
     5192    break;
     5193
     5194  case 41:
     5195
     5196/* Line 1806 of yacc.c  */
     5197#line 401 "parser.yy"
     5198    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), new VarRefNode( (yyvsp[(1) - (3)].tok) ), (yyvsp[(3) - (3)].en) ); }
     5199    break;
     5200
     5201  case 42:
     5202
     5203/* Line 1806 of yacc.c  */
     5204#line 403 "parser.yy"
     5205    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), new VarRefNode( (yyvsp[(1) - (7)].tok) ), (yyvsp[(5) - (7)].en) ); }
     5206    break;
     5207
     5208  case 43:
     5209
     5210/* Line 1806 of yacc.c  */
     5211#line 405 "parser.yy"
     5212    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), new VarRefNode( (yyvsp[(1) - (3)].tok) ), (yyvsp[(3) - (3)].en) ); }
     5213    break;
     5214
     5215  case 44:
     5216
     5217/* Line 1806 of yacc.c  */
     5218#line 407 "parser.yy"
     5219    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), new VarRefNode( (yyvsp[(1) - (7)].tok) ), (yyvsp[(5) - (7)].en) ); }
     5220    break;
     5221
     5222  case 46:
     5223
     5224/* Line 1806 of yacc.c  */
     5225#line 415 "parser.yy"
    50775226    { (yyval.en) = (yyvsp[(1) - (1)].constant); }
    50785227    break;
    50795228
    5080   case 20:
    5081 
    5082 /* Line 1806 of yacc.c  */
    5083 #line 334 "parser.yy"
     5229  case 47:
     5230
     5231/* Line 1806 of yacc.c  */
     5232#line 417 "parser.yy"
    50845233    { (yyval.en) = (yyvsp[(1) - (1)].constant); }
    50855234    break;
    50865235
    5087   case 21:
    5088 
    5089 /* Line 1806 of yacc.c  */
    5090 #line 336 "parser.yy"
    5091     { (yyval.en) = (yyvsp[(2) - (3)].en); }
    5092     break;
    5093 
    5094   case 22:
    5095 
    5096 /* Line 1806 of yacc.c  */
    5097 #line 338 "parser.yy"
    5098     { (yyval.en) = new ValofExprNode( (yyvsp[(2) - (3)].sn) ); }
    5099     break;
    5100 
    5101   case 24:
    5102 
    5103 /* Line 1806 of yacc.c  */
    5104 #line 348 "parser.yy"
    5105     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Index ), (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en) ); }
    5106     break;
    5107 
    5108   case 25:
    5109 
    5110 /* Line 1806 of yacc.c  */
    5111 #line 350 "parser.yy"
    5112     { (yyval.en) = new CompositeExprNode( (yyvsp[(1) - (4)].en), (yyvsp[(3) - (4)].en) ); }
    5113     break;
    5114 
    5115   case 26:
    5116 
    5117 /* Line 1806 of yacc.c  */
    5118 #line 352 "parser.yy"
    5119     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), (yyvsp[(1) - (3)].en), new VarRefNode( (yyvsp[(3) - (3)].tok) )); }
    5120     break;
    5121 
    5122   case 28:
    5123 
    5124 /* Line 1806 of yacc.c  */
    5125 #line 355 "parser.yy"
    5126     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), (yyvsp[(1) - (3)].en), new VarRefNode( (yyvsp[(3) - (3)].tok) )); }
    5127     break;
    5128 
    5129   case 30:
    5130 
    5131 /* Line 1806 of yacc.c  */
    5132 #line 358 "parser.yy"
    5133     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::IncrPost ), (yyvsp[(1) - (2)].en) ); }
    5134     break;
    5135 
    5136   case 31:
    5137 
    5138 /* Line 1806 of yacc.c  */
    5139 #line 360 "parser.yy"
    5140     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::DecrPost ), (yyvsp[(1) - (2)].en) ); }
    5141     break;
    5142 
    5143   case 32:
    5144 
    5145 /* Line 1806 of yacc.c  */
    5146 #line 363 "parser.yy"
     5236  case 48:
     5237
     5238/* Line 1806 of yacc.c  */
     5239#line 419 "parser.yy"
     5240    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Incr ), (yyvsp[(2) - (2)].en) ); }
     5241    break;
     5242
     5243  case 49:
     5244
     5245/* Line 1806 of yacc.c  */
     5246#line 421 "parser.yy"
     5247    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Decr ), (yyvsp[(2) - (2)].en) ); }
     5248    break;
     5249
     5250  case 50:
     5251
     5252/* Line 1806 of yacc.c  */
     5253#line 423 "parser.yy"
     5254    { (yyval.en) = (yyvsp[(2) - (2)].en); }
     5255    break;
     5256
     5257  case 51:
     5258
     5259/* Line 1806 of yacc.c  */
     5260#line 425 "parser.yy"
     5261    { (yyval.en) = new CompositeExprNode( (yyvsp[(1) - (2)].en), (yyvsp[(2) - (2)].en) ); }
     5262    break;
     5263
     5264  case 52:
     5265
     5266/* Line 1806 of yacc.c  */
     5267#line 427 "parser.yy"
     5268    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Neg ), (yyvsp[(2) - (2)].en) ); }
     5269    break;
     5270
     5271  case 53:
     5272
     5273/* Line 1806 of yacc.c  */
     5274#line 429 "parser.yy"
     5275    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PointTo ), (yyvsp[(2) - (2)].en) ); }
     5276    break;
     5277
     5278  case 54:
     5279
     5280/* Line 1806 of yacc.c  */
     5281#line 435 "parser.yy"
     5282    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::SizeOf ), (yyvsp[(2) - (2)].en) ); }
     5283    break;
     5284
     5285  case 55:
     5286
     5287/* Line 1806 of yacc.c  */
     5288#line 437 "parser.yy"
     5289    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::SizeOf ), new TypeValueNode( (yyvsp[(3) - (4)].decl) )); }
     5290    break;
     5291
     5292  case 56:
     5293
     5294/* Line 1806 of yacc.c  */
     5295#line 439 "parser.yy"
     5296    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (1)].tok) )); }
     5297    break;
     5298
     5299  case 57:
     5300
     5301/* Line 1806 of yacc.c  */
     5302#line 441 "parser.yy"
     5303    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (4)].tok) ), new TypeValueNode( (yyvsp[(3) - (4)].decl) )); }
     5304    break;
     5305
     5306  case 58:
     5307
     5308/* Line 1806 of yacc.c  */
     5309#line 443 "parser.yy"
     5310    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].en) ); }
     5311    break;
     5312
     5313  case 59:
     5314
     5315/* Line 1806 of yacc.c  */
     5316#line 445 "parser.yy"
     5317    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), (yyvsp[(2) - (2)].en) ); }
     5318    break;
     5319
     5320  case 60:
     5321
     5322/* Line 1806 of yacc.c  */
     5323#line 447 "parser.yy"
     5324    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), new TypeValueNode( (yyvsp[(3) - (4)].decl) )); }
     5325    break;
     5326
     5327  case 61:
     5328
     5329/* Line 1806 of yacc.c  */
     5330#line 449 "parser.yy"
     5331    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LabelAddress ), new VarRefNode( (yyvsp[(2) - (2)].tok), true )); }
     5332    break;
     5333
     5334  case 62:
     5335
     5336/* Line 1806 of yacc.c  */
     5337#line 453 "parser.yy"
     5338    { (yyval.en) = new OperatorNode( OperatorNode::AddressOf ); }
     5339    break;
     5340
     5341  case 63:
     5342
     5343/* Line 1806 of yacc.c  */
     5344#line 454 "parser.yy"
     5345    { (yyval.en) = new OperatorNode( OperatorNode::UnPlus ); }
     5346    break;
     5347
     5348  case 64:
     5349
     5350/* Line 1806 of yacc.c  */
     5351#line 455 "parser.yy"
     5352    { (yyval.en) = new OperatorNode( OperatorNode::UnMinus ); }
     5353    break;
     5354
     5355  case 65:
     5356
     5357/* Line 1806 of yacc.c  */
     5358#line 456 "parser.yy"
     5359    { (yyval.en) = new OperatorNode( OperatorNode::BitNeg ); }
     5360    break;
     5361
     5362  case 67:
     5363
     5364/* Line 1806 of yacc.c  */
     5365#line 462 "parser.yy"
     5366    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cast ), new TypeValueNode( (yyvsp[(2) - (4)].decl) ), (yyvsp[(4) - (4)].en) ); }
     5367    break;
     5368
     5369  case 68:
     5370
     5371/* Line 1806 of yacc.c  */
     5372#line 464 "parser.yy"
     5373    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cast ), new TypeValueNode( (yyvsp[(2) - (4)].decl) ), (yyvsp[(4) - (4)].en) ); }
     5374    break;
     5375
     5376  case 70:
     5377
     5378/* Line 1806 of yacc.c  */
     5379#line 470 "parser.yy"
     5380    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Mul ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5381    break;
     5382
     5383  case 71:
     5384
     5385/* Line 1806 of yacc.c  */
     5386#line 472 "parser.yy"
     5387    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Div ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5388    break;
     5389
     5390  case 72:
     5391
     5392/* Line 1806 of yacc.c  */
     5393#line 474 "parser.yy"
     5394    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Mod ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5395    break;
     5396
     5397  case 74:
     5398
     5399/* Line 1806 of yacc.c  */
     5400#line 480 "parser.yy"
     5401    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Plus ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5402    break;
     5403
     5404  case 75:
     5405
     5406/* Line 1806 of yacc.c  */
     5407#line 482 "parser.yy"
     5408    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Minus ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5409    break;
     5410
     5411  case 77:
     5412
     5413/* Line 1806 of yacc.c  */
     5414#line 488 "parser.yy"
     5415    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LShift ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5416    break;
     5417
     5418  case 78:
     5419
     5420/* Line 1806 of yacc.c  */
     5421#line 490 "parser.yy"
     5422    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::RShift ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5423    break;
     5424
     5425  case 80:
     5426
     5427/* Line 1806 of yacc.c  */
     5428#line 496 "parser.yy"
     5429    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5430    break;
     5431
     5432  case 81:
     5433
     5434/* Line 1806 of yacc.c  */
     5435#line 498 "parser.yy"
     5436    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::GThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5437    break;
     5438
     5439  case 82:
     5440
     5441/* Line 1806 of yacc.c  */
     5442#line 500 "parser.yy"
     5443    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LEThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5444    break;
     5445
     5446  case 83:
     5447
     5448/* Line 1806 of yacc.c  */
     5449#line 502 "parser.yy"
     5450    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::GEThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5451    break;
     5452
     5453  case 85:
     5454
     5455/* Line 1806 of yacc.c  */
     5456#line 508 "parser.yy"
     5457    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Eq ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5458    break;
     5459
     5460  case 86:
     5461
     5462/* Line 1806 of yacc.c  */
     5463#line 510 "parser.yy"
     5464    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Neq ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5465    break;
     5466
     5467  case 88:
     5468
     5469/* Line 1806 of yacc.c  */
     5470#line 516 "parser.yy"
     5471    { (yyval.en) =new CompositeExprNode( new OperatorNode( OperatorNode::BitAnd ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5472    break;
     5473
     5474  case 90:
     5475
     5476/* Line 1806 of yacc.c  */
     5477#line 522 "parser.yy"
     5478    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Xor ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5479    break;
     5480
     5481  case 92:
     5482
     5483/* Line 1806 of yacc.c  */
     5484#line 528 "parser.yy"
     5485    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::BitOr ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5486    break;
     5487
     5488  case 94:
     5489
     5490/* Line 1806 of yacc.c  */
     5491#line 534 "parser.yy"
     5492    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::And ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5493    break;
     5494
     5495  case 96:
     5496
     5497/* Line 1806 of yacc.c  */
     5498#line 540 "parser.yy"
     5499    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Or ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5500    break;
     5501
     5502  case 98:
     5503
     5504/* Line 1806 of yacc.c  */
     5505#line 546 "parser.yy"
     5506    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cond ), (ExpressionNode *)mkList( (*(yyvsp[(1) - (5)].en), *(yyvsp[(3) - (5)].en), *(yyvsp[(5) - (5)].en) ) ) ); }
     5507    break;
     5508
     5509  case 99:
     5510
     5511/* Line 1806 of yacc.c  */
     5512#line 548 "parser.yy"
     5513    { (yyval.en)=new CompositeExprNode( new OperatorNode( OperatorNode::NCond ), (yyvsp[(1) - (4)].en), (yyvsp[(4) - (4)].en) ); }
     5514    break;
     5515
     5516  case 100:
     5517
     5518/* Line 1806 of yacc.c  */
     5519#line 550 "parser.yy"
     5520    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cond ), (ExpressionNode *)mkList( (*(yyvsp[(1) - (5)].en), *(yyvsp[(3) - (5)].en), *(yyvsp[(5) - (5)].en) ) ) ); }
     5521    break;
     5522
     5523  case 103:
     5524
     5525/* Line 1806 of yacc.c  */
     5526#line 561 "parser.yy"
     5527    { (yyval.en) =new CompositeExprNode( new OperatorNode( OperatorNode::Assign ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5528    break;
     5529
     5530  case 104:
     5531
     5532/* Line 1806 of yacc.c  */
     5533#line 563 "parser.yy"
     5534    { (yyval.en) =new CompositeExprNode( (yyvsp[(2) - (3)].en), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5535    break;
     5536
     5537  case 105:
     5538
     5539/* Line 1806 of yacc.c  */
     5540#line 565 "parser.yy"
     5541    { (yyval.en) = ( (yyvsp[(2) - (2)].en) == 0 ) ? (yyvsp[(1) - (2)].en) : new CompositeExprNode( new OperatorNode( OperatorNode::Assign ), (yyvsp[(1) - (2)].en), (yyvsp[(2) - (2)].en) ); }
     5542    break;
     5543
     5544  case 106:
     5545
     5546/* Line 1806 of yacc.c  */
     5547#line 570 "parser.yy"
     5548    { (yyval.en) = new NullExprNode; }
     5549    break;
     5550
     5551  case 108:
     5552
     5553/* Line 1806 of yacc.c  */
     5554#line 578 "parser.yy"
     5555    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ) ); }
     5556    break;
     5557
     5558  case 109:
     5559
     5560/* Line 1806 of yacc.c  */
     5561#line 580 "parser.yy"
     5562    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (yyvsp[(3) - (5)].en) ); }
     5563    break;
     5564
     5565  case 110:
     5566
     5567/* Line 1806 of yacc.c  */
     5568#line 582 "parser.yy"
     5569    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(new NullExprNode)->set_link( (yyvsp[(4) - (6)].en) ) ); }
     5570    break;
     5571
     5572  case 111:
     5573
     5574/* Line 1806 of yacc.c  */
     5575#line 584 "parser.yy"
     5576    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(yyvsp[(3) - (7)].en)->set_link( flattenCommas( (yyvsp[(5) - (7)].en) ) ) ); }
     5577    break;
     5578
     5579  case 113:
     5580
     5581/* Line 1806 of yacc.c  */
     5582#line 590 "parser.yy"
     5583    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }
     5584    break;
     5585
     5586  case 114:
     5587
     5588/* Line 1806 of yacc.c  */
     5589#line 594 "parser.yy"
     5590    { (yyval.en) = new OperatorNode( OperatorNode::MulAssn ); }
     5591    break;
     5592
     5593  case 115:
     5594
     5595/* Line 1806 of yacc.c  */
     5596#line 595 "parser.yy"
     5597    { (yyval.en) = new OperatorNode( OperatorNode::DivAssn ); }
     5598    break;
     5599
     5600  case 116:
     5601
     5602/* Line 1806 of yacc.c  */
     5603#line 596 "parser.yy"
     5604    { (yyval.en) = new OperatorNode( OperatorNode::ModAssn ); }
     5605    break;
     5606
     5607  case 117:
     5608
     5609/* Line 1806 of yacc.c  */
     5610#line 597 "parser.yy"
     5611    { (yyval.en) = new OperatorNode( OperatorNode::PlusAssn ); }
     5612    break;
     5613
     5614  case 118:
     5615
     5616/* Line 1806 of yacc.c  */
     5617#line 598 "parser.yy"
     5618    { (yyval.en) = new OperatorNode( OperatorNode::MinusAssn ); }
     5619    break;
     5620
     5621  case 119:
     5622
     5623/* Line 1806 of yacc.c  */
     5624#line 599 "parser.yy"
     5625    { (yyval.en) = new OperatorNode( OperatorNode::LSAssn ); }
     5626    break;
     5627
     5628  case 120:
     5629
     5630/* Line 1806 of yacc.c  */
     5631#line 600 "parser.yy"
     5632    { (yyval.en) = new OperatorNode( OperatorNode::RSAssn ); }
     5633    break;
     5634
     5635  case 121:
     5636
     5637/* Line 1806 of yacc.c  */
     5638#line 601 "parser.yy"
     5639    { (yyval.en) = new OperatorNode( OperatorNode::AndAssn ); }
     5640    break;
     5641
     5642  case 122:
     5643
     5644/* Line 1806 of yacc.c  */
     5645#line 602 "parser.yy"
     5646    { (yyval.en) = new OperatorNode( OperatorNode::ERAssn ); }
     5647    break;
     5648
     5649  case 123:
     5650
     5651/* Line 1806 of yacc.c  */
     5652#line 603 "parser.yy"
     5653    { (yyval.en) = new OperatorNode( OperatorNode::OrAssn ); }
     5654    break;
     5655
     5656  case 125:
     5657
     5658/* Line 1806 of yacc.c  */
     5659#line 609 "parser.yy"
     5660    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Comma ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5661    break;
     5662
     5663  case 126:
     5664
     5665/* Line 1806 of yacc.c  */
     5666#line 614 "parser.yy"
    51475667    { (yyval.en) = 0; }
    51485668    break;
    51495669
    5150   case 34:
    5151 
    5152 /* Line 1806 of yacc.c  */
    5153 #line 369 "parser.yy"
    5154     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) )); }
    5155     break;
    5156 
    5157   case 35:
    5158 
    5159 /* Line 1806 of yacc.c  */
    5160 #line 374 "parser.yy"
    5161     { (yyval.en) = 0; }
    5162     break;
    5163 
    5164   case 37:
    5165 
    5166 /* Line 1806 of yacc.c  */
    5167 #line 377 "parser.yy"
    5168     { (yyval.en) = (yyvsp[(3) - (3)].en)->set_asArgName( (yyvsp[(1) - (3)].tok) ); }
    5169     break;
    5170 
    5171   case 38:
    5172 
    5173 /* Line 1806 of yacc.c  */
    5174 #line 382 "parser.yy"
    5175     { (yyval.en) = (yyvsp[(7) - (7)].en)->set_asArgName( (yyvsp[(3) - (7)].en) ); }
    5176     break;
    5177 
    5178   case 39:
    5179 
    5180 /* Line 1806 of yacc.c  */
    5181 #line 384 "parser.yy"
    5182     { (yyval.en) = (yyvsp[(9) - (9)].en)->set_asArgName( new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(yyvsp[(3) - (9)].en)->set_link( flattenCommas( (yyvsp[(5) - (9)].en) )))); }
    5183     break;
    5184 
    5185   case 41:
    5186 
    5187 /* Line 1806 of yacc.c  */
    5188 #line 389 "parser.yy"
    5189     { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }
    5190     break;
    5191 
    5192   case 42:
    5193 
    5194 /* Line 1806 of yacc.c  */
    5195 #line 394 "parser.yy"
    5196     { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); }
    5197     break;
    5198 
    5199   case 43:
    5200 
    5201 /* Line 1806 of yacc.c  */
    5202 #line 396 "parser.yy"
    5203     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), new VarRefNode( (yyvsp[(1) - (3)].tok) ), (yyvsp[(3) - (3)].en) ); }
    5204     break;
    5205 
    5206   case 44:
    5207 
    5208 /* Line 1806 of yacc.c  */
    5209 #line 398 "parser.yy"
    5210     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), new VarRefNode( (yyvsp[(1) - (7)].tok) ), (yyvsp[(5) - (7)].en) ); }
    5211     break;
    5212 
    5213   case 45:
    5214 
    5215 /* Line 1806 of yacc.c  */
    5216 #line 400 "parser.yy"
    5217     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), new VarRefNode( (yyvsp[(1) - (3)].tok) ), (yyvsp[(3) - (3)].en) ); }
    5218     break;
    5219 
    5220   case 46:
    5221 
    5222 /* Line 1806 of yacc.c  */
    5223 #line 402 "parser.yy"
    5224     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), new VarRefNode( (yyvsp[(1) - (7)].tok) ), (yyvsp[(5) - (7)].en) ); }
    5225     break;
    5226 
    5227   case 48:
    5228 
    5229 /* Line 1806 of yacc.c  */
    5230 #line 408 "parser.yy"
    5231     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Incr ), (yyvsp[(2) - (2)].en) ); }
    5232     break;
    5233 
    5234   case 49:
    5235 
    5236 /* Line 1806 of yacc.c  */
    5237 #line 410 "parser.yy"
    5238     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Decr ), (yyvsp[(2) - (2)].en) ); }
    5239     break;
    5240 
    5241   case 50:
    5242 
    5243 /* Line 1806 of yacc.c  */
    5244 #line 412 "parser.yy"
    5245     { (yyval.en) = (yyvsp[(2) - (2)].en); }
    5246     break;
    5247 
    5248   case 51:
    5249 
    5250 /* Line 1806 of yacc.c  */
    5251 #line 414 "parser.yy"
    5252     { (yyval.en) = new CompositeExprNode( (yyvsp[(1) - (2)].en), (yyvsp[(2) - (2)].en) ); }
    5253     break;
    5254 
    5255   case 52:
    5256 
    5257 /* Line 1806 of yacc.c  */
    5258 #line 416 "parser.yy"
    5259     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Neg ), (yyvsp[(2) - (2)].en) ); }
    5260     break;
    5261 
    5262   case 53:
    5263 
    5264 /* Line 1806 of yacc.c  */
    5265 #line 418 "parser.yy"
    5266     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PointTo ), (yyvsp[(2) - (2)].en) ); }
    5267     break;
    5268 
    5269   case 54:
    5270 
    5271 /* Line 1806 of yacc.c  */
    5272 #line 424 "parser.yy"
    5273     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::SizeOf ), (yyvsp[(2) - (2)].en) ); }
    5274     break;
    5275 
    5276   case 55:
    5277 
    5278 /* Line 1806 of yacc.c  */
    5279 #line 426 "parser.yy"
    5280     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::SizeOf ), new TypeValueNode( (yyvsp[(3) - (4)].decl) )); }
    5281     break;
    5282 
    5283   case 56:
    5284 
    5285 /* Line 1806 of yacc.c  */
    5286 #line 428 "parser.yy"
    5287     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (1)].tok) )); }
    5288     break;
    5289 
    5290   case 57:
    5291 
    5292 /* Line 1806 of yacc.c  */
    5293 #line 430 "parser.yy"
    5294     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (4)].tok) ), new TypeValueNode( (yyvsp[(3) - (4)].decl) )); }
    5295     break;
    5296 
    5297   case 58:
    5298 
    5299 /* Line 1806 of yacc.c  */
    5300 #line 432 "parser.yy"
    5301     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].en) ); }
    5302     break;
    5303 
    5304   case 59:
    5305 
    5306 /* Line 1806 of yacc.c  */
    5307 #line 434 "parser.yy"
    5308     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), (yyvsp[(2) - (2)].en) ); }
    5309     break;
    5310 
    5311   case 60:
    5312 
    5313 /* Line 1806 of yacc.c  */
    5314 #line 436 "parser.yy"
    5315     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), new TypeValueNode( (yyvsp[(3) - (4)].decl) )); }
    5316     break;
    5317 
    5318   case 61:
    5319 
    5320 /* Line 1806 of yacc.c  */
    5321 #line 438 "parser.yy"
    5322     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LabelAddress ), new VarRefNode( (yyvsp[(2) - (2)].tok), true )); }
    5323     break;
    5324 
    5325   case 62:
    5326 
    5327 /* Line 1806 of yacc.c  */
    5328 #line 442 "parser.yy"
    5329     { (yyval.en) = new OperatorNode( OperatorNode::AddressOf ); }
    5330     break;
    5331 
    5332   case 63:
    5333 
    5334 /* Line 1806 of yacc.c  */
    5335 #line 443 "parser.yy"
    5336     { (yyval.en) = new OperatorNode( OperatorNode::UnPlus ); }
    5337     break;
    5338 
    5339   case 64:
    5340 
    5341 /* Line 1806 of yacc.c  */
    5342 #line 444 "parser.yy"
    5343     { (yyval.en) = new OperatorNode( OperatorNode::UnMinus ); }
    5344     break;
    5345 
    5346   case 65:
    5347 
    5348 /* Line 1806 of yacc.c  */
    5349 #line 445 "parser.yy"
    5350     { (yyval.en) = new OperatorNode( OperatorNode::BitNeg ); }
    5351     break;
    5352 
    5353   case 67:
    5354 
    5355 /* Line 1806 of yacc.c  */
    5356 #line 451 "parser.yy"
    5357     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cast ), new TypeValueNode( (yyvsp[(2) - (4)].decl) ), (yyvsp[(4) - (4)].en) ); }
    5358     break;
    5359 
    5360   case 68:
    5361 
    5362 /* Line 1806 of yacc.c  */
    5363 #line 453 "parser.yy"
    5364     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cast ), new TypeValueNode( (yyvsp[(2) - (4)].decl) ), (yyvsp[(4) - (4)].en) ); }
    5365     break;
    5366 
    5367   case 70:
    5368 
    5369 /* Line 1806 of yacc.c  */
    5370 #line 459 "parser.yy"
    5371     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Mul ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5372     break;
    5373 
    5374   case 71:
    5375 
    5376 /* Line 1806 of yacc.c  */
    5377 #line 461 "parser.yy"
    5378     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Div ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5379     break;
    5380 
    5381   case 72:
    5382 
    5383 /* Line 1806 of yacc.c  */
    5384 #line 463 "parser.yy"
    5385     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Mod ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5386     break;
    5387 
    5388   case 74:
    5389 
    5390 /* Line 1806 of yacc.c  */
    5391 #line 469 "parser.yy"
    5392     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Plus ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5393     break;
    5394 
    5395   case 75:
    5396 
    5397 /* Line 1806 of yacc.c  */
    5398 #line 471 "parser.yy"
    5399     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Minus ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5400     break;
    5401 
    5402   case 77:
    5403 
    5404 /* Line 1806 of yacc.c  */
    5405 #line 477 "parser.yy"
    5406     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LShift ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5407     break;
    5408 
    5409   case 78:
    5410 
    5411 /* Line 1806 of yacc.c  */
    5412 #line 479 "parser.yy"
    5413     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::RShift ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5414     break;
    5415 
    5416   case 80:
    5417 
    5418 /* Line 1806 of yacc.c  */
    5419 #line 485 "parser.yy"
    5420     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5421     break;
    5422 
    5423   case 81:
    5424 
    5425 /* Line 1806 of yacc.c  */
    5426 #line 487 "parser.yy"
    5427     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::GThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5428     break;
    5429 
    5430   case 82:
    5431 
    5432 /* Line 1806 of yacc.c  */
    5433 #line 489 "parser.yy"
    5434     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LEThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5435     break;
    5436 
    5437   case 83:
    5438 
    5439 /* Line 1806 of yacc.c  */
    5440 #line 491 "parser.yy"
    5441     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::GEThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5442     break;
    5443 
    5444   case 85:
    5445 
    5446 /* Line 1806 of yacc.c  */
    5447 #line 497 "parser.yy"
    5448     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Eq ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5449     break;
    5450 
    5451   case 86:
    5452 
    5453 /* Line 1806 of yacc.c  */
    5454 #line 499 "parser.yy"
    5455     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Neq ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5456     break;
    5457 
    5458   case 88:
    5459 
    5460 /* Line 1806 of yacc.c  */
    5461 #line 505 "parser.yy"
    5462     { (yyval.en) =new CompositeExprNode( new OperatorNode( OperatorNode::BitAnd ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5463     break;
    5464 
    5465   case 90:
    5466 
    5467 /* Line 1806 of yacc.c  */
    5468 #line 511 "parser.yy"
    5469     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Xor ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5470     break;
    5471 
    5472   case 92:
    5473 
    5474 /* Line 1806 of yacc.c  */
    5475 #line 517 "parser.yy"
    5476     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::BitOr ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5477     break;
    5478 
    5479   case 94:
    5480 
    5481 /* Line 1806 of yacc.c  */
    5482 #line 523 "parser.yy"
    5483     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::And ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5484     break;
    5485 
    5486   case 96:
    5487 
    5488 /* Line 1806 of yacc.c  */
    5489 #line 529 "parser.yy"
    5490     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Or ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5491     break;
    5492 
    5493   case 98:
    5494 
    5495 /* Line 1806 of yacc.c  */
    5496 #line 535 "parser.yy"
    5497     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cond ), (ExpressionNode *)mkList( (*(yyvsp[(1) - (5)].en), *(yyvsp[(3) - (5)].en), *(yyvsp[(5) - (5)].en) ) ) ); }
    5498     break;
    5499 
    5500   case 99:
    5501 
    5502 /* Line 1806 of yacc.c  */
    5503 #line 537 "parser.yy"
    5504     { (yyval.en)=new CompositeExprNode( new OperatorNode( OperatorNode::NCond ), (yyvsp[(1) - (4)].en), (yyvsp[(4) - (4)].en) ); }
    5505     break;
    5506 
    5507   case 100:
    5508 
    5509 /* Line 1806 of yacc.c  */
    5510 #line 539 "parser.yy"
    5511     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cond ), (ExpressionNode *)mkList( (*(yyvsp[(1) - (5)].en), *(yyvsp[(3) - (5)].en), *(yyvsp[(5) - (5)].en) ) ) ); }
    5512     break;
    5513 
    5514   case 103:
    5515 
    5516 /* Line 1806 of yacc.c  */
    5517 #line 550 "parser.yy"
    5518     { (yyval.en) =new CompositeExprNode( new OperatorNode( OperatorNode::Assign ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5519     break;
    5520 
    5521   case 104:
    5522 
    5523 /* Line 1806 of yacc.c  */
    5524 #line 552 "parser.yy"
    5525     { (yyval.en) =new CompositeExprNode( (yyvsp[(2) - (3)].en), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5526     break;
    5527 
    5528   case 105:
    5529 
    5530 /* Line 1806 of yacc.c  */
    5531 #line 554 "parser.yy"
    5532     { (yyval.en) = ( (yyvsp[(2) - (2)].en) == 0 ) ? (yyvsp[(1) - (2)].en) : new CompositeExprNode( new OperatorNode( OperatorNode::Assign ), (yyvsp[(1) - (2)].en), (yyvsp[(2) - (2)].en) ); }
    5533     break;
    5534 
    5535   case 106:
    5536 
    5537 /* Line 1806 of yacc.c  */
    5538 #line 559 "parser.yy"
    5539     { (yyval.en) = new NullExprNode; }
    5540     break;
    5541 
    5542   case 108:
    5543 
    5544 /* Line 1806 of yacc.c  */
    5545 #line 567 "parser.yy"
    5546     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ) ); }
    5547     break;
    5548 
    5549   case 109:
    5550 
    5551 /* Line 1806 of yacc.c  */
    5552 #line 569 "parser.yy"
    5553     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (yyvsp[(3) - (5)].en) ); }
    5554     break;
    5555 
    5556   case 110:
    5557 
    5558 /* Line 1806 of yacc.c  */
    5559 #line 571 "parser.yy"
    5560     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(new NullExprNode)->set_link( (yyvsp[(4) - (6)].en) ) ); }
    5561     break;
    5562 
    5563   case 111:
    5564 
    5565 /* Line 1806 of yacc.c  */
    5566 #line 573 "parser.yy"
    5567     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(yyvsp[(3) - (7)].en)->set_link( flattenCommas( (yyvsp[(5) - (7)].en) ) ) ); }
    5568     break;
    5569 
    5570   case 113:
    5571 
    5572 /* Line 1806 of yacc.c  */
    5573 #line 579 "parser.yy"
    5574     { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }
    5575     break;
    5576 
    5577   case 114:
    5578 
    5579 /* Line 1806 of yacc.c  */
    5580 #line 583 "parser.yy"
    5581     { (yyval.en) = new OperatorNode( OperatorNode::MulAssn ); }
    5582     break;
    5583 
    5584   case 115:
    5585 
    5586 /* Line 1806 of yacc.c  */
    5587 #line 584 "parser.yy"
    5588     { (yyval.en) = new OperatorNode( OperatorNode::DivAssn ); }
    5589     break;
    5590 
    5591   case 116:
    5592 
    5593 /* Line 1806 of yacc.c  */
    5594 #line 585 "parser.yy"
    5595     { (yyval.en) = new OperatorNode( OperatorNode::ModAssn ); }
    5596     break;
    5597 
    5598   case 117:
    5599 
    5600 /* Line 1806 of yacc.c  */
    5601 #line 586 "parser.yy"
    5602     { (yyval.en) = new OperatorNode( OperatorNode::PlusAssn ); }
    5603     break;
    5604 
    5605   case 118:
    5606 
    5607 /* Line 1806 of yacc.c  */
    5608 #line 587 "parser.yy"
    5609     { (yyval.en) = new OperatorNode( OperatorNode::MinusAssn ); }
    5610     break;
    5611 
    5612   case 119:
    5613 
    5614 /* Line 1806 of yacc.c  */
    5615 #line 588 "parser.yy"
    5616     { (yyval.en) = new OperatorNode( OperatorNode::LSAssn ); }
    5617     break;
    5618 
    5619   case 120:
    5620 
    5621 /* Line 1806 of yacc.c  */
    5622 #line 589 "parser.yy"
    5623     { (yyval.en) = new OperatorNode( OperatorNode::RSAssn ); }
    5624     break;
    5625 
    5626   case 121:
    5627 
    5628 /* Line 1806 of yacc.c  */
    5629 #line 590 "parser.yy"
    5630     { (yyval.en) = new OperatorNode( OperatorNode::AndAssn ); }
    5631     break;
    5632 
    5633   case 122:
    5634 
    5635 /* Line 1806 of yacc.c  */
    5636 #line 591 "parser.yy"
    5637     { (yyval.en) = new OperatorNode( OperatorNode::ERAssn ); }
    5638     break;
    5639 
    5640   case 123:
    5641 
    5642 /* Line 1806 of yacc.c  */
    5643 #line 592 "parser.yy"
    5644     { (yyval.en) = new OperatorNode( OperatorNode::OrAssn ); }
    5645     break;
    5646 
    5647   case 125:
    5648 
    5649 /* Line 1806 of yacc.c  */
    5650 #line 598 "parser.yy"
    5651     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Comma ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5652     break;
    5653 
    5654   case 126:
    5655 
    5656 /* Line 1806 of yacc.c  */
    5657 #line 603 "parser.yy"
    5658     { (yyval.en) = 0; }
    5659     break;
    5660 
    56615670  case 130:
    56625671
    56635672/* Line 1806 of yacc.c  */
    5664 #line 612 "parser.yy"
     5673#line 623 "parser.yy"
    56655674    { (yyval.sn) = (yyvsp[(1) - (1)].sn); }
    56665675    break;
     
    56695678
    56705679/* Line 1806 of yacc.c  */
    5671 #line 622 "parser.yy"
    5672     { (yyval.sn) = (yyvsp[(4) - (4)].sn)->add_label( (yyvsp[(1) - (4)].tok) );}
     5680#line 633 "parser.yy"
     5681    {
     5682                        (yyval.sn) = (yyvsp[(4) - (4)].sn)->add_label( (yyvsp[(1) - (4)].tok) );
     5683                }
    56735684    break;
    56745685
     
    56765687
    56775688/* Line 1806 of yacc.c  */
    5678 #line 627 "parser.yy"
     5689#line 640 "parser.yy"
    56795690    { (yyval.sn) = new CompoundStmtNode( (StatementNode *)0 ); }
    56805691    break;
     
    56835694
    56845695/* Line 1806 of yacc.c  */
    5685 #line 634 "parser.yy"
     5696#line 647 "parser.yy"
    56865697    { (yyval.sn) = new CompoundStmtNode( (yyvsp[(5) - (7)].sn) ); }
    56875698    break;
     
    56905701
    56915702/* Line 1806 of yacc.c  */
    5692 #line 640 "parser.yy"
     5703#line 653 "parser.yy"
    56935704    { if ( (yyvsp[(1) - (3)].sn) != 0 ) { (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(3) - (3)].sn) ); (yyval.sn) = (yyvsp[(1) - (3)].sn); } }
    56945705    break;
     
    56975708
    56985709/* Line 1806 of yacc.c  */
    5699 #line 645 "parser.yy"
     5710#line 658 "parser.yy"
    57005711    { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
    57015712    break;
     
    57045715
    57055716/* Line 1806 of yacc.c  */
    5706 #line 647 "parser.yy"
     5717#line 660 "parser.yy"
    57075718    { (yyval.sn) = new StatementNode( (yyvsp[(2) - (2)].decl) ); }
    57085719    break;
     
    57115722
    57125723/* Line 1806 of yacc.c  */
    5713 #line 649 "parser.yy"
     5724#line 662 "parser.yy"
    57145725    { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
    57155726    break;
     
    57185729
    57195730/* Line 1806 of yacc.c  */
    5720 #line 656 "parser.yy"
     5731#line 669 "parser.yy"
    57215732    { if ( (yyvsp[(1) - (2)].sn) != 0 ) { (yyvsp[(1) - (2)].sn)->set_link( (yyvsp[(2) - (2)].sn) ); (yyval.sn) = (yyvsp[(1) - (2)].sn); } }
    57225733    break;
     
    57255736
    57265737/* Line 1806 of yacc.c  */
    5727 #line 661 "parser.yy"
     5738#line 674 "parser.yy"
    57285739    { (yyval.sn) = new StatementNode( StatementNode::Exp, (yyvsp[(1) - (2)].en), 0 ); }
    57295740    break;
     
    57325743
    57335744/* Line 1806 of yacc.c  */
    5734 #line 667 "parser.yy"
     5745#line 680 "parser.yy"
    57355746    { (yyval.sn) = new StatementNode( StatementNode::If, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
    57365747    break;
     
    57395750
    57405751/* Line 1806 of yacc.c  */
    5741 #line 669 "parser.yy"
     5752#line 682 "parser.yy"
    57425753    { (yyval.sn) = new StatementNode( StatementNode::If, (yyvsp[(3) - (7)].en), (StatementNode *)mkList((*(yyvsp[(5) - (7)].sn), *(yyvsp[(7) - (7)].sn) )) ); }
    57435754    break;
     
    57465757
    57475758/* Line 1806 of yacc.c  */
    5748 #line 671 "parser.yy"
     5759#line 684 "parser.yy"
    57495760    { (yyval.sn) = new StatementNode( StatementNode::Switch, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
    57505761    break;
     
    57535764
    57545765/* Line 1806 of yacc.c  */
    5755 #line 673 "parser.yy"
     5766#line 686 "parser.yy"
    57565767    { (yyval.sn) = new StatementNode( StatementNode::Switch, (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ); /* xxx */ }
    57575768    break;
     
    57605771
    57615772/* Line 1806 of yacc.c  */
    5762 #line 678 "parser.yy"
     5773#line 691 "parser.yy"
    57635774    { (yyval.sn) = new StatementNode( StatementNode::Choose, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
    57645775    break;
     
    57675778
    57685779/* Line 1806 of yacc.c  */
    5769 #line 680 "parser.yy"
     5780#line 693 "parser.yy"
    57705781    { (yyval.sn) = new StatementNode( StatementNode::Choose, (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ); }
    57715782    break;
     
    57745785
    57755786/* Line 1806 of yacc.c  */
    5776 #line 687 "parser.yy"
     5787#line 700 "parser.yy"
    57775788    { (yyval.en) = (yyvsp[(1) - (1)].en); }
    57785789    break;
     
    57815792
    57825793/* Line 1806 of yacc.c  */
    5783 #line 689 "parser.yy"
     5794#line 702 "parser.yy"
    57845795    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    57855796    break;
     
    57885799
    57895800/* Line 1806 of yacc.c  */
    5790 #line 696 "parser.yy"
     5801#line 709 "parser.yy"
    57915802    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(tupleContents( (yyvsp[(1) - (3)].en) ))->set_link( (yyvsp[(3) - (3)].en) ) ); }
    57925803    break;
     
    57955806
    57965807/* Line 1806 of yacc.c  */
    5797 #line 700 "parser.yy"
     5808#line 713 "parser.yy"
    57985809    { (yyval.sn) = new StatementNode( StatementNode::Case, (yyvsp[(2) - (3)].en), 0 ); }
    57995810    break;
     
    58025813
    58035814/* Line 1806 of yacc.c  */
    5804 #line 701 "parser.yy"
     5815#line 714 "parser.yy"
    58055816    { (yyval.sn) = new StatementNode( StatementNode::Default ); }
    58065817    break;
     
    58095820
    58105821/* Line 1806 of yacc.c  */
    5811 #line 707 "parser.yy"
     5822#line 720 "parser.yy"
    58125823    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (2)].sn)->set_link( (yyvsp[(2) - (2)].sn) )); }
    58135824    break;
     
    58165827
    58175828/* Line 1806 of yacc.c  */
    5818 #line 711 "parser.yy"
     5829#line 724 "parser.yy"
    58195830    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
    58205831    break;
    58215832
    58225833  case 164:
    5823 
    5824 /* Line 1806 of yacc.c  */
    5825 #line 716 "parser.yy"
    5826     { (yyval.sn) = 0; }
    5827     break;
    5828 
    5829   case 166:
    5830 
    5831 /* Line 1806 of yacc.c  */
    5832 #line 722 "parser.yy"
    5833     { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
    5834     break;
    5835 
    5836   case 167:
    5837 
    5838 /* Line 1806 of yacc.c  */
    5839 #line 724 "parser.yy"
    5840     { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); }
    5841     break;
    5842 
    5843   case 168:
    58445834
    58455835/* Line 1806 of yacc.c  */
     
    58485838    break;
    58495839
    5850   case 170:
     5840  case 166:
    58515841
    58525842/* Line 1806 of yacc.c  */
     
    58555845    break;
    58565846
     5847  case 167:
     5848
     5849/* Line 1806 of yacc.c  */
     5850#line 737 "parser.yy"
     5851    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); }
     5852    break;
     5853
     5854  case 168:
     5855
     5856/* Line 1806 of yacc.c  */
     5857#line 742 "parser.yy"
     5858    { (yyval.sn) = 0; }
     5859    break;
     5860
     5861  case 170:
     5862
     5863/* Line 1806 of yacc.c  */
     5864#line 748 "parser.yy"
     5865    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
     5866    break;
     5867
    58575868  case 171:
    58585869
    58595870/* Line 1806 of yacc.c  */
    5860 #line 737 "parser.yy"
     5871#line 750 "parser.yy"
    58615872    { (yyval.sn) = (yyvsp[(1) - (3)].sn)->append_last_case((StatementNode *)mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].sn) ))); }
    58625873    break;
     
    58655876
    58665877/* Line 1806 of yacc.c  */
    5867 #line 739 "parser.yy"
     5878#line 752 "parser.yy"
    58685879    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); }
    58695880    break;
     
    58725883
    58735884/* Line 1806 of yacc.c  */
    5874 #line 741 "parser.yy"
     5885#line 754 "parser.yy"
    58755886    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (4)].sn)->set_link( (yyvsp[(2) - (4)].sn)->append_last_case((StatementNode *)mkList((*(yyvsp[(3) - (4)].sn),*(yyvsp[(4) - (4)].sn) ))))); }
    58765887    break;
     
    58795890
    58805891/* Line 1806 of yacc.c  */
    5881 #line 746 "parser.yy"
     5892#line 759 "parser.yy"
    58825893    { (yyval.sn) = 0; }
    58835894    break;
     
    58865897
    58875898/* Line 1806 of yacc.c  */
    5888 #line 751 "parser.yy"
    5889     { (yyval.sn) = new StatementNode( StatementNode::Fallthru, 0, 0 ); }
     5899#line 764 "parser.yy"
     5900    { (yyval.sn) = new StatementNode( StatementNode::Fallthru ); }
    58905901    break;
    58915902
     
    58935904
    58945905/* Line 1806 of yacc.c  */
    5895 #line 752 "parser.yy"
    5896     { (yyval.sn) = new StatementNode( StatementNode::Fallthru, 0, 0 ); }
     5906#line 765 "parser.yy"
     5907    { (yyval.sn) = new StatementNode( StatementNode::Fallthru ); }
    58975908    break;
    58985909
     
    59005911
    59015912/* Line 1806 of yacc.c  */
    5902 #line 757 "parser.yy"
     5913#line 770 "parser.yy"
    59035914    { (yyval.sn) = new StatementNode( StatementNode::While, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
    59045915    break;
     
    59075918
    59085919/* Line 1806 of yacc.c  */
    5909 #line 759 "parser.yy"
     5920#line 772 "parser.yy"
    59105921    { (yyval.sn) = new StatementNode( StatementNode::Do, (yyvsp[(5) - (7)].en), (yyvsp[(2) - (7)].sn) ); }
    59115922    break;
     
    59145925
    59155926/* Line 1806 of yacc.c  */
    5916 #line 761 "parser.yy"
     5927#line 774 "parser.yy"
    59175928    { (yyval.sn) = new StatementNode( StatementNode::For, (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].sn) ); }
    59185929    break;
     
    59215932
    59225933/* Line 1806 of yacc.c  */
    5923 #line 766 "parser.yy"
     5934#line 779 "parser.yy"
    59245935    { (yyval.en) = new ForCtlExprNode( (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].en) ); }
    59255936    break;
     
    59285939
    59295940/* Line 1806 of yacc.c  */
    5930 #line 768 "parser.yy"
     5941#line 781 "parser.yy"
    59315942    { (yyval.en) = new ForCtlExprNode( (yyvsp[(1) - (4)].decl), (yyvsp[(2) - (4)].en), (yyvsp[(4) - (4)].en) ); }
    59325943    break;
     
    59355946
    59365947/* Line 1806 of yacc.c  */
    5937 #line 773 "parser.yy"
     5948#line 786 "parser.yy"
    59385949    { (yyval.sn) = new StatementNode( StatementNode::Goto, (yyvsp[(2) - (3)].tok) ); }
    59395950    break;
     
    59425953
    59435954/* Line 1806 of yacc.c  */
    5944 #line 777 "parser.yy"
     5955#line 790 "parser.yy"
    59455956    { (yyval.sn) = new StatementNode( StatementNode::Goto, (yyvsp[(3) - (4)].en) ); }
    59465957    break;
     
    59495960
    59505961/* Line 1806 of yacc.c  */
    5951 #line 780 "parser.yy"
    5952     { (yyval.sn) = new StatementNode( StatementNode::Continue, 0, 0 ); }
     5962#line 793 "parser.yy"
     5963    { (yyval.sn) = new StatementNode( StatementNode::Continue ); }
    59535964    break;
    59545965
     
    59565967
    59575968/* Line 1806 of yacc.c  */
    5958 #line 784 "parser.yy"
     5969#line 797 "parser.yy"
    59595970    { (yyval.sn) = new StatementNode( StatementNode::Continue, (yyvsp[(2) - (3)].tok) ); }
    59605971    break;
     
    59635974
    59645975/* Line 1806 of yacc.c  */
    5965 #line 787 "parser.yy"
    5966     { (yyval.sn) = new StatementNode( StatementNode::Break, 0, 0 ); }
     5976#line 800 "parser.yy"
     5977    { (yyval.sn) = new StatementNode( StatementNode::Break ); }
    59675978    break;
    59685979
     
    59705981
    59715982/* Line 1806 of yacc.c  */
    5972 #line 791 "parser.yy"
     5983#line 804 "parser.yy"
    59735984    { (yyval.sn) = new StatementNode( StatementNode::Break, (yyvsp[(2) - (3)].tok) ); }
    59745985    break;
     
    59775988
    59785989/* Line 1806 of yacc.c  */
    5979 #line 793 "parser.yy"
     5990#line 806 "parser.yy"
    59805991    { (yyval.sn) = new StatementNode( StatementNode::Return, (yyvsp[(2) - (3)].en), 0 ); }
    59815992    break;
     
    59845995
    59855996/* Line 1806 of yacc.c  */
    5986 #line 795 "parser.yy"
     5997#line 808 "parser.yy"
    59875998    { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (3)].en), 0 ); }
    59885999    break;
     
    59916002
    59926003/* Line 1806 of yacc.c  */
    5993 #line 797 "parser.yy"
    5994     { (yyval.sn) = new StatementNode( StatementNode::Throw, 0, 0 ); }
     6004#line 810 "parser.yy"
     6005    { (yyval.sn) = new StatementNode( StatementNode::Throw ); }
    59956006    break;
    59966007
     
    59986009
    59996010/* Line 1806 of yacc.c  */
    6000 #line 802 "parser.yy"
     6011#line 815 "parser.yy"
    60016012    { (yyval.sn) = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn) )))); }
    60026013    break;
     
    60056016
    60066017/* Line 1806 of yacc.c  */
    6007 #line 804 "parser.yy"
     6018#line 817 "parser.yy"
    60086019    { (yyval.sn) = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn) )))); }
    60096020    break;
     
    60126023
    60136024/* Line 1806 of yacc.c  */
    6014 #line 806 "parser.yy"
     6025#line 819 "parser.yy"
    60156026    {
    60166027                        (yyvsp[(3) - (4)].pn)->set_link( (yyvsp[(4) - (4)].pn) );
     
    60226033
    60236034/* Line 1806 of yacc.c  */
    6024 #line 817 "parser.yy"
     6035#line 830 "parser.yy"
    60256036    { (yyval.pn) = StatementNode::newCatchStmt( 0, (yyvsp[(5) - (5)].sn), true ); }
    60266037    break;
     
    60296040
    60306041/* Line 1806 of yacc.c  */
    6031 #line 819 "parser.yy"
     6042#line 832 "parser.yy"
    60326043    { (yyval.pn) = (yyvsp[(1) - (6)].pn)->set_link( StatementNode::newCatchStmt( 0, (yyvsp[(6) - (6)].sn), true ) ); }
    60336044    break;
     
    60366047
    60376048/* Line 1806 of yacc.c  */
    6038 #line 824 "parser.yy"
     6049#line 837 "parser.yy"
    60396050    { (yyval.pn) = StatementNode::newCatchStmt( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ); }
    60406051    break;
     
    60436054
    60446055/* Line 1806 of yacc.c  */
    6045 #line 826 "parser.yy"
     6056#line 839 "parser.yy"
    60466057    { (yyval.pn) = (yyvsp[(1) - (10)].pn)->set_link( StatementNode::newCatchStmt( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ); }
    60476058    break;
     
    60506061
    60516062/* Line 1806 of yacc.c  */
    6052 #line 831 "parser.yy"
     6063#line 844 "parser.yy"
    60536064    {
    60546065                        (yyval.pn) = new StatementNode( StatementNode::Finally, 0, (yyvsp[(2) - (2)].sn) );
     
    60606071
    60616072/* Line 1806 of yacc.c  */
    6062 #line 845 "parser.yy"
     6073#line 858 "parser.yy"
    60636074    {
    60646075                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    60706081
    60716082/* Line 1806 of yacc.c  */
    6072 #line 850 "parser.yy"
     6083#line 863 "parser.yy"
    60736084    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    60746085    break;
     
    60776088
    60786089/* Line 1806 of yacc.c  */
    6079 #line 852 "parser.yy"
     6090#line 865 "parser.yy"
    60806091    {
    60816092                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    60876098
    60886099/* Line 1806 of yacc.c  */
    6089 #line 861 "parser.yy"
    6090     { (yyval.sn) = new StatementNode( StatementNode::Asm, 0, 0 ); }
     6100#line 874 "parser.yy"
     6101    { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (6)].flag), (yyvsp[(4) - (6)].constant), 0 ); }
    60916102    break;
    60926103
     
    60946105
    60956106/* Line 1806 of yacc.c  */
    6096 #line 863 "parser.yy"
    6097     { (yyval.sn) = new StatementNode( StatementNode::Asm, 0, 0 ); }
     6107#line 876 "parser.yy"
     6108    { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (8)].flag), (yyvsp[(4) - (8)].constant), (yyvsp[(6) - (8)].en) ); }
    60986109    break;
    60996110
     
    61016112
    61026113/* Line 1806 of yacc.c  */
    6103 #line 865 "parser.yy"
    6104     { (yyval.sn) = new StatementNode( StatementNode::Asm, 0, 0 ); }
     6114#line 878 "parser.yy"
     6115    { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (10)].flag), (yyvsp[(4) - (10)].constant), (yyvsp[(6) - (10)].en), (yyvsp[(8) - (10)].en) ); }
    61056116    break;
    61066117
     
    61086119
    61096120/* Line 1806 of yacc.c  */
    6110 #line 867 "parser.yy"
    6111     { (yyval.sn) = new StatementNode( StatementNode::Asm, 0, 0 ); }
    6112     break;
    6113 
    6114   case 214:
    6115 
    6116 /* Line 1806 of yacc.c  */
    6117 #line 881 "parser.yy"
     6121#line 880 "parser.yy"
     6122    { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (12)].flag), (yyvsp[(4) - (12)].constant), (yyvsp[(6) - (12)].en), (yyvsp[(8) - (12)].en), (yyvsp[(10) - (12)].constant) ); }
     6123    break;
     6124
     6125  case 210:
     6126
     6127/* Line 1806 of yacc.c  */
     6128#line 882 "parser.yy"
     6129    { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (14)].flag), (yyvsp[(5) - (14)].constant), 0, (yyvsp[(8) - (14)].en), (yyvsp[(10) - (14)].constant), (yyvsp[(12) - (14)].label) ); }
     6130    break;
     6131
     6132  case 211:
     6133
     6134/* Line 1806 of yacc.c  */
     6135#line 887 "parser.yy"
     6136    { (yyval.flag) = false; }
     6137    break;
     6138
     6139  case 212:
     6140
     6141/* Line 1806 of yacc.c  */
     6142#line 889 "parser.yy"
     6143    { (yyval.flag) = true; }
     6144    break;
     6145
     6146  case 213:
     6147
     6148/* Line 1806 of yacc.c  */
     6149#line 894 "parser.yy"
     6150    { (yyval.en) = 0; }
     6151    break;
     6152
     6153  case 216:
     6154
     6155/* Line 1806 of yacc.c  */
     6156#line 901 "parser.yy"
     6157    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }
     6158    break;
     6159
     6160  case 217:
     6161
     6162/* Line 1806 of yacc.c  */
     6163#line 906 "parser.yy"
     6164    { (yyval.en) = new AsmExprNode( 0, (yyvsp[(1) - (4)].constant), (yyvsp[(3) - (4)].en) ); }
     6165    break;
     6166
     6167  case 218:
     6168
     6169/* Line 1806 of yacc.c  */
     6170#line 908 "parser.yy"
     6171    { (yyval.en) = new AsmExprNode( (yyvsp[(2) - (7)].en), (yyvsp[(4) - (7)].constant), (yyvsp[(6) - (7)].en) ); }
     6172    break;
     6173
     6174  case 219:
     6175
     6176/* Line 1806 of yacc.c  */
     6177#line 913 "parser.yy"
     6178    { (yyval.constant) = 0; }
     6179    break;
     6180
     6181  case 220:
     6182
     6183/* Line 1806 of yacc.c  */
     6184#line 915 "parser.yy"
     6185    { (yyval.constant) = (yyvsp[(1) - (1)].constant); }
     6186    break;
     6187
     6188  case 221:
     6189
     6190/* Line 1806 of yacc.c  */
     6191#line 917 "parser.yy"
     6192    { (yyval.constant) = (ConstantNode *)(yyvsp[(1) - (3)].constant)->set_link( (yyvsp[(3) - (3)].constant) ); }
     6193    break;
     6194
     6195  case 222:
     6196
     6197/* Line 1806 of yacc.c  */
     6198#line 922 "parser.yy"
     6199    { (yyval.label) = new LabelNode(); (yyval.label)->append_label( (yyvsp[(1) - (1)].tok) ); }
     6200    break;
     6201
     6202  case 223:
     6203
     6204/* Line 1806 of yacc.c  */
     6205#line 924 "parser.yy"
     6206    { (yyval.label) = (yyvsp[(1) - (3)].label); (yyvsp[(1) - (3)].label)->append_label( (yyvsp[(3) - (3)].tok) ); }
     6207    break;
     6208
     6209  case 224:
     6210
     6211/* Line 1806 of yacc.c  */
     6212#line 931 "parser.yy"
     6213    { (yyval.decl) = 0; }
     6214    break;
     6215
     6216  case 227:
     6217
     6218/* Line 1806 of yacc.c  */
     6219#line 938 "parser.yy"
     6220    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
     6221    break;
     6222
     6223  case 228:
     6224
     6225/* Line 1806 of yacc.c  */
     6226#line 943 "parser.yy"
     6227    { (yyval.decl) = 0; }
     6228    break;
     6229
     6230  case 231:
     6231
     6232/* Line 1806 of yacc.c  */
     6233#line 950 "parser.yy"
     6234    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
     6235    break;
     6236
     6237  case 236:
     6238
     6239/* Line 1806 of yacc.c  */
     6240#line 964 "parser.yy"
    61186241    {}
    61196242    break;
    61206243
    6121   case 215:
    6122 
    6123 /* Line 1806 of yacc.c  */
    6124 #line 885 "parser.yy"
     6244  case 237:
     6245
     6246/* Line 1806 of yacc.c  */
     6247#line 965 "parser.yy"
    61256248    {}
    61266249    break;
    61276250
    6128   case 217:
    6129 
    6130 /* Line 1806 of yacc.c  */
    6131 #line 893 "parser.yy"
    6132     { (yyval.decl) = 0; }
    6133     break;
    6134 
    6135   case 220:
    6136 
    6137 /* Line 1806 of yacc.c  */
    6138 #line 900 "parser.yy"
    6139     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    6140     break;
    6141 
    6142   case 221:
    6143 
    6144 /* Line 1806 of yacc.c  */
    6145 #line 905 "parser.yy"
    6146     { (yyval.decl) = 0; }
    6147     break;
    6148 
    6149   case 224:
    6150 
    6151 /* Line 1806 of yacc.c  */
    6152 #line 912 "parser.yy"
    6153     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    6154     break;
    6155 
    6156   case 229:
    6157 
    6158 /* Line 1806 of yacc.c  */
    6159 #line 926 "parser.yy"
    6160     {}
    6161     break;
    6162 
    6163   case 230:
    6164 
    6165 /* Line 1806 of yacc.c  */
    6166 #line 927 "parser.yy"
    6167     {}
    6168     break;
    6169 
    6170   case 238:
    6171 
    6172 /* Line 1806 of yacc.c  */
    6173 #line 956 "parser.yy"
     6251  case 245:
     6252
     6253/* Line 1806 of yacc.c  */
     6254#line 994 "parser.yy"
    61746255    {
    61756256                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    61786259    break;
    61796260
    6180   case 239:
    6181 
    6182 /* Line 1806 of yacc.c  */
    6183 #line 963 "parser.yy"
     6261  case 246:
     6262
     6263/* Line 1806 of yacc.c  */
     6264#line 1001 "parser.yy"
    61846265    {
    61856266                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    61886269    break;
    61896270
    6190   case 240:
    6191 
    6192 /* Line 1806 of yacc.c  */
    6193 #line 968 "parser.yy"
     6271  case 247:
     6272
     6273/* Line 1806 of yacc.c  */
     6274#line 1006 "parser.yy"
    61946275    {
    61956276                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (6)].tok), TypedefTable::ID );
     
    61986279    break;
    61996280
    6200   case 241:
    6201 
    6202 /* Line 1806 of yacc.c  */
    6203 #line 978 "parser.yy"
     6281  case 248:
     6282
     6283/* Line 1806 of yacc.c  */
     6284#line 1016 "parser.yy"
    62046285    {
    62056286                        typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
     
    62086289    break;
    62096290
    6210   case 242:
    6211 
    6212 /* Line 1806 of yacc.c  */
    6213 #line 983 "parser.yy"
     6291  case 249:
     6292
     6293/* Line 1806 of yacc.c  */
     6294#line 1021 "parser.yy"
    62146295    {
    62156296                        typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
     
    62186299    break;
    62196300
    6220   case 243:
    6221 
    6222 /* Line 1806 of yacc.c  */
    6223 #line 988 "parser.yy"
     6301  case 250:
     6302
     6303/* Line 1806 of yacc.c  */
     6304#line 1026 "parser.yy"
    62246305    {
    62256306                        typedefTable.setNextIdentifier( *(yyvsp[(3) - (4)].tok) );
     
    62286309    break;
    62296310
    6230   case 244:
    6231 
    6232 /* Line 1806 of yacc.c  */
    6233 #line 996 "parser.yy"
     6311  case 251:
     6312
     6313/* Line 1806 of yacc.c  */
     6314#line 1034 "parser.yy"
    62346315    {
    62356316                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    62386319    break;
    62396320
    6240   case 245:
    6241 
    6242 /* Line 1806 of yacc.c  */
    6243 #line 1001 "parser.yy"
     6321  case 252:
     6322
     6323/* Line 1806 of yacc.c  */
     6324#line 1039 "parser.yy"
    62446325    {
    62456326                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    62486329    break;
    62496330
    6250   case 246:
    6251 
    6252 /* Line 1806 of yacc.c  */
    6253 #line 1006 "parser.yy"
     6331  case 253:
     6332
     6333/* Line 1806 of yacc.c  */
     6334#line 1044 "parser.yy"
    62546335    {
    62556336                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    62586339    break;
    62596340
    6260   case 247:
    6261 
    6262 /* Line 1806 of yacc.c  */
    6263 #line 1011 "parser.yy"
     6341  case 254:
     6342
     6343/* Line 1806 of yacc.c  */
     6344#line 1049 "parser.yy"
    62646345    {
    62656346                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    62686349    break;
    62696350
    6270   case 248:
    6271 
    6272 /* Line 1806 of yacc.c  */
    6273 #line 1016 "parser.yy"
     6351  case 255:
     6352
     6353/* Line 1806 of yacc.c  */
     6354#line 1054 "parser.yy"
    62746355    {
    62756356                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
     
    62786359    break;
    62796360
    6280   case 249:
    6281 
    6282 /* Line 1806 of yacc.c  */
    6283 #line 1024 "parser.yy"
     6361  case 256:
     6362
     6363/* Line 1806 of yacc.c  */
     6364#line 1062 "parser.yy"
    62846365    {
    62856366                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(3) - (8)].tok), DeclarationNode::newTuple( 0 ), (yyvsp[(6) - (8)].decl), 0, true );
     
    62876368    break;
    62886369
    6289   case 250:
    6290 
    6291 /* Line 1806 of yacc.c  */
    6292 #line 1047 "parser.yy"
     6370  case 257:
     6371
     6372/* Line 1806 of yacc.c  */
     6373#line 1085 "parser.yy"
    62936374    {
    62946375                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
     
    62966377    break;
    62976378
    6298   case 251:
    6299 
    6300 /* Line 1806 of yacc.c  */
    6301 #line 1051 "parser.yy"
     6379  case 258:
     6380
     6381/* Line 1806 of yacc.c  */
     6382#line 1089 "parser.yy"
    63026383    {
    63036384                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
     
    63056386    break;
    63066387
    6307   case 252:
    6308 
    6309 /* Line 1806 of yacc.c  */
    6310 #line 1058 "parser.yy"
     6388  case 259:
     6389
     6390/* Line 1806 of yacc.c  */
     6391#line 1096 "parser.yy"
    63116392    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
    63126393    break;
    63136394
    6314   case 253:
    6315 
    6316 /* Line 1806 of yacc.c  */
    6317 #line 1062 "parser.yy"
     6395  case 260:
     6396
     6397/* Line 1806 of yacc.c  */
     6398#line 1100 "parser.yy"
    63186399    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (9)].decl)->appendList( (yyvsp[(7) - (9)].decl) ) ); }
    63196400    break;
    63206401
    6321   case 254:
    6322 
    6323 /* Line 1806 of yacc.c  */
    6324 #line 1067 "parser.yy"
     6402  case 261:
     6403
     6404/* Line 1806 of yacc.c  */
     6405#line 1105 "parser.yy"
    63256406    {
    63266407                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    63296410    break;
    63306411
    6331   case 255:
    6332 
    6333 /* Line 1806 of yacc.c  */
    6334 #line 1072 "parser.yy"
     6412  case 262:
     6413
     6414/* Line 1806 of yacc.c  */
     6415#line 1110 "parser.yy"
    63356416    {
    63366417                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    63396420    break;
    63406421
    6341   case 256:
    6342 
    6343 /* Line 1806 of yacc.c  */
    6344 #line 1077 "parser.yy"
     6422  case 263:
     6423
     6424/* Line 1806 of yacc.c  */
     6425#line 1115 "parser.yy"
    63456426    {
    63466427                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::TD );
     
    63496430    break;
    63506431
    6351   case 257:
    6352 
    6353 /* Line 1806 of yacc.c  */
    6354 #line 1088 "parser.yy"
     6432  case 264:
     6433
     6434/* Line 1806 of yacc.c  */
     6435#line 1126 "parser.yy"
    63556436    {
    63566437                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    63596440    break;
    63606441
    6361   case 258:
    6362 
    6363 /* Line 1806 of yacc.c  */
    6364 #line 1093 "parser.yy"
     6442  case 265:
     6443
     6444/* Line 1806 of yacc.c  */
     6445#line 1131 "parser.yy"
    63656446    {
    63666447                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    63696450    break;
    63706451
    6371   case 259:
    6372 
    6373 /* Line 1806 of yacc.c  */
    6374 #line 1098 "parser.yy"
     6452  case 266:
     6453
     6454/* Line 1806 of yacc.c  */
     6455#line 1136 "parser.yy"
    63756456    {
    63766457                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    63796460    break;
    63806461
    6381   case 260:
    6382 
    6383 /* Line 1806 of yacc.c  */
    6384 #line 1103 "parser.yy"
     6462  case 267:
     6463
     6464/* Line 1806 of yacc.c  */
     6465#line 1141 "parser.yy"
    63856466    {
    63866467                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    63896470    break;
    63906471
    6391   case 261:
    6392 
    6393 /* Line 1806 of yacc.c  */
    6394 #line 1108 "parser.yy"
     6472  case 268:
     6473
     6474/* Line 1806 of yacc.c  */
     6475#line 1146 "parser.yy"
    63956476    {
    63966477                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    63996480    break;
    64006481
    6401   case 262:
    6402 
    6403 /* Line 1806 of yacc.c  */
    6404 #line 1117 "parser.yy"
     6482  case 269:
     6483
     6484/* Line 1806 of yacc.c  */
     6485#line 1155 "parser.yy"
    64056486    {
    64066487                        typedefTable.addToEnclosingScope( *(yyvsp[(2) - (4)].tok), TypedefTable::TD );
     
    64096490    break;
    64106491
    6411   case 263:
    6412 
    6413 /* Line 1806 of yacc.c  */
    6414 #line 1122 "parser.yy"
     6492  case 270:
     6493
     6494/* Line 1806 of yacc.c  */
     6495#line 1160 "parser.yy"
    64156496    {
    64166497                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (7)].tok), TypedefTable::TD );
     
    64196500    break;
    64206501
    6421   case 268:
    6422 
    6423 /* Line 1806 of yacc.c  */
    6424 #line 1139 "parser.yy"
     6502  case 275:
     6503
     6504/* Line 1806 of yacc.c  */
     6505#line 1177 "parser.yy"
    64256506    {
    64266507                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    64296510    break;
    64306511
    6431   case 269:
    6432 
    6433 /* Line 1806 of yacc.c  */
    6434 #line 1144 "parser.yy"
     6512  case 276:
     6513
     6514/* Line 1806 of yacc.c  */
     6515#line 1182 "parser.yy"
    64356516    {
    64366517                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    64396520    break;
    64406521
    6441   case 278:
    6442 
    6443 /* Line 1806 of yacc.c  */
    6444 #line 1166 "parser.yy"
     6522  case 285:
     6523
     6524/* Line 1806 of yacc.c  */
     6525#line 1204 "parser.yy"
    64456526    { (yyval.decl) = 0; }
    64466527    break;
    64476528
    6448   case 281:
    6449 
    6450 /* Line 1806 of yacc.c  */
    6451 #line 1178 "parser.yy"
     6529  case 288:
     6530
     6531/* Line 1806 of yacc.c  */
     6532#line 1216 "parser.yy"
    64526533    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    64536534    break;
    64546535
    6455   case 283:
    6456 
    6457 /* Line 1806 of yacc.c  */
    6458 #line 1184 "parser.yy"
    6459     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Attribute ); }
    6460     break;
    6461 
    6462   case 284:
    6463 
    6464 /* Line 1806 of yacc.c  */
    6465 #line 1189 "parser.yy"
     6536  case 291:
     6537
     6538/* Line 1806 of yacc.c  */
     6539#line 1227 "parser.yy"
    64666540    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Const ); }
    64676541    break;
    64686542
    6469   case 285:
    6470 
    6471 /* Line 1806 of yacc.c  */
    6472 #line 1191 "parser.yy"
     6543  case 292:
     6544
     6545/* Line 1806 of yacc.c  */
     6546#line 1229 "parser.yy"
    64736547    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Restrict ); }
    64746548    break;
    64756549
    6476   case 286:
    6477 
    6478 /* Line 1806 of yacc.c  */
    6479 #line 1193 "parser.yy"
     6550  case 293:
     6551
     6552/* Line 1806 of yacc.c  */
     6553#line 1231 "parser.yy"
    64806554    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Volatile ); }
    64816555    break;
    64826556
    6483   case 287:
    6484 
    6485 /* Line 1806 of yacc.c  */
    6486 #line 1195 "parser.yy"
     6557  case 294:
     6558
     6559/* Line 1806 of yacc.c  */
     6560#line 1233 "parser.yy"
    64876561    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Lvalue ); }
    64886562    break;
    64896563
    6490   case 288:
    6491 
    6492 /* Line 1806 of yacc.c  */
    6493 #line 1197 "parser.yy"
     6564  case 295:
     6565
     6566/* Line 1806 of yacc.c  */
     6567#line 1235 "parser.yy"
    64946568    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Atomic ); }
    64956569    break;
    64966570
    6497   case 289:
    6498 
    6499 /* Line 1806 of yacc.c  */
    6500 #line 1199 "parser.yy"
     6571  case 296:
     6572
     6573/* Line 1806 of yacc.c  */
     6574#line 1237 "parser.yy"
    65016575    {
    65026576                        typedefTable.enterScope();
     
    65046578    break;
    65056579
    6506   case 290:
    6507 
    6508 /* Line 1806 of yacc.c  */
    6509 #line 1203 "parser.yy"
     6580  case 297:
     6581
     6582/* Line 1806 of yacc.c  */
     6583#line 1241 "parser.yy"
    65106584    {
    65116585                        typedefTable.leaveScope();
     
    65146588    break;
    65156589
    6516   case 292:
    6517 
    6518 /* Line 1806 of yacc.c  */
    6519 #line 1212 "parser.yy"
     6590  case 299:
     6591
     6592/* Line 1806 of yacc.c  */
     6593#line 1250 "parser.yy"
    65206594    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    65216595    break;
    65226596
    6523   case 293:
    6524 
    6525 /* Line 1806 of yacc.c  */
    6526 #line 1214 "parser.yy"
     6597  case 300:
     6598
     6599/* Line 1806 of yacc.c  */
     6600#line 1252 "parser.yy"
    65276601    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    65286602    break;
    65296603
    6530   case 295:
    6531 
    6532 /* Line 1806 of yacc.c  */
    6533 #line 1225 "parser.yy"
     6604  case 302:
     6605
     6606/* Line 1806 of yacc.c  */
     6607#line 1263 "parser.yy"
    65346608    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    65356609    break;
    65366610
    6537   case 297:
    6538 
    6539 /* Line 1806 of yacc.c  */
    6540 #line 1234 "parser.yy"
     6611  case 304:
     6612
     6613/* Line 1806 of yacc.c  */
     6614#line 1272 "parser.yy"
    65416615    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Extern ); }
    65426616    break;
    65436617
    6544   case 298:
    6545 
    6546 /* Line 1806 of yacc.c  */
    6547 #line 1236 "parser.yy"
     6618  case 305:
     6619
     6620/* Line 1806 of yacc.c  */
     6621#line 1274 "parser.yy"
    65486622    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Static ); }
    65496623    break;
    65506624
    6551   case 299:
    6552 
    6553 /* Line 1806 of yacc.c  */
    6554 #line 1238 "parser.yy"
     6625  case 306:
     6626
     6627/* Line 1806 of yacc.c  */
     6628#line 1276 "parser.yy"
    65556629    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); }
    65566630    break;
    65576631
    6558   case 300:
    6559 
    6560 /* Line 1806 of yacc.c  */
    6561 #line 1240 "parser.yy"
     6632  case 307:
     6633
     6634/* Line 1806 of yacc.c  */
     6635#line 1278 "parser.yy"
    65626636    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Register ); }
    65636637    break;
    65646638
    6565   case 301:
    6566 
    6567 /* Line 1806 of yacc.c  */
    6568 #line 1242 "parser.yy"
     6639  case 308:
     6640
     6641/* Line 1806 of yacc.c  */
     6642#line 1280 "parser.yy"
    65696643    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Inline ); }
    65706644    break;
    65716645
    6572   case 302:
    6573 
    6574 /* Line 1806 of yacc.c  */
    6575 #line 1244 "parser.yy"
     6646  case 309:
     6647
     6648/* Line 1806 of yacc.c  */
     6649#line 1282 "parser.yy"
    65766650    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); }
    65776651    break;
    65786652
    6579   case 303:
    6580 
    6581 /* Line 1806 of yacc.c  */
    6582 #line 1246 "parser.yy"
     6653  case 310:
     6654
     6655/* Line 1806 of yacc.c  */
     6656#line 1284 "parser.yy"
    65836657    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Noreturn ); }
    65846658    break;
    65856659
    6586   case 304:
    6587 
    6588 /* Line 1806 of yacc.c  */
    6589 #line 1248 "parser.yy"
     6660  case 311:
     6661
     6662/* Line 1806 of yacc.c  */
     6663#line 1286 "parser.yy"
    65906664    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); }
    65916665    break;
    65926666
    6593   case 305:
    6594 
    6595 /* Line 1806 of yacc.c  */
    6596 #line 1253 "parser.yy"
     6667  case 312:
     6668
     6669/* Line 1806 of yacc.c  */
     6670#line 1291 "parser.yy"
    65976671    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Char ); }
    65986672    break;
    65996673
    6600   case 306:
    6601 
    6602 /* Line 1806 of yacc.c  */
    6603 #line 1255 "parser.yy"
     6674  case 313:
     6675
     6676/* Line 1806 of yacc.c  */
     6677#line 1293 "parser.yy"
    66046678    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Double ); }
    66056679    break;
    66066680
    6607   case 307:
    6608 
    6609 /* Line 1806 of yacc.c  */
    6610 #line 1257 "parser.yy"
     6681  case 314:
     6682
     6683/* Line 1806 of yacc.c  */
     6684#line 1295 "parser.yy"
    66116685    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Float ); }
    66126686    break;
    66136687
    6614   case 308:
    6615 
    6616 /* Line 1806 of yacc.c  */
    6617 #line 1259 "parser.yy"
     6688  case 315:
     6689
     6690/* Line 1806 of yacc.c  */
     6691#line 1297 "parser.yy"
    66186692    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Int ); }
    66196693    break;
    66206694
    6621   case 309:
    6622 
    6623 /* Line 1806 of yacc.c  */
    6624 #line 1261 "parser.yy"
     6695  case 316:
     6696
     6697/* Line 1806 of yacc.c  */
     6698#line 1299 "parser.yy"
    66256699    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Long ); }
    66266700    break;
    66276701
    6628   case 310:
    6629 
    6630 /* Line 1806 of yacc.c  */
    6631 #line 1263 "parser.yy"
     6702  case 317:
     6703
     6704/* Line 1806 of yacc.c  */
     6705#line 1301 "parser.yy"
    66326706    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Short ); }
    66336707    break;
    66346708
    6635   case 311:
    6636 
    6637 /* Line 1806 of yacc.c  */
    6638 #line 1265 "parser.yy"
     6709  case 318:
     6710
     6711/* Line 1806 of yacc.c  */
     6712#line 1303 "parser.yy"
    66396713    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Signed ); }
    66406714    break;
    66416715
    6642   case 312:
    6643 
    6644 /* Line 1806 of yacc.c  */
    6645 #line 1267 "parser.yy"
     6716  case 319:
     6717
     6718/* Line 1806 of yacc.c  */
     6719#line 1305 "parser.yy"
    66466720    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Unsigned ); }
    66476721    break;
    66486722
    6649   case 313:
    6650 
    6651 /* Line 1806 of yacc.c  */
    6652 #line 1269 "parser.yy"
     6723  case 320:
     6724
     6725/* Line 1806 of yacc.c  */
     6726#line 1307 "parser.yy"
    66536727    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Void ); }
    66546728    break;
    66556729
    6656   case 314:
    6657 
    6658 /* Line 1806 of yacc.c  */
    6659 #line 1271 "parser.yy"
     6730  case 321:
     6731
     6732/* Line 1806 of yacc.c  */
     6733#line 1309 "parser.yy"
    66606734    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Bool ); }
    66616735    break;
    66626736
    6663   case 315:
    6664 
    6665 /* Line 1806 of yacc.c  */
    6666 #line 1273 "parser.yy"
     6737  case 322:
     6738
     6739/* Line 1806 of yacc.c  */
     6740#line 1311 "parser.yy"
    66676741    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Complex ); }
    66686742    break;
    66696743
    6670   case 316:
    6671 
    6672 /* Line 1806 of yacc.c  */
    6673 #line 1275 "parser.yy"
     6744  case 323:
     6745
     6746/* Line 1806 of yacc.c  */
     6747#line 1313 "parser.yy"
    66746748    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Imaginary ); }
    66756749    break;
    66766750
    6677   case 318:
    6678 
    6679 /* Line 1806 of yacc.c  */
    6680 #line 1282 "parser.yy"
     6751  case 325:
     6752
     6753/* Line 1806 of yacc.c  */
     6754#line 1320 "parser.yy"
    66816755    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    66826756    break;
    66836757
    6684   case 319:
    6685 
    6686 /* Line 1806 of yacc.c  */
    6687 #line 1284 "parser.yy"
     6758  case 326:
     6759
     6760/* Line 1806 of yacc.c  */
     6761#line 1322 "parser.yy"
    66886762    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    66896763    break;
    66906764
    6691   case 320:
    6692 
    6693 /* Line 1806 of yacc.c  */
    6694 #line 1286 "parser.yy"
     6765  case 327:
     6766
     6767/* Line 1806 of yacc.c  */
     6768#line 1324 "parser.yy"
    66956769    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    66966770    break;
    66976771
    6698   case 321:
    6699 
    6700 /* Line 1806 of yacc.c  */
    6701 #line 1288 "parser.yy"
     6772  case 328:
     6773
     6774/* Line 1806 of yacc.c  */
     6775#line 1326 "parser.yy"
    67026776    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addType( (yyvsp[(1) - (3)].decl) ); }
    67036777    break;
    67046778
    6705   case 323:
    6706 
    6707 /* Line 1806 of yacc.c  */
    6708 #line 1294 "parser.yy"
     6779  case 330:
     6780
     6781/* Line 1806 of yacc.c  */
     6782#line 1332 "parser.yy"
    67096783    { (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    67106784    break;
    67116785
    6712   case 325:
    6713 
    6714 /* Line 1806 of yacc.c  */
    6715 #line 1301 "parser.yy"
     6786  case 332:
     6787
     6788/* Line 1806 of yacc.c  */
     6789#line 1339 "parser.yy"
    67166790    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    67176791    break;
    67186792
    6719   case 326:
    6720 
    6721 /* Line 1806 of yacc.c  */
    6722 #line 1303 "parser.yy"
     6793  case 333:
     6794
     6795/* Line 1806 of yacc.c  */
     6796#line 1341 "parser.yy"
    67236797    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    67246798    break;
    67256799
    6726   case 327:
    6727 
    6728 /* Line 1806 of yacc.c  */
    6729 #line 1305 "parser.yy"
     6800  case 334:
     6801
     6802/* Line 1806 of yacc.c  */
     6803#line 1343 "parser.yy"
    67306804    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addType( (yyvsp[(2) - (2)].decl) ); }
    67316805    break;
    67326806
    6733   case 328:
    6734 
    6735 /* Line 1806 of yacc.c  */
    6736 #line 1310 "parser.yy"
     6807  case 335:
     6808
     6809/* Line 1806 of yacc.c  */
     6810#line 1348 "parser.yy"
    67376811    { (yyval.decl) = (yyvsp[(3) - (4)].decl); }
    67386812    break;
    67396813
    6740   case 329:
    6741 
    6742 /* Line 1806 of yacc.c  */
    6743 #line 1312 "parser.yy"
     6814  case 336:
     6815
     6816/* Line 1806 of yacc.c  */
     6817#line 1350 "parser.yy"
    67446818    { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[(3) - (4)].en) ); }
    67456819    break;
    67466820
    6747   case 330:
    6748 
    6749 /* Line 1806 of yacc.c  */
    6750 #line 1314 "parser.yy"
     6821  case 337:
     6822
     6823/* Line 1806 of yacc.c  */
     6824#line 1352 "parser.yy"
    67516825    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].decl) ); }
    67526826    break;
    67536827
    6754   case 331:
    6755 
    6756 /* Line 1806 of yacc.c  */
    6757 #line 1316 "parser.yy"
     6828  case 338:
     6829
     6830/* Line 1806 of yacc.c  */
     6831#line 1354 "parser.yy"
    67586832    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
    67596833    break;
    67606834
    6761   case 333:
    6762 
    6763 /* Line 1806 of yacc.c  */
    6764 #line 1322 "parser.yy"
     6835  case 340:
     6836
     6837/* Line 1806 of yacc.c  */
     6838#line 1360 "parser.yy"
    67656839    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    67666840    break;
    67676841
    6768   case 334:
    6769 
    6770 /* Line 1806 of yacc.c  */
    6771 #line 1324 "parser.yy"
     6842  case 341:
     6843
     6844/* Line 1806 of yacc.c  */
     6845#line 1362 "parser.yy"
    67726846    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    67736847    break;
    67746848
    6775   case 335:
    6776 
    6777 /* Line 1806 of yacc.c  */
    6778 #line 1326 "parser.yy"
     6849  case 342:
     6850
     6851/* Line 1806 of yacc.c  */
     6852#line 1364 "parser.yy"
    67796853    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    67806854    break;
    67816855
    6782   case 337:
    6783 
    6784 /* Line 1806 of yacc.c  */
    6785 #line 1332 "parser.yy"
     6856  case 344:
     6857
     6858/* Line 1806 of yacc.c  */
     6859#line 1370 "parser.yy"
    67866860    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    67876861    break;
    67886862
    6789   case 338:
    6790 
    6791 /* Line 1806 of yacc.c  */
    6792 #line 1334 "parser.yy"
     6863  case 345:
     6864
     6865/* Line 1806 of yacc.c  */
     6866#line 1372 "parser.yy"
    67936867    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    67946868    break;
    67956869
    6796   case 340:
    6797 
    6798 /* Line 1806 of yacc.c  */
    6799 #line 1340 "parser.yy"
     6870  case 347:
     6871
     6872/* Line 1806 of yacc.c  */
     6873#line 1378 "parser.yy"
    68006874    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    68016875    break;
    68026876
    6803   case 341:
    6804 
    6805 /* Line 1806 of yacc.c  */
    6806 #line 1342 "parser.yy"
     6877  case 348:
     6878
     6879/* Line 1806 of yacc.c  */
     6880#line 1380 "parser.yy"
    68076881    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    68086882    break;
    68096883
    6810   case 342:
    6811 
    6812 /* Line 1806 of yacc.c  */
    6813 #line 1344 "parser.yy"
     6884  case 349:
     6885
     6886/* Line 1806 of yacc.c  */
     6887#line 1382 "parser.yy"
    68146888    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    68156889    break;
    68166890
    6817   case 343:
    6818 
    6819 /* Line 1806 of yacc.c  */
    6820 #line 1349 "parser.yy"
     6891  case 350:
     6892
     6893/* Line 1806 of yacc.c  */
     6894#line 1387 "parser.yy"
    68216895    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(1) - (1)].tok) ); }
    68226896    break;
    68236897
    6824   case 344:
    6825 
    6826 /* Line 1806 of yacc.c  */
    6827 #line 1351 "parser.yy"
     6898  case 351:
     6899
     6900/* Line 1806 of yacc.c  */
     6901#line 1389 "parser.yy"
    68286902    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(2) - (2)].tok) )->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    68296903    break;
    68306904
    6831   case 345:
    6832 
    6833 /* Line 1806 of yacc.c  */
    6834 #line 1353 "parser.yy"
     6905  case 352:
     6906
     6907/* Line 1806 of yacc.c  */
     6908#line 1391 "parser.yy"
    68356909    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    68366910    break;
    68376911
    6838   case 348:
    6839 
    6840 /* Line 1806 of yacc.c  */
    6841 #line 1363 "parser.yy"
     6912  case 355:
     6913
     6914/* Line 1806 of yacc.c  */
     6915#line 1401 "parser.yy"
    68426916    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (4)].aggKey), 0, 0, (yyvsp[(3) - (4)].decl) ); }
    68436917    break;
    68446918
    6845   case 349:
    6846 
    6847 /* Line 1806 of yacc.c  */
    6848 #line 1365 "parser.yy"
     6919  case 356:
     6920
     6921/* Line 1806 of yacc.c  */
     6922#line 1403 "parser.yy"
    68496923    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (2)].aggKey), (yyvsp[(2) - (2)].tok), 0, 0 ); }
    68506924    break;
    68516925
    6852   case 350:
    6853 
    6854 /* Line 1806 of yacc.c  */
    6855 #line 1367 "parser.yy"
     6926  case 357:
     6927
     6928/* Line 1806 of yacc.c  */
     6929#line 1405 "parser.yy"
    68566930    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (5)].aggKey), (yyvsp[(2) - (5)].tok), 0, (yyvsp[(4) - (5)].decl) ); }
    68576931    break;
    68586932
    6859   case 351:
    6860 
    6861 /* Line 1806 of yacc.c  */
    6862 #line 1369 "parser.yy"
     6933  case 358:
     6934
     6935/* Line 1806 of yacc.c  */
     6936#line 1407 "parser.yy"
    68636937    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), 0, (yyvsp[(3) - (7)].en), (yyvsp[(6) - (7)].decl) ); }
    68646938    break;
    68656939
    6866   case 352:
    6867 
    6868 /* Line 1806 of yacc.c  */
    6869 #line 1371 "parser.yy"
     6940  case 359:
     6941
     6942/* Line 1806 of yacc.c  */
     6943#line 1409 "parser.yy"
    68706944    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    68716945    break;
    68726946
    6873   case 353:
    6874 
    6875 /* Line 1806 of yacc.c  */
    6876 #line 1376 "parser.yy"
     6947  case 360:
     6948
     6949/* Line 1806 of yacc.c  */
     6950#line 1414 "parser.yy"
    68776951    { (yyval.aggKey) = DeclarationNode::Struct; }
    68786952    break;
    68796953
    6880   case 354:
    6881 
    6882 /* Line 1806 of yacc.c  */
    6883 #line 1378 "parser.yy"
     6954  case 361:
     6955
     6956/* Line 1806 of yacc.c  */
     6957#line 1416 "parser.yy"
    68846958    { (yyval.aggKey) = DeclarationNode::Union; }
    68856959    break;
    68866960
    6887   case 355:
    6888 
    6889 /* Line 1806 of yacc.c  */
    6890 #line 1383 "parser.yy"
     6961  case 362:
     6962
     6963/* Line 1806 of yacc.c  */
     6964#line 1421 "parser.yy"
    68916965    { (yyval.decl) = (yyvsp[(1) - (1)].decl); }
    68926966    break;
    68936967
    6894   case 356:
    6895 
    6896 /* Line 1806 of yacc.c  */
    6897 #line 1385 "parser.yy"
     6968  case 363:
     6969
     6970/* Line 1806 of yacc.c  */
     6971#line 1423 "parser.yy"
    68986972    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ); }
    68996973    break;
    69006974
    6901   case 358:
    6902 
    6903 /* Line 1806 of yacc.c  */
    6904 #line 1391 "parser.yy"
     6975  case 365:
     6976
     6977/* Line 1806 of yacc.c  */
     6978#line 1429 "parser.yy"
    69056979    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    69066980    break;
    69076981
    6908   case 360:
    6909 
    6910 /* Line 1806 of yacc.c  */
    6911 #line 1394 "parser.yy"
     6982  case 367:
     6983
     6984/* Line 1806 of yacc.c  */
     6985#line 1432 "parser.yy"
    69126986    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    69136987    break;
    69146988
    6915   case 362:
    6916 
    6917 /* Line 1806 of yacc.c  */
    6918 #line 1400 "parser.yy"
     6989  case 369:
     6990
     6991/* Line 1806 of yacc.c  */
     6992#line 1438 "parser.yy"
    69196993    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) ); }
    69206994    break;
    69216995
    6922   case 363:
    6923 
    6924 /* Line 1806 of yacc.c  */
    6925 #line 1402 "parser.yy"
     6996  case 370:
     6997
     6998/* Line 1806 of yacc.c  */
     6999#line 1440 "parser.yy"
    69267000    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(1) - (3)].decl)->cloneType( (yyvsp[(3) - (3)].tok) ) ); }
    69277001    break;
    69287002
    6929   case 364:
    6930 
    6931 /* Line 1806 of yacc.c  */
    6932 #line 1404 "parser.yy"
     7003  case 371:
     7004
     7005/* Line 1806 of yacc.c  */
     7006#line 1442 "parser.yy"
    69337007    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(1) - (2)].decl)->cloneType( 0 ) ); }
    69347008    break;
    69357009
    6936   case 365:
    6937 
    6938 /* Line 1806 of yacc.c  */
    6939 #line 1409 "parser.yy"
     7010  case 372:
     7011
     7012/* Line 1806 of yacc.c  */
     7013#line 1447 "parser.yy"
    69407014    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    69417015    break;
    69427016
    6943   case 366:
    6944 
    6945 /* Line 1806 of yacc.c  */
    6946 #line 1411 "parser.yy"
     7017  case 373:
     7018
     7019/* Line 1806 of yacc.c  */
     7020#line 1449 "parser.yy"
    69477021    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(1) - (4)].decl)->cloneBaseType( (yyvsp[(4) - (4)].decl) ) ); }
    69487022    break;
    69497023
    6950   case 367:
    6951 
    6952 /* Line 1806 of yacc.c  */
    6953 #line 1416 "parser.yy"
     7024  case 374:
     7025
     7026/* Line 1806 of yacc.c  */
     7027#line 1454 "parser.yy"
    69547028    { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ }
    69557029    break;
    69567030
    6957   case 368:
    6958 
    6959 /* Line 1806 of yacc.c  */
    6960 #line 1418 "parser.yy"
     7031  case 375:
     7032
     7033/* Line 1806 of yacc.c  */
     7034#line 1456 "parser.yy"
    69617035    { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[(1) - (1)].en) ); }
    69627036    break;
    69637037
    6964   case 369:
    6965 
    6966 /* Line 1806 of yacc.c  */
    6967 #line 1421 "parser.yy"
     7038  case 376:
     7039
     7040/* Line 1806 of yacc.c  */
     7041#line 1459 "parser.yy"
    69687042    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
    69697043    break;
    69707044
    6971   case 370:
    6972 
    6973 /* Line 1806 of yacc.c  */
    6974 #line 1424 "parser.yy"
     7045  case 377:
     7046
     7047/* Line 1806 of yacc.c  */
     7048#line 1462 "parser.yy"
    69757049    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
    69767050    break;
    69777051
    6978   case 372:
    6979 
    6980 /* Line 1806 of yacc.c  */
    6981 #line 1430 "parser.yy"
     7052  case 379:
     7053
     7054/* Line 1806 of yacc.c  */
     7055#line 1468 "parser.yy"
    69827056    { (yyval.en) = 0; }
    69837057    break;
    69847058
    6985   case 373:
    6986 
    6987 /* Line 1806 of yacc.c  */
    6988 #line 1432 "parser.yy"
     7059  case 380:
     7060
     7061/* Line 1806 of yacc.c  */
     7062#line 1470 "parser.yy"
    69897063    { (yyval.en) = (yyvsp[(1) - (1)].en); }
    69907064    break;
    69917065
    6992   case 374:
    6993 
    6994 /* Line 1806 of yacc.c  */
    6995 #line 1437 "parser.yy"
     7066  case 381:
     7067
     7068/* Line 1806 of yacc.c  */
     7069#line 1475 "parser.yy"
    69967070    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    69977071    break;
    69987072
    6999   case 376:
    7000 
    7001 /* Line 1806 of yacc.c  */
    7002 #line 1446 "parser.yy"
     7073  case 383:
     7074
     7075/* Line 1806 of yacc.c  */
     7076#line 1484 "parser.yy"
    70037077    { (yyval.decl) = DeclarationNode::newEnum( 0, (yyvsp[(3) - (5)].decl) ); }
    70047078    break;
    70057079
    7006   case 377:
    7007 
    7008 /* Line 1806 of yacc.c  */
    7009 #line 1448 "parser.yy"
     7080  case 384:
     7081
     7082/* Line 1806 of yacc.c  */
     7083#line 1486 "parser.yy"
    70107084    { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (6)].tok), (yyvsp[(4) - (6)].decl) ); }
    70117085    break;
    70127086
    7013   case 378:
    7014 
    7015 /* Line 1806 of yacc.c  */
    7016 #line 1450 "parser.yy"
     7087  case 385:
     7088
     7089/* Line 1806 of yacc.c  */
     7090#line 1488 "parser.yy"
    70177091    { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (2)].tok), 0 ); }
    70187092    break;
    70197093
    7020   case 379:
    7021 
    7022 /* Line 1806 of yacc.c  */
    7023 #line 1455 "parser.yy"
     7094  case 386:
     7095
     7096/* Line 1806 of yacc.c  */
     7097#line 1493 "parser.yy"
    70247098    { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[(1) - (2)].tok), (yyvsp[(2) - (2)].en) ); }
    70257099    break;
    70267100
    7027   case 380:
    7028 
    7029 /* Line 1806 of yacc.c  */
    7030 #line 1457 "parser.yy"
     7101  case 387:
     7102
     7103/* Line 1806 of yacc.c  */
     7104#line 1495 "parser.yy"
    70317105    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[(3) - (4)].tok), (yyvsp[(4) - (4)].en) ) ); }
    70327106    break;
    70337107
    7034   case 381:
    7035 
    7036 /* Line 1806 of yacc.c  */
    7037 #line 1462 "parser.yy"
     7108  case 388:
     7109
     7110/* Line 1806 of yacc.c  */
     7111#line 1500 "parser.yy"
    70387112    { (yyval.en) = 0; }
    70397113    break;
    70407114
    7041   case 382:
    7042 
    7043 /* Line 1806 of yacc.c  */
    7044 #line 1464 "parser.yy"
     7115  case 389:
     7116
     7117/* Line 1806 of yacc.c  */
     7118#line 1502 "parser.yy"
    70457119    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    70467120    break;
    70477121
    7048   case 383:
    7049 
    7050 /* Line 1806 of yacc.c  */
    7051 #line 1471 "parser.yy"
     7122  case 390:
     7123
     7124/* Line 1806 of yacc.c  */
     7125#line 1509 "parser.yy"
    70527126    { (yyval.decl) = 0; }
    70537127    break;
    70547128
    7055   case 387:
    7056 
    7057 /* Line 1806 of yacc.c  */
    7058 #line 1479 "parser.yy"
     7129  case 394:
     7130
     7131/* Line 1806 of yacc.c  */
     7132#line 1517 "parser.yy"
    70597133    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    70607134    break;
    70617135
    7062   case 388:
    7063 
    7064 /* Line 1806 of yacc.c  */
    7065 #line 1481 "parser.yy"
     7136  case 395:
     7137
     7138/* Line 1806 of yacc.c  */
     7139#line 1519 "parser.yy"
    70667140    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    70677141    break;
    70687142
    7069   case 389:
    7070 
    7071 /* Line 1806 of yacc.c  */
    7072 #line 1483 "parser.yy"
     7143  case 396:
     7144
     7145/* Line 1806 of yacc.c  */
     7146#line 1521 "parser.yy"
    70737147    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    70747148    break;
    70757149
    7076   case 391:
    7077 
    7078 /* Line 1806 of yacc.c  */
    7079 #line 1491 "parser.yy"
     7150  case 398:
     7151
     7152/* Line 1806 of yacc.c  */
     7153#line 1529 "parser.yy"
    70807154    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    70817155    break;
    70827156
    7083   case 392:
    7084 
    7085 /* Line 1806 of yacc.c  */
    7086 #line 1493 "parser.yy"
     7157  case 399:
     7158
     7159/* Line 1806 of yacc.c  */
     7160#line 1531 "parser.yy"
    70877161    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    70887162    break;
    70897163
    7090   case 393:
    7091 
    7092 /* Line 1806 of yacc.c  */
    7093 #line 1495 "parser.yy"
     7164  case 400:
     7165
     7166/* Line 1806 of yacc.c  */
     7167#line 1533 "parser.yy"
    70947168    { (yyval.decl) = (yyvsp[(1) - (9)].decl)->appendList( (yyvsp[(5) - (9)].decl) )->appendList( (yyvsp[(9) - (9)].decl) ); }
    70957169    break;
    70967170
    7097   case 395:
    7098 
    7099 /* Line 1806 of yacc.c  */
    7100 #line 1501 "parser.yy"
     7171  case 402:
     7172
     7173/* Line 1806 of yacc.c  */
     7174#line 1539 "parser.yy"
    71017175    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    71027176    break;
    71037177
    7104   case 396:
    7105 
    7106 /* Line 1806 of yacc.c  */
    7107 #line 1506 "parser.yy"
     7178  case 403:
     7179
     7180/* Line 1806 of yacc.c  */
     7181#line 1544 "parser.yy"
    71087182    { (yyval.decl) = 0; }
    71097183    break;
    71107184
    7111   case 399:
    7112 
    7113 /* Line 1806 of yacc.c  */
    7114 #line 1513 "parser.yy"
     7185  case 406:
     7186
     7187/* Line 1806 of yacc.c  */
     7188#line 1551 "parser.yy"
    71157189    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    71167190    break;
    71177191
    7118   case 402:
    7119 
    7120 /* Line 1806 of yacc.c  */
    7121 #line 1520 "parser.yy"
     7192  case 409:
     7193
     7194/* Line 1806 of yacc.c  */
     7195#line 1558 "parser.yy"
    71227196    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    71237197    break;
    71247198
    7125   case 403:
    7126 
    7127 /* Line 1806 of yacc.c  */
    7128 #line 1522 "parser.yy"
     7199  case 410:
     7200
     7201/* Line 1806 of yacc.c  */
     7202#line 1560 "parser.yy"
    71297203    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    71307204    break;
    71317205
    7132   case 405:
    7133 
    7134 /* Line 1806 of yacc.c  */
    7135 #line 1531 "parser.yy"
     7206  case 412:
     7207
     7208/* Line 1806 of yacc.c  */
     7209#line 1569 "parser.yy"
    71367210    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
    71377211    break;
    71387212
    7139   case 406:
    7140 
    7141 /* Line 1806 of yacc.c  */
    7142 #line 1534 "parser.yy"
     7213  case 413:
     7214
     7215/* Line 1806 of yacc.c  */
     7216#line 1572 "parser.yy"
    71437217    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
    71447218    break;
    71457219
    7146   case 407:
    7147 
    7148 /* Line 1806 of yacc.c  */
    7149 #line 1536 "parser.yy"
     7220  case 414:
     7221
     7222/* Line 1806 of yacc.c  */
     7223#line 1574 "parser.yy"
    71507224    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addName( (yyvsp[(3) - (4)].tok) )->addQualifiers( (yyvsp[(1) - (4)].decl) ); }
    71517225    break;
    71527226
    7153   case 412:
    7154 
    7155 /* Line 1806 of yacc.c  */
    7156 #line 1546 "parser.yy"
     7227  case 419:
     7228
     7229/* Line 1806 of yacc.c  */
     7230#line 1584 "parser.yy"
    71577231    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    71587232    break;
    71597233
    7160   case 414:
    7161 
    7162 /* Line 1806 of yacc.c  */
    7163 #line 1552 "parser.yy"
     7234  case 421:
     7235
     7236/* Line 1806 of yacc.c  */
     7237#line 1590 "parser.yy"
    71647238    {
    71657239                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    71687242    break;
    71697243
    7170   case 415:
    7171 
    7172 /* Line 1806 of yacc.c  */
    7173 #line 1557 "parser.yy"
     7244  case 422:
     7245
     7246/* Line 1806 of yacc.c  */
     7247#line 1595 "parser.yy"
    71747248    {
    71757249                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    71787252    break;
    71797253
    7180   case 417:
    7181 
    7182 /* Line 1806 of yacc.c  */
    7183 #line 1566 "parser.yy"
     7254  case 424:
     7255
     7256/* Line 1806 of yacc.c  */
     7257#line 1604 "parser.yy"
    71847258    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    71857259    break;
    71867260
    7187   case 418:
    7188 
    7189 /* Line 1806 of yacc.c  */
    7190 #line 1575 "parser.yy"
     7261  case 425:
     7262
     7263/* Line 1806 of yacc.c  */
     7264#line 1613 "parser.yy"
    71917265    { (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) ); }
    71927266    break;
    71937267
    7194   case 419:
    7195 
    7196 /* Line 1806 of yacc.c  */
    7197 #line 1577 "parser.yy"
     7268  case 426:
     7269
     7270/* Line 1806 of yacc.c  */
     7271#line 1615 "parser.yy"
    71987272    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( DeclarationNode::newName( (yyvsp[(3) - (3)].tok) ) ); }
    71997273    break;
    72007274
    7201   case 431:
    7202 
    7203 /* Line 1806 of yacc.c  */
    7204 #line 1602 "parser.yy"
     7275  case 438:
     7276
     7277/* Line 1806 of yacc.c  */
     7278#line 1640 "parser.yy"
    72057279    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    72067280    break;
    72077281
    7208   case 435:
    7209 
    7210 /* Line 1806 of yacc.c  */
    7211 #line 1610 "parser.yy"
     7282  case 442:
     7283
     7284/* Line 1806 of yacc.c  */
     7285#line 1648 "parser.yy"
    72127286    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    72137287    break;
    72147288
    7215   case 436:
    7216 
    7217 /* Line 1806 of yacc.c  */
    7218 #line 1615 "parser.yy"
     7289  case 443:
     7290
     7291/* Line 1806 of yacc.c  */
     7292#line 1653 "parser.yy"
    72197293    { (yyval.in) = 0; }
    72207294    break;
    72217295
    7222   case 437:
    7223 
    7224 /* Line 1806 of yacc.c  */
    7225 #line 1617 "parser.yy"
     7296  case 444:
     7297
     7298/* Line 1806 of yacc.c  */
     7299#line 1655 "parser.yy"
    72267300    { (yyval.in) = (yyvsp[(2) - (2)].in); }
    72277301    break;
    72287302
    7229   case 438:
    7230 
    7231 /* Line 1806 of yacc.c  */
    7232 #line 1621 "parser.yy"
     7303  case 445:
     7304
     7305/* Line 1806 of yacc.c  */
     7306#line 1659 "parser.yy"
    72337307    { (yyval.in) = new InitializerNode( (yyvsp[(1) - (1)].en) ); }
    72347308    break;
    72357309
    7236   case 439:
    7237 
    7238 /* Line 1806 of yacc.c  */
    7239 #line 1622 "parser.yy"
     7310  case 446:
     7311
     7312/* Line 1806 of yacc.c  */
     7313#line 1660 "parser.yy"
    72407314    { (yyval.in) = new InitializerNode( (yyvsp[(2) - (4)].in), true ); }
    72417315    break;
    72427316
    7243   case 441:
    7244 
    7245 /* Line 1806 of yacc.c  */
    7246 #line 1627 "parser.yy"
     7317  case 448:
     7318
     7319/* Line 1806 of yacc.c  */
     7320#line 1665 "parser.yy"
    72477321    { (yyval.in) = (yyvsp[(2) - (2)].in)->set_designators( (yyvsp[(1) - (2)].en) ); }
    72487322    break;
    72497323
    7250   case 442:
    7251 
    7252 /* Line 1806 of yacc.c  */
    7253 #line 1628 "parser.yy"
     7324  case 449:
     7325
     7326/* Line 1806 of yacc.c  */
     7327#line 1666 "parser.yy"
    72547328    { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (3)].in)->set_link( (yyvsp[(3) - (3)].in) ) ); }
    72557329    break;
    72567330
    7257   case 443:
    7258 
    7259 /* Line 1806 of yacc.c  */
    7260 #line 1630 "parser.yy"
     7331  case 450:
     7332
     7333/* Line 1806 of yacc.c  */
     7334#line 1668 "parser.yy"
    72617335    { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (4)].in)->set_link( (yyvsp[(4) - (4)].in)->set_designators( (yyvsp[(3) - (4)].en) ) ) ); }
    72627336    break;
    72637337
    7264   case 445:
    7265 
    7266 /* Line 1806 of yacc.c  */
    7267 #line 1646 "parser.yy"
     7338  case 452:
     7339
     7340/* Line 1806 of yacc.c  */
     7341#line 1684 "parser.yy"
    72687342    { (yyval.en) = new VarRefNode( (yyvsp[(1) - (2)].tok) ); }
    72697343    break;
    72707344
    7271   case 447:
    7272 
    7273 /* Line 1806 of yacc.c  */
    7274 #line 1652 "parser.yy"
     7345  case 454:
     7346
     7347/* Line 1806 of yacc.c  */
     7348#line 1690 "parser.yy"
    72757349    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (2)].en)->set_link( (yyvsp[(2) - (2)].en) )); }
    72767350    break;
    72777351
    7278   case 448:
    7279 
    7280 /* Line 1806 of yacc.c  */
    7281 #line 1658 "parser.yy"
    7282     { (yyval.en) = new VarRefNode( (yyvsp[(2) - (2)].tok) ); }
    7283     break;
    7284 
    7285   case 449:
    7286 
    7287 /* Line 1806 of yacc.c  */
    7288 #line 1661 "parser.yy"
    7289     { (yyval.en) = (yyvsp[(3) - (5)].en); }
    7290     break;
    7291 
    7292   case 450:
    7293 
    7294 /* Line 1806 of yacc.c  */
    7295 #line 1663 "parser.yy"
    7296     { (yyval.en) = (yyvsp[(3) - (5)].en); }
    7297     break;
    7298 
    7299   case 451:
    7300 
    7301 /* Line 1806 of yacc.c  */
    7302 #line 1665 "parser.yy"
    7303     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].en) ); }
    7304     break;
    7305 
    7306   case 452:
    7307 
    7308 /* Line 1806 of yacc.c  */
    7309 #line 1667 "parser.yy"
    7310     { (yyval.en) = (yyvsp[(4) - (6)].en); }
    7311     break;
    7312 
    7313   case 454:
    7314 
    7315 /* Line 1806 of yacc.c  */
    7316 #line 1691 "parser.yy"
     7352  case 455:
     7353
     7354/* Line 1806 of yacc.c  */
     7355#line 1697 "parser.yy"
     7356    { (yyval.en) = new DesignatorNode( new VarRefNode( (yyvsp[(1) - (1)].tok) ) ); }
     7357    break;
     7358
     7359  case 456:
     7360
     7361/* Line 1806 of yacc.c  */
     7362#line 1699 "parser.yy"
     7363    { (yyval.en) = new DesignatorNode( new VarRefNode( (yyvsp[(2) - (2)].tok) ) ); }
     7364    break;
     7365
     7366  case 457:
     7367
     7368/* Line 1806 of yacc.c  */
     7369#line 1702 "parser.yy"
     7370    { (yyval.en) = new DesignatorNode( (yyvsp[(3) - (5)].en), true ); }
     7371    break;
     7372
     7373  case 458:
     7374
     7375/* Line 1806 of yacc.c  */
     7376#line 1704 "parser.yy"
     7377    { (yyval.en) = new DesignatorNode( (yyvsp[(3) - (5)].en), true ); }
     7378    break;
     7379
     7380  case 459:
     7381
     7382/* Line 1806 of yacc.c  */
     7383#line 1706 "parser.yy"
     7384    { (yyval.en) = new DesignatorNode( new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].en) ), true ); }
     7385    break;
     7386
     7387  case 460:
     7388
     7389/* Line 1806 of yacc.c  */
     7390#line 1708 "parser.yy"
     7391    { (yyval.en) = new DesignatorNode( (yyvsp[(4) - (6)].en) ); }
     7392    break;
     7393
     7394  case 462:
     7395
     7396/* Line 1806 of yacc.c  */
     7397#line 1732 "parser.yy"
    73177398    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    73187399    break;
    73197400
    7320   case 455:
    7321 
    7322 /* Line 1806 of yacc.c  */
    7323 #line 1693 "parser.yy"
     7401  case 463:
     7402
     7403/* Line 1806 of yacc.c  */
     7404#line 1734 "parser.yy"
    73247405    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    73257406    break;
    73267407
    7327   case 456:
    7328 
    7329 /* Line 1806 of yacc.c  */
    7330 #line 1695 "parser.yy"
     7408  case 464:
     7409
     7410/* Line 1806 of yacc.c  */
     7411#line 1736 "parser.yy"
    73317412    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    73327413    break;
    73337414
    7334   case 458:
    7335 
    7336 /* Line 1806 of yacc.c  */
    7337 #line 1701 "parser.yy"
     7415  case 466:
     7416
     7417/* Line 1806 of yacc.c  */
     7418#line 1742 "parser.yy"
    73387419    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    73397420    break;
    73407421
    7341   case 459:
    7342 
    7343 /* Line 1806 of yacc.c  */
    7344 #line 1703 "parser.yy"
     7422  case 467:
     7423
     7424/* Line 1806 of yacc.c  */
     7425#line 1744 "parser.yy"
    73457426    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    73467427    break;
    73477428
    7348   case 460:
    7349 
    7350 /* Line 1806 of yacc.c  */
    7351 #line 1708 "parser.yy"
     7429  case 468:
     7430
     7431/* Line 1806 of yacc.c  */
     7432#line 1749 "parser.yy"
    73527433    { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
    73537434    break;
    73547435
    7355   case 462:
    7356 
    7357 /* Line 1806 of yacc.c  */
    7358 #line 1714 "parser.yy"
     7436  case 470:
     7437
     7438/* Line 1806 of yacc.c  */
     7439#line 1755 "parser.yy"
    73597440    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(3) - (4)].decl) ); }
    73607441    break;
    73617442
    7362   case 463:
    7363 
    7364 /* Line 1806 of yacc.c  */
    7365 #line 1719 "parser.yy"
     7443  case 471:
     7444
     7445/* Line 1806 of yacc.c  */
     7446#line 1760 "parser.yy"
    73667447    { typedefTable.addToEnclosingScope( *(yyvsp[(2) - (2)].tok), TypedefTable::TD ); }
    73677448    break;
    73687449
    7369   case 464:
    7370 
    7371 /* Line 1806 of yacc.c  */
    7372 #line 1721 "parser.yy"
     7450  case 472:
     7451
     7452/* Line 1806 of yacc.c  */
     7453#line 1762 "parser.yy"
    73737454    { (yyval.decl) = DeclarationNode::newTypeParam( (yyvsp[(1) - (4)].tclass), (yyvsp[(2) - (4)].tok) )->addAssertions( (yyvsp[(4) - (4)].decl) ); }
    73747455    break;
    73757456
    7376   case 466:
    7377 
    7378 /* Line 1806 of yacc.c  */
    7379 #line 1727 "parser.yy"
     7457  case 474:
     7458
     7459/* Line 1806 of yacc.c  */
     7460#line 1768 "parser.yy"
    73807461    { (yyval.tclass) = DeclarationNode::Type; }
    73817462    break;
    73827463
    7383   case 467:
    7384 
    7385 /* Line 1806 of yacc.c  */
    7386 #line 1729 "parser.yy"
     7464  case 475:
     7465
     7466/* Line 1806 of yacc.c  */
     7467#line 1770 "parser.yy"
    73877468    { (yyval.tclass) = DeclarationNode::Ftype; }
    73887469    break;
    73897470
    7390   case 468:
    7391 
    7392 /* Line 1806 of yacc.c  */
    7393 #line 1731 "parser.yy"
     7471  case 476:
     7472
     7473/* Line 1806 of yacc.c  */
     7474#line 1772 "parser.yy"
    73947475    { (yyval.tclass) = DeclarationNode::Dtype; }
    73957476    break;
    73967477
    7397   case 469:
    7398 
    7399 /* Line 1806 of yacc.c  */
    7400 #line 1736 "parser.yy"
     7478  case 477:
     7479
     7480/* Line 1806 of yacc.c  */
     7481#line 1777 "parser.yy"
    74017482    { (yyval.decl) = 0; }
    74027483    break;
    74037484
    7404   case 470:
    7405 
    7406 /* Line 1806 of yacc.c  */
    7407 #line 1738 "parser.yy"
     7485  case 478:
     7486
     7487/* Line 1806 of yacc.c  */
     7488#line 1779 "parser.yy"
    74087489    { (yyval.decl) = (yyvsp[(1) - (2)].decl) == 0 ? (yyvsp[(2) - (2)].decl) : (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ); }
    74097490    break;
    74107491
    7411   case 471:
    7412 
    7413 /* Line 1806 of yacc.c  */
    7414 #line 1743 "parser.yy"
     7492  case 479:
     7493
     7494/* Line 1806 of yacc.c  */
     7495#line 1784 "parser.yy"
    74157496    {
    74167497                        typedefTable.openContext( *(yyvsp[(2) - (5)].tok) );
     
    74197500    break;
    74207501
    7421   case 472:
    7422 
    7423 /* Line 1806 of yacc.c  */
    7424 #line 1748 "parser.yy"
     7502  case 480:
     7503
     7504/* Line 1806 of yacc.c  */
     7505#line 1789 "parser.yy"
    74257506    { (yyval.decl) = (yyvsp[(4) - (5)].decl); }
    74267507    break;
    74277508
    7428   case 473:
    7429 
    7430 /* Line 1806 of yacc.c  */
    7431 #line 1750 "parser.yy"
     7509  case 481:
     7510
     7511/* Line 1806 of yacc.c  */
     7512#line 1791 "parser.yy"
    74327513    { (yyval.decl) = 0; }
    74337514    break;
    74347515
    7435   case 474:
    7436 
    7437 /* Line 1806 of yacc.c  */
    7438 #line 1755 "parser.yy"
     7516  case 482:
     7517
     7518/* Line 1806 of yacc.c  */
     7519#line 1796 "parser.yy"
    74397520    { (yyval.en) = new TypeValueNode( (yyvsp[(1) - (1)].decl) ); }
    74407521    break;
    74417522
    7442   case 476:
    7443 
    7444 /* Line 1806 of yacc.c  */
    7445 #line 1758 "parser.yy"
     7523  case 484:
     7524
     7525/* Line 1806 of yacc.c  */
     7526#line 1799 "parser.yy"
    74467527    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( new TypeValueNode( (yyvsp[(3) - (3)].decl) ))); }
    74477528    break;
    74487529
    7449   case 477:
    7450 
    7451 /* Line 1806 of yacc.c  */
    7452 #line 1760 "parser.yy"
     7530  case 485:
     7531
     7532/* Line 1806 of yacc.c  */
     7533#line 1801 "parser.yy"
    74537534    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) )); }
    74547535    break;
    74557536
    7456   case 478:
    7457 
    7458 /* Line 1806 of yacc.c  */
    7459 #line 1765 "parser.yy"
     7537  case 486:
     7538
     7539/* Line 1806 of yacc.c  */
     7540#line 1806 "parser.yy"
    74607541    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    74617542    break;
    74627543
    7463   case 479:
    7464 
    7465 /* Line 1806 of yacc.c  */
    7466 #line 1767 "parser.yy"
     7544  case 487:
     7545
     7546/* Line 1806 of yacc.c  */
     7547#line 1808 "parser.yy"
    74677548    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); }
    74687549    break;
    74697550
    7470   case 480:
    7471 
    7472 /* Line 1806 of yacc.c  */
    7473 #line 1769 "parser.yy"
     7551  case 488:
     7552
     7553/* Line 1806 of yacc.c  */
     7554#line 1810 "parser.yy"
    74747555    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl)->copyStorageClasses( (yyvsp[(1) - (3)].decl) ) ); }
    74757556    break;
    74767557
    7477   case 481:
    7478 
    7479 /* Line 1806 of yacc.c  */
    7480 #line 1774 "parser.yy"
     7558  case 489:
     7559
     7560/* Line 1806 of yacc.c  */
     7561#line 1815 "parser.yy"
    74817562    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addAssertions( (yyvsp[(2) - (2)].decl) ); }
    74827563    break;
    74837564
    7484   case 482:
    7485 
    7486 /* Line 1806 of yacc.c  */
    7487 #line 1776 "parser.yy"
     7565  case 490:
     7566
     7567/* Line 1806 of yacc.c  */
     7568#line 1817 "parser.yy"
    74887569    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addAssertions( (yyvsp[(2) - (4)].decl) )->addType( (yyvsp[(4) - (4)].decl) ); }
    74897570    break;
    74907571
    7491   case 483:
    7492 
    7493 /* Line 1806 of yacc.c  */
    7494 #line 1781 "parser.yy"
     7572  case 491:
     7573
     7574/* Line 1806 of yacc.c  */
     7575#line 1822 "parser.yy"
    74957576    {
    74967577                        typedefTable.addToEnclosingScope( *(yyvsp[(1) - (1)].tok), TypedefTable::TD );
     
    74997580    break;
    75007581
    7501   case 484:
    7502 
    7503 /* Line 1806 of yacc.c  */
    7504 #line 1786 "parser.yy"
     7582  case 492:
     7583
     7584/* Line 1806 of yacc.c  */
     7585#line 1827 "parser.yy"
    75057586    {
    75067587                        typedefTable.addToEnclosingScope( *(yyvsp[(1) - (6)].tok), TypedefTable::TG );
     
    75097590    break;
    75107591
    7511   case 485:
    7512 
    7513 /* Line 1806 of yacc.c  */
    7514 #line 1794 "parser.yy"
     7592  case 493:
     7593
     7594/* Line 1806 of yacc.c  */
     7595#line 1835 "parser.yy"
    75157596    {
    75167597                        typedefTable.addToEnclosingScope( *(yyvsp[(2) - (9)].tok), TypedefTable::ID );
     
    75197600    break;
    75207601
    7521   case 486:
    7522 
    7523 /* Line 1806 of yacc.c  */
    7524 #line 1799 "parser.yy"
     7602  case 494:
     7603
     7604/* Line 1806 of yacc.c  */
     7605#line 1840 "parser.yy"
    75257606    {
    75267607                        typedefTable.enterContext( *(yyvsp[(2) - (8)].tok) );
     
    75297610    break;
    75307611
    7531   case 487:
    7532 
    7533 /* Line 1806 of yacc.c  */
    7534 #line 1804 "parser.yy"
     7612  case 495:
     7613
     7614/* Line 1806 of yacc.c  */
     7615#line 1845 "parser.yy"
    75357616    {
    75367617                        typedefTable.leaveContext();
     
    75407621    break;
    75417622
    7542   case 489:
    7543 
    7544 /* Line 1806 of yacc.c  */
    7545 #line 1814 "parser.yy"
     7623  case 497:
     7624
     7625/* Line 1806 of yacc.c  */
     7626#line 1855 "parser.yy"
    75467627    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    75477628    break;
    75487629
    7549   case 492:
    7550 
    7551 /* Line 1806 of yacc.c  */
    7552 #line 1824 "parser.yy"
     7630  case 500:
     7631
     7632/* Line 1806 of yacc.c  */
     7633#line 1865 "parser.yy"
    75537634    {
    75547635                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    75577638    break;
    75587639
    7559   case 493:
    7560 
    7561 /* Line 1806 of yacc.c  */
    7562 #line 1829 "parser.yy"
     7640  case 501:
     7641
     7642/* Line 1806 of yacc.c  */
     7643#line 1870 "parser.yy"
    75637644    {
    75647645                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    75677648    break;
    75687649
    7569   case 494:
    7570 
    7571 /* Line 1806 of yacc.c  */
    7572 #line 1834 "parser.yy"
     7650  case 502:
     7651
     7652/* Line 1806 of yacc.c  */
     7653#line 1875 "parser.yy"
    75737654    {
    75747655                        typedefTable.addToEnclosingScope2( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
     
    75777658    break;
    75787659
    7579   case 495:
    7580 
    7581 /* Line 1806 of yacc.c  */
    7582 #line 1842 "parser.yy"
     7660  case 503:
     7661
     7662/* Line 1806 of yacc.c  */
     7663#line 1883 "parser.yy"
    75837664    {
    75847665                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    75877668    break;
    75887669
    7589   case 496:
    7590 
    7591 /* Line 1806 of yacc.c  */
    7592 #line 1847 "parser.yy"
     7670  case 504:
     7671
     7672/* Line 1806 of yacc.c  */
     7673#line 1888 "parser.yy"
    75937674    {
    75947675                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    75977678    break;
    75987679
    7599   case 497:
    7600 
    7601 /* Line 1806 of yacc.c  */
    7602 #line 1857 "parser.yy"
     7680  case 505:
     7681
     7682/* Line 1806 of yacc.c  */
     7683#line 1898 "parser.yy"
    76037684    {}
    76047685    break;
    76057686
    7606   case 498:
    7607 
    7608 /* Line 1806 of yacc.c  */
    7609 #line 1859 "parser.yy"
     7687  case 506:
     7688
     7689/* Line 1806 of yacc.c  */
     7690#line 1900 "parser.yy"
    76107691    {
    76117692                        if ( theTree ) {
     
    76177698    break;
    76187699
    7619   case 500:
    7620 
    7621 /* Line 1806 of yacc.c  */
    7622 #line 1871 "parser.yy"
     7700  case 508:
     7701
     7702/* Line 1806 of yacc.c  */
     7703#line 1912 "parser.yy"
    76237704    { (yyval.decl) = ( (yyvsp[(1) - (3)].decl) != NULL ) ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); }
    76247705    break;
    76257706
    7626   case 501:
    7627 
    7628 /* Line 1806 of yacc.c  */
    7629 #line 1876 "parser.yy"
     7707  case 509:
     7708
     7709/* Line 1806 of yacc.c  */
     7710#line 1917 "parser.yy"
    76307711    { (yyval.decl) = 0; }
    76317712    break;
    76327713
    7633   case 505:
    7634 
    7635 /* Line 1806 of yacc.c  */
    7636 #line 1884 "parser.yy"
     7714  case 513:
     7715
     7716/* Line 1806 of yacc.c  */
     7717#line 1925 "parser.yy"
    76377718    {}
    76387719    break;
    76397720
    7640   case 506:
    7641 
    7642 /* Line 1806 of yacc.c  */
    7643 #line 1886 "parser.yy"
     7721  case 514:
     7722
     7723/* Line 1806 of yacc.c  */
     7724#line 1927 "parser.yy"
    76447725    {
    76457726                        linkageStack.push( linkage );
     
    76487729    break;
    76497730
    7650   case 507:
    7651 
    7652 /* Line 1806 of yacc.c  */
    7653 #line 1891 "parser.yy"
     7731  case 515:
     7732
     7733/* Line 1806 of yacc.c  */
     7734#line 1932 "parser.yy"
    76547735    {
    76557736                        linkage = linkageStack.top();
     
    76597740    break;
    76607741
    7661   case 508:
    7662 
    7663 /* Line 1806 of yacc.c  */
    7664 #line 1897 "parser.yy"
     7742  case 516:
     7743
     7744/* Line 1806 of yacc.c  */
     7745#line 1938 "parser.yy"
    76657746    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    76667747    break;
    76677748
    7668   case 510:
    7669 
    7670 /* Line 1806 of yacc.c  */
    7671 #line 1907 "parser.yy"
     7749  case 518:
     7750
     7751/* Line 1806 of yacc.c  */
     7752#line 1948 "parser.yy"
    76727753    {
    76737754                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    76777758    break;
    76787759
    7679   case 511:
    7680 
    7681 /* Line 1806 of yacc.c  */
    7682 #line 1913 "parser.yy"
     7760  case 519:
     7761
     7762/* Line 1806 of yacc.c  */
     7763#line 1954 "parser.yy"
    76837764    {
    76847765                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    76887769    break;
    76897770
    7690   case 512:
    7691 
    7692 /* Line 1806 of yacc.c  */
    7693 #line 1922 "parser.yy"
     7771  case 520:
     7772
     7773/* Line 1806 of yacc.c  */
     7774#line 1963 "parser.yy"
    76947775    {
    76957776                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    76997780    break;
    77007781
    7701   case 513:
    7702 
    7703 /* Line 1806 of yacc.c  */
    7704 #line 1928 "parser.yy"
     7782  case 521:
     7783
     7784/* Line 1806 of yacc.c  */
     7785#line 1969 "parser.yy"
    77057786    {
    77067787                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    77107791    break;
    77117792
    7712   case 514:
    7713 
    7714 /* Line 1806 of yacc.c  */
    7715 #line 1934 "parser.yy"
     7793  case 522:
     7794
     7795/* Line 1806 of yacc.c  */
     7796#line 1975 "parser.yy"
    77167797    {
    77177798                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    77217802    break;
    77227803
    7723   case 515:
    7724 
    7725 /* Line 1806 of yacc.c  */
    7726 #line 1940 "parser.yy"
     7804  case 523:
     7805
     7806/* Line 1806 of yacc.c  */
     7807#line 1981 "parser.yy"
    77277808    {
    77287809                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    77327813    break;
    77337814
    7734   case 516:
    7735 
    7736 /* Line 1806 of yacc.c  */
    7737 #line 1946 "parser.yy"
     7815  case 524:
     7816
     7817/* Line 1806 of yacc.c  */
     7818#line 1987 "parser.yy"
    77387819    {
    77397820                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    77437824    break;
    77447825
    7745   case 517:
    7746 
    7747 /* Line 1806 of yacc.c  */
    7748 #line 1954 "parser.yy"
     7826  case 525:
     7827
     7828/* Line 1806 of yacc.c  */
     7829#line 1995 "parser.yy"
    77497830    {
    77507831                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    77547835    break;
    77557836
    7756   case 518:
    7757 
    7758 /* Line 1806 of yacc.c  */
    7759 #line 1960 "parser.yy"
     7837  case 526:
     7838
     7839/* Line 1806 of yacc.c  */
     7840#line 2001 "parser.yy"
    77607841    {
    77617842                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    77657846    break;
    77667847
    7767   case 519:
    7768 
    7769 /* Line 1806 of yacc.c  */
    7770 #line 1968 "parser.yy"
     7848  case 527:
     7849
     7850/* Line 1806 of yacc.c  */
     7851#line 2009 "parser.yy"
    77717852    {
    77727853                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    77767857    break;
    77777858
    7778   case 520:
    7779 
    7780 /* Line 1806 of yacc.c  */
    7781 #line 1974 "parser.yy"
     7859  case 528:
     7860
     7861/* Line 1806 of yacc.c  */
     7862#line 2015 "parser.yy"
    77827863    {
    77837864                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    77877868    break;
    77887869
    7789   case 524:
    7790 
    7791 /* Line 1806 of yacc.c  */
    7792 #line 1989 "parser.yy"
     7870  case 532:
     7871
     7872/* Line 1806 of yacc.c  */
     7873#line 2030 "parser.yy"
    77937874    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    77947875    break;
    77957876
    7796   case 537:
    7797 
    7798 /* Line 1806 of yacc.c  */
    7799 #line 2023 "parser.yy"
     7877  case 535:
     7878
     7879/* Line 1806 of yacc.c  */
     7880#line 2040 "parser.yy"
     7881    { (yyval.decl) = 0; }
     7882    break;
     7883
     7884  case 538:
     7885
     7886/* Line 1806 of yacc.c  */
     7887#line 2047 "parser.yy"
     7888    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     7889    break;
     7890
     7891  case 539:
     7892
     7893/* Line 1806 of yacc.c  */
     7894#line 2053 "parser.yy"
     7895    { (yyval.decl) = 0; }
     7896    break;
     7897
     7898  case 545:
     7899
     7900/* Line 1806 of yacc.c  */
     7901#line 2068 "parser.yy"
    78007902    {}
    78017903    break;
    78027904
    7803   case 538:
    7804 
    7805 /* Line 1806 of yacc.c  */
    7806 #line 2024 "parser.yy"
     7905  case 546:
     7906
     7907/* Line 1806 of yacc.c  */
     7908#line 2069 "parser.yy"
    78077909    {}
    78087910    break;
    78097911
    7810   case 539:
    7811 
    7812 /* Line 1806 of yacc.c  */
    7813 #line 2025 "parser.yy"
     7912  case 547:
     7913
     7914/* Line 1806 of yacc.c  */
     7915#line 2070 "parser.yy"
    78147916    {}
    78157917    break;
    78167918
    7817   case 540:
    7818 
    7819 /* Line 1806 of yacc.c  */
    7820 #line 2026 "parser.yy"
     7919  case 548:
     7920
     7921/* Line 1806 of yacc.c  */
     7922#line 2071 "parser.yy"
    78217923    {}
    78227924    break;
    78237925
    7824   case 545:
    7825 
    7826 /* Line 1806 of yacc.c  */
    7827 #line 2068 "parser.yy"
     7926  case 549:
     7927
     7928/* Line 1806 of yacc.c  */
     7929#line 2106 "parser.yy"
     7930    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     7931    break;
     7932
     7933  case 551:
     7934
     7935/* Line 1806 of yacc.c  */
     7936#line 2109 "parser.yy"
     7937    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     7938    break;
     7939
     7940  case 552:
     7941
     7942/* Line 1806 of yacc.c  */
     7943#line 2111 "parser.yy"
     7944    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     7945    break;
     7946
     7947  case 553:
     7948
     7949/* Line 1806 of yacc.c  */
     7950#line 2116 "parser.yy"
    78287951    {
    78297952                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    78327955    break;
    78337956
    7834   case 546:
    7835 
    7836 /* Line 1806 of yacc.c  */
    7837 #line 2073 "parser.yy"
     7957  case 554:
     7958
     7959/* Line 1806 of yacc.c  */
     7960#line 2121 "parser.yy"
    78387961    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    78397962    break;
    78407963
    7841   case 547:
    7842 
    7843 /* Line 1806 of yacc.c  */
    7844 #line 2078 "parser.yy"
     7964  case 555:
     7965
     7966/* Line 1806 of yacc.c  */
     7967#line 2126 "parser.yy"
    78457968    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    78467969    break;
    78477970
    7848   case 548:
    7849 
    7850 /* Line 1806 of yacc.c  */
    7851 #line 2080 "parser.yy"
     7971  case 556:
     7972
     7973/* Line 1806 of yacc.c  */
     7974#line 2128 "parser.yy"
    78527975    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    78537976    break;
    78547977
    7855   case 549:
    7856 
    7857 /* Line 1806 of yacc.c  */
    7858 #line 2082 "parser.yy"
     7978  case 557:
     7979
     7980/* Line 1806 of yacc.c  */
     7981#line 2130 "parser.yy"
    78597982    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    78607983    break;
    78617984
    7862   case 550:
    7863 
    7864 /* Line 1806 of yacc.c  */
    7865 #line 2087 "parser.yy"
     7985  case 558:
     7986
     7987/* Line 1806 of yacc.c  */
     7988#line 2135 "parser.yy"
    78667989    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    78677990    break;
    78687991
    7869   case 551:
    7870 
    7871 /* Line 1806 of yacc.c  */
    7872 #line 2089 "parser.yy"
     7992  case 559:
     7993
     7994/* Line 1806 of yacc.c  */
     7995#line 2137 "parser.yy"
    78737996    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    78747997    break;
    78757998
    7876   case 552:
    7877 
    7878 /* Line 1806 of yacc.c  */
    7879 #line 2091 "parser.yy"
     7999  case 560:
     8000
     8001/* Line 1806 of yacc.c  */
     8002#line 2139 "parser.yy"
    78808003    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    78818004    break;
    78828005
    7883   case 553:
    7884 
    7885 /* Line 1806 of yacc.c  */
    7886 #line 2093 "parser.yy"
     8006  case 561:
     8007
     8008/* Line 1806 of yacc.c  */
     8009#line 2141 "parser.yy"
    78878010    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    78888011    break;
    78898012
    7890   case 554:
    7891 
    7892 /* Line 1806 of yacc.c  */
    7893 #line 2098 "parser.yy"
     8013  case 562:
     8014
     8015/* Line 1806 of yacc.c  */
     8016#line 2146 "parser.yy"
    78948017    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    78958018    break;
    78968019
    7897   case 555:
    7898 
    7899 /* Line 1806 of yacc.c  */
    7900 #line 2100 "parser.yy"
     8020  case 563:
     8021
     8022/* Line 1806 of yacc.c  */
     8023#line 2148 "parser.yy"
    79018024    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    79028025    break;
    79038026
    7904   case 559:
    7905 
    7906 /* Line 1806 of yacc.c  */
    7907 #line 2116 "parser.yy"
     8027  case 564:
     8028
     8029/* Line 1806 of yacc.c  */
     8030#line 2158 "parser.yy"
     8031    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8032    break;
     8033
     8034  case 566:
     8035
     8036/* Line 1806 of yacc.c  */
     8037#line 2161 "parser.yy"
     8038    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8039    break;
     8040
     8041  case 567:
     8042
     8043/* Line 1806 of yacc.c  */
     8044#line 2166 "parser.yy"
    79088045    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    79098046    break;
    79108047
    7911   case 560:
    7912 
    7913 /* Line 1806 of yacc.c  */
    7914 #line 2118 "parser.yy"
     8048  case 568:
     8049
     8050/* Line 1806 of yacc.c  */
     8051#line 2168 "parser.yy"
    79158052    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    79168053    break;
    79178054
    7918   case 561:
    7919 
    7920 /* Line 1806 of yacc.c  */
    7921 #line 2120 "parser.yy"
     8055  case 569:
     8056
     8057/* Line 1806 of yacc.c  */
     8058#line 2170 "parser.yy"
    79228059    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    79238060    break;
    79248061
    7925   case 562:
    7926 
    7927 /* Line 1806 of yacc.c  */
    7928 #line 2125 "parser.yy"
     8062  case 570:
     8063
     8064/* Line 1806 of yacc.c  */
     8065#line 2175 "parser.yy"
    79298066    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    79308067    break;
    79318068
    7932   case 563:
    7933 
    7934 /* Line 1806 of yacc.c  */
    7935 #line 2127 "parser.yy"
     8069  case 571:
     8070
     8071/* Line 1806 of yacc.c  */
     8072#line 2177 "parser.yy"
    79368073    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    79378074    break;
    79388075
    7939   case 564:
    7940 
    7941 /* Line 1806 of yacc.c  */
    7942 #line 2129 "parser.yy"
     8076  case 572:
     8077
     8078/* Line 1806 of yacc.c  */
     8079#line 2179 "parser.yy"
    79438080    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    79448081    break;
    79458082
    7946   case 565:
    7947 
    7948 /* Line 1806 of yacc.c  */
    7949 #line 2134 "parser.yy"
     8083  case 573:
     8084
     8085/* Line 1806 of yacc.c  */
     8086#line 2184 "parser.yy"
    79508087    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    79518088    break;
    79528089
    7953   case 566:
    7954 
    7955 /* Line 1806 of yacc.c  */
    7956 #line 2136 "parser.yy"
     8090  case 574:
     8091
     8092/* Line 1806 of yacc.c  */
     8093#line 2186 "parser.yy"
    79578094    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    79588095    break;
    79598096
    7960   case 567:
    7961 
    7962 /* Line 1806 of yacc.c  */
    7963 #line 2138 "parser.yy"
     8097  case 575:
     8098
     8099/* Line 1806 of yacc.c  */
     8100#line 2188 "parser.yy"
    79648101    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    79658102    break;
    79668103
    7967   case 571:
    7968 
    7969 /* Line 1806 of yacc.c  */
    7970 #line 2153 "parser.yy"
     8104  case 579:
     8105
     8106/* Line 1806 of yacc.c  */
     8107#line 2203 "parser.yy"
    79718108    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); }
    79728109    break;
    79738110
    7974   case 572:
    7975 
    7976 /* Line 1806 of yacc.c  */
    7977 #line 2155 "parser.yy"
     8111  case 580:
     8112
     8113/* Line 1806 of yacc.c  */
     8114#line 2205 "parser.yy"
    79788115    { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); }
    79798116    break;
    79808117
    7981   case 573:
    7982 
    7983 /* Line 1806 of yacc.c  */
    7984 #line 2157 "parser.yy"
    7985     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    7986     break;
    7987 
    7988   case 574:
    7989 
    7990 /* Line 1806 of yacc.c  */
    7991 #line 2162 "parser.yy"
    7992     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    7993     break;
    7994 
    7995   case 575:
    7996 
    7997 /* Line 1806 of yacc.c  */
    7998 #line 2164 "parser.yy"
    7999     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8000     break;
    8001 
    8002   case 576:
    8003 
    8004 /* Line 1806 of yacc.c  */
    8005 #line 2166 "parser.yy"
    8006     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8007     break;
    8008 
    8009   case 577:
    8010 
    8011 /* Line 1806 of yacc.c  */
    8012 #line 2171 "parser.yy"
    8013     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8014     break;
    8015 
    8016   case 578:
    8017 
    8018 /* Line 1806 of yacc.c  */
    8019 #line 2173 "parser.yy"
    8020     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8021     break;
    8022 
    8023   case 579:
    8024 
    8025 /* Line 1806 of yacc.c  */
    8026 #line 2175 "parser.yy"
    8027     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8028     break;
    8029 
    8030   case 585:
    8031 
    8032 /* Line 1806 of yacc.c  */
    8033 #line 2198 "parser.yy"
    8034     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8035     break;
    8036 
    8037   case 586:
    8038 
    8039 /* Line 1806 of yacc.c  */
    8040 #line 2203 "parser.yy"
    8041     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8042     break;
    8043 
    8044   case 587:
    8045 
    8046 /* Line 1806 of yacc.c  */
    8047 #line 2205 "parser.yy"
    8048     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8049     break;
    8050 
    8051   case 588:
     8118  case 581:
    80528119
    80538120/* Line 1806 of yacc.c  */
     
    80568123    break;
    80578124
    8058   case 589:
     8125  case 582:
    80598126
    80608127/* Line 1806 of yacc.c  */
    80618128#line 2212 "parser.yy"
     8129    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8130    break;
     8131
     8132  case 583:
     8133
     8134/* Line 1806 of yacc.c  */
     8135#line 2214 "parser.yy"
     8136    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8137    break;
     8138
     8139  case 584:
     8140
     8141/* Line 1806 of yacc.c  */
     8142#line 2216 "parser.yy"
     8143    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8144    break;
     8145
     8146  case 585:
     8147
     8148/* Line 1806 of yacc.c  */
     8149#line 2221 "parser.yy"
     8150    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8151    break;
     8152
     8153  case 586:
     8154
     8155/* Line 1806 of yacc.c  */
     8156#line 2223 "parser.yy"
     8157    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8158    break;
     8159
     8160  case 587:
     8161
     8162/* Line 1806 of yacc.c  */
     8163#line 2225 "parser.yy"
     8164    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8165    break;
     8166
     8167  case 588:
     8168
     8169/* Line 1806 of yacc.c  */
     8170#line 2240 "parser.yy"
     8171    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8172    break;
     8173
     8174  case 590:
     8175
     8176/* Line 1806 of yacc.c  */
     8177#line 2243 "parser.yy"
     8178    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8179    break;
     8180
     8181  case 591:
     8182
     8183/* Line 1806 of yacc.c  */
     8184#line 2245 "parser.yy"
     8185    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8186    break;
     8187
     8188  case 593:
     8189
     8190/* Line 1806 of yacc.c  */
     8191#line 2251 "parser.yy"
     8192    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8193    break;
     8194
     8195  case 594:
     8196
     8197/* Line 1806 of yacc.c  */
     8198#line 2256 "parser.yy"
     8199    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8200    break;
     8201
     8202  case 595:
     8203
     8204/* Line 1806 of yacc.c  */
     8205#line 2258 "parser.yy"
     8206    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8207    break;
     8208
     8209  case 596:
     8210
     8211/* Line 1806 of yacc.c  */
     8212#line 2260 "parser.yy"
     8213    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8214    break;
     8215
     8216  case 597:
     8217
     8218/* Line 1806 of yacc.c  */
     8219#line 2265 "parser.yy"
    80628220    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    80638221    break;
    80648222
    8065   case 590:
    8066 
    8067 /* Line 1806 of yacc.c  */
    8068 #line 2214 "parser.yy"
     8223  case 598:
     8224
     8225/* Line 1806 of yacc.c  */
     8226#line 2267 "parser.yy"
    80698227    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    80708228    break;
    80718229
    8072   case 591:
    8073 
    8074 /* Line 1806 of yacc.c  */
    8075 #line 2216 "parser.yy"
     8230  case 599:
     8231
     8232/* Line 1806 of yacc.c  */
     8233#line 2269 "parser.yy"
    80768234    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    80778235    break;
    80788236
    8079   case 592:
    8080 
    8081 /* Line 1806 of yacc.c  */
    8082 #line 2218 "parser.yy"
     8237  case 600:
     8238
     8239/* Line 1806 of yacc.c  */
     8240#line 2271 "parser.yy"
    80838241    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    80848242    break;
    80858243
    8086   case 593:
    8087 
    8088 /* Line 1806 of yacc.c  */
    8089 #line 2223 "parser.yy"
     8244  case 601:
     8245
     8246/* Line 1806 of yacc.c  */
     8247#line 2276 "parser.yy"
    80908248    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    80918249    break;
    80928250
    8093   case 594:
    8094 
    8095 /* Line 1806 of yacc.c  */
    8096 #line 2225 "parser.yy"
     8251  case 602:
     8252
     8253/* Line 1806 of yacc.c  */
     8254#line 2278 "parser.yy"
    80978255    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    80988256    break;
    80998257
    8100   case 595:
    8101 
    8102 /* Line 1806 of yacc.c  */
    8103 #line 2227 "parser.yy"
     8258  case 603:
     8259
     8260/* Line 1806 of yacc.c  */
     8261#line 2280 "parser.yy"
    81048262    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81058263    break;
    81068264
    8107   case 600:
    8108 
    8109 /* Line 1806 of yacc.c  */
    8110 #line 2244 "parser.yy"
     8265  case 604:
     8266
     8267/* Line 1806 of yacc.c  */
     8268#line 2290 "parser.yy"
     8269    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8270    break;
     8271
     8272  case 606:
     8273
     8274/* Line 1806 of yacc.c  */
     8275#line 2293 "parser.yy"
     8276    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8277    break;
     8278
     8279  case 607:
     8280
     8281/* Line 1806 of yacc.c  */
     8282#line 2295 "parser.yy"
     8283    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8284    break;
     8285
     8286  case 608:
     8287
     8288/* Line 1806 of yacc.c  */
     8289#line 2300 "parser.yy"
    81118290    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    81128291    break;
    81138292
    8114   case 601:
    8115 
    8116 /* Line 1806 of yacc.c  */
    8117 #line 2246 "parser.yy"
     8293  case 609:
     8294
     8295/* Line 1806 of yacc.c  */
     8296#line 2302 "parser.yy"
    81188297    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    81198298    break;
    81208299
    8121   case 602:
    8122 
    8123 /* Line 1806 of yacc.c  */
    8124 #line 2248 "parser.yy"
     8300  case 610:
     8301
     8302/* Line 1806 of yacc.c  */
     8303#line 2304 "parser.yy"
    81258304    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81268305    break;
    81278306
    8128   case 603:
    8129 
    8130 /* Line 1806 of yacc.c  */
    8131 #line 2253 "parser.yy"
     8307  case 611:
     8308
     8309/* Line 1806 of yacc.c  */
     8310#line 2309 "parser.yy"
    81328311    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    81338312    break;
    81348313
    8135   case 604:
    8136 
    8137 /* Line 1806 of yacc.c  */
    8138 #line 2255 "parser.yy"
     8314  case 612:
     8315
     8316/* Line 1806 of yacc.c  */
     8317#line 2311 "parser.yy"
    81398318    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    81408319    break;
    81418320
    8142   case 605:
    8143 
    8144 /* Line 1806 of yacc.c  */
    8145 #line 2257 "parser.yy"
     8321  case 613:
     8322
     8323/* Line 1806 of yacc.c  */
     8324#line 2313 "parser.yy"
    81468325    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    81478326    break;
    81488327
    8149   case 606:
    8150 
    8151 /* Line 1806 of yacc.c  */
    8152 #line 2259 "parser.yy"
     8328  case 614:
     8329
     8330/* Line 1806 of yacc.c  */
     8331#line 2315 "parser.yy"
    81538332    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81548333    break;
    81558334
    8156   case 607:
    8157 
    8158 /* Line 1806 of yacc.c  */
    8159 #line 2264 "parser.yy"
     8335  case 615:
     8336
     8337/* Line 1806 of yacc.c  */
     8338#line 2320 "parser.yy"
    81608339    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    81618340    break;
    81628341
    8163   case 608:
    8164 
    8165 /* Line 1806 of yacc.c  */
    8166 #line 2266 "parser.yy"
     8342  case 616:
     8343
     8344/* Line 1806 of yacc.c  */
     8345#line 2322 "parser.yy"
    81678346    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    81688347    break;
    81698348
    8170   case 609:
    8171 
    8172 /* Line 1806 of yacc.c  */
    8173 #line 2268 "parser.yy"
     8349  case 617:
     8350
     8351/* Line 1806 of yacc.c  */
     8352#line 2324 "parser.yy"
    81748353    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81758354    break;
    81768355
    8177   case 614:
    8178 
    8179 /* Line 1806 of yacc.c  */
    8180 #line 2306 "parser.yy"
     8356  case 618:
     8357
     8358/* Line 1806 of yacc.c  */
     8359#line 2355 "parser.yy"
     8360    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8361    break;
     8362
     8363  case 620:
     8364
     8365/* Line 1806 of yacc.c  */
     8366#line 2358 "parser.yy"
     8367    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8368    break;
     8369
     8370  case 621:
     8371
     8372/* Line 1806 of yacc.c  */
     8373#line 2360 "parser.yy"
     8374    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8375    break;
     8376
     8377  case 622:
     8378
     8379/* Line 1806 of yacc.c  */
     8380#line 2365 "parser.yy"
    81818381    {
    81828382                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    81858385    break;
    81868386
    8187   case 615:
    8188 
    8189 /* Line 1806 of yacc.c  */
    8190 #line 2311 "parser.yy"
     8387  case 623:
     8388
     8389/* Line 1806 of yacc.c  */
     8390#line 2370 "parser.yy"
    81918391    {
    81928392                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    81958395    break;
    81968396
    8197   case 616:
    8198 
    8199 /* Line 1806 of yacc.c  */
    8200 #line 2319 "parser.yy"
     8397  case 624:
     8398
     8399/* Line 1806 of yacc.c  */
     8400#line 2378 "parser.yy"
    82018401    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    82028402    break;
    82038403
    8204   case 617:
    8205 
    8206 /* Line 1806 of yacc.c  */
    8207 #line 2321 "parser.yy"
     8404  case 625:
     8405
     8406/* Line 1806 of yacc.c  */
     8407#line 2380 "parser.yy"
    82088408    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    82098409    break;
    82108410
    8211   case 618:
    8212 
    8213 /* Line 1806 of yacc.c  */
    8214 #line 2323 "parser.yy"
     8411  case 626:
     8412
     8413/* Line 1806 of yacc.c  */
     8414#line 2382 "parser.yy"
    82158415    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82168416    break;
    82178417
    8218   case 619:
    8219 
    8220 /* Line 1806 of yacc.c  */
    8221 #line 2328 "parser.yy"
     8418  case 627:
     8419
     8420/* Line 1806 of yacc.c  */
     8421#line 2387 "parser.yy"
    82228422    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    82238423    break;
    82248424
    8225   case 620:
    8226 
    8227 /* Line 1806 of yacc.c  */
    8228 #line 2330 "parser.yy"
     8425  case 628:
     8426
     8427/* Line 1806 of yacc.c  */
     8428#line 2389 "parser.yy"
    82298429    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    82308430    break;
    82318431
    8232   case 621:
    8233 
    8234 /* Line 1806 of yacc.c  */
    8235 #line 2335 "parser.yy"
     8432  case 629:
     8433
     8434/* Line 1806 of yacc.c  */
     8435#line 2394 "parser.yy"
    82368436    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    82378437    break;
    82388438
    8239   case 622:
    8240 
    8241 /* Line 1806 of yacc.c  */
    8242 #line 2337 "parser.yy"
     8439  case 630:
     8440
     8441/* Line 1806 of yacc.c  */
     8442#line 2396 "parser.yy"
    82438443    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    82448444    break;
    82458445
    8246   case 626:
    8247 
    8248 /* Line 1806 of yacc.c  */
    8249 #line 2357 "parser.yy"
     8446  case 632:
     8447
     8448/* Line 1806 of yacc.c  */
     8449#line 2411 "parser.yy"
     8450    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8451    break;
     8452
     8453  case 633:
     8454
     8455/* Line 1806 of yacc.c  */
     8456#line 2413 "parser.yy"
     8457    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8458    break;
     8459
     8460  case 634:
     8461
     8462/* Line 1806 of yacc.c  */
     8463#line 2418 "parser.yy"
    82508464    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    82518465    break;
    82528466
    8253   case 627:
    8254 
    8255 /* Line 1806 of yacc.c  */
    8256 #line 2359 "parser.yy"
     8467  case 635:
     8468
     8469/* Line 1806 of yacc.c  */
     8470#line 2420 "parser.yy"
    82578471    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    82588472    break;
    82598473
    8260   case 628:
    8261 
    8262 /* Line 1806 of yacc.c  */
    8263 #line 2361 "parser.yy"
     8474  case 636:
     8475
     8476/* Line 1806 of yacc.c  */
     8477#line 2422 "parser.yy"
    82648478    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    82658479    break;
    82668480
    8267   case 629:
    8268 
    8269 /* Line 1806 of yacc.c  */
    8270 #line 2363 "parser.yy"
     8481  case 637:
     8482
     8483/* Line 1806 of yacc.c  */
     8484#line 2424 "parser.yy"
    82718485    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    82728486    break;
    82738487
    8274   case 630:
    8275 
    8276 /* Line 1806 of yacc.c  */
    8277 #line 2365 "parser.yy"
     8488  case 638:
     8489
     8490/* Line 1806 of yacc.c  */
     8491#line 2426 "parser.yy"
    82788492    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82798493    break;
    82808494
    8281   case 632:
    8282 
    8283 /* Line 1806 of yacc.c  */
    8284 #line 2371 "parser.yy"
     8495  case 640:
     8496
     8497/* Line 1806 of yacc.c  */
     8498#line 2432 "parser.yy"
    82858499    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    82868500    break;
    82878501
    8288   case 633:
    8289 
    8290 /* Line 1806 of yacc.c  */
    8291 #line 2373 "parser.yy"
     8502  case 641:
     8503
     8504/* Line 1806 of yacc.c  */
     8505#line 2434 "parser.yy"
    82928506    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    82938507    break;
    82948508
    8295   case 634:
    8296 
    8297 /* Line 1806 of yacc.c  */
    8298 #line 2375 "parser.yy"
     8509  case 642:
     8510
     8511/* Line 1806 of yacc.c  */
     8512#line 2436 "parser.yy"
    82998513    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83008514    break;
    83018515
    8302   case 635:
    8303 
    8304 /* Line 1806 of yacc.c  */
    8305 #line 2380 "parser.yy"
     8516  case 643:
     8517
     8518/* Line 1806 of yacc.c  */
     8519#line 2441 "parser.yy"
    83068520    { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
    83078521    break;
    83088522
    8309   case 636:
    8310 
    8311 /* Line 1806 of yacc.c  */
    8312 #line 2382 "parser.yy"
     8523  case 644:
     8524
     8525/* Line 1806 of yacc.c  */
     8526#line 2443 "parser.yy"
    83138527    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    83148528    break;
    83158529
    8316   case 637:
    8317 
    8318 /* Line 1806 of yacc.c  */
    8319 #line 2384 "parser.yy"
     8530  case 645:
     8531
     8532/* Line 1806 of yacc.c  */
     8533#line 2445 "parser.yy"
    83208534    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83218535    break;
    83228536
    8323   case 638:
    8324 
    8325 /* Line 1806 of yacc.c  */
    8326 #line 2390 "parser.yy"
     8537  case 646:
     8538
     8539/* Line 1806 of yacc.c  */
     8540#line 2451 "parser.yy"
    83278541    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
    83288542    break;
    83298543
    8330   case 639:
    8331 
    8332 /* Line 1806 of yacc.c  */
    8333 #line 2392 "parser.yy"
     8544  case 647:
     8545
     8546/* Line 1806 of yacc.c  */
     8547#line 2453 "parser.yy"
    83348548    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(3) - (3)].decl) ); }
    83358549    break;
    83368550
    8337   case 641:
    8338 
    8339 /* Line 1806 of yacc.c  */
    8340 #line 2398 "parser.yy"
     8551  case 649:
     8552
     8553/* Line 1806 of yacc.c  */
     8554#line 2459 "parser.yy"
    83418555    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); }
    83428556    break;
    83438557
    8344   case 642:
    8345 
    8346 /* Line 1806 of yacc.c  */
    8347 #line 2400 "parser.yy"
     8558  case 650:
     8559
     8560/* Line 1806 of yacc.c  */
     8561#line 2461 "parser.yy"
    83488562    { (yyval.decl) = DeclarationNode::newVarArray( 0 ); }
    83498563    break;
    83508564
    8351   case 643:
    8352 
    8353 /* Line 1806 of yacc.c  */
    8354 #line 2402 "parser.yy"
     8565  case 651:
     8566
     8567/* Line 1806 of yacc.c  */
     8568#line 2463 "parser.yy"
    83558569    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); }
    83568570    break;
    83578571
    8358   case 644:
    8359 
    8360 /* Line 1806 of yacc.c  */
    8361 #line 2404 "parser.yy"
     8572  case 652:
     8573
     8574/* Line 1806 of yacc.c  */
     8575#line 2465 "parser.yy"
    83628576    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); }
    83638577    break;
    83648578
    8365   case 648:
    8366 
    8367 /* Line 1806 of yacc.c  */
    8368 #line 2424 "parser.yy"
     8579  case 654:
     8580
     8581/* Line 1806 of yacc.c  */
     8582#line 2480 "parser.yy"
     8583    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8584    break;
     8585
     8586  case 655:
     8587
     8588/* Line 1806 of yacc.c  */
     8589#line 2482 "parser.yy"
     8590    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8591    break;
     8592
     8593  case 656:
     8594
     8595/* Line 1806 of yacc.c  */
     8596#line 2487 "parser.yy"
    83698597    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    83708598    break;
    83718599
    8372   case 649:
    8373 
    8374 /* Line 1806 of yacc.c  */
    8375 #line 2426 "parser.yy"
     8600  case 657:
     8601
     8602/* Line 1806 of yacc.c  */
     8603#line 2489 "parser.yy"
    83768604    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    83778605    break;
    83788606
    8379   case 650:
    8380 
    8381 /* Line 1806 of yacc.c  */
    8382 #line 2428 "parser.yy"
     8607  case 658:
     8608
     8609/* Line 1806 of yacc.c  */
     8610#line 2491 "parser.yy"
    83838611    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    83848612    break;
    83858613
    8386   case 651:
    8387 
    8388 /* Line 1806 of yacc.c  */
    8389 #line 2430 "parser.yy"
     8614  case 659:
     8615
     8616/* Line 1806 of yacc.c  */
     8617#line 2493 "parser.yy"
    83908618    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    83918619    break;
    83928620
    8393   case 652:
    8394 
    8395 /* Line 1806 of yacc.c  */
    8396 #line 2432 "parser.yy"
     8621  case 660:
     8622
     8623/* Line 1806 of yacc.c  */
     8624#line 2495 "parser.yy"
    83978625    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83988626    break;
    83998627
    8400   case 654:
    8401 
    8402 /* Line 1806 of yacc.c  */
    8403 #line 2438 "parser.yy"
     8628  case 662:
     8629
     8630/* Line 1806 of yacc.c  */
     8631#line 2501 "parser.yy"
    84048632    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    84058633    break;
    84068634
    8407   case 655:
    8408 
    8409 /* Line 1806 of yacc.c  */
    8410 #line 2440 "parser.yy"
     8635  case 663:
     8636
     8637/* Line 1806 of yacc.c  */
     8638#line 2503 "parser.yy"
    84118639    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    84128640    break;
    84138641
    8414   case 656:
    8415 
    8416 /* Line 1806 of yacc.c  */
    8417 #line 2442 "parser.yy"
     8642  case 664:
     8643
     8644/* Line 1806 of yacc.c  */
     8645#line 2505 "parser.yy"
    84188646    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    84198647    break;
    84208648
    8421   case 657:
    8422 
    8423 /* Line 1806 of yacc.c  */
    8424 #line 2447 "parser.yy"
     8649  case 665:
     8650
     8651/* Line 1806 of yacc.c  */
     8652#line 2510 "parser.yy"
    84258653    { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
    84268654    break;
    84278655
    8428   case 658:
    8429 
    8430 /* Line 1806 of yacc.c  */
    8431 #line 2449 "parser.yy"
     8656  case 666:
     8657
     8658/* Line 1806 of yacc.c  */
     8659#line 2512 "parser.yy"
    84328660    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    84338661    break;
    84348662
    8435   case 659:
    8436 
    8437 /* Line 1806 of yacc.c  */
    8438 #line 2451 "parser.yy"
     8663  case 667:
     8664
     8665/* Line 1806 of yacc.c  */
     8666#line 2514 "parser.yy"
    84398667    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    84408668    break;
    84418669
    8442   case 661:
    8443 
    8444 /* Line 1806 of yacc.c  */
    8445 #line 2458 "parser.yy"
     8670  case 669:
     8671
     8672/* Line 1806 of yacc.c  */
     8673#line 2521 "parser.yy"
    84468674    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    84478675    break;
    84488676
    8449   case 663:
    8450 
    8451 /* Line 1806 of yacc.c  */
    8452 #line 2469 "parser.yy"
     8677  case 671:
     8678
     8679/* Line 1806 of yacc.c  */
     8680#line 2532 "parser.yy"
    84538681    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
    84548682    break;
    84558683
    8456   case 664:
    8457 
    8458 /* Line 1806 of yacc.c  */
    8459 #line 2472 "parser.yy"
     8684  case 672:
     8685
     8686/* Line 1806 of yacc.c  */
     8687#line 2535 "parser.yy"
    84608688    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
    84618689    break;
    84628690
    8463   case 665:
    8464 
    8465 /* Line 1806 of yacc.c  */
    8466 #line 2474 "parser.yy"
     8691  case 673:
     8692
     8693/* Line 1806 of yacc.c  */
     8694#line 2537 "parser.yy"
    84678695    { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); }
    84688696    break;
    84698697
    8470   case 666:
    8471 
    8472 /* Line 1806 of yacc.c  */
    8473 #line 2477 "parser.yy"
     8698  case 674:
     8699
     8700/* Line 1806 of yacc.c  */
     8701#line 2540 "parser.yy"
    84748702    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
    84758703    break;
    84768704
    8477   case 667:
    8478 
    8479 /* Line 1806 of yacc.c  */
    8480 #line 2479 "parser.yy"
     8705  case 675:
     8706
     8707/* Line 1806 of yacc.c  */
     8708#line 2542 "parser.yy"
    84818709    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); }
    84828710    break;
    84838711
    8484   case 668:
    8485 
    8486 /* Line 1806 of yacc.c  */
    8487 #line 2481 "parser.yy"
     8712  case 676:
     8713
     8714/* Line 1806 of yacc.c  */
     8715#line 2544 "parser.yy"
    84888716    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); }
    84898717    break;
    84908718
    8491   case 672:
    8492 
    8493 /* Line 1806 of yacc.c  */
    8494 #line 2500 "parser.yy"
     8719  case 678:
     8720
     8721/* Line 1806 of yacc.c  */
     8722#line 2558 "parser.yy"
     8723    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8724    break;
     8725
     8726  case 679:
     8727
     8728/* Line 1806 of yacc.c  */
     8729#line 2560 "parser.yy"
     8730    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8731    break;
     8732
     8733  case 680:
     8734
     8735/* Line 1806 of yacc.c  */
     8736#line 2565 "parser.yy"
    84958737    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    84968738    break;
    84978739
    8498   case 673:
    8499 
    8500 /* Line 1806 of yacc.c  */
    8501 #line 2502 "parser.yy"
     8740  case 681:
     8741
     8742/* Line 1806 of yacc.c  */
     8743#line 2567 "parser.yy"
    85028744    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    85038745    break;
    85048746
    8505   case 674:
    8506 
    8507 /* Line 1806 of yacc.c  */
    8508 #line 2504 "parser.yy"
     8747  case 682:
     8748
     8749/* Line 1806 of yacc.c  */
     8750#line 2569 "parser.yy"
    85098751    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    85108752    break;
    85118753
    8512   case 675:
    8513 
    8514 /* Line 1806 of yacc.c  */
    8515 #line 2506 "parser.yy"
     8754  case 683:
     8755
     8756/* Line 1806 of yacc.c  */
     8757#line 2571 "parser.yy"
    85168758    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    85178759    break;
    85188760
    8519   case 676:
    8520 
    8521 /* Line 1806 of yacc.c  */
    8522 #line 2508 "parser.yy"
     8761  case 684:
     8762
     8763/* Line 1806 of yacc.c  */
     8764#line 2573 "parser.yy"
    85238765    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    85248766    break;
    85258767
    8526   case 678:
    8527 
    8528 /* Line 1806 of yacc.c  */
    8529 #line 2514 "parser.yy"
     8768  case 686:
     8769
     8770/* Line 1806 of yacc.c  */
     8771#line 2579 "parser.yy"
    85308772    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    85318773    break;
    85328774
    8533   case 679:
    8534 
    8535 /* Line 1806 of yacc.c  */
    8536 #line 2516 "parser.yy"
     8775  case 687:
     8776
     8777/* Line 1806 of yacc.c  */
     8778#line 2581 "parser.yy"
    85378779    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    85388780    break;
    85398781
    8540   case 680:
    8541 
    8542 /* Line 1806 of yacc.c  */
    8543 #line 2518 "parser.yy"
     8782  case 688:
     8783
     8784/* Line 1806 of yacc.c  */
     8785#line 2583 "parser.yy"
    85448786    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    85458787    break;
    85468788
    8547   case 681:
    8548 
    8549 /* Line 1806 of yacc.c  */
    8550 #line 2523 "parser.yy"
     8789  case 689:
     8790
     8791/* Line 1806 of yacc.c  */
     8792#line 2588 "parser.yy"
    85518793    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    85528794    break;
    85538795
    8554   case 682:
    8555 
    8556 /* Line 1806 of yacc.c  */
    8557 #line 2525 "parser.yy"
     8796  case 690:
     8797
     8798/* Line 1806 of yacc.c  */
     8799#line 2590 "parser.yy"
    85588800    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    85598801    break;
    85608802
    8561   case 685:
    8562 
    8563 /* Line 1806 of yacc.c  */
    8564 #line 2535 "parser.yy"
     8803  case 693:
     8804
     8805/* Line 1806 of yacc.c  */
     8806#line 2600 "parser.yy"
    85658807    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    85668808    break;
    85678809
    8568   case 688:
    8569 
    8570 /* Line 1806 of yacc.c  */
    8571 #line 2545 "parser.yy"
     8810  case 696:
     8811
     8812/* Line 1806 of yacc.c  */
     8813#line 2610 "parser.yy"
    85728814    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    85738815    break;
    85748816
    8575   case 689:
    8576 
    8577 /* Line 1806 of yacc.c  */
    8578 #line 2547 "parser.yy"
     8817  case 697:
     8818
     8819/* Line 1806 of yacc.c  */
     8820#line 2612 "parser.yy"
    85798821    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    85808822    break;
    85818823
    8582   case 690:
    8583 
    8584 /* Line 1806 of yacc.c  */
    8585 #line 2549 "parser.yy"
     8824  case 698:
     8825
     8826/* Line 1806 of yacc.c  */
     8827#line 2614 "parser.yy"
    85868828    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    85878829    break;
    85888830
    8589   case 691:
    8590 
    8591 /* Line 1806 of yacc.c  */
    8592 #line 2551 "parser.yy"
     8831  case 699:
     8832
     8833/* Line 1806 of yacc.c  */
     8834#line 2616 "parser.yy"
    85938835    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    85948836    break;
    85958837
    8596   case 692:
    8597 
    8598 /* Line 1806 of yacc.c  */
    8599 #line 2553 "parser.yy"
     8838  case 700:
     8839
     8840/* Line 1806 of yacc.c  */
     8841#line 2618 "parser.yy"
    86008842    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    86018843    break;
    86028844
    8603   case 693:
    8604 
    8605 /* Line 1806 of yacc.c  */
    8606 #line 2555 "parser.yy"
     8845  case 701:
     8846
     8847/* Line 1806 of yacc.c  */
     8848#line 2620 "parser.yy"
    86078849    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    86088850    break;
    86098851
    8610   case 694:
    8611 
    8612 /* Line 1806 of yacc.c  */
    8613 #line 2562 "parser.yy"
     8852  case 702:
     8853
     8854/* Line 1806 of yacc.c  */
     8855#line 2627 "parser.yy"
    86148856    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    86158857    break;
    86168858
    8617   case 695:
    8618 
    8619 /* Line 1806 of yacc.c  */
    8620 #line 2564 "parser.yy"
     8859  case 703:
     8860
     8861/* Line 1806 of yacc.c  */
     8862#line 2629 "parser.yy"
    86218863    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    86228864    break;
    86238865
    8624   case 696:
    8625 
    8626 /* Line 1806 of yacc.c  */
    8627 #line 2566 "parser.yy"
     8866  case 704:
     8867
     8868/* Line 1806 of yacc.c  */
     8869#line 2631 "parser.yy"
    86288870    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    86298871    break;
    86308872
    8631   case 697:
    8632 
    8633 /* Line 1806 of yacc.c  */
    8634 #line 2568 "parser.yy"
     8873  case 705:
     8874
     8875/* Line 1806 of yacc.c  */
     8876#line 2633 "parser.yy"
    86358877    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
    86368878    break;
    86378879
    8638   case 698:
    8639 
    8640 /* Line 1806 of yacc.c  */
    8641 #line 2570 "parser.yy"
     8880  case 706:
     8881
     8882/* Line 1806 of yacc.c  */
     8883#line 2635 "parser.yy"
    86428884    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    86438885    break;
    86448886
    8645   case 699:
    8646 
    8647 /* Line 1806 of yacc.c  */
    8648 #line 2572 "parser.yy"
     8887  case 707:
     8888
     8889/* Line 1806 of yacc.c  */
     8890#line 2637 "parser.yy"
    86498891    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    86508892    break;
    86518893
    8652   case 700:
    8653 
    8654 /* Line 1806 of yacc.c  */
    8655 #line 2574 "parser.yy"
     8894  case 708:
     8895
     8896/* Line 1806 of yacc.c  */
     8897#line 2639 "parser.yy"
    86568898    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    86578899    break;
    86588900
    8659   case 701:
    8660 
    8661 /* Line 1806 of yacc.c  */
    8662 #line 2576 "parser.yy"
     8901  case 709:
     8902
     8903/* Line 1806 of yacc.c  */
     8904#line 2641 "parser.yy"
    86638905    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    86648906    break;
    86658907
    8666   case 702:
    8667 
    8668 /* Line 1806 of yacc.c  */
    8669 #line 2578 "parser.yy"
     8908  case 710:
     8909
     8910/* Line 1806 of yacc.c  */
     8911#line 2643 "parser.yy"
    86708912    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
    86718913    break;
    86728914
    8673   case 703:
    8674 
    8675 /* Line 1806 of yacc.c  */
    8676 #line 2580 "parser.yy"
     8915  case 711:
     8916
     8917/* Line 1806 of yacc.c  */
     8918#line 2645 "parser.yy"
    86778919    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    86788920    break;
    86798921
    8680   case 704:
    8681 
    8682 /* Line 1806 of yacc.c  */
    8683 #line 2585 "parser.yy"
     8922  case 712:
     8923
     8924/* Line 1806 of yacc.c  */
     8925#line 2650 "parser.yy"
    86848926    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
    86858927    break;
    86868928
    8687   case 705:
    8688 
    8689 /* Line 1806 of yacc.c  */
    8690 #line 2587 "parser.yy"
     8929  case 713:
     8930
     8931/* Line 1806 of yacc.c  */
     8932#line 2652 "parser.yy"
    86918933    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
    86928934    break;
    86938935
    8694   case 706:
    8695 
    8696 /* Line 1806 of yacc.c  */
    8697 #line 2592 "parser.yy"
     8936  case 714:
     8937
     8938/* Line 1806 of yacc.c  */
     8939#line 2657 "parser.yy"
    86988940    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); }
    86998941    break;
    87008942
    8701   case 707:
    8702 
    8703 /* Line 1806 of yacc.c  */
    8704 #line 2594 "parser.yy"
     8943  case 715:
     8944
     8945/* Line 1806 of yacc.c  */
     8946#line 2659 "parser.yy"
    87058947    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); }
    87068948    break;
    87078949
    8708   case 709:
    8709 
    8710 /* Line 1806 of yacc.c  */
    8711 #line 2621 "parser.yy"
     8950  case 717:
     8951
     8952/* Line 1806 of yacc.c  */
     8953#line 2686 "parser.yy"
    87128954    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    87138955    break;
    87148956
    8715   case 713:
    8716 
    8717 /* Line 1806 of yacc.c  */
    8718 #line 2632 "parser.yy"
     8957  case 721:
     8958
     8959/* Line 1806 of yacc.c  */
     8960#line 2697 "parser.yy"
    87198961    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    87208962    break;
    87218963
    8722   case 714:
    8723 
    8724 /* Line 1806 of yacc.c  */
    8725 #line 2634 "parser.yy"
     8964  case 722:
     8965
     8966/* Line 1806 of yacc.c  */
     8967#line 2699 "parser.yy"
    87268968    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    87278969    break;
    87288970
    8729   case 715:
    8730 
    8731 /* Line 1806 of yacc.c  */
    8732 #line 2636 "parser.yy"
     8971  case 723:
     8972
     8973/* Line 1806 of yacc.c  */
     8974#line 2701 "parser.yy"
    87338975    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    87348976    break;
    87358977
    8736   case 716:
    8737 
    8738 /* Line 1806 of yacc.c  */
    8739 #line 2638 "parser.yy"
     8978  case 724:
     8979
     8980/* Line 1806 of yacc.c  */
     8981#line 2703 "parser.yy"
    87408982    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    87418983    break;
    87428984
    8743   case 717:
    8744 
    8745 /* Line 1806 of yacc.c  */
    8746 #line 2640 "parser.yy"
     8985  case 725:
     8986
     8987/* Line 1806 of yacc.c  */
     8988#line 2705 "parser.yy"
    87478989    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    87488990    break;
    87498991
    8750   case 718:
    8751 
    8752 /* Line 1806 of yacc.c  */
    8753 #line 2642 "parser.yy"
     8992  case 726:
     8993
     8994/* Line 1806 of yacc.c  */
     8995#line 2707 "parser.yy"
    87548996    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    87558997    break;
    87568998
    8757   case 719:
    8758 
    8759 /* Line 1806 of yacc.c  */
    8760 #line 2649 "parser.yy"
     8999  case 727:
     9000
     9001/* Line 1806 of yacc.c  */
     9002#line 2714 "parser.yy"
    87619003    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    87629004    break;
    87639005
    8764   case 720:
    8765 
    8766 /* Line 1806 of yacc.c  */
    8767 #line 2651 "parser.yy"
     9006  case 728:
     9007
     9008/* Line 1806 of yacc.c  */
     9009#line 2716 "parser.yy"
    87689010    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    87699011    break;
    87709012
    8771   case 721:
    8772 
    8773 /* Line 1806 of yacc.c  */
    8774 #line 2653 "parser.yy"
     9013  case 729:
     9014
     9015/* Line 1806 of yacc.c  */
     9016#line 2718 "parser.yy"
    87759017    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    87769018    break;
    87779019
    8778   case 722:
    8779 
    8780 /* Line 1806 of yacc.c  */
    8781 #line 2655 "parser.yy"
     9020  case 730:
     9021
     9022/* Line 1806 of yacc.c  */
     9023#line 2720 "parser.yy"
    87829024    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    87839025    break;
    87849026
    8785   case 723:
    8786 
    8787 /* Line 1806 of yacc.c  */
    8788 #line 2657 "parser.yy"
     9027  case 731:
     9028
     9029/* Line 1806 of yacc.c  */
     9030#line 2722 "parser.yy"
    87899031    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    87909032    break;
    87919033
    8792   case 724:
    8793 
    8794 /* Line 1806 of yacc.c  */
    8795 #line 2659 "parser.yy"
     9034  case 732:
     9035
     9036/* Line 1806 of yacc.c  */
     9037#line 2724 "parser.yy"
    87969038    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    87979039    break;
    87989040
    8799   case 725:
    8800 
    8801 /* Line 1806 of yacc.c  */
    8802 #line 2664 "parser.yy"
     9041  case 733:
     9042
     9043/* Line 1806 of yacc.c  */
     9044#line 2729 "parser.yy"
    88039045    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
    88049046    break;
    88059047
    8806   case 726:
    8807 
    8808 /* Line 1806 of yacc.c  */
    8809 #line 2669 "parser.yy"
     9048  case 734:
     9049
     9050/* Line 1806 of yacc.c  */
     9051#line 2734 "parser.yy"
    88109052    { (yyval.decl) = DeclarationNode::newFunction( 0, DeclarationNode::newTuple( 0 ), (yyvsp[(4) - (5)].decl), 0 ); }
    88119053    break;
    88129054
    8813   case 727:
    8814 
    8815 /* Line 1806 of yacc.c  */
    8816 #line 2671 "parser.yy"
     9055  case 735:
     9056
     9057/* Line 1806 of yacc.c  */
     9058#line 2736 "parser.yy"
    88179059    { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
    88189060    break;
    88199061
    8820   case 728:
    8821 
    8822 /* Line 1806 of yacc.c  */
    8823 #line 2673 "parser.yy"
     9062  case 736:
     9063
     9064/* Line 1806 of yacc.c  */
     9065#line 2738 "parser.yy"
    88249066    { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
    88259067    break;
    88269068
    8827   case 731:
    8828 
    8829 /* Line 1806 of yacc.c  */
    8830 #line 2697 "parser.yy"
     9069  case 739:
     9070
     9071/* Line 1806 of yacc.c  */
     9072#line 2762 "parser.yy"
    88319073    { (yyval.en) = 0; }
    88329074    break;
    88339075
    8834   case 732:
    8835 
    8836 /* Line 1806 of yacc.c  */
    8837 #line 2699 "parser.yy"
     9076  case 740:
     9077
     9078/* Line 1806 of yacc.c  */
     9079#line 2764 "parser.yy"
    88389080    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    88399081    break;
     
    88429084
    88439085/* Line 1806 of yacc.c  */
    8844 #line 8845 "Parser/parser.cc"
     9086#line 9087 "Parser/parser.cc"
    88459087      default: break;
    88469088    }
     
    90739315
    90749316/* Line 2067 of yacc.c  */
    9075 #line 2702 "parser.yy"
     9317#line 2767 "parser.yy"
    90769318
    90779319// ----end of grammar----
  • src/Parser/parser.h

    re45215c rd60ccbf  
    246246
    247247/* Line 2068 of yacc.c  */
    248 #line 107 "parser.yy"
     248#line 108 "parser.yy"
    249249
    250250        Token tok;
     
    256256        StatementNode *sn;
    257257        ConstantNode *constant;
     258        LabelNode *label;
    258259        InitializerNode *in;
     260        bool flag;
    259261
    260262
    261263
    262264/* Line 2068 of yacc.c  */
    263 #line 264 "Parser/parser.h"
     265#line 266 "Parser/parser.h"
    264266} YYSTYPE;
    265267# define YYSTYPE_IS_TRIVIAL 1
  • src/Parser/parser.yy

    re45215c rd60ccbf  
    1010// Created On       : Sat Sep  1 20:22:55 2001
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Jul  3 13:53:45 2015
    13 // Update Count     : 1220
     12// Last Modified On : Tue Aug 11 16:01:49 2015
     13// Update Count     : 1350
    1414//
    1515
     
    5454#include "lex.h"
    5555#include "ParseNode.h"
     56#include "TypeData.h"
    5657#include "LinkageSpec.h"
    5758
     
    114115        StatementNode *sn;
    115116        ConstantNode *constant;
     117        LabelNode *label;
    116118        InitializerNode *in;
     119        bool flag;
    117120}
    118121
     
    133136%type<en> argument_expression_list              argument_expression                     for_control_expression          assignment_opt
    134137%type<en> subrange
     138%type<en> asm_operands_opt asm_operands_list asm_operand
     139%type<label> label_list
     140%type<constant> asm_clobbers_list_opt
     141%type<flag> asm_volatile_opt
    135142
    136143// statements
     
    228235%type<decl> variable_abstract_ptr variable_array variable_declarator variable_function variable_ptr
    229236
     237%type<decl> attribute_list_opt attribute_list attribute
     238
    230239// initializers
    231240%type<in>  initializer initializer_list initializer_opt
     
    329338        | zero_one
    330339                { $$ = new VarRefNode( $1 ); }
    331         | constant
    332                 { $$ = $1; }
    333         | string_literal_list
    334                 { $$ = $1; }
    335340        | '(' comma_expression ')'
    336341                { $$ = $2; }
     
    375380        | assignment_expression
    376381        | no_attr_identifier ':' assignment_expression
    377                 { $$ = $3->set_asArgName( $1 ); }
     382                { $$ = $3->set_argName( $1 ); }
    378383                // Only a list of no_attr_identifier_or_type_name is allowed in this context. However, there is insufficient
    379384                // look ahead to distinguish between this list of parameter names and a tuple, so the tuple form must be used
    380385                // with an appropriate semantic check.
    381386        | '[' push assignment_expression pop ']' ':' assignment_expression
    382                 { $$ = $7->set_asArgName( $3 ); }
     387                { $$ = $7->set_argName( $3 ); }
    383388        | '[' push assignment_expression ',' tuple_expression_list pop ']' ':' assignment_expression
    384                 { $$ = $9->set_asArgName( new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)$3->set_link( flattenCommas( $5 )))); }
     389                { $$ = $9->set_argName( new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)$3->set_link( flattenCommas( $5 )))); }
    385390        ;
    386391
     
    405410unary_expression:
    406411        postfix_expression
     412        // first location where constant/string can have operator applied: sizeof 3/sizeof "abc"
     413        // still requires semantics checks, e.g., ++3, 3--, *3, &&3
     414        | constant
     415                { $$ = $1; }
     416        | string_literal_list
     417                { $$ = $1; }
    407418        | ICR unary_expression
    408419                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Incr ), $2 ); }
     
    620631labeled_statement:
    621632        no_attr_identifier ':' attribute_list_opt statement
    622                 { $$ = $4->add_label( $1 );}
     633                {
     634                        $$ = $4->add_label( $1 );
     635                }
    623636        ;
    624637
     
    630643                // requires its own scope
    631644          push push
    632           label_declaration_opt                                                         // GCC, local labels
     645          local_label_declaration_opt                                           // GCC, local labels
    633646          block_item_list pop '}'                                                       // C99, intermix declarations and statements
    634647                { $$ = new CompoundStmtNode( $5 ); }
     
    749762
    750763fall_through:                                                                                   // CFA
    751         FALLTHRU                                                                        { $$ = new StatementNode( StatementNode::Fallthru, 0, 0 ); }
    752         | FALLTHRU ';'                                                          { $$ = new StatementNode( StatementNode::Fallthru, 0, 0 ); }
     764        FALLTHRU                                                                        { $$ = new StatementNode( StatementNode::Fallthru ); }
     765        | FALLTHRU ';'                                                          { $$ = new StatementNode( StatementNode::Fallthru ); }
    753766        ;
    754767
     
    778791        | CONTINUE ';'
    779792                // A semantic check is required to ensure this statement appears only in the body of an iteration statement.
    780                 { $$ = new StatementNode( StatementNode::Continue, 0, 0 ); }
     793                { $$ = new StatementNode( StatementNode::Continue ); }
    781794        | CONTINUE no_attr_identifier ';'                                       // CFA, multi-level continue
    782795                // A semantic check is required to ensure this statement appears only in the body of an iteration statement, and
     
    785798        | BREAK ';'
    786799                // A semantic check is required to ensure this statement appears only in the body of an iteration statement.
    787                 { $$ = new StatementNode( StatementNode::Break, 0, 0 ); }
     800                { $$ = new StatementNode( StatementNode::Break ); }
    788801        | BREAK no_attr_identifier ';'                                          // CFA, multi-level exit
    789802                // A semantic check is required to ensure this statement appears only in the body of an iteration statement, and
     
    795808                { $$ = new StatementNode( StatementNode::Throw, $2, 0 ); }
    796809        | THROW ';'
    797                 { $$ = new StatementNode( StatementNode::Throw, 0, 0 ); }
     810                { $$ = new StatementNode( StatementNode::Throw ); }
    798811        ;
    799812
     
    858871
    859872asm_statement:
    860         ASM type_qualifier_list_opt '(' constant_expression ')' ';'
    861                 { $$ = new StatementNode( StatementNode::Asm, 0, 0 ); }
    862         | ASM type_qualifier_list_opt '(' constant_expression ':' asm_operands_opt ')' ';' // remaining GCC
    863                 { $$ = new StatementNode( StatementNode::Asm, 0, 0 ); }
    864         | ASM type_qualifier_list_opt '(' constant_expression ':' asm_operands_opt ':' asm_operands_opt ')' ';'
    865                 { $$ = new StatementNode( StatementNode::Asm, 0, 0 ); }
    866         | ASM type_qualifier_list_opt '(' constant_expression ':' asm_operands_opt ':' asm_operands_opt ':' asm_clobbers_list ')' ';'
    867                 { $$ = new StatementNode( StatementNode::Asm, 0, 0 ); }
     873        ASM asm_volatile_opt '(' string_literal_list ')' ';'
     874                { $$ = new AsmStmtNode( StatementNode::Asm, $2, $4, 0 ); }
     875        | ASM asm_volatile_opt '(' string_literal_list ':' asm_operands_opt ')' ';' // remaining GCC
     876                { $$ = new AsmStmtNode( StatementNode::Asm, $2, $4, $6 ); }
     877        | ASM asm_volatile_opt '(' string_literal_list ':' asm_operands_opt ':' asm_operands_opt ')' ';'
     878                { $$ = new AsmStmtNode( StatementNode::Asm, $2, $4, $6, $8 ); }
     879        | ASM asm_volatile_opt '(' string_literal_list ':' asm_operands_opt ':' asm_operands_opt ':' asm_clobbers_list_opt ')' ';'
     880                { $$ = new AsmStmtNode( StatementNode::Asm, $2, $4, $6, $8, $10 ); }
     881        | ASM asm_volatile_opt GOTO '(' string_literal_list ':' ':' asm_operands_opt ':' asm_clobbers_list_opt ':' label_list ')' ';'
     882        { $$ = new AsmStmtNode( StatementNode::Asm, $2, $5, 0, $8, $10, $12 ); }
     883        ;
     884
     885asm_volatile_opt:                                                                               // GCC
     886        // empty
     887                { $$ = false; }
     888        | VOLATILE
     889                { $$ = true; }
    868890        ;
    869891
    870892asm_operands_opt:                                                                               // GCC
    871893        // empty
     894                { $$ = 0; }                                                                             // use default argument
    872895        | asm_operands_list
    873896        ;
     
    876899        asm_operand
    877900        | asm_operands_list ',' asm_operand
     901                { $$ = (ExpressionNode *)$1->set_link( $3 ); }
    878902        ;
    879903
    880904asm_operand:                                                                                    // GCC
    881         STRINGliteral '(' constant_expression ')'       {}
    882         ;
    883 
    884 asm_clobbers_list:                                                                              // GCC
    885         STRINGliteral                                                           {}
    886         | asm_clobbers_list ',' STRINGliteral
     905        string_literal_list '(' constant_expression ')'
     906                { $$ = new AsmExprNode( 0, $1, $3 ); }
     907        | '[' constant_expression ']' string_literal_list '(' constant_expression ')'
     908                { $$ = new AsmExprNode( $2, $4, $6 ); }
     909        ;
     910
     911asm_clobbers_list_opt:                                                                          // GCC
     912        // empty
     913                { $$ = 0; }                                                                             // use default argument
     914        | string_literal_list
     915                { $$ = $1; }
     916        | asm_clobbers_list_opt ',' string_literal_list
     917                { $$ = (ConstantNode *)$1->set_link( $3 ); }
     918        ;
     919
     920label_list:
     921        no_attr_identifier
     922                { $$ = new LabelNode(); $$->append_label( $1 ); }
     923        | label_list ',' no_attr_identifier
     924                { $$ = $1; $1->append_label( $3 ); }
    887925        ;
    888926
     
    913951        ;
    914952
    915 label_declaration_opt:                                                                  // GCC, local label
     953local_label_declaration_opt:                                                    // GCC, local label
    916954        // empty
    917         | label_declaration_list
    918         ;
    919 
    920 label_declaration_list:                                                                 // GCC, local label
    921         LABEL label_list ';'
    922         | label_declaration_list LABEL label_list ';'
    923         ;
    924 
    925 label_list:                                                                                             // GCC, local label
    926         no_attr_identifier_or_type_name                 {}
    927         | label_list ',' no_attr_identifier_or_type_name {}
     955        | local_label_declaration_list
     956        ;
     957
     958local_label_declaration_list:                                                   // GCC, local label
     959        LABEL local_label_list ';'
     960        | local_label_declaration_list LABEL local_label_list ';'
     961        ;
     962
     963local_label_list:                                                                               // GCC, local label
     964        no_attr_identifier_or_type_name                         {}
     965        | local_label_list ',' no_attr_identifier_or_type_name {}
    928966        ;
    929967
     
    11821220        type_qualifier_name
    11831221        | attribute
    1184                 { $$ = DeclarationNode::newQualifier( DeclarationNode::Attribute ); }
     1222        //{ $$ = DeclarationNode::newQualifier( DeclarationNode::Attribute ); }
    11851223        ;
    11861224
     
    16551693
    16561694designator:
    1657         '.' no_attr_identifier_or_type_name                                     // C99, field name
    1658                 { $$ = new VarRefNode( $2 ); }
     1695        // only ".0" and ".1" allowed => semantic check
     1696        FLOATINGconstant
     1697                { $$ = new DesignatorNode( new VarRefNode( $1 ) ); }
     1698        | '.' no_attr_identifier_or_type_name                           // C99, field name
     1699                { $$ = new DesignatorNode( new VarRefNode( $2 ) ); }
    16591700        | '[' push assignment_expression pop ']'                        // C99, single array element
    16601701                // assignment_expression used instead of constant_expression because of shift/reduce conflicts with tuple.
    1661                 { $$ = $3; }
     1702                { $$ = new DesignatorNode( $3, true ); }
    16621703        | '[' push subrange pop ']'                                                     // CFA, multiple array elements
    1663                 { $$ = $3; }
     1704                { $$ = new DesignatorNode( $3, true ); }
    16641705        | '[' push constant_expression ELLIPSIS constant_expression pop ']' // GCC, multiple array elements
    1665                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Range ), $3, $5 ); }
     1706                { $$ = new DesignatorNode( new CompositeExprNode( new OperatorNode( OperatorNode::Range ), $3, $5 ), true ); }
    16661707        | '.' '[' push field_list pop ']'                                       // CFA, tuple field selector
    1667                 { $$ = $4; }
     1708                { $$ = new DesignatorNode( $4 ); }
    16681709        ;
    16691710
     
    19972038attribute_list_opt:                                                                             // GCC
    19982039        // empty
     2040                { $$ = 0; }
    19992041        | attribute_list
    20002042        ;
     
    20032045        attribute
    20042046        | attribute_list attribute
     2047                { $$ = $2->addQualifiers( $1 ); }
    20052048        ;
    20062049
    20072050attribute:                                                                                              // GCC
    20082051        ATTRIBUTE '(' '(' attribute_parameter_list ')' ')'
     2052        //              { $$ = DeclarationNode::newQualifier( DeclarationNode::Attribute ); }
     2053                { $$ = 0; }
    20092054        ;
    20102055
     
    20592104variable_declarator:
    20602105        paren_identifier attribute_list_opt
     2106                { $$ = $1->addQualifiers( $2 ); }
    20612107        | variable_ptr
    20622108        | variable_array attribute_list_opt
     2109                { $$ = $1->addQualifiers( $2 ); }
    20632110        | variable_function attribute_list_opt
     2111                { $$ = $1->addQualifiers( $2 ); }
    20642112        ;
    20652113
     
    21082156function_declarator:
    21092157        function_no_ptr attribute_list_opt
     2158                { $$ = $1->addQualifiers( $2 ); }
    21102159        | function_ptr
    21112160        | function_array attribute_list_opt
     2161                { $$ = $1->addQualifiers( $2 ); }
    21122162        ;
    21132163
     
    21882238type_redeclarator:
    21892239        paren_type attribute_list_opt
     2240                { $$ = $1->addQualifiers( $2 ); }
    21902241        | type_ptr
    21912242        | type_array attribute_list_opt
     2243                { $$ = $1->addQualifiers( $2 ); }
    21922244        | type_function attribute_list_opt
     2245                { $$ = $1->addQualifiers( $2 ); }
    21932246        ;
    21942247
     
    22352288identifier_parameter_declarator:
    22362289        paren_identifier attribute_list_opt
     2290                { $$ = $1->addQualifiers( $2 ); }
    22372291        | identifier_parameter_ptr
    22382292        | identifier_parameter_array attribute_list_opt
     2293                { $$ = $1->addQualifiers( $2 ); }
    22392294        | identifier_parameter_function attribute_list_opt
     2295                { $$ = $1->addQualifiers( $2 ); }
    22402296        ;
    22412297
     
    22972353type_parameter_redeclarator:
    22982354        typedef attribute_list_opt
     2355                { $$ = $1->addQualifiers( $2 ); }
    22992356        | type_parameter_ptr
    23002357        | type_parameter_array attribute_list_opt
     2358                { $$ = $1->addQualifiers( $2 ); }
    23012359        | type_parameter_function attribute_list_opt
     2360                { $$ = $1->addQualifiers( $2 ); }
    23022361        ;
    23032362
     
    23502409        abstract_ptr
    23512410        | abstract_array attribute_list_opt
     2411                { $$ = $1->addQualifiers( $2 ); }
    23522412        | abstract_function attribute_list_opt
     2413                { $$ = $1->addQualifiers( $2 ); }
    23532414        ;
    23542415
     
    24172478        abstract_parameter_ptr
    24182479        | abstract_parameter_array attribute_list_opt
     2480                { $$ = $1->addQualifiers( $2 ); }
    24192481        | abstract_parameter_function attribute_list_opt
     2482                { $$ = $1->addQualifiers( $2 ); }
    24202483        ;
    24212484
     
    24932556        variable_abstract_ptr
    24942557        | variable_abstract_array attribute_list_opt
     2558                { $$ = $1->addQualifiers( $2 ); }
    24952559        | variable_abstract_function attribute_list_opt
     2560                { $$ = $1->addQualifiers( $2 ); }
    24962561        ;
    24972562
  • src/ResolvExpr/AlternativeFinder.cc

    re45215c rd60ccbf  
    343343        }
    344344
     345        /// Adds type variables to the open variable set and marks their assertions
    345346        void makeUnifiableVars( Type *type, OpenVarSet &unifiableVars, AssertionSet &needAssertions ) {
    346347                for ( std::list< TypeDecl* >::const_iterator tyvar = type->get_forall().begin(); tyvar != type->get_forall().end(); ++tyvar ) {
     
    697698                        std::list< Type* >::iterator candidate_end = (*i).expr->get_results().begin();
    698699                        std::advance( candidate_end, castExpr->get_results().size() );
    699                         if ( ! unifyList( (*i).expr->get_results().begin(), candidate_end,
    700                                                          castExpr->get_results().begin(), castExpr->get_results().end(), i->env, needAssertions, haveAssertions, openVars, indexer ) ) continue;
    701700                        Cost thisCost = castCostList( (*i).expr->get_results().begin(), candidate_end,
    702701                                                                                  castExpr->get_results().begin(), castExpr->get_results().end(), indexer, i->env );
  • src/ResolvExpr/CommonType.cc

    re45215c rd60ccbf  
    138138        void CommonType::visit( PointerType *pointerType ) {
    139139                if ( PointerType *otherPointer = dynamic_cast< PointerType* >( type2 ) ) {
    140                         if ( widenFirst && dynamic_cast< VoidType* >( otherPointer->get_base() ) ) {
     140                        if ( widenFirst && dynamic_cast< VoidType* >( otherPointer->get_base() ) && ! isFtype(pointerType->get_base(), indexer) ) {
    141141                                result = otherPointer->clone();
    142142                                result->get_qualifiers() += pointerType->get_qualifiers();
    143                         } else if ( widenSecond && dynamic_cast< VoidType* >( pointerType->get_base() ) ) {
     143                        } else if ( widenSecond && dynamic_cast< VoidType* >( pointerType->get_base() ) && ! isFtype(otherPointer->get_base(), indexer) ) {
    144144                                result = pointerType->clone();
    145145                                result->get_qualifiers() += otherPointer->get_qualifiers();
  • src/ResolvExpr/Cost.h

    re45215c rd60ccbf  
    99// Author           : Richard C. Bilson
    1010// Created On       : Sun May 17 09:39:50 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun May 17 09:42:04 2015
    13 // Update Count     : 3
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Wed Jul 22 16:43:10 2015
     13// Update Count     : 4
    1414//
    1515
     
    5656
    5757        inline void Cost::incPoly( int inc ) {
    58                 unsafe += inc;
     58                poly += inc;
    5959        }
    6060
    6161        inline void Cost::incSafe( int inc ) {
    62                 unsafe += inc;
     62                safe += inc;
    6363        }
    6464
  • src/ResolvExpr/Resolver.cc

    re45215c rd60ccbf  
    99// Author           : Richard C. Bilson
    1010// Created On       : Sun May 17 12:17:01 2015
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Wed Jul 15 14:54:04 2015
    13 // Update Count     : 167
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Fri Jul 24 17:33:54 2015
     13// Update Count     : 178
    1414//
    1515
     
    4141
    4242                virtual void visit( ExprStmt *exprStmt );
     43                virtual void visit( AsmExpr *asmExpr );
     44                virtual void visit( AsmStmt *asmStmt );
    4345                virtual void visit( IfStmt *ifStmt );
    4446                virtual void visit( WhileStmt *whileStmt );
     
    209211                        exprStmt->set_expr( newExpr );
    210212                } // if
     213        }
     214
     215        void Resolver::visit( AsmExpr *asmExpr ) {
     216                Expression *newExpr = findVoidExpression( asmExpr->get_operand(), *this );
     217                delete asmExpr->get_operand();
     218                asmExpr->set_operand( newExpr );
     219                if ( asmExpr->get_inout() ) {
     220                        newExpr = findVoidExpression( asmExpr->get_inout(), *this );
     221                        delete asmExpr->get_inout();
     222                        asmExpr->set_inout( newExpr );
     223                } // if
     224        }
     225
     226        void Resolver::visit( AsmStmt *asmStmt ) {
     227                acceptAll( asmStmt->get_input(), *this);
     228                acceptAll( asmStmt->get_output(), *this);
    211229        }
    212230
  • src/ResolvExpr/Resolver.h

    re45215c rd60ccbf  
    2121
    2222namespace ResolvExpr {
     23        /// Checks types and binds syntactic constructs to typed representations
    2324        void resolve( std::list< Declaration * > translationUnit );
    2425        Expression *resolveInVoidContext( Expression *expr, const SymTab::Indexer &indexer );
  • src/ResolvExpr/typeops.h

    re45215c rd60ccbf  
    117117
    118118        // in Unify.cc
     119        bool isFtype( Type *type, const SymTab::Indexer &indexer );
    119120        bool typesCompatible( Type *, Type *, const SymTab::Indexer &indexer, const TypeEnvironment &env );
    120121        bool typesCompatibleIgnoreQualifiers( Type *, Type *, const SymTab::Indexer &indexer, const TypeEnvironment &env );
  • src/SymTab/FixFunction.h

    re45215c rd60ccbf  
    2020
    2121namespace SymTab {
     22        /// Replaces function and array types by equivalent pointer types.
    2223        class FixFunction : public Mutator {
    2324                typedef Mutator Parent;
  • src/SymTab/Indexer.cc

    re45215c rd60ccbf  
    99// Author           : Richard C. Bilson
    1010// Created On       : Sun May 17 21:37:33 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Jun  5 08:05:17 2015
    13 // Update Count     : 5
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Wed Aug 05 13:52:42 2015
     13// Update Count     : 10
    1414//
    1515
     
    2626
    2727namespace SymTab {
     28        template< typename Container, typename VisitorType >
     29        inline void acceptAllNewScope( Container &container, VisitorType &visitor ) {
     30                visitor.enterScope();
     31                acceptAll( container, visitor );
     32                visitor.leaveScope();
     33        }
     34
    2835        Indexer::Indexer( bool useDebug ) : doDebug( useDebug ) {}
    2936
     
    3138
    3239        void Indexer::visit( ObjectDecl *objectDecl ) {
     40                enterScope();
    3341                maybeAccept( objectDecl->get_type(), *this );
     42                leaveScope();
    3443                maybeAccept( objectDecl->get_init(), *this );
    3544                maybeAccept( objectDecl->get_bitfieldWidth(), *this );
     
    149158                leaveScope();
    150159        }
     160
     161
     162        void Indexer::visit( ApplicationExpr *applicationExpr ) {
     163                acceptAllNewScope( applicationExpr->get_results(), *this );
     164                maybeAccept( applicationExpr->get_function(), *this );
     165                acceptAll( applicationExpr->get_args(), *this );
     166        }
     167
     168        void Indexer::visit( UntypedExpr *untypedExpr ) {
     169                acceptAllNewScope( untypedExpr->get_results(), *this );
     170                acceptAll( untypedExpr->get_args(), *this );
     171        }
     172
     173        void Indexer::visit( NameExpr *nameExpr ) {
     174                acceptAllNewScope( nameExpr->get_results(), *this );
     175        }
     176
     177        void Indexer::visit( AddressExpr *addressExpr ) {
     178                acceptAllNewScope( addressExpr->get_results(), *this );
     179                maybeAccept( addressExpr->get_arg(), *this );
     180        }
     181
     182        void Indexer::visit( LabelAddressExpr *labAddressExpr ) {
     183                acceptAllNewScope( labAddressExpr->get_results(), *this );
     184                maybeAccept( labAddressExpr->get_arg(), *this );
     185        }
     186
     187        void Indexer::visit( CastExpr *castExpr ) {
     188                acceptAllNewScope( castExpr->get_results(), *this );
     189                maybeAccept( castExpr->get_arg(), *this );
     190        }
     191
     192        void Indexer::visit( UntypedMemberExpr *memberExpr ) {
     193                acceptAllNewScope( memberExpr->get_results(), *this );
     194                maybeAccept( memberExpr->get_aggregate(), *this );
     195        }
     196
     197        void Indexer::visit( MemberExpr *memberExpr ) {
     198                acceptAllNewScope( memberExpr->get_results(), *this );
     199                maybeAccept( memberExpr->get_aggregate(), *this );
     200        }
     201
     202        void Indexer::visit( VariableExpr *variableExpr ) {
     203                acceptAllNewScope( variableExpr->get_results(), *this );
     204        }
     205
     206        void Indexer::visit( ConstantExpr *constantExpr ) {
     207                acceptAllNewScope( constantExpr->get_results(), *this );
     208                maybeAccept( constantExpr->get_constant(), *this );
     209        }
     210
     211        void Indexer::visit( SizeofExpr *sizeofExpr ) {
     212                acceptAllNewScope( sizeofExpr->get_results(), *this );
     213                if ( sizeofExpr->get_isType() ) {
     214                        maybeAccept( sizeofExpr->get_type(), *this );
     215                } else {
     216                        maybeAccept( sizeofExpr->get_expr(), *this );
     217                }
     218        }
     219
     220        void Indexer::visit( AttrExpr *attrExpr ) {
     221                acceptAllNewScope( attrExpr->get_results(), *this );
     222                if ( attrExpr->get_isType() ) {
     223                        maybeAccept( attrExpr->get_type(), *this );
     224                } else {
     225                        maybeAccept( attrExpr->get_expr(), *this );
     226                }
     227        }
     228
     229        void Indexer::visit( LogicalExpr *logicalExpr ) {
     230                acceptAllNewScope( logicalExpr->get_results(), *this );
     231                maybeAccept( logicalExpr->get_arg1(), *this );
     232                maybeAccept( logicalExpr->get_arg2(), *this );
     233        }
     234
     235        void Indexer::visit( ConditionalExpr *conditionalExpr ) {
     236                acceptAllNewScope( conditionalExpr->get_results(), *this );
     237                maybeAccept( conditionalExpr->get_arg1(), *this );
     238                maybeAccept( conditionalExpr->get_arg2(), *this );
     239                maybeAccept( conditionalExpr->get_arg3(), *this );
     240        }
     241
     242        void Indexer::visit( CommaExpr *commaExpr ) {
     243                acceptAllNewScope( commaExpr->get_results(), *this );
     244                maybeAccept( commaExpr->get_arg1(), *this );
     245                maybeAccept( commaExpr->get_arg2(), *this );
     246        }
     247
     248        void Indexer::visit( TupleExpr *tupleExpr ) {
     249                acceptAllNewScope( tupleExpr->get_results(), *this );
     250                acceptAll( tupleExpr->get_exprs(), *this );
     251        }
     252
     253        void Indexer::visit( SolvedTupleExpr *tupleExpr ) {
     254                acceptAllNewScope( tupleExpr->get_results(), *this );
     255                acceptAll( tupleExpr->get_exprs(), *this );
     256        }
     257
     258        void Indexer::visit( TypeExpr *typeExpr ) {
     259                acceptAllNewScope( typeExpr->get_results(), *this );
     260                maybeAccept( typeExpr->get_type(), *this );
     261        }
     262
     263        void Indexer::visit( AsmExpr *asmExpr ) {
     264                maybeAccept( asmExpr->get_inout(), *this );
     265                maybeAccept( asmExpr->get_constraint(), *this );
     266                maybeAccept( asmExpr->get_operand(), *this );
     267        }
     268
     269        void Indexer::visit( UntypedValofExpr *valofExpr ) {
     270                acceptAllNewScope( valofExpr->get_results(), *this );
     271                maybeAccept( valofExpr->get_body(), *this );
     272        }
     273
    151274
    152275        void Indexer::visit( ContextInstType *contextInst ) {
  • src/SymTab/Indexer.h

    re45215c rd60ccbf  
    99// Author           : Richard C. Bilson
    1010// Created On       : Sun May 17 21:38:55 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue May 19 16:51:21 2015
    13 // Update Count     : 3
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Wed Aug 05 13:51:39 2015
     13// Update Count     : 4
    1414//
    1515
     
    4343
    4444                virtual void visit( CompoundStmt *compoundStmt );
     45
     46                virtual void visit( ApplicationExpr *applicationExpr );
     47                virtual void visit( UntypedExpr *untypedExpr );
     48                virtual void visit( NameExpr *nameExpr );
     49                virtual void visit( CastExpr *castExpr );
     50                virtual void visit( AddressExpr *addressExpr );
     51                virtual void visit( LabelAddressExpr *labAddressExpr );
     52                virtual void visit( UntypedMemberExpr *memberExpr );
     53                virtual void visit( MemberExpr *memberExpr );
     54                virtual void visit( VariableExpr *variableExpr );
     55                virtual void visit( ConstantExpr *constantExpr );
     56                virtual void visit( SizeofExpr *sizeofExpr );
     57                virtual void visit( AttrExpr *attrExpr );
     58                virtual void visit( LogicalExpr *logicalExpr );
     59                virtual void visit( ConditionalExpr *conditionalExpr );
     60                virtual void visit( CommaExpr *commaExpr );
     61                virtual void visit( TupleExpr *tupleExpr );
     62                virtual void visit( SolvedTupleExpr *tupleExpr );
     63                virtual void visit( TypeExpr *typeExpr );
     64                virtual void visit( AsmExpr *asmExpr );
     65                virtual void visit( UntypedValofExpr *valofExpr );
    4566
    4667                virtual void visit( ContextInstType *contextInst );
  • src/SymTab/TypeEquality.cc

    re45215c rd60ccbf  
    1010// Created On       : Tue Jul 07 16:28:29 2015
    1111// Last Modified By : Rob Schluntz
    12 // Last Modified On : Thu Jul 09 11:18:46 2015
    13 // Update Count     : 36
     12// Last Modified On : Mon Jul 20 14:16:11 2015
     13// Update Count     : 37
    1414//
    1515
     
    9191                        // and must both have a dimension expression or not have a dimension
    9292                        result = result && arrayType->get_isVarLen() == at->get_isVarLen()
    93                                 && (arrayType->get_dimension() != 0 && at->get_dimension() != 0
    94                                         || arrayType->get_dimension() == 0 && at->get_dimension() == 0);
     93                                && ((arrayType->get_dimension() != 0 && at->get_dimension() != 0)
     94                                        || (arrayType->get_dimension() == 0 && at->get_dimension() == 0));
    9595
    9696                        if ( vlaErr ) {
  • src/SymTab/Validate.cc

    re45215c rd60ccbf  
    1010// Created On       : Sun May 17 21:50:04 2015
    1111// Last Modified By : Rob Schluntz
    12 // Last Modified On : Tue Jul 14 12:27:54 2015
    13 // Update Count     : 186
     12// Last Modified On : Wed Aug 05 14:00:24 2015
     13// Update Count     : 195
    1414//
    1515
     
    6060        class HoistStruct : public Visitor {
    6161          public:
     62                /// Flattens nested struct types
    6263                static void hoistStruct( std::list< Declaration * > &translationUnit );
    6364 
     
    8485        };
    8586
     87        /// Replaces enum types by int, and function or array types in function parameter and return lists by appropriate pointers
    8688        class Pass1 : public Visitor {
    8789                typedef Visitor Parent;
     
    8991                virtual void visit( FunctionType *func );
    9092        };
    91  
     93
     94        /// Associates forward declarations of aggregates with their definitions
    9295        class Pass2 : public Indexer {
    9396                typedef Indexer Parent;
     
    110113        };
    111114
     115        /// Replaces array and function types in forall lists by appropriate pointer type
    112116        class Pass3 : public Indexer {
    113117                typedef Indexer Parent;
     
    123127        class AddStructAssignment : public Visitor {
    124128          public:
     129                /// Generates assignment operators for aggregate types as required
    125130                static void addStructAssignment( std::list< Declaration * > &translationUnit );
    126131
     
    158163          public:
    159164          EliminateTypedef() : scopeLevel( 0 ) {}
     165            /// Replaces typedefs by forward declarations
    160166                static void eliminateTypedef( std::list< Declaration * > &translationUnit );
    161167          private:
     
    163169                virtual TypeDecl *mutate( TypeDecl *typeDecl );
    164170                virtual DeclarationWithType *mutate( FunctionDecl *funcDecl );
    165                 virtual ObjectDecl *mutate( ObjectDecl *objDecl );
     171                virtual DeclarationWithType *mutate( ObjectDecl *objDecl );
    166172                virtual CompoundStmt *mutate( CompoundStmt *compoundStmt );
    167173                virtual Type *mutate( TypeInstType *aggregateUseType );
     
    399405                        } // for
    400406                } // for
     407
     408                if ( ctx->get_parameters().size() != contextInst->get_parameters().size() ) {
     409                        throw SemanticError( "incorrect number of context parameters: ", contextInst );
     410                } // if
     411
    401412                applySubstitution( ctx->get_parameters().begin(), ctx->get_parameters().end(), contextInst->get_parameters().begin(), ctx->get_members().begin(), ctx->get_members().end(), back_inserter( contextInst->get_members() ) );
    402413        }
     
    444455        }
    445456
     457        /// Fix up assertions
    446458        void forallFixer( Type *func ) {
    447                 // Fix up assertions
    448459                for ( std::list< TypeDecl * >::iterator type = func->get_forall().begin(); type != func->get_forall().end(); ++type ) {
    449460                        std::list< DeclarationWithType * > toBeDone, nextRound;
     
    532543                std::list<Statement *> initList;
    533544                initList.push_back( initStmt );
    534 
     545 
    535546                UntypedExpr *cond = new UntypedExpr( new NameExpr( "?<?" ) );
    536547                cond->get_args().push_back( new VariableExpr( index ) );
     
    610621                        delete assigns.front();
    611622                        assigns.pop_front();
    612                 }
     623                } // for
    613624
    614625                declsToAdd.insert( declsToAdd.begin(), assigns.begin(), assigns.end() );
     
    817828                        Type *ret = def->second.first->get_base()->clone();
    818829                        ret->get_qualifiers() += typeInst->get_qualifiers();
     830                        // place instance parameters on the typedef'd type
     831                        if ( ! typeInst->get_parameters().empty() ) {
     832                                ReferenceToType *rtt = dynamic_cast<ReferenceToType*>(ret);
     833                                if ( ! rtt ) {
     834                                        throw SemanticError("cannot apply type parameters to base type of " + typeInst->get_name());
     835                                }
     836                                rtt->get_parameters().clear();
     837                                cloneAll(typeInst->get_parameters(), rtt->get_parameters());
     838                        } // if
    819839                        delete typeInst;
    820840                        return ret;
     
    870890        }
    871891
    872         ObjectDecl *EliminateTypedef::mutate( ObjectDecl * objDecl ) {
     892        DeclarationWithType *EliminateTypedef::mutate( ObjectDecl * objDecl ) {
    873893                TypedefMap oldNames = typedefNames;
    874                 ObjectDecl *ret = Mutator::mutate( objDecl );
     894                DeclarationWithType *ret = Mutator::mutate( objDecl );
    875895                typedefNames = oldNames;
     896                if ( FunctionType *funtype = dynamic_cast<FunctionType *>( ret->get_type() ) ) {
     897                        return new FunctionDecl( ret->get_name(), ret->get_storageClass(), ret->get_linkage(), funtype, 0, ret->get_isInline(), ret->get_isNoreturn() );
     898                } else if ( objDecl->get_isInline() || objDecl->get_isNoreturn() ) {
     899                        throw SemanticError( "invalid inline or _Noreturn specification in declaration of ", objDecl );
     900                } // if
    876901                return ret;
    877902        }
  • src/SymTab/Validate.h

    re45215c rd60ccbf  
    2323        class Indexer;
    2424
     25        /// Normalizes struct and function declarations
    2526        void validate( std::list< Declaration * > &translationUnit, bool doDebug = false );
    2627        void validateType( Type *type, const Indexer *indexer );
  • src/SynTree/ArrayType.cc

    re45215c rd60ccbf  
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Jun  6 14:11:48 2015
    13 // Update Count     : 9
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Wed Aug 12 14:19:07 2015
     13// Update Count     : 11
    1414//
    1515
     
    5050        } // if
    5151        if ( dimension ) {
    52                 os << "with dimension of ";
    53                 dimension->print( os, indent );
     52                os << " with dimension of ";
     53                dimension->print( os, 0 );
    5454        } // if
    5555}
  • src/SynTree/BasicType.cc

    re45215c rd60ccbf  
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun Jun  7 08:44:36 2015
    13 // Update Count     : 5
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Wed Aug 12 14:15:45 2015
     13// Update Count     : 6
    1414//
    1515
     
    2828
    2929        Type::print( os, indent );
    30         os << kindNames[ kind ] << ' ';
     30        os << kindNames[ kind ];
    3131}
    3232
  • src/SynTree/Constant.cc

    re45215c rd60ccbf  
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Wed Jun 10 14:41:03 2015
    13 // Update Count     : 8
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Thu Jul 30 15:18:38 2015
     13// Update Count     : 12
    1414//
    1515
     
    2222Constant::Constant( Type *type_, std::string value_ ) : type( type_ ), value( value_ ) {}
    2323
    24 Constant::~Constant() {}
     24Constant::Constant( const Constant &other ) {
     25        type = other.type->clone();
     26        value = other.value;
     27}
    2528
    26 Constant *Constant::clone() const { return 0; }
     29Constant::~Constant() { delete type; }
     30
     31Constant *Constant::clone() const { assert( false ); return 0; }
    2732
    2833void Constant::print( std::ostream &os ) const {
  • src/SynTree/Constant.h

    re45215c rd60ccbf  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon May 18 08:46:37 2015
    13 // Update Count     : 2
     12// Last Modified On : Thu Jul 30 15:19:16 2015
     13// Update Count     : 5
    1414//
    1515
     
    2424  public:
    2525        Constant( Type *type, std::string value );
     26        Constant( const Constant &other );
    2627        virtual ~Constant();
    2728
  • src/SynTree/Declaration.cc

    re45215c rd60ccbf  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Jun 13 08:07:20 2015
    13 // Update Count     : 9
     12// Last Modified On : Mon Jul 13 17:58:38 2015
     13// Update Count     : 10
    1414//
    1515
     
    2727
    2828Declaration::Declaration( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage )
    29                 : name( name ), storageClass( sc ), linkage( linkage ), uniqueId( 0 ) {
     29                : name( name ), storageClass( sc ), linkage( linkage ), isInline( false ), isNoreturn( false ), uniqueId( 0 ) {
    3030}
    3131
    3232Declaration::Declaration( const Declaration &other )
    33                 : name( other.name ), storageClass( other.storageClass ), linkage( other.linkage ), uniqueId( other.uniqueId ) {
     33        : name( other.name ), storageClass( other.storageClass ), linkage( other.linkage ), isInline( other.isInline ), isNoreturn( other.isNoreturn ), uniqueId( other.uniqueId ) {
    3434}
    3535
  • src/SynTree/Declaration.h

    re45215c rd60ccbf  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Jun 13 09:10:31 2015
    13 // Update Count     : 25
     12// Last Modified On : Mon Jul 13 18:15:59 2015
     13// Update Count     : 28
    1414//
    1515
     
    3535        LinkageSpec::Type get_linkage() const { return linkage; }
    3636        void set_linkage( LinkageSpec::Type newValue ) { linkage = newValue; }
     37        bool get_isInline() const { return isInline; }
     38        void set_isInline( bool newValue ) { isInline = newValue; }
     39        bool get_isNoreturn() const { return isNoreturn; }
     40        void set_isNoreturn( bool newValue ) { isNoreturn = newValue; }
    3741        UniqueId get_uniqueId() const { return uniqueId; }
    3842
     
    5054        DeclarationNode::StorageClass storageClass;
    5155        LinkageSpec::Type linkage;
     56        bool isInline, isNoreturn;
    5257        UniqueId uniqueId;
    5358};
     
    7580        typedef DeclarationWithType Parent;
    7681  public:
    77         ObjectDecl( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage, Expression *bitfieldWidth, Type *type, Initializer *init );
     82        ObjectDecl( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage, Expression *bitfieldWidth, Type *type, Initializer *init, bool isInline = false, bool isNoreturn = false );
    7883        ObjectDecl( const ObjectDecl &other );
    7984        virtual ~ObjectDecl();
     
    8994        virtual ObjectDecl *clone() const { return new ObjectDecl( *this ); }
    9095        virtual void accept( Visitor &v ) { v.visit( this ); }
    91         virtual ObjectDecl *acceptMutator( Mutator &m ) { return m.mutate( this ); }
     96        virtual DeclarationWithType *acceptMutator( Mutator &m ) { return m.mutate( this ); }
    9297        virtual void print( std::ostream &os, int indent = 0 ) const;
    9398        virtual void printShort( std::ostream &os, int indent = 0 ) const;
     
    112117        CompoundStmt *get_statements() const { return statements; }
    113118        void set_statements( CompoundStmt *newValue ) { statements = newValue; }
    114         bool get_isInline() const { return isInline; }
    115         bool get_isNoreturn() const { return isNoreturn; }
    116119        std::list< std::string >& get_oldIdents() { return oldIdents; }
    117120        std::list< Declaration* >& get_oldDecls() { return oldDecls; }
     
    125128        FunctionType *type;
    126129        CompoundStmt *statements;
    127         bool isInline, isNoreturn;
    128130        std::list< std::string > oldIdents;
    129131        std::list< Declaration* > oldDecls;
  • src/SynTree/Expression.cc

    re45215c rd60ccbf  
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun Jun  7 08:40:46 2015
    13 // Update Count     : 16
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Wed Aug 12 14:02:45 2015
     13// Update Count     : 30
    1414//
    1515
     
    3838Expression::~Expression() {
    3939        delete env;
    40         // delete argName;      // xxx -- there's a problem in cloning ConstantExpr I still don't know how to fix
     40        delete argName; // xxx -- there's a problem in cloning ConstantExpr I still don't know how to fix
    4141        deleteAll( results );
    4242}
     
    7272
    7373void ConstantExpr::print( std::ostream &os, int indent ) const {
    74         os << "constant expression " ;
     74        os << std::string( indent, ' ' ) << "constant expression " ;
    7575        constant.print( os );
    7676        Expression::print( os, indent );
     77        os << std::endl;
    7778}
    7879
     
    332333}
    333334
     335void AsmExpr::print( std::ostream &os, int indent ) const {
     336        os << "Asm Expression: " << std::endl;
     337        if ( inout ) inout->print( os, indent + 2 );
     338        if ( constraint ) constraint->print( os, indent + 2 );
     339        if ( operand ) operand->print( os, indent + 2 );
     340}
     341
    334342void UntypedValofExpr::print( std::ostream &os, int indent ) const {
    335343        os << std::string( indent, ' ' ) << "Valof Expression: " << std::endl;
  • src/SynTree/Expression.h

    re45215c rd60ccbf  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun Jun  7 22:03:44 2015
    13 // Update Count     : 4
     12// Last Modified On : Fri Jul 24 13:49:28 2015
     13// Update Count     : 18
    1414//
    1515
     
    3030
    3131        std::list<Type *>& get_results() { return results; }
    32         void add_result(Type *t);
     32        void add_result( Type *t );
    3333
    3434        TypeSubstitution *get_env() const { return env; }
     
    446446};
    447447
     448// AsmExpr represents a GCC 'asm constraint operand' used in an asm statement: [output] "=f" (result)
     449class AsmExpr : public Expression {
     450  public:
     451        AsmExpr( Expression *inout, ConstantExpr *constraint, Expression *operand ) : inout( inout ), constraint( constraint ), operand( operand ) {}
     452        virtual ~AsmExpr() { delete inout; delete constraint; delete operand; };
     453
     454        Expression *get_inout() const { return inout; }
     455        void set_inout( Expression *newValue ) { inout = newValue; }
     456
     457        ConstantExpr *get_constraint() const { return constraint; }
     458        void set_constraint( ConstantExpr *newValue ) { constraint = newValue; }
     459
     460        Expression *get_operand() const { return operand; }
     461        void set_operand( Expression *newValue ) { operand = newValue; }
     462
     463        virtual AsmExpr *clone() const { return new AsmExpr( *this ); }
     464        virtual void accept( Visitor &v ) { v.visit( this ); }
     465        virtual Expression *acceptMutator( Mutator &m ) { return m.mutate( this ); }
     466        virtual void print( std::ostream &os, int indent = 0 ) const;
     467  private:
     468        // https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gcc/Machine-Constraints.html#Machine-Constraints
     469        Expression *inout;
     470        ConstantExpr *constraint;
     471        Expression *operand;
     472};
     473
    448474// ValofExpr represents a GCC 'lambda expression'
    449475class UntypedValofExpr : public Expression {
  • src/SynTree/FunctionDecl.cc

    re45215c rd60ccbf  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Jun 13 09:10:32 2015
    13 // Update Count     : 16
     12// Last Modified On : Mon Jul 13 18:11:44 2015
     13// Update Count     : 19
    1414//
    1515
     
    2222
    2323FunctionDecl::FunctionDecl( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage, FunctionType *type, CompoundStmt *statements, bool isInline, bool isNoreturn )
    24                 : Parent( name, sc, linkage ), type( type ), statements( statements ), isInline( isInline ), isNoreturn( isNoreturn ) {
     24                : Parent( name, sc, linkage ), type( type ), statements( statements ) {
     25        set_isInline( isInline );
     26        set_isNoreturn( isNoreturn );
    2527        // this is a brazen hack to force the function "main" to have C linkage
    2628        if ( name == "main" ) {
     
    3032
    3133FunctionDecl::FunctionDecl( const FunctionDecl &other )
    32         : Parent( other ), type( maybeClone( other.type ) ), statements( maybeClone( other.statements ) ), isInline( other.isInline ), isNoreturn( other.isNoreturn ) {
     34        : Parent( other ), type( maybeClone( other.type ) ), statements( maybeClone( other.statements ) ) {
    3335}
    3436
     
    5759                os << LinkageSpec::toString( get_linkage() ) << " ";
    5860        } // if
    59         if ( isInline ) {
     61        if ( get_isInline() ) {
    6062                os << "inline ";
    6163        } // if
    62         if ( isNoreturn ) {
     64        if ( get_isNoreturn() ) {
    6365                os << "_Noreturn ";
    6466        } // if
     
    9698                os << get_name() << ": ";
    9799        } // if
    98         if ( isInline ) {
     100        if ( get_isInline() ) {
    99101                os << "inline ";
    100102        } // if
    101         if ( isNoreturn ) {
     103        if ( get_isNoreturn() ) {
    102104                os << "_Noreturn ";
    103105        } // if
  • src/SynTree/Initializer.cc

    re45215c rd60ccbf  
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon May 18 09:02:45 2015
    13 // Update Count     : 2
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Wed Aug 12 14:05:25 2015
     13// Update Count     : 14
    1414//
    1515
     
    4343
    4444void SingleInit::print( std::ostream &os, int indent ) {
    45         os << std::endl << std::string(indent, ' ' ) << "Simple Initializer: ";
    46         value->print( os, indent+2 );
     45        os << std::endl << std::string(indent, ' ' ) << "Simple Initializer: " << std::endl;
     46        value->print( os, indent+4 );
    4747
    4848        if ( ! designators.empty() ) {
    49                 os << std::endl << std::string(indent + 2, ' ' ) << "designated by: "  ;
    50                 for ( std::list < Expression * >::iterator i = designators.begin(); i != designators.end(); i++ )
     49                os << std::endl << std::string(indent + 2, ' ' ) << "designated by: "   << std::endl;
     50                for ( std::list < Expression * >::iterator i = designators.begin(); i != designators.end(); i++ ) {
    5151                        ( *i )->print(os, indent + 4 );
     52                }
    5253        } // if
    5354}
  • src/SynTree/Mutator.cc

    re45215c rd60ccbf  
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Tue Jul 14 12:31:39 2015
    13 // Update Count     : 2
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Sat Jul 25 19:21:33 2015
     13// Update Count     : 11
    1414//
    1515
     
    2828Mutator::~Mutator() {}
    2929
    30 ObjectDecl *Mutator::mutate( ObjectDecl *objectDecl ) {
     30DeclarationWithType *Mutator::mutate( ObjectDecl *objectDecl ) {
    3131        objectDecl->set_type( maybeMutate( objectDecl->get_type(), *this ) );
    3232        objectDecl->set_init( maybeMutate( objectDecl->get_init(), *this ) );
     
    9393        exprStmt->set_expr( maybeMutate( exprStmt->get_expr(), *this ) );
    9494        return exprStmt;
     95}
     96
     97Statement *Mutator::mutate( AsmStmt *asmStmt ) {
     98        asmStmt->set_instruction( maybeMutate( asmStmt->get_instruction(), *this ) );
     99        mutateAll( asmStmt->get_output(), *this );
     100        mutateAll( asmStmt->get_input(), *this );
     101        mutateAll( asmStmt->get_clobber(), *this );
     102        return asmStmt;
    95103}
    96104
     
    291299        typeExpr->set_type( maybeMutate( typeExpr->get_type(), *this ) );
    292300        return typeExpr;
     301}
     302
     303Expression *Mutator::mutate( AsmExpr *asmExpr ) {
     304        asmExpr->set_inout( maybeMutate( asmExpr->get_inout(), *this ) );
     305        asmExpr->set_constraint( maybeMutate( asmExpr->get_constraint(), *this ) );
     306        asmExpr->set_operand( maybeMutate( asmExpr->get_operand(), *this ) );
     307        return asmExpr;
    293308}
    294309
  • src/SynTree/Mutator.h

    re45215c rd60ccbf  
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Fri May 29 16:34:08 2015
    13 // Update Count     : 4
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Thu Jul 23 23:24:18 2015
     13// Update Count     : 7
    1414//
    1515#include <cassert>
     
    2626        virtual ~Mutator();
    2727  public:
    28         virtual ObjectDecl* mutate( ObjectDecl *objectDecl );
     28        virtual DeclarationWithType* mutate( ObjectDecl *objectDecl );
    2929        virtual DeclarationWithType* mutate( FunctionDecl *functionDecl );
    3030        virtual Declaration* mutate( StructDecl *aggregateDecl );
     
    3737        virtual CompoundStmt* mutate( CompoundStmt *compoundStmt );
    3838        virtual Statement* mutate( ExprStmt *exprStmt );
     39        virtual Statement* mutate( AsmStmt *asmStmt );
    3940        virtual Statement* mutate( IfStmt *ifStmt );
    4041        virtual Statement* mutate( WhileStmt *whileStmt );
     
    7071        virtual Expression* mutate( SolvedTupleExpr *tupleExpr );
    7172        virtual Expression* mutate( TypeExpr *typeExpr );
     73        virtual Expression* mutate( AsmExpr *asmExpr );
    7274        virtual Expression* mutate( UntypedValofExpr *valofExpr );
    7375
  • src/SynTree/ObjectDecl.cc

    re45215c rd60ccbf  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Jun 13 08:10:16 2015
    13 // Update Count     : 15
     12// Last Modified On : Mon Jul 13 18:08:27 2015
     13// Update Count     : 16
    1414//
    1515
     
    2020#include "utility.h"
    2121
    22 ObjectDecl::ObjectDecl( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage, Expression *bitfieldWidth, Type *type, Initializer *init )
     22ObjectDecl::ObjectDecl( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage, Expression *bitfieldWidth, Type *type, Initializer *init, bool isInline, bool isNoreturn )
    2323        : Parent( name, sc, linkage ), type( type ), init( init ), bitfieldWidth( bitfieldWidth ) {
     24        set_isInline( isInline );
     25        set_isNoreturn( isNoreturn );
    2426}
    2527
  • src/SynTree/Statement.cc

    re45215c rd60ccbf  
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Wed Jul 15 14:57:40 2015
    13 // Update Count     : 27
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Sat Jul 25 12:19:50 2015
     13// Update Count     : 53
    1414//
    1515
     
    4242        expr->print( os, indent + 2 );
    4343}
     44
     45
     46AsmStmt::AsmStmt( std::list<Label> labels, bool voltile, ConstantExpr *instruction, std::list<Expression *> output, std::list<Expression *> input, std::list<ConstantExpr *> clobber, std::list<Label> gotolabels ) : Statement( labels ), voltile( voltile ), instruction( instruction ), output( output ), input( input ), clobber( clobber ), gotolabels( gotolabels ) {}
     47
     48AsmStmt::~AsmStmt() {
     49        delete instruction;
     50        deleteAll( output );
     51        deleteAll( input );
     52        deleteAll( clobber );
     53}
     54
     55void AsmStmt::print( std::ostream &os, int indent ) const {
     56        os << "Assembler Statement:" << endl;
     57        os << std::string( indent, ' ' ) << "instruction: " << endl << std::string( indent, ' ' );
     58        instruction->print( os, indent + 2 );
     59        if ( ! output.empty() ) {
     60                os << endl << std::string( indent, ' ' ) << "output: " << endl;
     61                printAll( output, os, indent + 2 );
     62        } // if
     63        if ( ! input.empty() ) {
     64                os << std::string( indent, ' ' ) << "input: " << endl << std::string( indent, ' ' );
     65                printAll( input, os, indent + 2 );
     66        } // if
     67        if ( ! clobber.empty() ) {
     68                os << std::string( indent, ' ' ) << "clobber: " << endl;
     69                printAll( clobber, os, indent + 2 );
     70        } // if
     71}
     72
    4473
    4574const char *BranchStmt::brType[] = { "Goto", "Break", "Continue" };
  • src/SynTree/Statement.h

    re45215c rd60ccbf  
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Tue Jul 14 12:14:54 2015
    13 // Update Count     : 24
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Sat Jul 25 18:25:37 2015
     13// Update Count     : 44
    1414//
    1515
     
    7070};
    7171
     72class AsmStmt : public Statement {
     73  public:
     74        AsmStmt( std::list<Label> labels, bool voltile, ConstantExpr *instruction, std::list<Expression *> input, std::list<Expression *> output, std::list<ConstantExpr *> clobber, std::list<Label> gotolabels );
     75        virtual ~AsmStmt();
     76
     77        bool get_voltile() { return voltile; }
     78        void set_voltile( bool newValue ) { voltile = newValue; }
     79        ConstantExpr *get_instruction() { return instruction; }
     80        void set_instruction( ConstantExpr *newValue ) { instruction = newValue; }
     81        std::list<Expression *> &get_output() { return output; }
     82        void set_output( const std::list<Expression *> &newValue ) { output = newValue; }
     83        std::list<Expression *> &get_input() { return input; }
     84        void set_input( const std::list<Expression *> &newValue ) { input = newValue; }
     85        std::list<ConstantExpr *> &get_clobber() { return clobber; }
     86        void set_clobber( const std::list<ConstantExpr *> &newValue ) { clobber = newValue; }
     87        std::list<Label> &get_gotolabels() { return gotolabels; }
     88        void set_gotolabels( const std::list<Label> &newValue ) { gotolabels = newValue; }
     89
     90        virtual AsmStmt *clone() const { return new AsmStmt( *this ); }
     91        virtual void accept( Visitor &v ) { v.visit( this ); }
     92        virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); }
     93        virtual void print( std::ostream &os, int indent = 0 ) const;
     94  private:
     95        bool voltile;
     96        ConstantExpr *instruction;
     97        std::list<Expression *> output, input;
     98        std::list<ConstantExpr *> clobber;
     99        std::list<Label> gotolabels;
     100};
     101
    72102class IfStmt : public Statement {
    73103  public:
     
    100130        void set_condition( Expression *newValue ) { condition = newValue; }
    101131
    102         std::list<Statement *>& get_branches() { return branches; }
     132        std::list<Statement *> & get_branches() { return branches; }
    103133        void add_case( CaseStmt * );
    104134
  • src/SynTree/SynTree.h

    re45215c rd60ccbf  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon May 18 10:58:22 2015
    13 // Update Count     : 1
     12// Last Modified On : Thu Jul 23 23:25:04 2015
     13// Update Count     : 3
    1414//
    1515
     
    4040class CompoundStmt;
    4141class ExprStmt;
     42class AsmStmt;
    4243class IfStmt;
    4344class WhileStmt;
     
    7576class SolvedTupleExpr;
    7677class TypeExpr;
     78class AsmExpr;
    7779class UntypedValofExpr;
    7880
  • src/SynTree/Type.cc

    re45215c rd60ccbf  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue May 19 16:52:27 2015
    13 // Update Count     : 2
     12// Last Modified On : Thu Jul  9 16:45:13 2015
     13// Update Count     : 3
    1414//
    1515
     
    7575                os << "_Atomic ";
    7676        } // if
     77        if ( tq.isAttribute ) {
     78                os << "__attribute(( )) ";
     79        } // if
    7780}
    7881
  • src/SynTree/Type.h

    re45215c rd60ccbf  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Jun 26 16:47:54 2015
    13 // Update Count     : 13
     12// Last Modified On : Thu Jul  9 16:46:15 2015
     13// Update Count     : 14
    1414//
    1515
     
    2525        struct Qualifiers { 
    2626                Qualifiers(): isConst( false ), isVolatile( false ), isRestrict( false ), isLvalue( false ), isAtomic( false ), isAttribute( false ) {}
    27                 Qualifiers( bool isConst, bool isVolatile, bool isRestrict, bool isLvalue, bool isAtomic, bool isAttribute): isConst( isConst ), isVolatile( isVolatile ), isRestrict( isRestrict ), isLvalue( isLvalue ), isAtomic( isAtomic ), isAttribute( isAttribute ) {}
     27                Qualifiers( bool isConst, bool isVolatile, bool isRestrict, bool isLvalue, bool isAtomic, bool isAttribute ): isConst( isConst ), isVolatile( isVolatile ), isRestrict( isRestrict ), isLvalue( isLvalue ), isAtomic( isAtomic ), isAttribute( isAttribute ) {}
    2828       
    2929                Qualifiers &operator+=( const Qualifiers &other );
  • src/SynTree/TypeSubstitution.h

    re45215c rd60ccbf  
    157157}
    158158
    159 // helper function
     159/// Instantiate each member of the context given the actual parameters specified, and store the
     160/// instantiations for use by the indexer
    160161template< typename FormalIterator, typename ActualIterator, typename MemberIterator, typename OutputIterator >
    161162void applySubstitution( FormalIterator formalBegin, FormalIterator formalEnd, ActualIterator actual, MemberIterator memberBegin, MemberIterator memberEnd, OutputIterator out ) {
    162         // Instantiate each member of the context given the actual parameters specified, and store the
    163         // instantiations for use by the indexer
    164 
    165163        TypeSubstitution sub = TypeSubstitution( formalBegin, formalEnd, actual );
    166164        for ( std::list< Declaration* >::iterator i = memberBegin; i != memberEnd; ++i ) {
  • src/SynTree/Visitor.cc

    re45215c rd60ccbf  
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Tue Jul 14 12:31:03 2015
    13 // Update Count     : 3
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Fri Jul 24 16:11:05 2015
     13// Update Count     : 15
    1414//
    1515
     
    8282}
    8383
     84void Visitor::visit( AsmStmt *asmStmt ) {
     85        maybeAccept( asmStmt->get_instruction(), *this );
     86        acceptAll( asmStmt->get_output(), *this );
     87        acceptAll( asmStmt->get_input(), *this );
     88        acceptAll( asmStmt->get_clobber(), *this );
     89}
     90
    8491void Visitor::visit( IfStmt *ifStmt ) {
    8592        maybeAccept( ifStmt->get_condition(), *this );
     
    246253}
    247254
     255void Visitor::visit( AsmExpr *asmExpr ) {
     256        maybeAccept( asmExpr->get_inout(), *this );
     257        maybeAccept( asmExpr->get_constraint(), *this );
     258        maybeAccept( asmExpr->get_operand(), *this );
     259}
     260
    248261void Visitor::visit( UntypedValofExpr *valofExpr ) {
    249262        acceptAll( valofExpr->get_results(), *this );
     
    282295
    283296void Visitor::visit( StructInstType *aggregateUseType ) {
    284         visit( static_cast< ReferenceToType* >( aggregateUseType ) );
     297        visit( static_cast< ReferenceToType * >( aggregateUseType ) );
    285298}
    286299
    287300void Visitor::visit( UnionInstType *aggregateUseType ) {
    288         visit( static_cast< ReferenceToType* >( aggregateUseType ) );
     301        visit( static_cast< ReferenceToType * >( aggregateUseType ) );
    289302}
    290303
    291304void Visitor::visit( EnumInstType *aggregateUseType ) {
    292         visit( static_cast< ReferenceToType* >( aggregateUseType ) );
     305        visit( static_cast< ReferenceToType * >( aggregateUseType ) );
    293306}
    294307
    295308void Visitor::visit( ContextInstType *aggregateUseType ) {
    296         visit( static_cast< ReferenceToType* >( aggregateUseType ) );
     309        visit( static_cast< ReferenceToType * >( aggregateUseType ) );
    297310        acceptAll( aggregateUseType->get_members(), *this );
    298311}
    299312
    300313void Visitor::visit( TypeInstType *aggregateUseType ) {
    301         visit( static_cast< ReferenceToType* >( aggregateUseType ) );
     314        visit( static_cast< ReferenceToType * >( aggregateUseType ) );
    302315}
    303316
  • src/SynTree/Visitor.h

    re45215c rd60ccbf  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon May 18 11:15:55 2015
    13 // Update Count     : 2
     12// Last Modified On : Thu Jul 23 23:22:23 2015
     13// Update Count     : 4
    1414//
    1515
     
    3737        virtual void visit( CompoundStmt *compoundStmt );
    3838        virtual void visit( ExprStmt *exprStmt );
     39        virtual void visit( AsmStmt *asmStmt );
    3940        virtual void visit( IfStmt *ifStmt );
    4041        virtual void visit( WhileStmt *whileStmt );
     
    7071        virtual void visit( SolvedTupleExpr *tupleExpr );
    7172        virtual void visit( TypeExpr *typeExpr );
     73        virtual void visit( AsmExpr *asmExpr );
    7274        virtual void visit( UntypedValofExpr *valofExpr );
    7375
  • src/driver/cc1.cc

    re45215c rd60ccbf  
    1010// Created On       : Fri Aug 26 14:23:51 2005
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat May 30 08:58:29 2015
    13 // Update Count     : 51
     12// Last Modified On : Thu Jul 16 17:09:14 2015
     13// Update Count     : 54
    1414//
    1515
     
    319319                uargs[0] = ( *new string( bprefix + "/cfa-cpp" ) ).c_str();
    320320
    321                 uargs[nuargs] = "-p";
    322                 nuargs += 1;
    323 
    324321                uargs[nuargs] = tmpname;
    325322                nuargs += 1;
  • src/driver/cfa.cc

    re45215c rd60ccbf  
    1010// Created On       : Tue Aug 20 13:44:49 2002
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Jun 23 17:47:03 2015
    13 // Update Count     : 119
     12// Last Modified On : Thu Jul 16 17:09:23 2015
     13// Update Count     : 124
    1414//
    1515
     
    5252        string Version( VERSION );                                                      // current version number from CONFIG
    5353        string Major( "0" ), Minor( "0" ), Patch( "0" );        // default version numbers
     54
    5455        int posn1 = Version.find( "." );                                        // find the divider between major and minor version numbers
    5556        if ( posn1 == -1 ) {                                                            // not there ?
     
    256257        // add the correct set of flags based on the type of compile this is
    257258
    258         args[nargs] = ( *new string( string("-D__CFA_MAJOR__=") + Major ) ).c_str();
     259        args[nargs] = ( *new string( string("-D__CFA__=") + Major ) ).c_str();
    259260        nargs += 1;
    260261        args[nargs] = ( *new string( string("-D__CFA_MINOR__=") + Minor ) ).c_str();
     262        nargs += 1;
     263        args[nargs] = ( *new string( string("-D__CFA_PATCHLEVEL__=") + Patch ) ).c_str();
    261264        nargs += 1;
    262265
  • src/main.cc

    re45215c rd60ccbf  
    1010// Created On       : Fri May 15 23:12:02 2015
    1111// Last Modified By : Rob Schluntz
    12 // Last Modified On : Mon Jul 06 15:01:26 2015
    13 // Update Count     : 79
     12// Last Modified On : Thu Jul 30 16:08:18 2015
     13// Update Count     : 167
    1414//
    1515
     
    5454        if ( errorp ) std::cerr << x << std::endl;
    5555
    56 void parse( FILE * input, LinkageSpec::Type t, bool shouldExit = false );
     56static void parse( FILE * input, LinkageSpec::Type t, bool shouldExit = false );
     57static void dump( std::list< Declaration * > & translationUnit );
    5758
    5859bool
     
    6465        libcfap = false,
    6566        nopreludep = false,
    66         protop = false,
     67        noprotop = false,
    6768        parsep = false,
    6869        resolvep = false,                                                                       // used in AlternativeFinder
     
    8182        { "grammar", no_argument, 0, Grammar },
    8283        { "libcfa", no_argument, 0, LibCFA },
    83         { "nopreamble", no_argument, 0, Nopreamble },
     84        { "no-preamble", no_argument, 0, Nopreamble },
    8485        { "parse", no_argument, 0, Parse },
    85         { "prototypes", no_argument, 0, Prototypes },
     86        { "no-prototypes", no_argument, 0, Prototypes },
    8687        { "resolver", no_argument, 0, Resolver },
    8788        { "symbol", no_argument, 0, Symbol },
     
    131132                  case Prototypes:
    132133                  case 'p':                                                                             // generate prototypes for preamble functions
    133                         protop = true;
     134                        noprotop = true;
    134135                        break;
    135136                  case Parse:
     
    221222                Parser::get_parser().freeTree();
    222223                if ( astp ) {
    223                         printAll( translationUnit, std::cout );
     224                        dump( translationUnit );
    224225                        return 0;
    225226                } // if
     
    227228                // add the assignment statement after the
    228229                // initialization of a type parameter
    229                 OPTPRINT( "tweak" )
    230                 InitTweak::tweak( translationUnit );
    231230                OPTPRINT( "validate" )
    232231                SymTab::validate( translationUnit, symtabp );
     
    242241
    243242                if ( validp ) {
    244                         printAll( translationUnit, std::cout );
     243                        dump( translationUnit );
    245244                        return 0;
    246245                } // if
     
    250249                OPTPRINT( "fixNames" )
    251250                CodeGen::fixNames( translationUnit );
     251                OPTPRINT( "tweak" )
     252                InitTweak::tweak( translationUnit );
    252253
    253254                if ( libcfap ) {
    254                         protop = true;
    255255                        // generate the bodies of cfa library functions
    256256                        LibCfa::makeLibCfa( translationUnit );
     
    258258
    259259                if ( bresolvep ) {
    260                         printAll( translationUnit, std::cout );
     260                        dump( translationUnit );
    261261                        return 0;
    262262                } // if
     
    265265                ResolvExpr::resolve( translationUnit );
    266266                if ( exprp ) {
    267                         printAll( translationUnit, std::cout );
     267                        dump( translationUnit );
    268268                }
    269269
     
    279279                // print tree right before code generation
    280280                if ( codegenp ) {
    281                         printAll( translationUnit, std::cout );
    282                         return 0;
    283                 } // if
    284 
    285                 CodeGen::generate( translationUnit, *output, true ); //protop );
     281                        dump( translationUnit );
     282                        return 0;
     283                } // if
     284
     285                CodeGen::generate( translationUnit, *output, ! noprotop );
    286286
    287287                if ( output != &std::cout ) {
     
    290290        } catch ( SemanticError &e ) {
    291291                if ( errorp ) {
    292                         printAll( translationUnit, std::cerr );
     292                        dump( translationUnit );
    293293                }
    294294                e.print( std::cerr );
     
    315315} // main
    316316
    317 void parse( FILE * input, LinkageSpec::Type linkage, bool shouldExit ) {
     317static void parse( FILE * input, LinkageSpec::Type linkage, bool shouldExit ) {
    318318        Parser::get_parser().set_linkage( linkage );
    319319        Parser::get_parser().parse( input );
     
    325325}
    326326
     327static bool notPrelude( Declaration * decl ) {
     328        return ! LinkageSpec::isBuiltin( decl->get_linkage() );
     329}
     330
     331static void dump( std::list< Declaration * > & translationUnit ) {
     332        std::list< Declaration * > decls;
     333        if ( noprotop ) {
     334                filter( translationUnit.begin(), translationUnit.end(),
     335                                std::back_inserter( decls ), notPrelude );
     336        } else {
     337                decls = translationUnit;
     338        }
     339
     340        printAll( decls, std::cout );
     341        deleteAll( translationUnit );
     342}
     343
     344
    327345// Local Variables: //
    328346// tab-width: 4 //
Note: See TracChangeset for help on using the changeset viewer.