Changeset a7c90d4


Ignore:
Timestamp:
Mar 7, 2017, 8:33:43 AM (8 years ago)
Author:
Peter A. Buhr <pabuhr@…>
Branches:
ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, deferred_resn, demangler, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, with_gc
Children:
64cb860, c3396e0
Parents:
7fe2498
Message:

change StorageClass? to bitset, support _Thread_local as separate storage-class

Location:
src
Files:
34 edited

Legend:

Unmodified
Added
Removed
  • src/CodeGen/CodeGenerator.cc

    r7fe2498 ra7c90d4  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Mar  3 21:18:47 2017
    13 // Update Count     : 465
     12// Last Modified On : Sun Mar  5 17:13:33 2017
     13// Update Count     : 475
    1414//
    1515
     
    895895
    896896        void CodeGenerator::handleStorageClass( DeclarationWithType * decl ) {
    897                 switch ( decl->get_storageClass() ) {
    898                         //output << DeclarationNode::storageClassNames[decl->get_storageClass()] << ' ';
    899                   case DeclarationNode::Extern:
    900                         output << "extern ";
    901                         break;
    902                   case DeclarationNode::Static:
    903                         output << "static ";
    904                         break;
    905                   case DeclarationNode::Auto:
    906                         // silently drop storage class
    907                         break;
    908                   case DeclarationNode::Register:
    909                         output << "register ";
    910                         break;
    911                   case DeclarationNode::Threadlocal:
    912                         output << "_Thread_local ";
    913                         break;
    914                   case DeclarationNode::NoStorageClass:
    915                         break;
    916                   default:
    917                         assert( false );
    918                 } // switch
     897                if ( decl->get_storageClasses().any() ) {
     898                        DeclarationNode::print_StorageClass( output, decl->get_storageClasses() );
     899                } // if
    919900        } // CodeGenerator::handleStorageClass
    920901
  • src/CodeGen/FixNames.cc

    r7fe2498 ra7c90d4  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Mar  3 21:52:17 2017
    13 // Update Count     : 6
     12// Last Modified On : Mon Mar  6 23:32:08 2017
     13// Update Count     : 15
    1414//
    1515
     
    3939        std::string mangle_main() {
    4040                FunctionType* main_type;
    41                 std::unique_ptr<FunctionDecl> mainDecl { new FunctionDecl(
    42                         "main",
    43                         DeclarationNode::NoStorageClass,
    44                         LinkageSpec::Cforall,
    45                         main_type = new FunctionType( Type::Qualifiers(), true ),
    46                         nullptr
    47                 ) };
     41                std::unique_ptr<FunctionDecl> mainDecl { new FunctionDecl( "main", DeclarationNode::StorageClasses(), LinkageSpec::Cforall,
     42                                                                                                                                   main_type = new FunctionType( Type::Qualifiers(), true ), nullptr )
     43                                };
    4844                main_type->get_returnVals().push_back(
    49                         new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, new BasicType( Type::Qualifiers(), BasicType::SignedInt ), nullptr )
     45                        new ObjectDecl( "", DeclarationNode::StorageClasses(), LinkageSpec::Cforall, 0, new BasicType( Type::Qualifiers(), BasicType::SignedInt ), nullptr )
    5046                );
    5147
     
    5652        std::string mangle_main_args() {
    5753                FunctionType* main_type;
    58                 std::unique_ptr<FunctionDecl> mainDecl { new FunctionDecl(
    59                         "main",
    60                         DeclarationNode::NoStorageClass,
    61                         LinkageSpec::Cforall,
    62                         main_type = new FunctionType( Type::Qualifiers(), false ),
    63                         nullptr
    64                 ) };
     54                std::unique_ptr<FunctionDecl> mainDecl { new FunctionDecl( "main", DeclarationNode::StorageClasses(), LinkageSpec::Cforall,
     55                                                                                                                                   main_type = new FunctionType( Type::Qualifiers(), false ), nullptr )
     56                                };
    6557                main_type->get_returnVals().push_back(
    66                         new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, new BasicType( Type::Qualifiers(), BasicType::SignedInt ), nullptr )
     58                        new ObjectDecl( "", DeclarationNode::StorageClasses(), LinkageSpec::Cforall, 0, new BasicType( Type::Qualifiers(), BasicType::SignedInt ), nullptr )
    6759                );
    6860
    6961                mainDecl->get_functionType()->get_parameters().push_back(
    70                         new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, new BasicType( Type::Qualifiers(), BasicType::SignedInt ), nullptr )
     62                        new ObjectDecl( "", DeclarationNode::StorageClasses(), LinkageSpec::Cforall, 0, new BasicType( Type::Qualifiers(), BasicType::SignedInt ), nullptr )
    7163                );
    7264
    7365                mainDecl->get_functionType()->get_parameters().push_back(
    74                         new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0,
     66                        new ObjectDecl( "", DeclarationNode::StorageClasses(), LinkageSpec::Cforall, 0,
    7567                        new PointerType( Type::Qualifiers(), new PointerType( Type::Qualifiers(), new BasicType( Type::Qualifiers(), BasicType::Char ) ) ),
    7668                        nullptr )
  • src/GenPoly/Box.cc

    r7fe2498 ra7c90d4  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Mar  3 21:57:15 2017
    13 // Update Count     : 310
     12// Last Modified On : Mon Mar  6 23:45:59 2017
     13// Update Count     : 330
    1414//
    1515
     
    289289                        TypeInstType paramType( Type::Qualifiers(), (*param)->get_name(), *param );
    290290                        std::string paramName = mangleType( &paramType );
    291                         layoutFnType->get_parameters().push_back( new ObjectDecl( sizeofName( paramName ), DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, sizeAlignType.clone(), 0 ) );
    292                         layoutFnType->get_parameters().push_back( new ObjectDecl( alignofName( paramName ), DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, sizeAlignType.clone(), 0 ) );
     291                        layoutFnType->get_parameters().push_back( new ObjectDecl( sizeofName( paramName ), DeclarationNode::StorageClasses(), LinkageSpec::Cforall, 0, sizeAlignType.clone(), 0 ) );
     292                        layoutFnType->get_parameters().push_back( new ObjectDecl( alignofName( paramName ), DeclarationNode::StorageClasses(), LinkageSpec::Cforall, 0, sizeAlignType.clone(), 0 ) );
    293293                }
    294294        }
     
    298298                // Routines at global scope marked "static" to prevent multiple definitions is separate translation units
    299299                // because each unit generates copies of the default routines for each aggregate.
    300                 FunctionDecl *layoutDecl = new FunctionDecl(
    301                         layoutofName( typeDecl ), functionNesting > 0 ? DeclarationNode::NoStorageClass : DeclarationNode::Static, LinkageSpec::AutoGen, layoutFnType, new CompoundStmt( noLabels ),
    302                         std::list< Attribute * >(), DeclarationNode::FuncSpec( DeclarationNode::InlineSpec ) );
     300                FunctionDecl *layoutDecl = new FunctionDecl( layoutofName( typeDecl ),
     301                                                                                                         functionNesting > 0 ? DeclarationNode::StorageClasses() : DeclarationNode::StorageClasses( DeclarationNode::StaticClass ),
     302                                                                                                         LinkageSpec::AutoGen, layoutFnType, new CompoundStmt( noLabels ),
     303                                                                                                         std::list< Attribute * >(), DeclarationNode::FuncSpecifiers( DeclarationNode::InlineSpec ) );
    303304                layoutDecl->fixUniqueId();
    304305                return layoutDecl;
     
    367368                PointerType *sizeAlignOutType = new PointerType( Type::Qualifiers(), sizeAlignType );
    368369
    369                 ObjectDecl *sizeParam = new ObjectDecl( sizeofName( structDecl->get_name() ), DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, sizeAlignOutType, 0 );
     370                ObjectDecl *sizeParam = new ObjectDecl( sizeofName( structDecl->get_name() ), DeclarationNode::StorageClasses(), LinkageSpec::Cforall, 0, sizeAlignOutType, 0 );
    370371                layoutFnType->get_parameters().push_back( sizeParam );
    371                 ObjectDecl *alignParam = new ObjectDecl( alignofName( structDecl->get_name() ), DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, sizeAlignOutType->clone(), 0 );
     372                ObjectDecl *alignParam = new ObjectDecl( alignofName( structDecl->get_name() ), DeclarationNode::StorageClasses(), LinkageSpec::Cforall, 0, sizeAlignOutType->clone(), 0 );
    372373                layoutFnType->get_parameters().push_back( alignParam );
    373                 ObjectDecl *offsetParam = new ObjectDecl( offsetofName( structDecl->get_name() ), DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, sizeAlignOutType->clone(), 0 );
     374                ObjectDecl *offsetParam = new ObjectDecl( offsetofName( structDecl->get_name() ), DeclarationNode::StorageClasses(), LinkageSpec::Cforall, 0, sizeAlignOutType->clone(), 0 );
    374375                layoutFnType->get_parameters().push_back( offsetParam );
    375376                addOtypeParams( layoutFnType, otypeParams );
     
    428429                PointerType *sizeAlignOutType = new PointerType( Type::Qualifiers(), sizeAlignType );
    429430
    430                 ObjectDecl *sizeParam = new ObjectDecl( sizeofName( unionDecl->get_name() ), DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, sizeAlignOutType, 0 );
     431                ObjectDecl *sizeParam = new ObjectDecl( sizeofName( unionDecl->get_name() ), DeclarationNode::StorageClasses(), LinkageSpec::Cforall, 0, sizeAlignOutType, 0 );
    431432                layoutFnType->get_parameters().push_back( sizeParam );
    432                 ObjectDecl *alignParam = new ObjectDecl( alignofName( unionDecl->get_name() ), DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, sizeAlignOutType->clone(), 0 );
     433                ObjectDecl *alignParam = new ObjectDecl( alignofName( unionDecl->get_name() ), DeclarationNode::StorageClasses(), LinkageSpec::Cforall, 0, sizeAlignOutType->clone(), 0 );
    433434                layoutFnType->get_parameters().push_back( alignParam );
    434435                addOtypeParams( layoutFnType, otypeParams );
     
    536537                                        if ( adapters.find( mangleName ) == adapters.end() ) {
    537538                                                std::string adapterName = makeAdapterName( mangleName );
    538                                                 adapters.insert( std::pair< std::string, DeclarationWithType *>( mangleName, new ObjectDecl( adapterName, DeclarationNode::NoStorageClass, LinkageSpec::C, nullptr, new PointerType( Type::Qualifiers(), makeAdapterType( *funType, scopeTyVars ) ), nullptr ) ) );
     539                                                adapters.insert( std::pair< std::string, DeclarationWithType *>( mangleName, new ObjectDecl( adapterName, DeclarationNode::StorageClasses(), LinkageSpec::C, nullptr, new PointerType( Type::Qualifiers(), makeAdapterType( *funType, scopeTyVars ) ), nullptr ) ) );
    539540                                        } // if
    540541                                } // for
     
    655656
    656657                ObjectDecl *Pass1::makeTemporary( Type *type ) {
    657                         ObjectDecl *newObj = new ObjectDecl( tempNamer.newName(), DeclarationNode::NoStorageClass, LinkageSpec::C, 0, type, 0 );
     658                        ObjectDecl *newObj = new ObjectDecl( tempNamer.newName(), DeclarationNode::StorageClasses(), LinkageSpec::C, 0, type, 0 );
    658659                        stmtsToAdd.push_back( new DeclStmt( noLabels, newObj ) );
    659660                        return newObj;
     
    764765                                        Type * newType = param->clone();
    765766                                        if ( env ) env->apply( newType );
    766                                         ObjectDecl *newObj = new ObjectDecl( tempNamer.newName(), DeclarationNode::NoStorageClass, LinkageSpec::C, 0, newType, 0 );
     767                                        ObjectDecl *newObj = new ObjectDecl( tempNamer.newName(), DeclarationNode::StorageClasses(), LinkageSpec::C, 0, newType, 0 );
    767768                                        newObj->get_type()->get_qualifiers() = Type::Qualifiers(); // TODO: is this right???
    768769                                        stmtsToAdd.push_back( new DeclStmt( noLabels, newObj ) );
     
    830831                                makeRetParm( adapter );
    831832                        } // if
    832                         adapter->get_parameters().push_front( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::C, 0, new PointerType( Type::Qualifiers(), new FunctionType( Type::Qualifiers(), true ) ), 0 ) );
     833                        adapter->get_parameters().push_front( new ObjectDecl( "", DeclarationNode::StorageClasses(), LinkageSpec::C, 0, new PointerType( Type::Qualifiers(), new FunctionType( Type::Qualifiers(), true ) ), 0 ) );
    833834                        return adapter;
    834835                }
     
    911912                        adapterBody->get_kids().push_back( bodyStmt );
    912913                        std::string adapterName = makeAdapterName( mangleName );
    913                         return new FunctionDecl( adapterName, DeclarationNode::NoStorageClass, LinkageSpec::C, adapterType, adapterBody );
     914                        return new FunctionDecl( adapterName, DeclarationNode::StorageClasses(), LinkageSpec::C, adapterType, adapterBody );
    914915                }
    915916
     
    12721273                                if ( adaptersDone.find( mangleName ) == adaptersDone.end() ) {
    12731274                                        std::string adapterName = makeAdapterName( mangleName );
    1274                                         paramList.push_front( new ObjectDecl( adapterName, DeclarationNode::NoStorageClass, LinkageSpec::C, 0, new PointerType( Type::Qualifiers(), makeAdapterType( *funType, scopeTyVars ) ), 0 ) );
     1275                                        paramList.push_front( new ObjectDecl( adapterName, DeclarationNode::StorageClasses(), LinkageSpec::C, 0, new PointerType( Type::Qualifiers(), makeAdapterType( *funType, scopeTyVars ) ), 0 ) );
    12751276                                        adaptersDone.insert( adaptersDone.begin(), mangleName );
    12761277                                }
     
    13781379                        std::list< DeclarationWithType *>::iterator last = funcType->get_parameters().begin();
    13791380                        std::list< DeclarationWithType *> inferredParams;
    1380                         ObjectDecl newObj( "", DeclarationNode::NoStorageClass, LinkageSpec::C, 0, new BasicType( Type::Qualifiers(), BasicType::LongUnsignedInt ), 0 );
    1381                         ObjectDecl newPtr( "", DeclarationNode::NoStorageClass, LinkageSpec::C, 0,
     1381                        ObjectDecl newObj( "", DeclarationNode::StorageClasses(), LinkageSpec::C, 0, new BasicType( Type::Qualifiers(), BasicType::LongUnsignedInt ), 0 );
     1382                        ObjectDecl newPtr( "", DeclarationNode::StorageClasses(), LinkageSpec::C, 0,
    13821383                                           new PointerType( Type::Qualifiers(), new BasicType( Type::Qualifiers(), BasicType::LongUnsignedInt ) ), 0 );
    13831384                        for ( Type::ForallList::const_iterator tyParm = funcType->get_forall().begin(); tyParm != funcType->get_forall().end(); ++tyParm ) {
     
    16331634
    16341635                ObjectDecl *PolyGenericCalculator::makeVar( const std::string &name, Type *type, Initializer *init ) {
    1635                         ObjectDecl *newObj = new ObjectDecl( name, DeclarationNode::NoStorageClass, LinkageSpec::C, 0, type, init );
     1636                        ObjectDecl *newObj = new ObjectDecl( name, DeclarationNode::StorageClasses(), LinkageSpec::C, 0, type, init );
    16361637                        stmtsToAdd.push_back( new DeclStmt( noLabels, newObj ) );
    16371638                        return newObj;
     
    18171818                                                        memberDecl = origMember->clone();
    18181819                                                } else {
    1819                                                         memberDecl = new ObjectDecl( (*member)->get_name(), DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, offsetType->clone(), 0 );
     1820                                                        memberDecl = new ObjectDecl( (*member)->get_name(), DeclarationNode::StorageClasses(), LinkageSpec::Cforall, 0, offsetType->clone(), 0 );
    18201821                                                }
    18211822                                                inits.push_back( new SingleInit( new OffsetofExpr( ty->clone(), memberDecl ) ) );
  • src/GenPoly/Specialize.cc

    r7fe2498 ra7c90d4  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Mar  3 21:54:45 2017
    13 // Update Count     : 28
     12// Last Modified On : Mon Mar  6 23:13:00 2017
     13// Update Count     : 30
    1414//
    1515
     
    155155                } // if
    156156                // create new thunk with same signature as formal type (C linkage, empty body)
    157                 FunctionDecl *thunkFunc = new FunctionDecl( thunkNamer.newName(), DeclarationNode::NoStorageClass, LinkageSpec::C, newType, new CompoundStmt( noLabels ) );
     157                FunctionDecl *thunkFunc = new FunctionDecl( thunkNamer.newName(), DeclarationNode::StorageClasses(), LinkageSpec::C, newType, new CompoundStmt( noLabels ) );
    158158                thunkFunc->fixUniqueId();
    159159
  • src/InitTweak/FixGlobalInit.cc

    r7fe2498 ra7c90d4  
    1010// Created On       : Mon May 04 15:14:56 2016
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Mar  3 21:55:33 2017
    13 // Update Count     : 9
     12// Last Modified On : Mon Mar  6 23:14:19 2017
     13// Update Count     : 14
    1414//
    1515
     
    8787                        dtorParameters.push_back( new ConstantExpr( Constant::from_int( 102 ) ) );
    8888                }
    89                 initFunction = new FunctionDecl( "_init_" + fixedName, DeclarationNode::Static, LinkageSpec::C, new FunctionType( Type::Qualifiers(), false ), new CompoundStmt( noLabels ) );
     89                initFunction = new FunctionDecl( "_init_" + fixedName, DeclarationNode::StorageClasses( DeclarationNode::StaticClass ), LinkageSpec::C, new FunctionType( Type::Qualifiers(), false ), new CompoundStmt( noLabels ) );
    9090                initFunction->get_attributes().push_back( new Attribute( "constructor", ctorParameters ) );
    91                 destroyFunction = new FunctionDecl( "_destroy_" + fixedName, DeclarationNode::Static, LinkageSpec::C, new FunctionType( Type::Qualifiers(), false ), new CompoundStmt( noLabels ) );
     91                destroyFunction = new FunctionDecl( "_destroy_" + fixedName, DeclarationNode::StorageClasses( DeclarationNode::StaticClass ), LinkageSpec::C, new FunctionType( Type::Qualifiers(), false ), new CompoundStmt( noLabels ) );
    9292                destroyFunction->get_attributes().push_back( new Attribute( "destructor", dtorParameters ) );
    9393        }
  • src/InitTweak/FixInit.cc

    r7fe2498 ra7c90d4  
    1010// Created On       : Wed Jan 13 16:29:30 2016
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Mar  3 21:56:11 2017
    13 // Update Count     : 39
     12// Last Modified On : Tue Mar  7 07:51:40 2017
     13// Update Count     : 59
    1414//
    1515
     
    437437                        result = result->clone();
    438438                        env->apply( result );
    439                         ObjectDecl * tmp = new ObjectDecl( tempNamer.newName(), DeclarationNode::NoStorageClass, LinkageSpec::C, 0, result, 0 );
     439                        ObjectDecl * tmp = new ObjectDecl( tempNamer.newName(), DeclarationNode::StorageClasses(), LinkageSpec::C, 0, result, 0 );
    440440                        tmp->get_type()->set_isConst( false );
    441441
     
    483483                                result = result->clone();
    484484                                env->apply( result );
    485                                 ObjectDecl * ret = new ObjectDecl( retNamer.newName(), DeclarationNode::NoStorageClass, LinkageSpec::C, 0, result, 0 );
     485                                ObjectDecl * ret = new ObjectDecl( retNamer.newName(), DeclarationNode::StorageClasses(), LinkageSpec::C, 0, result, 0 );
    486486                                ret->get_type()->set_isConst( false );
    487487                                impCpCtorExpr->get_returnDecls().push_back( ret );
     
    506506                                result = result->clone();
    507507                                env->apply( result );
    508                                 ObjectDecl * ret = new ObjectDecl( retNamer.newName(), DeclarationNode::NoStorageClass, LinkageSpec::C, 0, result, 0 );
     508                                ObjectDecl * ret = new ObjectDecl( retNamer.newName(), DeclarationNode::StorageClasses(), LinkageSpec::C, 0, result, 0 );
    509509                                ret->get_type()->set_isConst( false );
    510510                                stmtExpr->get_returnDecls().push_front( ret );
     
    538538                        } else {
    539539                                // expr isn't a call expr, so create a new temporary variable to use to hold the value of the unique expression
    540                                 unqExpr->set_object( new ObjectDecl( toString("_unq_expr_", unqExpr->get_id()), DeclarationNode::NoStorageClass, LinkageSpec::C, nullptr, unqExpr->get_result()->clone(), nullptr ) );
     540                                unqExpr->set_object( new ObjectDecl( toString("_unq_expr_", unqExpr->get_id()), DeclarationNode::StorageClasses(), LinkageSpec::C, nullptr, unqExpr->get_result()->clone(), nullptr ) );
    541541                                unqExpr->set_var( new VariableExpr( unqExpr->get_object() ) );
    542542                        }
     
    678678                                assert( ! ctorInit->get_ctor() || ! ctorInit->get_init() );
    679679                                if ( Statement * ctor = ctorInit->get_ctor() ) {
    680                                         if ( objDecl->get_storageClass() == DeclarationNode::Static ) {
     680                                        if ( objDecl->get_storageClasses()[ DeclarationNode::Static ] ) {
    681681                                                // originally wanted to take advantage of gcc nested functions, but
    682682                                                // we get memory errors with this approach. To remedy this, the static
     
    704704                                                BasicType * boolType = new BasicType( Type::Qualifiers(), BasicType::Bool );
    705705                                                SingleInit * boolInitExpr = new SingleInit( new ConstantExpr( Constant( boolType->clone(), "1" ) ), noDesignators );
    706                                                 ObjectDecl * isUninitializedVar = new ObjectDecl( objDecl->get_mangleName() + "_uninitialized", DeclarationNode::Static, LinkageSpec::Cforall, 0, boolType, boolInitExpr );
     706                                                ObjectDecl * isUninitializedVar = new ObjectDecl( objDecl->get_mangleName() + "_uninitialized", DeclarationNode::StorageClasses( DeclarationNode::StaticClass ), LinkageSpec::Cforall, 0, boolType, boolInitExpr );
    707707                                                isUninitializedVar->fixUniqueId();
    708708
     
    731731
    732732                                                        // void __objName_dtor_atexitN(...) {...}
    733                                                         FunctionDecl * dtorCaller = new FunctionDecl( objDecl->get_mangleName() + dtorCallerNamer.newName(), DeclarationNode::Static, LinkageSpec::C, new FunctionType( Type::Qualifiers(), false ), new CompoundStmt( noLabels ) );
     733                                                        FunctionDecl * dtorCaller = new FunctionDecl( objDecl->get_mangleName() + dtorCallerNamer.newName(), DeclarationNode::StorageClasses( DeclarationNode::StaticClass ), LinkageSpec::C, new FunctionType( Type::Qualifiers(), false ), new CompoundStmt( noLabels ) );
    734734                                                        dtorCaller->fixUniqueId();
    735735                                                        dtorCaller->get_statements()->push_back( dtorStmt );
     
    764764                                                        // create a new object which is never used
    765765                                                        static UniqueName dummyNamer( "_dummy" );
    766                                                         ObjectDecl * dummy = new ObjectDecl( dummyNamer.newName(), DeclarationNode::Static, LinkageSpec::Cforall, 0, new PointerType( Type::Qualifiers(), new VoidType( Type::Qualifiers() ) ), 0, std::list< Attribute * >{ new Attribute("unused") } );
     766                                                        ObjectDecl * dummy = new ObjectDecl( dummyNamer.newName(), DeclarationNode::StorageClasses( DeclarationNode::StaticClass ), LinkageSpec::Cforall, 0, new PointerType( Type::Qualifiers(), new VoidType( Type::Qualifiers() ) ), 0, std::list< Attribute * >{ new Attribute("unused") } );
    767767                                                        return dummy;
    768768                                                }
     
    821821                void InsertDtors::visit( ObjectDecl * objDecl ) {
    822822                        // remember non-static destructed objects so that their destructors can be inserted later
    823                         if ( objDecl->get_storageClass() != DeclarationNode::Static ) {
     823                        if ( ! objDecl->get_storageClasses()[ DeclarationNode::Static ] ) {
    824824                                if ( ConstructorInit * ctorInit = dynamic_cast< ConstructorInit * >( objDecl->get_init() ) ) {
    825825                                        // a decision should have been made by the resolver, so ctor and init are not both non-NULL
     
    11181118
    11191119                        // xxx - ideally we would reuse the temporary generated from the copy constructor passes from within firstArg if it exists and not generate a temporary if it's unnecessary.
    1120                         ObjectDecl * tmp = new ObjectDecl( tempNamer.newName(), DeclarationNode::NoStorageClass, LinkageSpec::C, nullptr, ctorExpr->get_result()->clone(), nullptr );
     1120                        ObjectDecl * tmp = new ObjectDecl( tempNamer.newName(), DeclarationNode::StorageClasses(), LinkageSpec::C, nullptr, ctorExpr->get_result()->clone(), nullptr );
    11211121                        addDeclaration( tmp );
    11221122
  • src/InitTweak/GenInit.cc

    r7fe2498 ra7c90d4  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Feb 16 14:57:53 2017
    13 // Update Count     : 167
     12// Last Modified On : Tue Mar  7 07:51:38 2017
     13// Update Count     : 179
    1414//
    1515
     
    120120                void hoist( Type * type );
    121121
    122                 DeclarationNode::StorageClass storageclass = DeclarationNode::NoStorageClass;
     122                DeclarationNode::StorageClasses storageClasses;
    123123                bool inFunction = false;
    124124        };
     
    174174
    175175        DeclarationWithType * HoistArrayDimension::mutate( ObjectDecl * objectDecl ) {
    176                 storageclass = objectDecl->get_storageClass();
     176                storageClasses = objectDecl->get_storageClasses();
    177177                DeclarationWithType * temp = Parent::mutate( objectDecl );
    178178                hoist( objectDecl->get_type() );
    179                 storageclass = DeclarationNode::NoStorageClass;
    180179                return temp;
    181180        }
     
    185184                static UniqueName dimensionName( "_array_dim" );
    186185
    187                 // C doesn't allow variable sized arrays at global scope or for static variables,
    188                 // so don't hoist dimension.
     186                // C doesn't allow variable sized arrays at global scope or for static variables, so don't hoist dimension.
    189187                if ( ! inFunction ) return;
    190                 if ( storageclass == DeclarationNode::Static ) return;
     188                if ( storageClasses[ DeclarationNode::StaticClass] ) return;
    191189
    192190                if ( ArrayType * arrayType = dynamic_cast< ArrayType * >( type ) ) {
    193191                        if ( ! arrayType->get_dimension() ) return; // xxx - recursive call to hoist?
    194192
    195                         // don't need to hoist dimension if it's a constexpr - only need to if there's potential
    196                         // for side effects.
     193                        // don't need to hoist dimension if it's a constexpr - only need to if there's potential for side effects.
    197194                        if ( isConstExpr( arrayType->get_dimension() ) ) return;
    198195
    199                         ObjectDecl * arrayDimension = new ObjectDecl( dimensionName.newName(), storageclass, LinkageSpec::C, 0, SymTab::SizeType->clone(), new SingleInit( arrayType->get_dimension() ) );
     196                        ObjectDecl * arrayDimension = new ObjectDecl( dimensionName.newName(), storageClasses, LinkageSpec::C, 0, SymTab::SizeType->clone(), new SingleInit( arrayType->get_dimension() ) );
    200197                        arrayDimension->get_type()->set_isConst( true );
    201198
  • src/InitTweak/InitTweak.cc

    r7fe2498 ra7c90d4  
    260260                        (objDecl->get_init() == NULL ||
    261261                                ( objDecl->get_init() != NULL && objDecl->get_init()->get_maybeConstructed() ))
    262                         && objDecl->get_storageClass() != DeclarationNode::Extern;
     262                        && ! objDecl->get_storageClasses()[ DeclarationNode::Extern ];
    263263        }
    264264
  • src/Parser/DeclarationNode.cc

    r7fe2498 ra7c90d4  
    1010// Created On       : Sat May 16 12:34:05 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Mar  3 21:38:34 2017
    13 // Update Count     : 862
     12// Last Modified On : Tue Mar  7 08:02:09 2017
     13// Update Count     : 936
    1414//
    1515
     
    1919#include <algorithm>
    2020#include <cassert>
     21#include <strings.h>                                                                    // ffs
    2122
    2223#include "TypeData.h"
     
    3233
    3334// These must remain in the same order as the corresponding DeclarationNode enumerations.
    34 const char * DeclarationNode::storageClassNames[] = { "extern", "static", "auto", "register", "_Thread_local", "inline", "fortran", "_Noreturn", "NoStorageClassNames" };
     35const char * DeclarationNode::storageClassNames[] = { "extern", "static", "auto", "register", "_Thread_local", "NoStorageClassNames" };
    3536const char * DeclarationNode::funcSpecifierNames[] = { "inline", "fortran", "_Noreturn", "NoFunctionSpecifierNames" };
    36 const char * DeclarationNode::typeQualifierNames[] = { "const", "restrict", "volatile", "lvalue", "_Atomic", "NoTypeQualifierNames" };
     37const char * DeclarationNode::typeQualifierNames[] = { "const", "restrict", "volatile", "lvalue", "mutex", "_Atomic", "NoTypeQualifierNames" };
    3738const char * DeclarationNode::basicTypeNames[] = { "void", "_Bool", "char", "int", "float", "double", "long double", "NoBasicTypeNames" };
    3839const char * DeclarationNode::complexTypeNames[] = { "_Complex", "_Imaginary", "NoComplexTypeNames" };
     
    4950DeclarationNode::DeclarationNode() :
    5051                type( nullptr ),
    51                 storageClass( NoStorageClass ),
    5252                bitfieldWidth( nullptr ),
    5353                hasEllipsis( false ),
     
    8989
    9090        newnode->type = maybeClone( type );
    91         newnode->storageClass = storageClass;
     91        newnode->storageClasses = storageClasses;
    9292        newnode->bitfieldWidth = maybeClone( bitfieldWidth );
    93         newnode->funcSpec = funcSpec;
     93        newnode->funcSpecs = funcSpecs;
    9494        newnode->enumeratorValue.reset( maybeClone( enumeratorValue.get() ) );
    9595        newnode->hasEllipsis = hasEllipsis;
     
    116116}
    117117
    118 void DeclarationNode::print_FuncSpec( std::ostream & output, DeclarationNode::FuncSpec funcSpec ) {
     118void DeclarationNode::print_StorageClass( std::ostream & output, StorageClasses storageClasses ) {
     119        if ( storageClasses.any() ) {                                                           // function specifiers?
     120                for ( unsigned int i = 0; i < DeclarationNode::NoStorageClass; i += 1 ) {
     121                        if ( storageClasses[i] ) {
     122                                output << DeclarationNode::storageClassNames[i] << ' ';
     123                        } // if
     124                } // for
     125        } // if
     126} // print_StorageClass
     127
     128void DeclarationNode::print_FuncSpec( std::ostream & output, DeclarationNode::FuncSpecifiers funcSpec ) {
    119129        if ( funcSpec.any() ) {                                                         // function specifiers?
    120130                for ( unsigned int i = 0; i < DeclarationNode::NoFuncSpecifier; i += 1 ) {
     
    138148        } // if
    139149
    140         if ( storageClass != NoStorageClass ) os << DeclarationNode::storageClassNames[storageClass] << ' ';
    141         print_FuncSpec( os, funcSpec );
     150        print_StorageClass( os, storageClasses );
     151        print_FuncSpec( os, funcSpecs );
    142152
    143153        if ( type ) {
     
    194204DeclarationNode * DeclarationNode::newStorageClass( DeclarationNode::StorageClass sc ) {
    195205        DeclarationNode * newnode = new DeclarationNode;
    196         newnode->storageClass = sc;
     206        newnode->storageClasses[ sc ] = true;
    197207        return newnode;
    198208} // DeclarationNode::newStorageClass
     
    200210DeclarationNode * DeclarationNode::newFuncSpecifier( DeclarationNode::FuncSpecifier fs ) {
    201211        DeclarationNode * newnode = new DeclarationNode;
    202         newnode->funcSpec[ fs ] = true;
     212        newnode->funcSpecs[ fs ] = true;
    203213        return newnode;
    204214} // DeclarationNode::newFuncSpecifier
     
    443453
    444454void DeclarationNode::checkQualifiers( const TypeData * src, const TypeData * dst ) {
    445         const TypeData::TypeQualifiers &qsrc = src->typeQualifiers, &qdst = dst->typeQualifiers; // optimization
    446 
    447         if ( (qsrc & qdst).any() ) {                                             // common qualifier ?
     455        const TypeData::TypeQualifiers qsrc = src->typeQualifiers, qdst = dst->typeQualifiers; // optimization
     456
     457        if ( (qsrc & qdst).any() ) {                                            // common qualifier ?
    448458                for ( unsigned int i = 0; i < NoTypeQualifier; i += 1 ) { // find common qualifiers
    449459                        if ( qsrc[i] && qdst[i] ) {
     
    451461                        } // if
    452462                } // for
    453         } // if
     463        } // for
    454464} // DeclarationNode::checkQualifiers
    455465
    456 void DeclarationNode::checkStorageClasses( DeclarationNode * q ) {
    457         const FuncSpec &src = funcSpec, &dst = q->funcSpec; // optimization
    458         if ( (src & dst).any() ) {                                                      // common specifier ?
     466void DeclarationNode::checkSpecifiers( DeclarationNode * src ) {
     467        if ( (funcSpecs & src->funcSpecs).any() ) {                     // common specifier ?
    459468                for ( unsigned int i = 0; i < NoFuncSpecifier; i += 1 ) { // find common specifier
    460                         if ( src[i] && dst[i] ) {
     469                        if ( funcSpecs[i] && src->funcSpecs[i] ) {
    461470                                appendError( error, string( "duplicate " ) + DeclarationNode::funcSpecifierNames[i] );
    462471                        } // if
     
    464473        } // if
    465474
    466         if ( storageClass != NoStorageClass && q->storageClass != NoStorageClass ) {
    467                 if ( storageClass == q->storageClass ) {                // duplicate qualifier
    468                         appendError( error, string( "duplicate " ) + storageClassNames[ storageClass ] );
    469                 } else {                                                                                // only one storage class
    470                         appendError( error, string( "conflicting " ) + storageClassNames[ storageClass ] + " & " + storageClassNames[ q->storageClass ] );
    471                         q->storageClass = storageClass;                         // FIX ERROR, prevent assertions from triggering
    472                 } // if
    473         } // if
    474 
    475         appendError( error, q->error );
    476 } // DeclarationNode::checkStorageClasses
    477 
    478 DeclarationNode * DeclarationNode::copyStorageClasses( DeclarationNode * q ) {
    479         funcSpec = funcSpec | q->funcSpec;
    480 
    481         // do not overwrite an existing value with NoStorageClass
    482         if ( q->storageClass != NoStorageClass ) {
    483                 assert( storageClass == NoStorageClass || storageClass == q->storageClass );
    484                 storageClass = q->storageClass;
    485         } // if
     475        if ( storageClasses != 0 && src->storageClasses != 0 ) { // any reason to check ?
     476                if ( (storageClasses & src->storageClasses).any() ) { // duplicates ?
     477                        for ( unsigned int i = 0; i < NoStorageClass; i += 1 ) { // find duplicates
     478                                if ( storageClasses[i] && src->storageClasses[i] ) {
     479                                        appendError( error, string( "duplicate " ) + storageClassNames[i] );
     480                                } // if
     481                        } // for
     482                        // src is the new item being added and has a single bit
     483                } else if ( ! src->storageClasses[ Threadlocal ] ) { // conflict ?
     484                        appendError( error, string( "conflicting " ) + storageClassNames[ffs( storageClasses.to_ulong() ) - 1] +
     485                                                 " & " + storageClassNames[ffs( src->storageClasses.to_ulong() ) - 1] );
     486                        src->storageClasses.reset();                            // FIX to preserve invariant of one basic storage specifier
     487                } // if
     488        } // if
     489
     490        appendError( error, src->error );
     491} // DeclarationNode::checkSpecifiers
     492
     493DeclarationNode * DeclarationNode::copySpecifiers( DeclarationNode * q ) {
     494        funcSpecs = funcSpecs | q->funcSpecs;
     495        storageClasses = storageClasses | q->storageClasses;
    486496
    487497        for ( Attribute *attr: reverseIterate( q->attributes ) ) {
     
    489499        } // for
    490500        return this;
    491 } // DeclarationNode::copyStorageClasses
     501} // DeclarationNode::copySpecifiers
    492502
    493503static void addQualifiersToType( TypeData *&src, TypeData * dst ) {
     
    513523        if ( ! q ) { delete q; return this; }
    514524
    515         checkStorageClasses( q );
    516         copyStorageClasses( q );
     525        checkSpecifiers( q );
     526        copySpecifiers( q );
    517527
    518528        if ( ! q->type ) {
     
    543553        } // if
    544554
    545         checkQualifiers( q->type, type );
     555        checkQualifiers( type, q->type );
    546556        addQualifiersToType( q->type, type );
    547557
     
    624634DeclarationNode * DeclarationNode::addType( DeclarationNode * o ) {
    625635        if ( o ) {
    626                 checkStorageClasses( o );
    627                 copyStorageClasses( o );
     636                checkSpecifiers( o );
     637                copySpecifiers( o );
    628638                if ( o->type ) {
    629639                        if ( ! type ) {
     
    879889        DeclarationNode * newnode = new DeclarationNode;
    880890        newnode->type = maybeClone( type );
    881         assert( storageClass == NoStorageClass );
    882         newnode->copyStorageClasses( this );
     891        newnode->copySpecifiers( this );
    883892        assert( newName );
    884893        newnode->name = newName;
     
    889898        if ( ! o ) return nullptr;
    890899
    891         o->copyStorageClasses( this );
     900        o->copySpecifiers( this );
    892901        if ( type ) {
    893902                TypeData * srcType = type;
     
    981990                                } else if ( StructDecl * agg = dynamic_cast< StructDecl * >( decl ) ) {
    982991                                        StructInstType * inst = new StructInstType( Type::Qualifiers(), agg->get_name() );
    983                                         auto obj = new ObjectDecl( "", DeclarationNode::NoStorageClass, linkage, nullptr, inst, nullptr );
     992                                        auto obj = new ObjectDecl( "", DeclarationNode::StorageClasses(), linkage, nullptr, inst, nullptr );
    984993                                        obj->location = cur->location;
    985994                                        * out++ = obj;
     
    987996                                } else if ( UnionDecl * agg = dynamic_cast< UnionDecl * >( decl ) ) {
    988997                                        UnionInstType * inst = new UnionInstType( Type::Qualifiers(), agg->get_name() );
    989                                         auto obj = new ObjectDecl( "", DeclarationNode::NoStorageClass, linkage, nullptr, inst, nullptr );
     998                                        auto obj = new ObjectDecl( "", DeclarationNode::StorageClasses(), linkage, nullptr, inst, nullptr );
    990999                                        obj->location = cur->location;
    9911000                                        * out++ = obj;
     
    10341043                assertf( sizeof(kindMap)/sizeof(kindMap[0] == NoTypeClass-1), "DeclarationNode::build: kindMap is out of sync." );
    10351044                assertf( variable.tyClass < sizeof(kindMap)/sizeof(kindMap[0]), "Variable's tyClass is out of bounds." );
    1036                 TypeDecl * ret = new TypeDecl( *name, DeclarationNode::NoStorageClass, nullptr, kindMap[ variable.tyClass ] );
     1045                TypeDecl * ret = new TypeDecl( *name, DeclarationNode::StorageClasses(), nullptr, kindMap[ variable.tyClass ] );
    10371046                buildList( variable.assertions, ret->get_assertions() );
    10381047                return ret;
     
    10451054                //    inline _Noreturn int g( int i );  // allowed
    10461055                //    inline _Noreturn int i;                   // disallowed
    1047                 if ( type->kind != TypeData::Function && funcSpec.any() ) {
     1056                if ( type->kind != TypeData::Function && funcSpecs.any() ) {
    10481057                        throw SemanticError( "invalid function specifier for ", this );
    10491058                } // if
    1050                 return buildDecl( type, name ? *name : string( "" ), storageClass, maybeBuild< Expression >( bitfieldWidth ), funcSpec, linkage, asmName, maybeBuild< Initializer >(initializer), attributes )->set_extension( extension );
     1059                return buildDecl( type, name ? *name : string( "" ), storageClasses, maybeBuild< Expression >( bitfieldWidth ), funcSpecs, linkage, asmName, maybeBuild< Initializer >(initializer), attributes )->set_extension( extension );
    10511060        } // if
    10521061
     
    10551064        //    inlne _Noreturn struct S { ... };         // disallowed
    10561065        //    inlne _Noreturn enum   E { ... };         // disallowed
    1057         if ( funcSpec.any() ) {
     1066        if ( funcSpecs.any() ) {
    10581067                throw SemanticError( "invalid function specifier for ", this );
    10591068        } // if
    10601069        assertf( name, "ObjectDecl must a have name\n" );
    1061         return (new ObjectDecl( *name, storageClass, linkage, maybeBuild< Expression >( bitfieldWidth ), nullptr, maybeBuild< Initializer >( initializer ) ))->set_asmName( asmName )->set_extension( extension );
     1070        return (new ObjectDecl( *name, storageClasses, linkage, maybeBuild< Expression >( bitfieldWidth ), nullptr, maybeBuild< Initializer >( initializer ) ))->set_asmName( asmName )->set_extension( extension );
    10621071}
    10631072
  • src/Parser/ExpressionNode.cc

    r7fe2498 ra7c90d4  
    1010// Created On       : Sat May 16 13:17:07 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Sep 16 16:27:44 2016
    13 // Update Count     : 508
     12// Last Modified On : Sat Mar  4 06:58:47 2017
     13// Update Count     : 509
    1414//
    1515
     
    173173
    174174Expression *build_constantZeroOne( const std::string & str ) {
    175         Expression * ret = new ConstantExpr( Constant( str == "0" ? (Type*)new ZeroType( emptyQualifiers ) : (Type*)new OneType( emptyQualifiers ), str ) );
     175        Expression * ret = new ConstantExpr( Constant( str == "0" ? (Type *)new ZeroType( emptyQualifiers ) : (Type*)new OneType( emptyQualifiers ), str ) );
    176176        delete &str;                                                                            // created by lex
    177177        return ret;
     
    275275}
    276276Expression *build_offsetOf( DeclarationNode *decl_node, NameExpr *member ) {
    277         Expression* ret = new UntypedOffsetofExpr( maybeMoveBuildType( decl_node ), member->get_name() );
     277        Expression * ret = new UntypedOffsetofExpr( maybeMoveBuildType( decl_node ), member->get_name() );
    278278        delete member;
    279279        return ret;
  • src/Parser/ParseNode.h

    r7fe2498 ra7c90d4  
    1010// Created On       : Sat May 16 13:28:16 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Mar  3 21:34:27 2017
    13 // Update Count     : 704
     12// Last Modified On : Tue Mar  7 08:10:53 2017
     13// Update Count     : 726
    1414//
    1515
     
    4040//##############################################################################
    4141
    42 extern char* yyfilename;
     42extern char * yyfilename;
    4343extern int yylineno;
    4444
     
    123123        }
    124124
    125         Expression * build() const { return const_cast<ExpressionNode*>(this)->expr.release(); }
     125        Expression * build() const { return const_cast<ExpressionNode *>(this)->expr.release(); }
    126126  private:
    127127        bool extension = false;
     
    204204        // These must remain in the same order as the corresponding DeclarationNode names.
    205205
    206         enum StorageClass { Extern, Static, Auto, Register, Threadlocal, NoStorageClass };
     206        enum StorageClass { Extern, Static, Auto, Register, Threadlocal, NoStorageClass,
     207                                                ExternClass = 1 << Extern, StaticClass = 1 << Static, AutoClass = 1 << Auto, RegisterClass = 1 << Register, ThreadlocalClass = 1 << Threadlocal };
    207208        enum FuncSpecifier { Inline, Noreturn, Fortran, NoFuncSpecifier,
    208                                         InlineSpec = 1 << Inline, NoreturnSpec = 1 << Noreturn, FortranSpec = 1 << Fortran };
    209         enum TypeQualifier { Const, Restrict, Volatile, Lvalue, Atomic, NoTypeQualifier };
     209                                                 InlineSpec = 1 << Inline, NoreturnSpec = 1 << Noreturn, FortranSpec = 1 << Fortran };
     210        enum TypeQualifier { Const, Restrict, Volatile, Lvalue, Mutex, Atomic, NoTypeQualifier };
    210211        enum BasicType { Void, Bool, Char, Int, Float, Double, LongDouble, NoBasicType };
    211212        enum ComplexType { Complex, Imaginary, NoComplexType };
     
    264265        DeclarationNode * addQualifiers( DeclarationNode * );
    265266        void checkQualifiers( const TypeData *, const TypeData * );
    266         void checkStorageClasses( DeclarationNode * );
    267         DeclarationNode * copyStorageClasses( DeclarationNode * );
     267        void checkSpecifiers( DeclarationNode * );
     268        DeclarationNode * copySpecifiers( DeclarationNode * );
    268269        DeclarationNode * addType( DeclarationNode * );
    269270        DeclarationNode * addTypedef();
     
    296297
    297298        Declaration * build() const;
    298         ::Type * buildType() const;
     299        Type * buildType() const;
    299300
    300301        bool get_hasEllipsis() const;
     
    302303        DeclarationNode * extractAggregate() const;
    303304        bool has_enumeratorValue() const { return (bool)enumeratorValue; }
    304         ExpressionNode * consume_enumeratorValue() const { return const_cast<DeclarationNode*>(this)->enumeratorValue.release(); }
     305        ExpressionNode * consume_enumeratorValue() const { return const_cast<DeclarationNode *>(this)->enumeratorValue.release(); }
    305306
    306307        bool get_extension() const { return extension; }
     
    324325
    325326        TypeData * type;
    326         StorageClass storageClass;
    327 
    328         typedef std::bitset< DeclarationNode::NoFuncSpecifier > FuncSpec;
    329         FuncSpec funcSpec;
    330         static void print_FuncSpec( std::ostream & output, FuncSpec funcSpec );
     327
     328        typedef std::bitset< DeclarationNode::NoStorageClass > StorageClasses;
     329        StorageClasses storageClasses;
     330        static void print_StorageClass( std::ostream & output, StorageClasses storageClasses );
     331
     332        typedef std::bitset< DeclarationNode::NoFuncSpecifier > FuncSpecifiers;
     333        FuncSpecifiers funcSpecs;
     334        static void print_FuncSpec( std::ostream & output, FuncSpecifiers funcSpecs );
    331335
    332336        ExpressionNode * bitfieldWidth;
     
    347351
    348352static inline Type * maybeMoveBuildType( const DeclarationNode * orig ) {
    349         Type* ret = orig ? orig->buildType() : nullptr;
     353        Type * ret = orig ? orig->buildType() : nullptr;
    350354        delete orig;
    351355        return ret;
     
    362366
    363367        virtual StatementNode * clone() const final { assert( false ); return nullptr; }
    364         Statement * build() const { return const_cast<StatementNode*>(this)->stmt.release(); }
     368        Statement * build() const { return const_cast<StatementNode *>(this)->stmt.release(); }
    365369
    366370        virtual StatementNode * add_label( const std::string * name, DeclarationNode * attr = nullptr ) {
  • src/Parser/TypeData.cc

    r7fe2498 ra7c90d4  
    1010// Created On       : Sat May 16 15:12:51 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Mar  3 21:59:10 2017
    13 // Update Count     : 516
     12// Last Modified On : Tue Mar  7 08:08:21 2017
     13// Update Count     : 538
    1414//
    1515
     
    393393        buildList( firstNode, outputList );
    394394        for ( typename ForallList::iterator i = outputList.begin(); i != outputList.end(); ++i ) {
    395                 TypeDecl * td = static_cast<TypeDecl*>(*i);
     395                TypeDecl * td = static_cast<TypeDecl *>(*i);
    396396                if ( td->get_kind() == TypeDecl::Any ) {
    397397                        // add assertion parameters to `type' tyvars in reverse order
    398398                        // add dtor:  void ^?{}(T *)
    399399                        FunctionType * dtorType = new FunctionType( Type::Qualifiers(), false );
    400                         dtorType->get_parameters().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, nullptr, new PointerType( Type::Qualifiers(), new TypeInstType( Type::Qualifiers(), td->get_name(), *i ) ), nullptr ) );
    401                         td->get_assertions().push_front( new FunctionDecl( "^?{}", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, dtorType, nullptr ) );
     400                        dtorType->get_parameters().push_back( new ObjectDecl( "", DeclarationNode::StorageClasses(), LinkageSpec::Cforall, nullptr, new PointerType( Type::Qualifiers(), new TypeInstType( Type::Qualifiers(), td->get_name(), *i ) ), nullptr ) );
     401                        td->get_assertions().push_front( new FunctionDecl( "^?{}", DeclarationNode::StorageClasses(), LinkageSpec::Cforall, dtorType, nullptr ) );
    402402
    403403                        // add copy ctor:  void ?{}(T *, T)
    404404                        FunctionType * copyCtorType = new FunctionType( Type::Qualifiers(), false );
    405                         copyCtorType->get_parameters().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, nullptr, new PointerType( Type::Qualifiers(), new TypeInstType( Type::Qualifiers(), td->get_name(), *i ) ), nullptr ) );
    406                         copyCtorType->get_parameters().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, nullptr, new TypeInstType( Type::Qualifiers(), td->get_name(), *i ), nullptr ) );
    407                         td->get_assertions().push_front( new FunctionDecl( "?{}", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, copyCtorType, nullptr ) );
     405                        copyCtorType->get_parameters().push_back( new ObjectDecl( "", DeclarationNode::StorageClasses(), LinkageSpec::Cforall, nullptr, new PointerType( Type::Qualifiers(), new TypeInstType( Type::Qualifiers(), td->get_name(), *i ) ), nullptr ) );
     406                        copyCtorType->get_parameters().push_back( new ObjectDecl( "", DeclarationNode::StorageClasses(), LinkageSpec::Cforall, nullptr, new TypeInstType( Type::Qualifiers(), td->get_name(), *i ), nullptr ) );
     407                        td->get_assertions().push_front( new FunctionDecl( "?{}", DeclarationNode::StorageClasses(), LinkageSpec::Cforall, copyCtorType, nullptr ) );
    408408
    409409                        // add default ctor:  void ?{}(T *)
    410410                        FunctionType * ctorType = new FunctionType( Type::Qualifiers(), false );
    411                         ctorType->get_parameters().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, nullptr, new PointerType( Type::Qualifiers(), new TypeInstType( Type::Qualifiers(), td->get_name(), *i ) ), nullptr ) );
    412                         td->get_assertions().push_front( new FunctionDecl( "?{}", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, ctorType, nullptr ) );
     411                        ctorType->get_parameters().push_back( new ObjectDecl( "", DeclarationNode::StorageClasses(), LinkageSpec::Cforall, nullptr, new PointerType( Type::Qualifiers(), new TypeInstType( Type::Qualifiers(), td->get_name(), *i ) ), nullptr ) );
     412                        td->get_assertions().push_front( new FunctionDecl( "?{}", DeclarationNode::StorageClasses(), LinkageSpec::Cforall, ctorType, nullptr ) );
    413413
    414414                        // add assignment operator:  T * ?=?(T *, T)
    415415                        FunctionType * assignType = new FunctionType( Type::Qualifiers(), false );
    416                         assignType->get_parameters().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, nullptr, new PointerType( Type::Qualifiers(), new TypeInstType( Type::Qualifiers(), td->get_name(), *i ) ), nullptr ) );
    417                         assignType->get_parameters().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, nullptr, new TypeInstType( Type::Qualifiers(), td->get_name(), *i ), nullptr ) );
    418                         assignType->get_returnVals().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, nullptr, new TypeInstType( Type::Qualifiers(), td->get_name(), *i ), nullptr ) );
    419                         td->get_assertions().push_front( new FunctionDecl( "?=?", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, assignType, nullptr ) );
     416                        assignType->get_parameters().push_back( new ObjectDecl( "", DeclarationNode::StorageClasses(), LinkageSpec::Cforall, nullptr, new PointerType( Type::Qualifiers(), new TypeInstType( Type::Qualifiers(), td->get_name(), *i ) ), nullptr ) );
     417                        assignType->get_parameters().push_back( new ObjectDecl( "", DeclarationNode::StorageClasses(), LinkageSpec::Cforall, nullptr, new TypeInstType( Type::Qualifiers(), td->get_name(), *i ), nullptr ) );
     418                        assignType->get_returnVals().push_back( new ObjectDecl( "", DeclarationNode::StorageClasses(), LinkageSpec::Cforall, nullptr, new TypeInstType( Type::Qualifiers(), td->get_name(), *i ), nullptr ) );
     419                        td->get_assertions().push_front( new FunctionDecl( "?=?", DeclarationNode::StorageClasses(), LinkageSpec::Cforall, assignType, nullptr ) );
    420420                } // if
    421421        } // for
     
    732732} // buildAggInst
    733733
    734 NamedTypeDecl * buildSymbolic( const TypeData * td, const string & name, DeclarationNode::StorageClass sc ) {
     734NamedTypeDecl * buildSymbolic( const TypeData * td, const string & name, DeclarationNode::StorageClasses scs ) {
    735735        assert( td->kind == TypeData::Symbolic );
    736736        NamedTypeDecl * ret;
    737737        assert( td->base );
    738738        if ( td->symbolic.isTypedef ) {
    739                 ret = new TypedefDecl( name, sc, typebuild( td->base ) );
     739                ret = new TypedefDecl( name, scs, typebuild( td->base ) );
    740740        } else {
    741                 ret = new TypeDecl( name, sc, typebuild( td->base ), TypeDecl::Any );
     741                ret = new TypeDecl( name, scs, typebuild( td->base ), TypeDecl::Any );
    742742        } // if
    743743        buildList( td->symbolic.params, ret->get_parameters() );
     
    784784} // buildTypeof
    785785
    786 Declaration * buildDecl( const TypeData * td, const string &name, DeclarationNode::StorageClass sc, Expression * bitfieldWidth, DeclarationNode::FuncSpec funcSpec, LinkageSpec::Spec linkage, ConstantExpr *asmName, Initializer * init, std::list< Attribute * > attributes ) {
     786Declaration * buildDecl( const TypeData * td, const string &name, DeclarationNode::StorageClasses scs, Expression * bitfieldWidth, DeclarationNode::FuncSpecifiers funcSpec, LinkageSpec::Spec linkage, ConstantExpr *asmName, Initializer * init, std::list< Attribute * > attributes ) {
    787787        if ( td->kind == TypeData::Function ) {
    788788                if ( td->function.idList ) {                                    // KR function ?
     
    792792                FunctionDecl * decl;
    793793                Statement * stmt = maybeBuild<Statement>( td->function.body );
    794                 CompoundStmt * body = dynamic_cast< CompoundStmt* >( stmt );
    795                 decl = new FunctionDecl( name, sc, linkage, buildFunction( td ), body, attributes, funcSpec );
     794                CompoundStmt * body = dynamic_cast< CompoundStmt * >( stmt );
     795                decl = new FunctionDecl( name, scs, linkage, buildFunction( td ), body, attributes, funcSpec );
    796796                return decl->set_asmName( asmName );
    797797        } else if ( td->kind == TypeData::Aggregate ) {
     
    800800                return buildEnum( td, attributes );
    801801        } else if ( td->kind == TypeData::Symbolic ) {
    802                 return buildSymbolic( td, name, sc );
     802                return buildSymbolic( td, name, scs );
    803803        } else {
    804                 return (new ObjectDecl( name, sc, linkage, bitfieldWidth, typebuild( td ), init, attributes ))->set_asmName( asmName );
     804                return (new ObjectDecl( name, scs, linkage, bitfieldWidth, typebuild( td ), init, attributes ))->set_asmName( asmName );
    805805        } // if
    806806        return nullptr;
     
    820820                        break;
    821821                  default:
    822                         ft->get_returnVals().push_back( dynamic_cast< DeclarationWithType* >( buildDecl( td->base, "", DeclarationNode::NoStorageClass, nullptr, DeclarationNode::FuncSpecifier(), LinkageSpec::Cforall, nullptr ) ) );
     822                        ft->get_returnVals().push_back( dynamic_cast< DeclarationWithType * >( buildDecl( td->base, "", DeclarationNode::StorageClasses(), nullptr, DeclarationNode::FuncSpecifiers(), LinkageSpec::Cforall, nullptr ) ) );
    823823                } // switch
    824824        } else {
    825                 ft->get_returnVals().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, nullptr, new BasicType( Type::Qualifiers(), BasicType::SignedInt ), nullptr ) );
     825                ft->get_returnVals().push_back( new ObjectDecl( "", DeclarationNode::StorageClasses(), LinkageSpec::Cforall, nullptr, new BasicType( Type::Qualifiers(), BasicType::SignedInt ), nullptr ) );
    826826        } // if
    827827        return ft;
     
    846846        for ( DeclarationNode * decl = function.oldDeclList; decl != nullptr; decl = dynamic_cast< DeclarationNode * >( decl->get_next() ) ) {
    847847                // scan ALL parameter names for each declaration name to check for duplicates
    848                 for ( DeclarationNode * param = function.idList; param != nullptr; param = dynamic_cast< DeclarationNode* >( param->get_next() ) ) {
     848                for ( DeclarationNode * param = function.idList; param != nullptr; param = dynamic_cast< DeclarationNode * >( param->get_next() ) ) {
    849849                        if ( *decl->name == *param->name ) {
    850850                                // type set => parameter name already transformed by a declaration names so there is a duplicate
     
    867867        //    rtb( a, b, c ) const char * b; {} => int rtn( int a, const char * b, int c ) {}
    868868
    869         for ( DeclarationNode * param = function.idList; param != nullptr; param = dynamic_cast< DeclarationNode* >( param->get_next() ) ) {
     869        for ( DeclarationNode * param = function.idList; param != nullptr; param = dynamic_cast< DeclarationNode * >( param->get_next() ) ) {
    870870                if ( ! param->type ) {                                                  // generate type int for empty parameter type
    871871                        param->type = new TypeData( TypeData::Basic );
  • src/Parser/TypeData.h

    r7fe2498 ra7c90d4  
    1010// Created On       : Sat May 16 15:18:36 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Mar  3 20:56:53 2017
    13 // Update Count     : 167
     12// Last Modified On : Tue Mar  7 08:03:53 2017
     13// Update Count     : 173
    1414//
    1515
     
    107107ReferenceToType * buildComAggInst( const TypeData *, std::list< Attribute * > attributes );
    108108ReferenceToType * buildAggInst( const TypeData * );
    109 NamedTypeDecl * buildSymbolic( const TypeData *, const std::string &name, DeclarationNode::StorageClass sc );
    110109TypeDecl * buildVariable( const TypeData * );
    111110EnumDecl * buildEnum( const TypeData *, std::list< Attribute * > );
     
    113112TupleType * buildTuple( const TypeData * );
    114113TypeofType * buildTypeof( const TypeData * );
    115 Declaration * buildDecl( const TypeData *, const std::string &, DeclarationNode::StorageClass, Expression *, DeclarationNode::FuncSpec funcSpec, LinkageSpec::Spec, ConstantExpr *asmName, Initializer * init = nullptr, std::list< class Attribute * > attributes = std::list< class Attribute * >() );
     114Declaration * buildDecl( const TypeData *, const std::string &, DeclarationNode::StorageClasses, Expression *, DeclarationNode::FuncSpecifiers funcSpec, LinkageSpec::Spec, ConstantExpr *asmName, Initializer * init = nullptr, std::list< class Attribute * > attributes = std::list< class Attribute * >() );
    116115FunctionType * buildFunction( const TypeData * );
    117116void buildKRFunction( const TypeData::Function_t & function );
  • src/Parser/lex.cc

    r7fe2498 ra7c90d4  
    382382        (yy_c_buf_p) = yy_cp;
    383383
    384 #define YY_NUM_RULES 186
    385 #define YY_END_OF_BUFFER 187
     384#define YY_NUM_RULES 187
     385#define YY_END_OF_BUFFER 188
    386386/* This struct is not used in this scanner,
    387387   but its presence is necessary. */
     
    391391        flex_int32_t yy_nxt;
    392392        };
    393 static yyconst flex_int16_t yy_accept[909] =
     393static yyconst flex_int16_t yy_accept[914] =
    394394    {   0,
    395         0,    0,    0,    0,    0,    0,  121,  121,  124,  124,
    396       187,  185,    7,    9,    8,  144,  123,  106,  149,  152,
    397       120,  131,  132,  147,  145,  135,  146,  138,  148,  111,
    398       112,  113,  136,  137,  154,  156,  155,  157,  185,  106,
    399       129,  185,  130,  150,  106,  108,  106,  106,  106,  106,
    400       106,  106,  106,  106,  106,  106,  106,  106,  106,  106,
    401       106,  106,  106,  133,  153,  134,  151,    7,  185,    4,
    402         4,  186,  109,  186,  110,  121,  122,  128,  124,  125,
    403         7,    9,    0,    8,  161,  180,  106,    0,  173,  143,
    404       166,  174,  171,  158,  169,  159,  170,  168,    0,  117,
    405 
    406         3,    0,  172,  116,  114,    0,    0,  114,  114,    0,
    407         0,  114,  113,  113,  113,    0,  113,  141,  142,  140,
    408       162,  164,  160,  165,  163,    0,    0,    0,    0,    0,
     395        0,    0,    0,    0,    0,    0,  122,  122,  125,  125,
     396      188,  186,    7,    9,    8,  145,  124,  107,  150,  153,
     397      121,  132,  133,  148,  146,  136,  147,  139,  149,  112,
     398      113,  114,  137,  138,  155,  157,  156,  158,  186,  107,
     399      130,  186,  131,  151,  107,  109,  107,  107,  107,  107,
     400      107,  107,  107,  107,  107,  107,  107,  107,  107,  107,
     401      107,  107,  107,  107,  134,  154,  135,  152,    7,  186,
     402        4,    4,  187,  110,  187,  111,  122,  123,  129,  125,
     403      126,    7,    9,    0,    8,  162,  181,  107,    0,  174,
     404      144,  167,  175,  172,  159,  170,  160,  171,  169,    0,
     405
     406      118,    3,    0,  173,  117,  115,    0,    0,  115,  115,
     407        0,    0,  115,  114,  114,  114,    0,  114,  142,  143,
     408      141,  163,  165,  161,  166,  164,    0,    0,    0,    0,
    409409        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    410       107,  179,    0,  123,  120,  106,    0,    0,  176,    0,
    411       106,  106,  106,  106,  106,  106,  106,  106,  106,  106,
    412       106,  106,  106,  106,  106,  106,  106,   38,  106,  106,
    413       106,  106,  106,  106,  106,  106,  106,  106,   57,  106,
    414       106,  106,  106,  106,  106,  106,  106,  106,  106,  106,
    415       106,  106,  106,  106,  106,  106,  106,  106,  175,  167,
    416 
    417         7,    0,    0,    0,    2,    0,    5,  109,    0,    0,
    418         0,  121,    0,  127,  126,  126,    0,    0,    0,  124,
     410        0,  108,  180,    0,  124,  121,  107,    0,    0,  177,
     411        0,  107,  107,  107,  107,  107,  107,  107,  107,  107,
     412      107,  107,  107,  107,  107,  107,  107,  107,   38,  107,
     413      107,  107,  107,  107,  107,  107,  107,  107,  107,   57,
     414      107,  107,  107,  107,  107,  107,  107,  107,  107,  107,
     415      107,  107,  107,  107,  107,  107,  107,  107,  107,  107,
     416
     417      176,  168,    7,    0,    0,    0,    2,    0,    5,  110,
     418        0,    0,    0,  122,    0,  128,  127,  127,    0,    0,
     419        0,  125,    0,    0,    0,    0,    0,    0,    0,    0,
     420        0,    0,    0,    0,    0,    0,    0,  140,  118,  119,
     421        0,  119,  119,    0,    0,    6,  119,  115,    0,    0,
     422        0,  119,    0,  115,  115,  115,  115,    0,  116,    0,
     423        0,  114,  114,  114,  114,    0,  178,  179,    0,  184,
     424      182,    0,    0,    0,  108,    0,    0,    0,    0,    0,
     425        0,    0,    0,  107,   17,  107,  107,  107,  107,  107,
     426      107,  107,  107,  107,  107,  107,  107,  107,  107,  107,
     427
     428      107,  107,  107,   14,  107,  107,  107,  107,  107,  107,
     429      107,  107,  107,  107,  107,  107,  107,  107,  107,  107,
     430      107,  107,   51,  107,  107,  107,   64,  107,  107,  107,
     431      107,  107,  107,  107,  107,  107,  107,  107,  107,  107,
     432      107,  107,  107,   92,  107,  107,  107,  107,  107,  107,
     433      107,  107,  107,    0,    0,    0,    0,    0,    0,    0,
     434        0,  127,    0,    0,    0,    0,    0,  127,    0,    0,
     435      185,    0,    0,    0,    0,    0,    0,    0,  119,    0,
     436      119,    0,  119,    0,  119,    0,    0,  119,    0,  115,
     437      115,    0,    0,  116,  116,    0,  116,    0,  116,  114,
     438
     439      114,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     440        0,  183,  107,  107,  107,  107,  107,  107,  107,  107,
     441      107,  107,  107,  107,  107,  107,  107,  107,  107,  107,
     442      107,  107,  107,  107,  107,   21,  107,   24,  107,   27,
     443      107,  107,  107,  107,  107,  107,  107,   41,  107,   43,
     444      107,  107,  107,  107,  107,  107,  107,   56,  107,   67,
     445      107,  107,  107,  107,  107,  107,  107,  107,  107,  107,
     446      107,  107,  107,  107,  107,  107,  107,  107,  107,  101,
     447      107,  107,  107,    0,    0,    0,    0,    0,    0,    0,
     448        0,    0,    0,    0,    0,    0,    0,  127,    0,    0,
     449
     450        0,    0,    0,  119,    0,    0,    0,    0,    0,    0,
     451        0,  116,  116,    0,  120,    0,  116,  116,    0,    0,
    419452        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    420         0,    0,    0,    0,    0,  139,  117,  118,    0,  118,
    421       118,    0,    0,    6,  118,  114,    0,    0,    0,  118,
    422         0,  114,  114,  114,  114,    0,  115,    0,    0,  113,
    423       113,  113,  113,    0,  177,  178,    0,  183,  181,    0,
    424         0,    0,  107,    0,    0,    0,    0,    0,    0,    0,
    425         0,  106,   17,  106,  106,  106,  106,  106,  106,  106,
    426       106,  106,  106,  106,  106,  106,  106,  106,  106,  106,
    427 
    428       106,   14,  106,  106,  106,  106,  106,  106,  106,  106,
    429       106,  106,  106,  106,  106,  106,  106,  106,  106,  106,
    430        51,  106,  106,  106,   64,  106,  106,  106,  106,  106,
    431       106,  106,  106,  106,  106,  106,  106,  106,  106,  106,
    432        91,  106,  106,  106,  106,  106,  106,  106,  106,  106,
    433         0,    0,    0,    0,    0,    0,    0,    0,  126,    0,
    434         0,    0,    0,    0,  126,    0,    0,  184,    0,    0,
    435         0,    0,    0,    0,    0,  118,    0,  118,    0,  118,
    436         0,  118,    0,    0,  118,    0,  114,  114,    0,    0,
    437       115,  115,    0,  115,    0,  115,  113,  113,    0,    0,
    438 
    439         0,    0,    0,    0,    0,    0,    0,    0,  182,  106,
    440       106,  106,  106,  106,  106,  106,  106,  106,  106,  106,
    441       106,  106,  106,  106,  106,  106,  106,  106,  106,  106,
    442       106,  106,   21,  106,   24,  106,   27,  106,  106,  106,
    443       106,  106,  106,  106,   41,  106,   43,  106,  106,  106,
    444       106,  106,  106,  106,   56,  106,   67,  106,  106,  106,
    445       106,  106,  106,  106,  106,  106,  106,  106,  106,  106,
    446       106,  106,  106,  106,  106,  100,  106,  106,  106,    0,
     453        0,  107,  107,   22,  107,  107,  107,  107,  107,  107,
     454      107,   15,  107,  107,  107,  107,  107,  107,  107,  107,
     455      107,  107,  107,  107,  107,  107,   23,   25,  107,   32,
     456      107,  107,  107,  107,   40,  107,  107,  107,  107,   49,
     457      107,  107,   54,  107,  107,   69,   72,   73,  107,  107,
     458      107,   79,  107,  107,  107,  107,  107,   89,   91,   93,
     459      107,  107,   98,  107,  107,  105,  107,    0,    0,    0,
     460
    447461        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    448         0,    0,    0,  126,    0,    0,    0,    0,    0,  118,
    449 
    450         0,    0,    0,    0,    0,    0,    0,  115,  115,    0,
    451       119,    0,  115,  115,    0,    0,    0,    0,    0,    0,
    452         0,    0,    0,    0,    0,    0,    0,  106,  106,   22,
    453       106,  106,  106,  106,  106,  106,  106,   15,  106,  106,
    454       106,  106,  106,  106,  106,  106,  106,  106,  106,  106,
    455       106,  106,   23,   25,  106,   32,  106,  106,  106,  106,
    456        40,  106,  106,  106,  106,   49,  106,  106,   54,  106,
    457       106,   71,   72,  106,  106,  106,   78,  106,  106,  106,
    458       106,  106,   88,   90,   92,  106,  106,   97,  106,  106,
    459       104,  106,    0,    0,    0,    0,    0,    0,    0,    0,
    460 
     462        0,    0,    0,    0,    0,    0,  120,    0,    0,  116,
     463      120,  120,  120,  120,    0,  116,    0,    0,    0,    0,
     464        0,    0,    0,    0,    0,    0,  107,    0,  107,  107,
     465      107,  107,  107,  107,  107,  107,  107,  107,  107,  107,
     466      107,  107,  107,  107,   59,  107,  107,  107,  107,  107,
     467      107,  107,  107,   28,  107,  107,  107,   39,   42,   45,
     468      107,  107,   52,  107,   61,   68,  107,  107,   78,   80,
     469       83,   84,   86,   87,  107,  107,   95,  107,  107,  106,
     470        0,    1,    0,    0,    0,    0,    0,    0,  110,    0,
     471
     472        0,    0,  127,    0,    0,    0,    0,  120,    0,  120,
     473      120,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     474      107,  107,   18,  107,  107,  107,  107,  107,  107,  107,
     475       16,  107,  107,  107,   33,  107,  107,  107,  107,  107,
     476      107,  107,  107,  107,  107,  107,  107,   36,   37,  107,
     477       48,   53,  107,  107,  107,   94,  107,  107,    0,    0,
    461478        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    462         0,  119,    0,    0,  115,  119,  119,  119,  119,    0,
    463       115,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    464         0,  106,    0,  106,  106,  106,  106,  106,  106,  106,
    465       106,  106,  106,  106,  106,  106,  106,  106,  106,   59,
    466       106,  106,  106,  106,  106,  106,  106,  106,   28,  106,
    467       106,  106,   39,   42,   45,  106,  106,   52,  106,   61,
    468        68,  106,  106,   77,   79,   82,   83,   85,   86,  106,
    469       106,   94,  106,  106,  105,    0,    1,    0,    0,    0,
    470         0,    0,    0,  109,    0,    0,    0,  126,    0,    0,
    471 
    472         0,    0,  119,    0,  119,  119,    0,    0,    0,    0,
    473         0,    0,    0,    0,    0,  106,  106,   18,  106,  106,
    474       106,  106,  106,  106,  106,   16,  106,  106,  106,   33,
    475       106,  106,  106,  106,  106,  106,  106,  106,  106,  106,
    476       106,  106,   36,   37,  106,   48,   53,  106,  106,  106,
    477        93,  106,  106,    0,    0,    0,    0,    0,    0,    0,
    478         0,    0,    0,    0,    0,    0,   10,   11,   29,   55,
    479       106,  106,  106,  106,  106,  106,  106,  106,  106,  106,
    480       106,   60,   62,   65,  106,  106,   80,   95,  106,  106,
    481        35,  106,   47,   73,   74,  106,   98,  101,    0,    0,
    482 
    483         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    484       106,   69,  106,  106,   12,  106,  106,   30,   34,  106,
    485       106,  106,   66,  106,  106,  106,  106,  106,  106,  106,
    486         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    487         0,    0,    0,   58,  106,  106,  106,  106,  106,  106,
    488       106,   50,   63,   75,   81,   96,  102,  106,  106,  106,
    489         0,    0,    0,    0,    0,    0,    0,    0,  106,  106,
    490        13,   19,  106,  106,   31,  106,  106,  106,   26,   46,
    491        89,    0,    0,  106,  106,  106,  106,  106,  106,   76,
    492       103,  106,   87,   20,  106,  106,   44,   84,  106,  106,
    493 
    494       106,  106,  106,  106,  106,   99,   70,    0
     479        0,   10,   11,   29,   55,  107,  107,  107,  107,  107,
     480      107,  107,  107,  107,  107,  107,   60,   62,   65,  107,
     481      107,   81,   96,  107,  107,   35,  107,   47,   74,   75,
     482
     483      107,   99,  102,    0,    0,    0,    0,    0,    0,    0,
     484        0,    0,    0,    0,    0,  107,   70,  107,  107,   12,
     485      107,  107,   30,   34,  107,  107,  107,   66,  107,  107,
     486      107,  107,  107,  107,  107,    0,    0,    0,    0,    0,
     487        0,    0,    0,    0,    0,    0,    0,    0,   58,  107,
     488      107,  107,  107,  107,  107,  107,   50,   63,   76,   82,
     489       97,  103,  107,  107,  107,    0,    0,    0,    0,    0,
     490        0,    0,    0,  107,  107,   13,   19,  107,  107,   31,
     491      107,  107,  107,   26,   46,   90,    0,    0,  107,  107,
     492      107,  107,  107,  107,   77,  104,  107,   88,   20,  107,
     493
     494      107,   44,   85,  107,  107,  107,  107,  107,  107,  107,
     495      100,   71,    0
    495496    } ;
    496497
     
    540541    } ;
    541542
    542 static yyconst flex_int16_t yy_base[1083] =
     543static yyconst flex_int16_t yy_base[1088] =
    543544    {   0,
    544         0,   84, 2330, 2327,   94,    0,  177,  178,  179,  180,
    545      2341, 2877,  191, 2877,  197,   55, 2877, 2287,   60,  173,
    546      2877, 2877, 2877,   56,  188, 2877,  191,  189,  204,  216,
    547       275,    0, 2306, 2877,  216, 2305,  152,  344,  155,  220,
    548      2877,  159, 2877,  217,  226, 2877,  185,  154,  212,  251,
    549       237,  270,  235,  257,  241,  279,  193,  305,  314,  351,
    550       238,  228,  227, 2877,  225, 2877, 2300,  406,  412, 2877,
    551      2309, 2877, 2277,  235, 2877,    0, 2877,  439,    0, 2877,
    552       426, 2877,  452,  464, 2877,  511, 2276,  264, 2877, 2877,
    553      2877, 2877, 2877, 2293, 2877, 2290, 2877, 2877, 2300,  572,
    554 
    555      2877, 2317, 2877,  451,  457,  524,  547,  298,  253,  197,
    556       312,  279,    0,  342,  325,  198,  322, 2877, 2877, 2877,
    557      2287, 2877, 2877, 2877, 2285, 2282,  218,  312, 2295,  350,
    558       363,  368,  369,  391,  411,  417, 2276,  452, 2225,  453,
    559      2254, 2877,  274, 2877, 2877,  438, 2248, 2245, 2877, 2218,
    560       435,  282,  353,  277,  391,  419,  442,  320,  583,  451,
    561       446,  443,  479,  469,  364,  472,  481,  454,  458,  484,
    562       503,  493,  352,  506,  486,  453,  507,  509, 2246,  539,
    563       532,  524,  516,  528,  556,  530,  540,  552,  553,  564,
    564       574,  538,  576,  613,  573,  597,  602,  571, 2877, 2877,
    565 
    566       668,  674, 2294,  680, 2877,  686, 2877, 2241,  603, 2235,
    567      2234,    0,  683, 2877, 2877,  692, 2233, 2231, 2211,    0,
    568      2233,  556,  627,  630,  662,  699,  688,  692,  693,  696,
    569      2230,  700,  703, 2205, 2202, 2877,    0,  695,  726,  693,
    570       701, 2201, 2253, 2877,  747,  742,  700,  753,  760,  793,
    571       815,  746, 2877, 2210, 2183,    0,  802, 2227,  801,  754,
    572      2877, 2203, 2178,  839, 2877, 2877, 2210, 2877, 2877,  709,
    573       723, 2187, 2185,  755, 2181, 2180, 2178,    0, 2175,    0,
    574      2144,  694,  736,  737,  741,  614,  739,  738,  742,  798,
    575       807,  792,  802,  797,  746,  816,  748,  791,  824,  819,
    576 
    577       826, 2174,  827,  830,  831,  440,  834,  838,  836,  843,
    578       847,  849,  841,  850,  861,  853,  862,  851,  863,  865,
    579       872,  864,  873,  874, 2173,  749,  875,  876,  878,  880,
    580       881,  882,  884,  885,  886,  888,  889,  892,  898,  896,
    581      2171,  899,  906,  944,  901,  907,  913,  917,  908,  911,
    582       976,  977, 2165, 2164, 2163,    0, 2161,    0,  964,  968,
    583      2158,    0, 2157,    0, 2156,    0, 2176, 2877,  964,  967,
    584      2153, 2147,    0, 2143,    0, 2877,  979,  998,  990, 2877,
    585      1004, 1044, 2141, 1020, 1066, 2139, 2877, 2877,  963, 1006,
    586      1052, 1005, 1091,  968, 1083, 1006, 2877, 2877, 2136, 2134,
    587 
    588      2132,    0, 2129,    0, 2126,    0, 2125,    0, 2877,  931,
    589       981,  985,  928, 1024,  987, 1068,  958, 1070, 1060, 1010,
    590      1005, 1072, 1083, 1022, 1078, 1082, 1088, 1042, 1084, 1081,
    591      1089, 1097, 2127, 1090, 2125, 1095, 2122, 1093, 1091, 1109,
    592      1101, 1111, 1115, 1116, 2119, 1118, 2118, 1119, 1120, 1121,
    593      1123, 1126, 1127, 1128, 2117, 1129, 2115, 1131, 1134, 1135,
    594      1132, 1138, 1140, 1143, 1148, 1149, 1150, 1152, 1155, 1151,
    595      1161, 1164, 1166, 1168, 1169, 2112, 1170, 1172, 1175, 1221,
    596      2106,    0, 2105,    0, 2104,    0, 2102,    0, 1216, 2099,
    597         0, 2096,    0, 2095, 2094, 2092,    0, 2089,    0, 1223,
    598 
    599      2086, 1229, 1245, 1231, 1270, 1236, 1186, 1185, 2877, 1286,
    600      1304, 1297, 2097, 2072, 2082, 2079,    0, 2076,    0, 2075,
    601         0, 2074,    0, 2072,    0, 2069,    0, 1190, 1210, 2069,
    602      1191, 1227, 1212, 1230, 1253, 1246, 1254, 1280, 1281, 1282,
    603      1284, 1228, 1287, 1286, 1288, 1285,  234, 1293, 1289, 1304,
    604      1300, 1305, 2068, 1322, 1306, 2067, 1308, 1313, 1318, 1320,
    605      2065, 1323, 1324, 1326, 1327, 2062, 1330, 1331, 2061, 1334,
    606      1335, 2060, 2058, 1337, 1339, 1340, 2055, 1004, 1346, 1347,
    607      1348, 1349, 1364, 2054, 2053, 1351, 1353, 2051, 1350, 1355,
    608      2018, 1362, 2066, 2012,    0, 2009,    0, 2006,    0, 2005,
    609 
    610         0, 2004,    0, 2002,    0, 1999,    0, 1996,    0, 1401,
    611      1407, 1435, 1418, 1995, 2877, 1424, 1411, 1421, 1427, 1994,
    612      2877, 1992,    0, 1989,    0, 1988,    0, 1987,    0,    0,
    613         0, 1988,    0, 1412, 1422, 1419, 1387, 1369, 1416, 1433,
    614      1436, 1403, 1446, 1441, 1431, 1432, 1451, 1452, 1455, 1456,
    615      1457, 1486, 1460, 1461, 1462, 1464, 1463, 1467, 1985, 1465,
    616      1468, 1470, 1984, 1983, 1981, 1472, 1466, 1974, 1478, 1972,
    617      1971, 1480, 1484, 1968, 1964, 1960, 1956, 1953, 1952, 1487,
    618      1494, 1951, 1497, 1483, 1949, 1996, 2877, 1942,    0, 1941,
    619         0,    0,    0, 1942,    0,    0,    0, 2877,    0,    0,
    620 
    621         0,    0, 1537, 1936, 2877, 2877, 1543, 1935,    0, 1934,
    622         0,    0,    0,    0, 1932, 1499, 1519, 1932, 1500, 1524,
    623      1530, 1501, 1502, 1533, 1537, 1931, 1532, 1541, 1534, 1539,
    624      1544,  599, 1548, 1549, 1579, 1556, 1557, 1560, 1561, 1562,
    625      1563, 1564, 1930, 1928, 1567, 1925, 1924, 1566, 1569, 1572,
    626      1923, 1574, 1578,    0,    0,    0, 1918, 1915, 1914, 1624,
    627         0, 1913, 1911, 1908, 1907, 1906, 1907, 1904, 1903, 1902,
    628      1580, 1588, 1576, 1577, 1601, 1583, 1602, 1589, 1604, 1603,
    629      1636, 1900, 1609, 1897, 1610, 1614, 1617, 1622, 1618, 1623,
    630      1896, 1624, 1895, 1893, 1886, 1626, 1884, 1883, 1877, 1876,
    631 
    632      1875, 1873, 1856, 1847, 1846, 1843, 1836, 1833, 1826, 1824,
    633      1628, 1826, 1629, 1630, 1631, 1632, 1635, 1637, 1805, 1639,
    634      1667, 1642, 1804, 1643, 1653, 1658, 1651, 1652, 1659, 1662,
    635      1800, 1793, 1791, 1790, 1748, 1745, 1744, 1742, 1741, 1737,
    636      1735, 1733, 1732, 1734, 1663, 1664, 1666, 1672, 1673, 1674,
    637      1675, 1731, 1689, 1676, 1644, 1522, 1680, 1685, 1686, 1687,
    638      1500, 1411, 1363, 1362, 1260, 1219, 1218, 1047, 1690, 1688,
    639      1046, 1700, 1695, 1701,  924, 1704, 1708, 1709,  839,  794,
    640       759,  702,  636, 1682, 1710, 1713, 1714, 1715, 1717,  638,
    641       536, 1719,  488,  441, 1721, 1722,  408,  281, 1723, 1726,
    642 
    643      1727, 1729, 1728, 1730, 1733,  233,  137, 2877, 1805, 1818,
    644      1831, 1841, 1851, 1864, 1874, 1887, 1900, 1913, 1921, 1931,
    645      1938, 1945, 1952, 1959, 1966, 1973, 1980, 1987, 1994, 2001,
    646      2005, 2013, 2019, 2026, 2033, 2040, 2047, 2050, 2057, 2063,
    647      2076, 2089, 2096, 2103, 2110, 2117, 2120, 2127, 2130, 2137,
    648      2140, 2147, 2150, 2157, 2160, 2167, 2170, 2177, 2180, 2187,
    649      2195, 2202, 2209, 2216, 2223, 2226, 2233, 2236, 2243, 2246,
    650      2253, 2259, 2272, 2279, 2286, 2289, 2296, 2299, 2306, 2309,
    651      2316, 2319, 2326, 2329, 2336, 2339, 2346, 2353, 2356, 2363,
    652      2366, 2373, 2380, 2387, 2390, 2397, 2400, 2407, 2410, 2417,
    653 
    654      2420, 2427, 2430, 2437, 2443, 2456, 2463, 2470, 2473, 2480,
    655      2483, 2490, 2493, 2500, 2503, 2510, 2513, 2520, 2523, 2530,
    656      2533, 2540, 2543, 2550, 2557, 2560, 2567, 2570, 2577, 2580,
    657      2587, 2590, 2593, 2599, 2606, 2615, 2622, 2629, 2632, 2639,
    658      2642, 2645, 2651, 2658, 2661, 2664, 2667, 2670, 2673, 2676,
    659      2679, 2686, 2689, 2696, 2699, 2702, 2705, 2708, 2718, 2725,
    660      2728, 2731, 2734, 2741, 2748, 2755, 2758, 2765, 2772, 2779,
    661      2786, 2793, 2800, 2807, 2814, 2821, 2828, 2835, 2842, 2849,
    662      2856, 2863
     545        0,   84, 2340, 2339,   94,    0,  177,  178,  179,  180,
     546     2355, 2883,  191, 2883,  197,   55, 2883, 2300,   60,  173,
     547     2883, 2883, 2883,   56,  188, 2883,  191,  189,  204,  216,
     548      275,    0, 2317, 2883,  216, 2315,  152,  344,  155,  220,
     549     2883,  159, 2883,  217,  226, 2883,  185,  154,  212,  251,
     550      237,  270,  235,  257,  241,  204,  279,  193,  305,  314,
     551      351,  238,  228,  268, 2883,  257, 2883, 2312,  406,  412,
     552     2883, 2323, 2883, 2290,  235, 2883,    0, 2883,  439,    0,
     553     2883,  426, 2883,  452,  464, 2883,  511, 2287,  258, 2883,
     554     2883, 2883, 2883, 2883, 2303, 2883, 2302, 2883, 2883, 2314,
     555
     556      572, 2883, 2330, 2883,  451,  457,  524,  547,  298,  285,
     557      197,  312,  305,    0,  342,  325,  198,  322, 2883, 2883,
     558     2883, 2298, 2883, 2883, 2883, 2295, 2294,  218,  312, 2309,
     559      350,  388,  368,  363,  413,  369,  391, 2289,  417, 2236,
     560      418, 2264, 2883,  274, 2883, 2883,  477, 2260, 2259, 2883,
     561     2231,  419,  390,  432,  431,  435,  446,  447,  282,  583,
     562      437,  452,  458,  479,  468,  244,  472,  481,  484,  488,
     563      485,  503,  487,  442,  364,  505,  332,  504,  516, 2257,
     564      534,  535,  524,  532,  528,  530,  555,  551,  525,  574,
     565      548,  564,  568,  540,  572,  609,  597,  586,  600,  602,
     566
     567     2883, 2883,  674,  665, 2304,  680, 2883,  692, 2883, 2253,
     568      609, 2249, 2247,    0,  667, 2883, 2883,  686, 2244, 2241,
     569     2240,    0, 2263,  664,  668,  689,  695,  694,  690,  699,
     570      700,  703, 2259,  706,  707, 2217, 2215, 2883,    0,  700,
     571      727,  682,  717, 2214, 2264, 2883,  744,  739,  725,  763,
     572      781,  803,  825,  699, 2883, 2220, 2195,    0,  811, 2241,
     573      812,  723, 2883, 2216, 2189,  849, 2883, 2883, 2220, 2883,
     574     2883,  725,  742, 2199, 2199,  734, 2194, 2191, 2188,    0,
     575     2187,    0, 2158,  620,  726,  740,  729,  724,  743,  739,
     576      760,  749,  788,  805,  762,  781,  812,  825,  763,  761,
     577
     578      831,  829,  817, 2187,  832,  833,  836,  571,  837,  840,
     579      839,  843,  846,  847,  849,  854,  859,  855,  864,  862,
     580      867,  869,  870,  866,  876,  878, 2184,  443,  880,  879,
     581      608,  881,  883,  882,  884,  886,  893,  889,  887,  890,
     582      897,  899,  901, 2181,  902,  903,  949,  908,  911,  915,
     583      920,  916,  918,  978,  979, 2177, 2176, 2174,    0, 2171,
     584        0,  967,  971, 2170,    0, 2169,    0, 2167,    0, 2186,
     585     2883,  966,  967, 2165, 2162,    0, 2160,    0, 2883,  980,
     586     1001,  991, 2883, 1007, 1047, 2157, 1023, 1069, 2153, 2883,
     587     2883,  964,  966, 1055, 1008, 1094,  969, 1086, 1009, 2883,
     588
     589     2883, 2149, 2147, 2145,    0, 2142,    0, 2140,    0, 2138,
     590        0, 2883,  922,  986,  988, 1008, 1036,  990, 1071, 1007,
     591     1073, 1000, 1012, 1025, 1063, 1075, 1081, 1084, 1085, 1093,
     592     1088, 1030, 1087, 1095, 1096, 2138, 1086, 2135, 1104, 2134,
     593     1099, 1106, 1110, 1107, 1112, 1117, 1113, 2133, 1119, 2131,
     594     1121, 1124, 1125, 1126, 1127, 1129, 1135, 2128, 1133, 2125,
     595     1131, 1136, 1137, 1138, 1139, 1143, 1145, 1151, 1152, 1153,
     596     1155,  764, 1157, 1156, 1158, 1166, 1169, 1167, 1172, 2124,
     597     1170, 1176, 1179, 1238, 2120,    0, 2118,    0, 2115,    0,
     598     2112,    0, 1225, 2111,    0, 2110,    0, 2108, 2105, 2102,
     599
     600        0, 2101,    0, 1229, 2100, 1235, 1251, 1237, 1276, 1242,
     601     1193, 1193, 2883, 1292, 1310, 1303, 2110, 2083, 2092, 2091,
     602        0, 2090,    0, 2088,    0, 2085,    0, 2082,    0, 2081,
     603        0, 1174, 1214, 2083, 1178, 1211, 1258, 1233, 1259, 1213,
     604     1286, 1257, 1269, 1287, 1234, 1288, 1290, 1303, 1293, 1292,
     605      234, 1306, 1294, 1295, 1310, 1317, 2081, 1327, 1324, 2078,
     606     1311, 1314, 1326, 1330, 2075, 1331, 1332, 1334, 1335, 2074,
     607     1336, 1337, 2073, 1338, 1343, 2071, 2068, 2067, 1344, 1345,
     608     1348, 2066, 1228, 1353, 1354, 1355, 1356, 1370, 2064, 2061,
     609     1360, 1357, 2060, 1359, 1362, 2059, 1371, 2107, 2021,    0,
     610
     611     2019,    0, 2018,    0, 2015,    0, 2012,    0, 2011,    0,
     612     2010,    0, 2008,    0, 1408, 1414, 1442, 1425, 2005, 2883,
     613     1431, 1418, 1239, 1432, 2002, 2883, 2001,    0, 2000,    0,
     614     1998,    0, 1995,    0,    0,    0, 1997,    0, 1419, 1422,
     615     1426, 1394, 1374, 1421, 1436, 1438, 1410, 1448, 1441, 1439,
     616     1449, 1453, 1456, 1458, 1459, 1460, 1491, 1466, 1465, 1467,
     617     1468, 1470, 1469, 1996, 1471, 1474, 1479, 1994, 1991, 1990,
     618     1482, 1472, 1989, 1483, 1987, 1980, 1484, 1490, 1978, 1977,
     619     1974, 1970, 1966, 1962, 1489, 1495, 1959, 1501, 1503, 1958,
     620     2007, 2883, 1952,    0, 1949,    0,    0,    0, 1951,    0,
     621
     622        0,    0, 2883,    0,    0,    0,    0, 1549, 1947, 2883,
     623     2883, 1541, 1945,    0, 1942,    0,    0,    0,    0, 1941,
     624     1487, 1507, 1943, 1504, 1525, 1526, 1509, 1533, 1538, 1527,
     625     1941, 1528, 1542, 1547, 1543, 1548, 1578, 1550, 1551, 1580,
     626     1558, 1563, 1565, 1567, 1566, 1568, 1572, 1938, 1937, 1570,
     627     1936, 1934, 1571, 1574, 1582, 1931, 1575, 1585,    0,    0,
     628        0, 1927, 1926, 1924, 1627,    0, 1921, 1920, 1919, 1917,
     629     1914, 1916, 1915, 1913, 1910, 1584, 1590, 1587, 1595, 1605,
     630     1586, 1606, 1608, 1611, 1612, 1641, 1909, 1616, 1908, 1617,
     631     1621, 1624, 1626, 1618, 1622, 1906, 1631, 1903, 1902, 1901,
     632
     633     1632, 1899, 1892, 1887, 1886, 1883, 1882, 1881, 1879, 1862,
     634     1853, 1852, 1849, 1842, 1839, 1635, 1835, 1636, 1638, 1637,
     635     1639, 1643, 1644, 1833, 1642, 1674, 1649, 1832, 1650, 1663,
     636     1664, 1659, 1291, 1658, 1665, 1808, 1807, 1806, 1799, 1797,
     637     1796, 1754, 1751, 1750, 1748, 1747, 1746, 1741, 1742, 1670,
     638     1671, 1673, 1675, 1677, 1679, 1680, 1741, 1739, 1683, 1737,
     639     1693, 1685, 1687, 1690, 1689, 1689, 1650, 1648, 1503, 1422,
     640     1370, 1369, 1186, 1694, 1699, 1053, 1705, 1700, 1706, 1049,
     641     1709, 1713, 1714, 1015,  968,  930,  798,  764, 1707, 1715,
     642     1718, 1719, 1720, 1722,  644,  570, 1724,  539,  493, 1726,
     643
     644     1728,  407,  286, 1731, 1732, 1733, 1735, 1734, 1736, 1738,
     645      233,  137, 2883, 1811, 1824, 1837, 1847, 1857, 1870, 1880,
     646     1893, 1906, 1919, 1927, 1937, 1944, 1951, 1958, 1965, 1972,
     647     1979, 1986, 1993, 2000, 2007, 2011, 2019, 2025, 2032, 2039,
     648     2046, 2053, 2056, 2063, 2069, 2082, 2095, 2102, 2109, 2116,
     649     2123, 2126, 2133, 2136, 2143, 2146, 2153, 2156, 2163, 2166,
     650     2173, 2176, 2183, 2186, 2193, 2201, 2208, 2215, 2222, 2229,
     651     2232, 2239, 2242, 2249, 2252, 2259, 2265, 2278, 2285, 2292,
     652     2295, 2302, 2305, 2312, 2315, 2322, 2325, 2332, 2335, 2342,
     653     2345, 2352, 2359, 2362, 2369, 2372, 2379, 2386, 2393, 2396,
     654
     655     2403, 2406, 2413, 2416, 2423, 2426, 2433, 2436, 2443, 2449,
     656     2462, 2469, 2476, 2479, 2486, 2489, 2496, 2499, 2506, 2509,
     657     2516, 2519, 2526, 2529, 2536, 2539, 2546, 2549, 2556, 2563,
     658     2566, 2573, 2576, 2583, 2586, 2593, 2596, 2599, 2605, 2612,
     659     2621, 2628, 2635, 2638, 2645, 2648, 2651, 2657, 2664, 2667,
     660     2670, 2673, 2676, 2679, 2682, 2685, 2692, 2695, 2702, 2705,
     661     2708, 2711, 2714, 2724, 2731, 2734, 2737, 2740, 2747, 2754,
     662     2761, 2764, 2771, 2778, 2785, 2792, 2799, 2806, 2813, 2820,
     663     2827, 2834, 2841, 2848, 2855, 2862, 2869
    663664    } ;
    664665
    665 static yyconst flex_int16_t yy_def[1083] =
     666static yyconst flex_int16_t yy_def[1088] =
    666667    {   0,
    667       908,    1,  909,  909,  908,    5,  910,  910,  911,  911,
    668       908,  908,  908,  908,  908,  908,  908,  912,  908,  908,
    669       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    670       908,   31,  908,  908,  908,  908,  908,  908,  913,  912,
    671       908,  908,  908,  908,  912,  908,  912,  912,  912,  912,
    672       912,  912,  912,  912,  912,  912,  912,  912,  912,  912,
    673       912,  912,  912,  908,  908,  908,  908,  908,  914,  908,
    674       908,  908,  915,  908,  908,  916,  908,  908,  917,  908,
    675       908,  908,  908,  908,  908,  908,  912,  908,  908,  908,
    676       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    677 
    678       908,  918,  908,  908,   30,  908,  908,  908,  908,  919,
    679        30,  908,   31,  908,  908,   31,  908,  908,  908,  908,
    680       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    681       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    682       920,  908,  908,  908,  908,  912,  921,  922,  908,  908,
    683       912,  912,  912,  912,  912,  912,  912,  912,  912,  912,
    684       912,  912,  912,  912,  912,  912,  912,  912,  912,  912,
    685       912,  912,  912,  912,  912,  912,  912,  912,  912,  912,
    686       912,  912,  912,  912,  912,  912,  912,  912,  912,  912,
    687       912,  912,  912,  912,  912,  912,  912,  912,  908,  908,
    688 
    689       908,  914,  914,  914,  908,  914,  908,  915,  908,  923,
    690       924,  916,  908,  908,  908,  908,  925,  926,  927,  917,
    691       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    692       908,  908,  908,  928,  929,  908,  100,  908,  908,  908,
    693       908,  100,  918,  908,  100,  111,  246,  908,  908,  908,
    694       908,  908,  908,  908,  908,  930,  931,  932,  908,  908,
    695       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    696       908,  908,  933,  908,  934,  935,  936,  937,  938,  939,
    697       908,  940,  940,  940,  940,  940,  940,  940,  940,  940,
    698       940,  940,  940,  940,  940,  940,  940,  940,  940,  940,
    699 
    700       940,  940,  940,  940,  940,  940,  940,  940,  940,  940,
    701       940,  940,  940,  940,  940,  940,  940,  940,  940,  940,
    702       940,  940,  940,  940,  940,  940,  940,  940,  940,  940,
    703       940,  940,  940,  940,  940,  940,  940,  940,  940,  940,
    704       940,  940,  940,  940,  940,  940,  940,  940,  940,  940,
    705       941,  942,  943,  944,  945,  946,  947,  948,  908,  908,
    706       949,  950,  951,  952,  953,  954,  908,  908,  908,  908,
    707       908,  955,  956,  957,  958,  908,  908,  908,  908,  908,
    708       908,  908,  382,  908,  378,  385,  908,  908,  959,  960,
    709       961,  908,  908,  908,  961,  908,  908,  908,  962,  963,
    710 
    711       964,  965,  966,  967,  968,  969,  970,  971,  908,  972,
    712       972,  972,  972,  972,  972,  972,  972,  972,  972,  972,
    713       972,  972,  972,  972,  972,  972,  972,  972,  972,  972,
    714       972,  972,  972,  972,  972,  972,  972,  972,  972,  972,
    715       972,  972,  972,  972,  972,  972,  972,  972,  972,  972,
    716       972,  972,  972,  972,  972,  972,  972,  972,  972,  972,
    717       972,  972,  972,  972,  972,  972,  972,  972,  972,  972,
    718       972,  972,  972,  972,  972,  972,  972,  972,  972,  973,
    719       974,  975,  976,  977,  978,  979,  980,  981,  908,  982,
    720       983,  984,  985,  986,  986,  987,  988,  989,  990,  908,
    721 
    722       500,  908,  908,  991,  908,  991,  908,  908,  908,  908,
    723       908,  908,  908,  908,  992,  993,  994,  995,  996,  997,
    724       998,  999, 1000, 1001, 1002, 1003, 1004, 1005, 1005, 1005,
    725      1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005,
    726      1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005,
    727      1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005,
    728      1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005,
    729      1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005,
    730      1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005,
    731      1005, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013,
    732 
    733      1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022,  908,
    734       908,  908,  908, 1023,  908,  612,  908,  908,  908,  616,
    735       908, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032,
    736      1033, 1034, 1035, 1034, 1034, 1034, 1034, 1034, 1034, 1034,
    737      1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034,
    738      1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034,
    739      1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034,
    740      1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034,
    741      1034, 1034, 1034, 1034, 1034, 1036,  908, 1037, 1038, 1039,
    742      1040, 1041, 1042, 1043, 1044, 1045, 1046,  908, 1047, 1048,
    743 
    744      1049, 1050,  908,  703,  908,  908,  908, 1051, 1052, 1053,
    745      1054, 1055, 1056, 1057, 1058, 1059, 1059, 1059, 1059, 1059,
    746      1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059,
    747      1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059,
    748      1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059,
    749      1059, 1059, 1059, 1060, 1061, 1062, 1063, 1064, 1065,  908,
    750      1066, 1051, 1053, 1067, 1068, 1058, 1059, 1059, 1059, 1059,
    751      1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059,
    752      1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059,
    753      1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1069, 1070,
    754 
    755      1063, 1071, 1064, 1072, 1065, 1073, 1074, 1067, 1075, 1068,
    756      1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059,
    757      1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059,
    758      1076, 1069, 1077, 1070, 1078, 1071, 1079, 1072, 1080, 1073,
    759      1081, 1074, 1075, 1059, 1059, 1059, 1059, 1059, 1059, 1059,
    760      1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059,
    761      1082, 1076, 1077, 1078, 1079, 1053, 1080, 1081, 1059, 1059,
    762      1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059,
    763      1059, 1082, 1053, 1059, 1059, 1059, 1059, 1059, 1059, 1059,
    764      1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059,
    765 
    766      1059, 1059, 1059, 1059, 1059, 1059, 1059,    0,  908,  908,
    767       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    768       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    769       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    770       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    771       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    772       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    773       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    774       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    775       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    776 
    777       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    778       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    779       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    780       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    781       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    782       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    783       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    784       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    785       908,  908
     668      913,    1,  914,  914,  913,    5,  915,  915,  916,  916,
     669      913,  913,  913,  913,  913,  913,  913,  917,  913,  913,
     670      913,  913,  913,  913,  913,  913,  913,  913,  913,  913,
     671      913,   31,  913,  913,  913,  913,  913,  913,  918,  917,
     672      913,  913,  913,  913,  917,  913,  917,  917,  917,  917,
     673      917,  917,  917,  917,  917,  917,  917,  917,  917,  917,
     674      917,  917,  917,  917,  913,  913,  913,  913,  913,  919,
     675      913,  913,  913,  920,  913,  913,  921,  913,  913,  922,
     676      913,  913,  913,  913,  913,  913,  913,  917,  913,  913,
     677      913,  913,  913,  913,  913,  913,  913,  913,  913,  913,
     678
     679      913,  913,  923,  913,  913,   30,  913,  913,  913,  913,
     680      924,   30,  913,   31,  913,  913,   31,  913,  913,  913,
     681      913,  913,  913,  913,  913,  913,  913,  913,  913,  913,
     682      913,  913,  913,  913,  913,  913,  913,  913,  913,  913,
     683      913,  925,  913,  913,  913,  913,  917,  926,  927,  913,
     684      913,  917,  917,  917,  917,  917,  917,  917,  917,  917,
     685      917,  917,  917,  917,  917,  917,  917,  917,  917,  917,
     686      917,  917,  917,  917,  917,  917,  917,  917,  917,  917,
     687      917,  917,  917,  917,  917,  917,  917,  917,  917,  917,
     688      917,  917,  917,  917,  917,  917,  917,  917,  917,  917,
     689
     690      913,  913,  913,  919,  919,  919,  913,  919,  913,  920,
     691      913,  928,  929,  921,  913,  913,  913,  913,  930,  931,
     692      932,  922,  913,  913,  913,  913,  913,  913,  913,  913,
     693      913,  913,  913,  913,  913,  933,  934,  913,  101,  913,
     694      913,  913,  913,  101,  923,  913,  101,  112,  248,  913,
     695      913,  913,  913,  913,  913,  913,  913,  935,  936,  937,
     696      913,  913,  913,  913,  913,  913,  913,  913,  913,  913,
     697      913,  913,  913,  913,  938,  913,  939,  940,  941,  942,
     698      943,  944,  913,  945,  945,  945,  945,  945,  945,  945,
     699      945,  945,  945,  945,  945,  945,  945,  945,  945,  945,
     700
     701      945,  945,  945,  945,  945,  945,  945,  945,  945,  945,
     702      945,  945,  945,  945,  945,  945,  945,  945,  945,  945,
     703      945,  945,  945,  945,  945,  945,  945,  945,  945,  945,
     704      945,  945,  945,  945,  945,  945,  945,  945,  945,  945,
     705      945,  945,  945,  945,  945,  945,  945,  945,  945,  945,
     706      945,  945,  945,  946,  947,  948,  949,  950,  951,  952,
     707      953,  913,  913,  954,  955,  956,  957,  958,  959,  913,
     708      913,  913,  913,  913,  960,  961,  962,  963,  913,  913,
     709      913,  913,  913,  913,  913,  385,  913,  381,  388,  913,
     710      913,  964,  965,  966,  913,  913,  913,  966,  913,  913,
     711
     712      913,  967,  968,  969,  970,  971,  972,  973,  974,  975,
     713      976,  913,  977,  977,  977,  977,  977,  977,  977,  977,
     714      977,  977,  977,  977,  977,  977,  977,  977,  977,  977,
     715      977,  977,  977,  977,  977,  977,  977,  977,  977,  977,
     716      977,  977,  977,  977,  977,  977,  977,  977,  977,  977,
     717      977,  977,  977,  977,  977,  977,  977,  977,  977,  977,
     718      977,  977,  977,  977,  977,  977,  977,  977,  977,  977,
     719      977,  977,  977,  977,  977,  977,  977,  977,  977,  977,
     720      977,  977,  977,  978,  979,  980,  981,  982,  983,  984,
     721      985,  986,  913,  987,  988,  989,  990,  991,  991,  992,
     722
     723      993,  994,  995,  913,  504,  913,  913,  996,  913,  996,
     724      913,  913,  913,  913,  913,  913,  913,  913,  997,  998,
     725      999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008,
     726     1009, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010,
     727     1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010,
     728     1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010,
     729     1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010,
     730     1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010,
     731     1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010,
     732     1010, 1010, 1010, 1010, 1010, 1010, 1010, 1011, 1012, 1013,
     733
     734     1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023,
     735     1024, 1025, 1026, 1027,  913,  913,  913,  913, 1028,  913,
     736      617,  913,  913,  913,  621,  913, 1029, 1030, 1031, 1032,
     737     1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1039, 1039,
     738     1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039,
     739     1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039,
     740     1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039,
     741     1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039,
     742     1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039,
     743     1041,  913, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049,
     744
     745     1050, 1051,  913, 1052, 1053, 1054, 1055,  913,  708,  913,
     746      913,  913, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063,
     747     1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064,
     748     1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064,
     749     1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064,
     750     1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1065, 1066,
     751     1067, 1068, 1069, 1070,  913, 1071, 1056, 1058, 1072, 1073,
     752     1063, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064,
     753     1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064,
     754     1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064,
     755
     756     1064, 1064, 1064, 1074, 1075, 1068, 1076, 1069, 1077, 1070,
     757     1078, 1079, 1072, 1080, 1073, 1064, 1064, 1064, 1064, 1064,
     758     1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064,
     759     1064, 1064, 1064, 1064, 1064, 1081, 1074, 1082, 1075, 1083,
     760     1076, 1084, 1077, 1085, 1078, 1086, 1079, 1080, 1064, 1064,
     761     1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064,
     762     1064, 1064, 1064, 1064, 1064, 1087, 1081, 1082, 1083, 1084,
     763     1058, 1085, 1086, 1064, 1064, 1064, 1064, 1064, 1064, 1064,
     764     1064, 1064, 1064, 1064, 1064, 1064, 1087, 1058, 1064, 1064,
     765     1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064,
     766
     767     1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064,
     768     1064, 1064,    0,  913,  913,  913,  913,  913,  913,  913,
     769      913,  913,  913,  913,  913,  913,  913,  913,  913,  913,
     770      913,  913,  913,  913,  913,  913,  913,  913,  913,  913,
     771      913,  913,  913,  913,  913,  913,  913,  913,  913,  913,
     772      913,  913,  913,  913,  913,  913,  913,  913,  913,  913,
     773      913,  913,  913,  913,  913,  913,  913,  913,  913,  913,
     774      913,  913,  913,  913,  913,  913,  913,  913,  913,  913,
     775      913,  913,  913,  913,  913,  913,  913,  913,  913,  913,
     776      913,  913,  913,  913,  913,  913,  913,  913,  913,  913,
     777
     778      913,  913,  913,  913,  913,  913,  913,  913,  913,  913,
     779      913,  913,  913,  913,  913,  913,  913,  913,  913,  913,
     780      913,  913,  913,  913,  913,  913,  913,  913,  913,  913,
     781      913,  913,  913,  913,  913,  913,  913,  913,  913,  913,
     782      913,  913,  913,  913,  913,  913,  913,  913,  913,  913,
     783      913,  913,  913,  913,  913,  913,  913,  913,  913,  913,
     784      913,  913,  913,  913,  913,  913,  913,  913,  913,  913,
     785      913,  913,  913,  913,  913,  913,  913,  913,  913,  913,
     786      913,  913,  913,  913,  913,  913,  913
    786787    } ;
    787788
    788 static yyconst flex_int16_t yy_nxt[2963] =
     789static yyconst flex_int16_t yy_nxt[2969] =
    789790    {   0,
    790791       12,   13,   14,   15,   15,   15,   13,   16,   17,   12,
     
    794795       18,   18,   18,   40,   18,   18,   18,   18,   18,   40,
    795796       18,   41,   42,   43,   44,   45,   46,   47,   48,   49,
    796        50,   51,   52,   53,   18,   54,   18,   55,   18,   18,
    797        56,   18,   57,   58,   59,   60,   61,   62,   18,   18,
    798        63,   64,   65,   66,   67,   68,   85,   93,   86,   86,
    799        68,   89,   90,   69,   72,   72,   72,   72,   72,   72,
    800 
    801        72,   72,   72,   72,   73,   72,   72,   72,   72,   72,
    802        72,   72,   72,   72,   72,   72,   72,   72,   72,   72,
    803        72,   72,   72,   72,   72,   72,   72,   72,   72,   73,
     797       50,   51,   52,   53,   18,   54,   18,   55,   56,   18,
     798       57,   18,   58,   59,   60,   61,   62,   63,   18,   18,
     799       64,   65,   66,   67,   68,   69,   86,   94,   87,   87,
     800       69,   90,   91,   70,   73,   73,   73,   73,   73,   73,
     801
     802       73,   73,   73,   73,   74,   73,   73,   73,   73,   73,
    804803       73,   73,   73,   73,   73,   73,   73,   73,   73,   73,
    805        73,   73,   73,   73,   73,   72,   74,   72,   72,   73,
    806        75,   73,   73,   73,   73,   73,   73,   73,   73,   73,
    807        73,   73,   73,   73,   73,   73,   73,   73,   73,   73,
    808        73,   73,   73,   73,   73,   72,   72,   72,   72,   77,
    809        77,   80,   80,  124,  125,   91,  142,   80,   80,   88,
    810        77,   77,   81,   82,   83,   83,   83,   81,   83,   82,
    811 
    812        84,   84,   84,   83,   92,   94,   88,  143,  147,   99,
    813        96,  100,  100,  100,  100,  100,  100,  256,  908,   95,
    814       101,   86,   97,   98,   86,  102,  162,  119,  144,   78,
    815        78,   78,   78,  145,  148,  103,  104,   88,  105,  105,
    816       105,  105,  106,  106,  120,   88,  121,  122,  149,  267,
    817       150,  268,  258,  264,  185,  107,  199,  652,  160,  108,
    818       161,  151,  152,  153,   88,  109,  110,  154,  155,  163,
    819       156,  111,   88,  157,  158,  146,  164,  107,   88,   88,
    820        88,  159,  165,  112,  210,   88,   88,   88,  198,   88,
    821        88,  109,  197,   88,  110,  104,  254,  113,  113,  113,
    822 
    823       113,  113,  113,   88,  170,  178,  171,  200,  196,   88,
    824       211,  181,  166,  234,  107,  172,  167,  182,  114,  179,
    825       255,  168,   88,  275,  115,  169,  180,  173,  253,   88,
    826       116,   88,  908,   88,   88,  174,  107,  175,  286,  235,
    827       176,  252,  117,  267,  177,  268,  252,  253,  183,  276,
    828       115,  126,  284,  184,  253,  127,  128,   88,  129,  144,
    829       130,  131,  908,  132,  145,  133,   88,  259,  262,  186,
    830       187,  261,   88,  253,  134,  135,  136,  194,  190,  188,
    831       269,  267,  189,  268,  290,  260,  191,  269,  192,  260,
    832       908,  261,  263,  193,  267,  137,  268,  261,  138,  267,
    833 
    834       267,  268,  268,   88,   88,   88,  146,  201,   82,   83,
    835        83,   83,  201,  204,  205,  202,   88,  261,  204,  318,
    836       195,  270,  267,  285,  268,  139,  140,   81,   82,   83,
    837        83,   83,   81,  309,  206,  206,  206,  206,  206,  206,
    838       213,  214,  267,   88,  268,  213,  144,  215,  267,  271,
    839       268,  145,  215,   83,   82,   83,   83,   83,   83,  287,
    840        88,  216,  216,  216,  216,   83,   82,   84,   84,   84,
    841        83,   88,  215,  245,  245,  245,  245,  245,  245,  246,
    842       246,  246,  246,  267,  267,  268,  268,   88,  217,  288,
    843        88,  215,   88,   88,   88,   88,  215,  215,   88,  436,
    844 
    845       215,  215,  282,   88,  304,   88,   88,  908,  215,  283,
    846        88,  215,  247,  215,  218,  215,  289,  219,  221,  302,
    847       303,   88,  222,  223,   88,  321,  307,  224,  225,  312,
    848       226,   88,  227,   88,  310,  908,   88,  313,   88,  308,
    849        88,  228,  229,  230,  104,   88,  106,  106,  106,  106,
    850       106,  106,  305,  306,  311,   88,  320,  314,   88,   88,
    851       315,   88,  231,  107,  249,  232,  249,  317,   88,  250,
    852       250,  250,  250,  250,  250,  319,   88,  328,  316,  248,
    853        88,  327,   88,  323,   88,  107,  322,  367,   88,  368,
    854        88,   88,   88,  233,  237,  237,  237,  237,  237,  237,
    855 
    856       333,  326,  251,  334,   88,   88,  324,  329,   88,  336,
    857       238,  239,  240,  325,  241,  240,   88,  342,  338,  330,
    858       335,  144,  781,   88,  337,   88,   88,  242,   88,  331,
    859       332,  340,  240,  239,  240,   88,  339,  241,  345,  240,
    860       291,  292,  293,  350,  294,  295,  346,  343,  296,   88,
    861       297,   88,  353,  341,   88,  298,  299,  300,  367,  301,
    862       368,  367,  347,  368,  348,   88,   88,  349,  344,  201,
    863        82,   83,   83,   83,  201,  204,  205,  202,  354,  368,
    864       204,  204,  205,  414,  213,  214,  204,  351,  205,  213,
    865        88,  908,  351,  367,  352,  368,  206,  206,  206,  206,
    866 
    867       206,  206,  206,  206,  206,  206,  206,  206,  206,  206,
    868       206,  206,  206,  206,  359,  359,  359,  359,  368,  367,
    869       908,  368,  369,  367,  367,  368,  368,  367,  370,  368,
    870       367,  367,  368,  368,  367,  376,  368,  376,  376,  380,
    871       267,  380,  268,  377,  380,  377,   88,  360,  378,  378,
    872       378,  378,  378,  378,  267,  384,  268,  908,  376,  410,
    873       376,  380,  104,  380,  246,  246,  246,  246,  380,  382,
    874       382,  382,  382,  382,  382,  106,  106,  106,  106,  106,
    875       106,  379,  250,  250,  250,  250,  250,  250,   88,   88,
    876        88,   88,  107,   88,   88,  387,  415,  247,   88,  417,
    877 
    878        88,   88,  383,  397,  399,  428,  411,  412,  259,  413,
    879       416,   88,  457,  425,  107,  385,  385,  385,  385,  385,
    880       385,  387,  390,  106,  106,  106,  106,  106,  106,  397,
    881       400,  238,  249,  240,  249,  241,  240,  250,  250,  250,
    882       250,  250,  250,   88,   88,  392,   88,  393,  386,   88,
    883        88,  394,  429,  240,   88,  240,  259,  395,  241,   88,
    884       240,  113,  113,  113,  113,  113,  113,  422,   88,  396,
    885       418,   88,  423,  393,  419,  424,   88,  394,   88,   88,
    886       420,  421,   88,   88,  426,  427,   88,  434,   88,  430,
    887        88,   88,  435,   88,  264,   88,  432,  433,  431,   88,
    888 
    889       441,   88,   88,   88,  442,   88,  437,  443,  438,  439,
    890       440,  445,  444,   88,   88,   88,   88,   88,  449,  446,
    891       450,  447,  451,  448,   88,   88,   88,   88,   88,  452,
    892        88,  459,   88,   88,   88,  454,   88,   88,   88,  456,
    893        88,   88,  458,  455,   88,  461,  453,  466,   88,  460,
    894        88,   88,  144,   88,  465,  462,  464,  463,   88,   88,
    895        88,  471,  467,   88,  468,   88,  469,  473,  470,   88,
    896       472,  474,  475,  476,  477,  478,   88,  351,  205,  205,
    897        88,  479,  351,   88,  352,  203,  215,  215,  215,  215,
    898       359,  359,  359,  359,  528,  367,   88,  368,  367,  531,
    899 
    900       368,  378,  378,  378,  378,  378,  378,  377,  505,  377,
    901        88,  513,  378,  378,  378,  378,  378,  378,  506,  489,
    902       500,  500,  500,  500,  500,  500,  237,  237,  237,  237,
    903       237,  237,  535,   88,  505,  514,  238,   88,  240,   88,
    904       241,  240,  246,  246,  246,  246,  106,  106,  508,  529,
    905       533,  505,  530,  501,  509,  509,   88,   88,  240,  381,
    906       240,  507,   88,  241,  675,  240,  382,  382,  382,  382,
    907       382,  382,  390,  508,   88,  384,   88,  505,  538,  539,
    908       509,  509,  238,  239,  240,  532,  241,  240,  385,  385,
    909       385,  385,  385,  385,   88,  392,  543,  393,   88,  383,
    910 
    911       548,  394,  908,  908,  240,  239,  240,  395,  510,  241,
    912       510,  240,   88,  511,  511,  511,  511,  511,  511,  396,
    913        88,  386,   88,  393,   88,  537,  392,  394,  393,  534,
    914        88,  536,  394,   88,   88,   88,   88,  540,  515,  545,
    915        88,   88,   88,   88,  550,   88,  512,   88,  544,   88,
    916       396,  541,  542,   88,  393,  546,  553,  549,  394,  554,
    917       551,   88,  547,   88,  552,  556,  555,   88,   88,  559,
    918        88,   88,   88,   88,  557,   88,  558,  561,   88,   88,
    919        88,   88,  560,   88,   88,  562,   88,   88,  565,  569,
    920        88,  563,   88,  567,  564,   88,  573,  566,  570,  568,
    921 
    922        88,   88,   88,   88,   88,  574,  571,   88,  572,  578,
    923       575,  581,  576,   88,  582,  580,   88,  577,   88,  579,
    924        88,   88,   88,  205,   88,  585,  586,   88,  583,  593,
    925       592,  505,  589,  591,  615,  584,  587,  588,  215,  215,
    926       215,  215,   88,   88,  590,  500,  500,  500,  500,  500,
    927       500,  382,  382,  382,  382,  382,  382,  505,  636,  634,
    928       615,  238,   88,  240,   88,  241,  240,  385,  385,  385,
    929       385,  385,  385,  908,  883,  635,  505,  638,  501,   88,
    930        88,  505,   88,  240,  502,  240,  506,  611,  241,  611,
    931       240,  614,  612,  612,  612,  612,  612,  612,   88,  637,
    932 
    933       503,  647,  505,  641,  639,   88,   88,  505,  511,  511,
    934       511,  511,  511,  511,  510,  908,  510,  642,  640,  511,
    935       511,  511,  511,  511,  511,  613,  616,  616,  616,  616,
    936       616,  616,   88,   88,   88,  643,   88,   88,   88,   88,
    937        88,   88,  617,  649,  618,   88,  619,  618,  648,  645,
    938       651,  650,   88,  644,  653,  646,   88,   88,   88,  620,
    939        88,  656,  657,  654,  618,   88,  618,  659,  658,  619,
    940        88,  618,   88,  655,   88,   88,   88,  660,   88,   88,
    941       661,  663,   88,   88,  664,  662,   88,   88,  669,   88,
    942       666,   88,   88,  665,  667,  670,  671,  668,   88,   88,
    943 
    944        88,   88,   88,   88,  673,   88,  677,   88,  676,  674,
    945       680,  672,  681,  679,   88,  682,   88,  908,  908,  683,
    946       684,   88,  678,  500,  500,  500,  500,  500,  500,  612,
    947       612,  612,  612,  612,  612,  611,  685,  611,  721,   88,
    948       612,  612,  612,  612,  612,  612,  616,  616,  616,  616,
    949       616,  616,  720,  705,  705,   88,  610,  703,  703,  703,
    950       703,  703,  703,  705,   88,  706,  908,  706,   88,  716,
    951       706,   88,  725,  617,   88,  618,  705,  619,  618,  620,
    952       719,  718,  717,   88,   88,   88,  705,  706,   88,  706,
    953       704,  722,  723,   88,  706,  618,  724,  618,   88,  729,
    954 
    955       619,  726,  618,   88,   88,  728,  727,   88,   88,   88,
    956       735,  733,   88,   88,   88,   88,   88,   88,   88,   88,
    957        88,  731,   88,  738,   88,  730,  734,  736,  741,  732,
    958        88,  744,   88,  737,  739,   88,   88,  740,   88,   88,
    959       742,  748,  743,  749,  745,  746,   88,  747,  750,   88,
    960       753,   88,   88,   88,   88,  882,  751,  773,  752,  703,
    961       703,  703,  703,  703,  703,  616,  616,  616,  616,  616,
    962       616,   88,  767,  772,   88,  617,   88,  618,  769,  619,
    963       618,  768,   88,  770,   88,   88,   88,  771,  774,   88,
    964       776,   88,  704,   88,  779,  778,   88,  618,  707,  618,
    965 
    966        88,   88,  619,  782,  618,  784,  777,  775,   88,   88,
    967       783,  785,   88,   88,   88,   88,   88,  780,   88,   88,
    968       787,   88,  786,  788,   88,  791,   88,  789,   88,   88,
    969        88,   88,   88,  813,  797,   88,  790,  792,  794,  798,
    970        88,   88,  793,  795,  814,  796,  703,  703,  703,  703,
    971       703,  703,  811,   88,   88,   88,   88,  812,  816,  819,
    972       821,   88,   88,  815,  822,  823,   88,  818,  820,   88,
    973        88,  817,  825,  824,   88,   88,   88,  826,   88,  760,
    974        88,   88,   88,   88,   88,  827,  847,   88,   88,   88,
    975       849,   88,  850,  852,   88,   88,   88,  853,  828,  829,
    976 
    977       846,  830,  845,   88,   88,   88,  848,  844,  855,  851,
    978        88,   88,  857,  856,   88,   88,   88,  854,   88,   88,
    979       858,  871,  859,  870,   88,   88,   88,   88,   88,  875,
    980       860,  877,   88,  872,   88,  878,  869,   88,   88,   88,
    981        88,   88,   88,  873,  876,  885,  879,   88,  881,  874,
    982       880,  884,   88,   88,  892,  886,   88,  887,  888,  889,
    983        88,   88,   88,  890,  891,   88,   88,   88,  894,   88,
    984       896,   88,  897,   88,   88,   88,  895,  893,   88,   88,
    985        88,   88,   88,   88,  901,   88,   88,  908,  908,  900,
    986       868,  902,  908,  898,  899,  907,  867,  908,  905,  865,
    987 
    988       908,  903,  904,  864,  906,   70,   70,   70,   70,   70,
    989        70,   70,   70,   70,   70,   70,   70,   70,   76,   76,
    990        76,   76,   76,   76,   76,   76,   76,   76,   76,   76,
    991        76,   79,   79,   79,   79,   79,   79,   79,   79,   79,
    992        79,   79,   79,   79,   87,  908,  863,   87,  908,   87,
    993        87,   87,   87,   87,  141,  862,   88,   88,  141,  141,
    994       141,  141,  141,  141,  203,  203,  203,  203,  203,  203,
    995       203,  203,  203,  203,  203,  203,  203,  208,   88,  908,
    996       208,  843,  208,  208,  208,  208,  208,  212,  908,  212,
    997       212,  842,  212,  212,  212,  212,  212,  212,  840,  212,
    998 
    999       220,  908,  838,  220,  220,  220,  220,  220,  220,  220,
    1000       220,  908,  220,  243,  243,  243,  243,  243,  243,  243,
    1001       243,  243,  243,  243,  243,  243,  257,  257,  836,  257,
    1002       908,  834,  832,  257,  273,   88,   88,  273,   88,  273,
    1003       273,  273,  273,  273,  277,   88,  277,   88,   88,   88,
    1004       277,  279,   88,  279,   88,   88,   88,  279,  355,   88,
    1005       355,  908,  810,  808,  355,  357,  908,  357,  908,  805,
    1006       803,  357,  361,  801,  361,   88,   88,   88,  361,  363,
    1007        88,  363,   88,   88,   88,  363,  365,  766,  365,  763,
    1008       762,  760,  365,  372,  209,  372,  756,  755,  687,  372,
    1009 
    1010       374,   88,  374,   88,   88,   88,  374,  389,   88,  389,
    1011       391,  391,   88,  391,  391,  391,   88,  391,  257,  257,
    1012        88,  257,  273,   88,   88,  273,   88,  273,  273,  273,
    1013       273,  273,  401,   88,  401,   88,   88,   88,  401,  403,
    1014        88,  403,  714,  713,  711,  403,  405,  709,  405,  707,
    1015       614,  702,  405,  277,  701,  277,  407,  699,  407,  697,
    1016       695,  693,  407,  279,  691,  279,   87,  689,  687,   87,
    1017        88,   87,   87,   87,   87,   87,  203,  203,  203,  203,
    1018       203,  203,  203,  203,  203,  203,  203,  203,  203,  480,
    1019       480,  480,  480,  480,  480,  480,  480,  480,  480,  480,
    1020 
    1021       480,  480,  481,   88,  481,   88,   88,   88,  481,  483,
    1022        88,  483,   88,   88,   88,  483,  485,   88,  485,   88,
    1023        88,   88,  485,  355,  633,  355,  487,  631,  487,  629,
    1024       627,  625,  487,  357,  623,  357,  490,  515,  490,  621,
    1025       621,  610,  490,  361,  609,  361,  492,  607,  492,  495,
    1026       495,  605,  492,  363,  603,  363,  494,  601,  494,  599,
    1027       597,  595,  494,  365,   88,  365,  496,   88,  496,   88,
    1028        88,   88,  496,  372,   88,  372,  498,   88,  498,   88,
    1029       527,  525,  498,  374,  523,  374,  504,  521,  504,  519,
    1030       504,  517,  504,  389,  503,  389,  502,  389,  499,  389,
    1031 
    1032       391,  391,  497,  391,  391,  391,  368,  391,  516,  368,
    1033       516,  495,  493,  491,  516,  518,  488,  518,  486,  484,
    1034       482,  518,  520,   88,  520,   88,   88,  409,  520,  401,
    1035       408,  401,  522,  406,  522,  404,  402,  274,  522,  403,
    1036       269,  403,  524,  268,  524,  398,  398,  256,  524,  405,
    1037       388,  405,  526,  388,  526,  244,  381,  375,  526,  407,
    1038       373,  407,   87,  371,  367,   87,  366,   87,   87,   87,
    1039        87,   87,  480,  480,  480,  480,  480,  480,  480,  480,
    1040       480,  480,  480,  480,  480,  594,  364,  594,  362,  358,
    1041       356,  594,  481,  209,  481,  596,  205,  596,   88,  281,
    1042 
    1043       280,  596,  483,  278,  483,  598,  274,  598,  269,  272,
    1044       269,  598,  485,  267,  485,  600,  266,  600,  265,  244,
    1045       236,  600,  487,   86,  487,  602,   86,  602,   88,  209,
    1046       207,  602,  490,   86,  490,  604,  123,  604,  118,   88,
    1047       908,  604,  492,   71,  492,  494,   71,  494,  908,  908,
    1048       908,  494,  606,  908,  606,  908,  908,  908,  606,  496,
    1049       908,  496,  608,  908,  608,  908,  908,  908,  608,  498,
    1050       908,  498,  504,  908,  504,  908,  504,  908,  504,  391,
    1051       908,  391,  908,  908,  908,  391,  622,  908,  622,  908,
    1052       908,  908,  622,  516,  908,  516,  624,  908,  624,  908,
    1053 
    1054       908,  908,  624,  518,  908,  518,  626,  908,  626,  908,
    1055       908,  908,  626,  520,  908,  520,  628,  908,  628,  908,
    1056       908,  908,  628,  522,  908,  522,  630,  908,  630,  908,
    1057       908,  908,  630,  524,  908,  524,  632,  908,  632,  908,
    1058       908,  908,  632,  526,  908,  526,   87,  908,  908,   87,
    1059       908,   87,   87,   87,   87,   87,  686,  686,  686,  686,
    1060       686,  686,  686,  686,  686,  686,  686,  686,  686,  688,
    1061       908,  688,  908,  908,  908,  688,  594,  908,  594,  690,
    1062       908,  690,  908,  908,  908,  690,  596,  908,  596,  692,
    1063       908,  692,  908,  908,  908,  692,  598,  908,  598,  694,
    1064 
    1065       908,  694,  908,  908,  908,  694,  600,  908,  600,  696,
    1066       908,  696,  908,  908,  908,  696,  602,  908,  602,  698,
    1067       908,  698,  908,  908,  908,  698,  604,  908,  604,  700,
    1068       908,  700,  908,  908,  908,  700,  606,  908,  606,   87,
    1069       908,   87,  908,  908,  908,   87,  608,  908,  608,  504,
    1070       908,  504,  908,  908,  908,  504,  708,  908,  708,  908,
    1071       908,  908,  708,  622,  908,  622,  710,  908,  710,  908,
    1072       908,  908,  710,  624,  908,  624,  712,  908,  712,  908,
    1073       908,  908,  712,  626,  908,  626,  141,  908,  141,  908,
    1074       908,  908,  141,  628,  908,  628,  715,  908,  715,  630,
    1075 
    1076       908,  630,   87,  908,  908,   87,  908,   87,   87,   87,
    1077        87,   87,  632,  908,  632,  686,  686,  686,  686,  686,
    1078       686,  686,  686,  686,  686,  686,  686,  686,  754,  908,
    1079       754,  908,  908,  908,  754,  688,  908,  688,  208,  908,
    1080       208,  908,  908,  908,  208,  690,  908,  690,  757,  908,
    1081       757,  692,  908,  692,  208,  908,  908,  208,  908,  208,
    1082       208,  208,  208,  208,  694,  908,  694,  758,  908,  758,
    1083       696,  908,  696,  698,  908,  698,  759,  908,  759,  700,
    1084       908,  700,   87,  908,   87,  761,  908,  761,  908,  908,
    1085       908,  761,  708,  908,  708,  273,  908,  273,  908,  908,
    1086 
    1087       908,  273,  710,  908,  710,  764,  908,  764,  712,  908,
    1088       712,  141,  908,  141,  765,  908,  765,  908,  908,  908,
    1089       765,   87,  908,  908,   87,  908,   87,   87,   87,   87,
    1090        87,  799,  908,  799,  754,  908,  754,  208,  908,  208,
    1091       800,  908,  800,  908,  908,  908,  800,  802,  908,  802,
    1092       908,  908,  908,  802,  804,  908,  804,  908,  908,  908,
    1093       804,  806,  908,  806,  807,  908,  807,  908,  908,  908,
    1094       807,  809,  908,  809,  908,  908,  908,  809,  831,  908,
    1095       831,  908,  908,  908,  831,  833,  908,  833,  908,  908,
    1096       908,  833,  835,  908,  835,  908,  908,  908,  835,  837,
    1097 
    1098       908,  837,  908,  908,  908,  837,  839,  908,  839,  908,
    1099       908,  908,  839,  841,  908,  841,  908,  908,  908,  841,
    1100       632,  908,  632,  908,  908,  908,  632,  861,  908,  861,
    1101       908,  908,  908,  861,  694,  908,  694,  908,  908,  908,
    1102       694,  698,  908,  698,  908,  908,  908,  698,   87,  908,
    1103        87,  908,  908,  908,   87,  866,  908,  866,  908,  908,
    1104       908,  866,  141,  908,  141,  908,  908,  908,  141,  208,
    1105       908,  208,  908,  908,  908,  208,   11,  908,  908,  908,
    1106       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    1107       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    1108 
    1109       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    1110       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    1111       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    1112       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    1113       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    1114       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    1115       908,  908
     804       73,   73,   73,   73,   73,   73,   73,   73,   73,   74,
     805       74,   74,   74,   74,   74,   74,   74,   74,   74,   74,
     806       74,   74,   74,   74,   74,   73,   75,   73,   73,   74,
     807       76,   74,   74,   74,   74,   74,   74,   74,   74,   74,
     808       74,   74,   74,   74,   74,   74,   74,   74,   74,   74,
     809       74,   74,   74,   74,   74,   73,   73,   73,   73,   78,
     810       78,   81,   81,  125,  126,   92,  143,   81,   81,   89,
     811       78,   78,   82,   83,   84,   84,   84,   82,   84,   83,
     812
     813       85,   85,   85,   84,   93,   95,   89,  144,  148,  100,
     814       97,  101,  101,  101,  101,  101,  101,  258,  913,   96,
     815      102,   87,   98,   99,   87,  103,  163,  120,  145,   79,
     816       79,   79,   79,  146,  149,  104,  105,   89,  106,  106,
     817      106,  106,  107,  107,  121,   89,  122,  123,  150,  269,
     818      151,  270,  260,  266,  187,  108,   89,  657,  161,  109,
     819      162,  152,  153,  154,   89,  110,  111,  155,  156,  164,
     820      157,  112,   89,  158,  159,  147,  165,  108,   89,  184,
     821       89,  160,  166,  113,  212,   89,   89,   89,  201,   89,
     822       89,  110,  199,   89,  111,  105,   89,  114,  114,  114,
     823
     824      114,  114,  114,   89,  171,  179,  172,  236,  198,   89,
     825      213,  182,  167,  311,  108,  173,  168,  183,  115,  180,
     826       89,  169,   89,  277,  116,  170,  181,  174,  256,  200,
     827      117,   89,  913,  237,   89,  175,  108,  176,   89,  202,
     828      177,  254,  118,  269,  178,  270,  292,  255,  185,  278,
     829      116,  127,  257,  186,  255,  128,  129,   89,  130,  145,
     830      131,  132,  913,  133,  146,  134,   89,  261,  264,  188,
     831      189,  263,  254,  255,  135,  136,  137,  196,  192,  190,
     832      255,  269,  191,  270,   89,  262,  193,  271,  194,  262,
     833      913,  263,  265,  195,  269,  138,  270,  263,  139,  269,
     834
     835      269,  270,  270,   89,  323,  271,  147,  203,   83,   84,
     836       84,   84,  203,  206,  207,  204,   89,  263,  206,  269,
     837      197,  270,  269,  273,  270,  140,  141,   82,   83,   84,
     838       84,   84,   82,  321,  208,  208,  208,  208,  208,  208,
     839      215,  216,   89,  272,  269,  215,  270,  217,  269,  269,
     840      270,  270,  217,   84,   83,   84,   84,   84,   84,   89,
     841      286,  218,  218,  218,  218,   84,   83,   85,   85,   85,
     842       84,   89,  217,  247,  247,  247,  247,  247,  247,  248,
     843      248,  248,  248,   89,   89,  145,  284,   89,  219,   89,
     844      146,  217,  288,  285,   89,   89,  217,  217,   89,   89,
     845
     846      217,  217,  287,  289,   89,  304,  460,  913,  217,  320,
     847       89,  217,  249,  217,  220,  217,  290,  221,  223,  306,
     848       89,  291,  224,  225,   89,  309,  305,  226,  227,   89,
     849      228,   89,  229,   89,  312,  913,   89,   89,  310,   89,
     850       89,  230,  231,  232,  105,   89,  107,  107,  107,  107,
     851      107,  107,  307,  308,  313,   89,   89,   89,  316,  314,
     852      317,  319,  233,  108,  251,  234,  251,  315,   89,  252,
     853      252,  252,  252,  252,  252,  322,   89,   89,  318,  250,
     854       89,  329,   89,  324,   89,  108,   89,   89,  337,  331,
     855      325,   89,   89,  235,  239,  239,  239,  239,  239,  239,
     856
     857       89,  326,  253,   89,  328,  338,  330,   89,  327,  332,
     858      240,  241,  242,  341,  243,  242,   89,  145,  333,  345,
     859       89,  336,   89,   89,   89,  343,   89,  244,  334,  335,
     860      439,  339,  242,  241,  242,   89,  342,  243,   89,  242,
     861      293,  294,  295,  346,  296,  297,  340,  344,  298,   89,
     862      299,  350,   89,  351,   89,  300,  301,  302,  356,  303,
     863       89,   89,  348,  463,  347,  352,  206,  207,  215,  216,
     864      349,  206,   89,  215,  353,  203,   83,   84,   84,   84,
     865      203,  206,  207,  204,  357,  413,  206,  208,  208,  208,
     866      208,  208,  208,  354,  207,  370,   89,  371,  354,  370,
     867
     868      355,  371,  208,  208,  208,  208,  208,  208,  362,  362,
     869      362,  362,  371,  371,  208,  208,  208,  208,  208,  208,
     870      370,  370,  371,  371,  379,  370,  370,  371,  371,  372,
     871      370,  370,  371,  371,  370,  373,  371,  370,  370,  371,
     872      371,  363,  379,  379,  380,  913,  380,  379,  390,  381,
     873      381,  381,  381,  381,  381,  383,  269,  383,  270,  105,
     874      383,  248,  248,  248,  248,  379,  385,  385,  385,  385,
     875      385,  385,  400,  269,  390,  270,   89,  383,   89,  383,
     876      387,   89,  382,  402,  383,  107,  107,  107,  107,  107,
     877      107,   89,   89,  417,  249,   89,  414,  416,  400,  386,
     878
     879      418,   89,  108,  252,  252,  252,  252,  252,  252,  403,
     880      415,  419,   89,   89,   89,   89,   89,  420,  261,  913,
     881      431,  421,  432,  586,  108,  388,  388,  388,  388,  388,
     882      388,  393,  426,   89,  107,  107,  107,  107,  107,  107,
     883       89,  240,  251,  242,  251,  243,  242,  252,  252,  252,
     884      252,  252,  252,  913,  395,  422,  396,   89,  389,  427,
     885      397,  423,  424,  242,   89,  242,  398,  261,  243,   89,
     886      242,  114,  114,  114,  114,  114,  114,   89,  399,  428,
     887      425,   89,  396,   89,   89,   89,  397,  435,   89,   89,
     888      437,   89,   89,  429,  430,   89,  433,  438,   89,   89,
     889
     890      444,   89,  436,  445,  266,  446,   89,   89,  434,  440,
     891      441,   89,  442,  443,   89,  448,   89,  449,   89,   89,
     892      447,   89,   89,  450,  453,  451,  454,  455,   89,  452,
     893       89,   89,   89,   89,   89,   89,   89,  457,   89,   89,
     894      462,   89,   89,  459,  456,   89,  458,  461,  465,   89,
     895      470,   89,  464,   89,   89,   89,  466,  145,  468,  467,
     896       89,  471,  469,   89,  477,  472,  475,   89,   89,  474,
     897       89,  473,   89,  476,   89,  480,  479,  481,  478,  354,
     898      207,  207,   89,  482,  354,  532,  355,  205,  483,  217,
     899      217,  217,  217,  362,  362,  362,  362,  370,  370,  371,
     900
     901      371,   89,  381,  381,  381,  381,  381,  381,  380,  509,
     902      380,  509,  517,  381,  381,  381,  381,  381,  381,  510,
     903       89,  511,  493,  504,  504,  504,  504,  504,  504,  239,
     904      239,  239,  239,  239,  239,  509,  518,  509,   89,  240,
     905       89,  242,   89,  243,  242,  248,  248,  248,  248,  107,
     906      107,  512,   89,  537,  533,  534,  505,  513,  513,   89,
     907       89,  242,  384,  242,   89,  541,  243,   89,  242,  385,
     908      385,  385,  385,  385,  385,  393,  512,   89,  387,  535,
     909      542,  539,   89,  513,  513,  240,  241,  242,   89,  243,
     910      242,  388,  388,  388,  388,  388,  388,  536,  395,  543,
     911
     912      396,   89,  386,  553,  397,   89,  913,  242,  241,  242,
     913      398,  514,  243,  514,  242,   89,  515,  515,  515,  515,
     914      515,  515,  399,   89,  389,   89,  396,   89,  544,  395,
     915      397,  396,  538,   89,  540,  397,   89,   89,   89,   89,
     916       89,  519,  549,  545,  546,   89,  552,   89,   89,  516,
     917      554,   89,  557,  399,  548,  547,   89,  396,   89,   89,
     918      550,  397,   89,  556,   89,   89,  555,  551,  558,   89,
     919      563,   89,  559,   89,  565,  561,   89,   89,   89,   89,
     920      560,   89,  562,   89,  564,   89,  566,   89,   89,   89,
     921       89,   89,  569,  567,  571,   89,  573,   89,  568,  578,
     922
     923      570,  572,  574,   89,   89,   89,  575,   89,   89,   89,
     924       89,  577,  579,  583,  576,  580,  587,  581,   89,   89,
     925      585,   89,   89,  584,   89,  582,   89,  590,   89,  591,
     926       89,   89,  589,  588,  597,  594,  593,  596,  509,  592,
     927      207,  913,  620,  639,  595,  641,  598,  217,  217,  217,
     928      217,  504,  504,  504,  504,  504,  504,  385,  385,  385,
     929      385,  385,  385,   89,  509,   89,   89,  240,  620,  242,
     930      646,  243,  242,  388,  388,  388,  388,  388,  388,  640,
     931       89,  710,  509,  642,  505,   89,   89,  509,  680,  242,
     932      506,  242,  510,  616,  243,  616,  242,  619,  617,  617,
     933
     934      617,  617,  617,  617,  710,  651,  507,  644,  509,   89,
     935       89,   89,  648,  509,  515,  515,  515,  515,  515,  515,
     936      514,   89,  514,  643,  645,  515,  515,  515,  515,  515,
     937      515,  618,  621,  621,  621,  621,  621,  621,   89,   89,
     938       89,  649,   89,   89,   89,   89,   89,   89,  622,  647,
     939      623,  653,  624,  623,  650,   89,  655,  656,   89,  863,
     940      654,  652,   89,   89,  660,  625,   89,  658,  659,   89,
     941      623,  661,  623,  663,  662,  624,   89,  623,   89,   89,
     942      665,  666,   89,   89,   89,  664,   89,   89,   89,   89,
     943       89,  668,  669,  667,  674,   89,   89,   89,  671,  675,
     944
     945       89,  670,  672,  673,  676,   89,   89,   89,   89,   89,
     946      678,   89,   89,  682,   89,  681,  685,  679,  677,  687,
     947      684,  686,   89,   89,  913,  888,   89,  689,  688,  683,
     948      504,  504,  504,  504,  504,  504,  617,  617,  617,  617,
     949      617,  617,  616,  726,  616,  690,   89,  617,  617,  617,
     950      617,  617,  617,  621,  621,  621,  621,  621,  621,  725,
     951      710,  710,   89,  615,  708,  708,  708,  708,  708,  708,
     952      711,   89,  711,   89,   89,  711,  721,  913,   89,  730,
     953      622,  723,  623,  710,  624,  623,  625,  724,   89,  722,
     954       89,   89,  711,   89,  711,  728,  727,  709,  729,  711,
     955
     956       89,   89,  623,  731,  623,   89,  732,  624,   89,  623,
     957       89,   89,   89,  733,  738,  740,  734,   89,   89,   89,
     958       89,   89,   89,   89,   89,  736,   89,  735,  743,  739,
     959      746,   89,  737,  741,   89,   89,   89,  742,  744,   89,
     960      749,   89,   89,   89,  745,  753,  747,   89,  748,  754,
     961      755,  751,  752,   89,  750,   89,   89,  756,  913,   89,
     962      772,   89,  757,  621,  621,  621,  621,  621,  621,  773,
     963      758,  708,  708,  708,  708,  708,  708,   89,   89,   89,
     964       89,  777,  774,  776,  775,   89,  781,  622,  778,  623,
     965       89,  624,  623,  779,   89,   89,  712,  780,  784,   89,
     966
     967       89,  786,   89,   89,  709,  787,  789,  782,  783,  623,
     968       89,  623,  788,  790,  624,   89,  623,   89,   89,   89,
     969       89,  785,   89,   89,   89,  792,   89,   89,  791,  793,
     970       89,  794,   89,  796,   89,  802,   89,   89,   89,   89,
     971      797,  795,   89,  799,  818,  798,  803,   89,  800,  708,
     972      708,  708,  708,  708,  708,  801,  816,   89,   89,  817,
     973       89,  821,  819,   89,   89,  826,  824,  820,   89,   89,
     974       89,  827,  828,   89,   89,  822,   89,  825,   89,  830,
     975      829,  831,  765,   89,   89,  832,  823,   89,   89,   89,
     976       89,   89,  852,   89,   89,   89,   89,  833,  854,  855,
     977
     978      857,   89,   89,  913,  858,  913,  834,  835,  851,  850,
     979       89,   89,  856,  853,  849,   89,   89,   89,  860,  861,
     980      862,  864,   89,   89,  859,   89,   89,   89,  876,   89,
     981      875,   89,   89,  865,  880,   89,  877,   89,  882,   89,
     982      883,   89,   89,  874,  887,   89,   89,  878,  884,  881,
     983      886,   89,   89,  879,  885,  889,  890,   89,   89,   89,
     984      891,   89,  892,  893,  894,   89,   89,   89,  895,  896,
     985       89,   89,   89,  899,   89,  901,   89,  902,   89,  897,
     986       89,  900,  898,   89,   89,   89,   89,   89,   89,   89,
     987       89,   89,  906,   89,   89,  905,  913,  907,  903,  904,
     988
     989      912,  913,  873,  913,  910,  872,  913,  908,  909,  870,
     990      911,   71,   71,   71,   71,   71,   71,   71,   71,   71,
     991       71,   71,   71,   71,   77,   77,   77,   77,   77,   77,
     992       77,   77,   77,   77,   77,   77,   77,   80,   80,   80,
     993       80,   80,   80,   80,   80,   80,   80,   80,   80,   80,
     994       88,  913,  869,   88,  913,   88,   88,   88,   88,   88,
     995      142,  868,  913,  867,  142,  142,  142,  142,  142,  142,
     996      205,  205,  205,  205,  205,  205,  205,  205,  205,  205,
     997      205,  205,  205,  210,   89,   89,  210,   89,  210,  210,
     998      210,  210,  210,  214,  913,  214,  214,  848,  214,  214,
     999
     1000      214,  214,  214,  214,  913,  214,  222,  847,  845,  222,
     1001      222,  222,  222,  222,  222,  222,  222,  913,  222,  245,
     1002      245,  245,  245,  245,  245,  245,  245,  245,  245,  245,
     1003      245,  245,  259,  259,  843,  259,  913,  841,  913,  259,
     1004      275,  839,  837,  275,   89,  275,  275,  275,  275,  275,
     1005      279,   89,  279,   89,   89,   89,  279,  281,   89,  281,
     1006       89,   89,   89,  281,  358,   89,  358,   89,   89,  913,
     1007      358,  360,  815,  360,  813,  913,  913,  360,  364,  810,
     1008      364,  808,  806,   89,  364,  366,   89,  366,   89,   89,
     1009       89,  366,  368,   89,  368,   89,  771,  768,  368,  375,
     1010
     1011      767,  375,  765,  211,  761,  375,  377,  760,  377,  692,
     1012       89,   89,  377,  392,   89,  392,  394,  394,   89,  394,
     1013      394,  394,   89,  394,  259,  259,   89,  259,  275,   89,
     1014       89,  275,   89,  275,  275,  275,  275,  275,  404,   89,
     1015      404,   89,   89,   89,  404,  406,   89,  406,   89,   89,
     1016      719,  406,  408,  718,  408,  716,  714,  712,  408,  279,
     1017      619,  279,  410,  707,  410,  706,  704,  702,  410,  281,
     1018      700,  281,   88,  698,  696,   88,  694,   88,   88,   88,
     1019       88,   88,  205,  205,  205,  205,  205,  205,  205,  205,
     1020      205,  205,  205,  205,  205,  484,  484,  484,  484,  484,
     1021
     1022      484,  484,  484,  484,  484,  484,  484,  484,  485,  692,
     1023      485,   89,   89,   89,  485,  487,   89,  487,   89,   89,
     1024       89,  487,  489,   89,  489,   89,   89,   89,  489,  358,
     1025       89,  358,  491,   89,  491,   89,  638,  636,  491,  360,
     1026      634,  360,  494,  632,  494,  630,  628,  519,  494,  364,
     1027      626,  364,  496,  626,  496,  615,  614,  612,  496,  366,
     1028      499,  366,  498,  499,  498,  610,  608,  606,  498,  368,
     1029      604,  368,  500,  602,  500,  600,   89,   89,  500,  375,
     1030       89,  375,  502,   89,  502,   89,   89,   89,  502,  377,
     1031       89,  377,  508,  531,  508,  529,  508,  527,  508,  392,
     1032
     1033      525,  392,  523,  392,  521,  392,  394,  394,  507,  394,
     1034      394,  394,  506,  394,  520,  503,  520,  501,  371,  371,
     1035      520,  522,  499,  522,  497,  495,  492,  522,  524,  490,
     1036      524,  488,  486,   89,  524,  404,   89,  404,  526,   89,
     1037      526,  412,  411,  409,  526,  406,  407,  406,  528,  405,
     1038      528,  276,  271,  270,  528,  408,  401,  408,  530,  401,
     1039      530,  258,  391,  391,  530,  410,  246,  410,   88,  384,
     1040      378,   88,  376,   88,   88,   88,   88,   88,  484,  484,
     1041      484,  484,  484,  484,  484,  484,  484,  484,  484,  484,
     1042      484,  599,  374,  599,  370,  369,  367,  599,  485,  365,
     1043
     1044      485,  601,  361,  601,  359,  211,  207,  601,  487,   89,
     1045      487,  603,  283,  603,  282,  280,  276,  603,  489,  271,
     1046      489,  605,  274,  605,  271,  269,  268,  605,  491,  267,
     1047      491,  607,  246,  607,  238,   87,   87,  607,  494,   89,
     1048      494,  609,  211,  609,  209,   87,  124,  609,  496,  119,
     1049      496,  498,   89,  498,  913,   72,   72,  498,  611,  913,
     1050      611,  913,  913,  913,  611,  500,  913,  500,  613,  913,
     1051      613,  913,  913,  913,  613,  502,  913,  502,  508,  913,
     1052      508,  913,  508,  913,  508,  394,  913,  394,  913,  913,
     1053      913,  394,  627,  913,  627,  913,  913,  913,  627,  520,
     1054
     1055      913,  520,  629,  913,  629,  913,  913,  913,  629,  522,
     1056      913,  522,  631,  913,  631,  913,  913,  913,  631,  524,
     1057      913,  524,  633,  913,  633,  913,  913,  913,  633,  526,
     1058      913,  526,  635,  913,  635,  913,  913,  913,  635,  528,
     1059      913,  528,  637,  913,  637,  913,  913,  913,  637,  530,
     1060      913,  530,   88,  913,  913,   88,  913,   88,   88,   88,
     1061       88,   88,  691,  691,  691,  691,  691,  691,  691,  691,
     1062      691,  691,  691,  691,  691,  693,  913,  693,  913,  913,
     1063      913,  693,  599,  913,  599,  695,  913,  695,  913,  913,
     1064      913,  695,  601,  913,  601,  697,  913,  697,  913,  913,
     1065
     1066      913,  697,  603,  913,  603,  699,  913,  699,  913,  913,
     1067      913,  699,  605,  913,  605,  701,  913,  701,  913,  913,
     1068      913,  701,  607,  913,  607,  703,  913,  703,  913,  913,
     1069      913,  703,  609,  913,  609,  705,  913,  705,  913,  913,
     1070      913,  705,  611,  913,  611,   88,  913,   88,  913,  913,
     1071      913,   88,  613,  913,  613,  508,  913,  508,  913,  913,
     1072      913,  508,  713,  913,  713,  913,  913,  913,  713,  627,
     1073      913,  627,  715,  913,  715,  913,  913,  913,  715,  629,
     1074      913,  629,  717,  913,  717,  913,  913,  913,  717,  631,
     1075      913,  631,  142,  913,  142,  913,  913,  913,  142,  633,
     1076
     1077      913,  633,  720,  913,  720,  635,  913,  635,   88,  913,
     1078      913,   88,  913,   88,   88,   88,   88,   88,  637,  913,
     1079      637,  691,  691,  691,  691,  691,  691,  691,  691,  691,
     1080      691,  691,  691,  691,  759,  913,  759,  913,  913,  913,
     1081      759,  693,  913,  693,  210,  913,  210,  913,  913,  913,
     1082      210,  695,  913,  695,  762,  913,  762,  697,  913,  697,
     1083      210,  913,  913,  210,  913,  210,  210,  210,  210,  210,
     1084      699,  913,  699,  763,  913,  763,  701,  913,  701,  703,
     1085      913,  703,  764,  913,  764,  705,  913,  705,   88,  913,
     1086       88,  766,  913,  766,  913,  913,  913,  766,  713,  913,
     1087
     1088      713,  275,  913,  275,  913,  913,  913,  275,  715,  913,
     1089      715,  769,  913,  769,  717,  913,  717,  142,  913,  142,
     1090      770,  913,  770,  913,  913,  913,  770,   88,  913,  913,
     1091       88,  913,   88,   88,   88,   88,   88,  804,  913,  804,
     1092      759,  913,  759,  210,  913,  210,  805,  913,  805,  913,
     1093      913,  913,  805,  807,  913,  807,  913,  913,  913,  807,
     1094      809,  913,  809,  913,  913,  913,  809,  811,  913,  811,
     1095      812,  913,  812,  913,  913,  913,  812,  814,  913,  814,
     1096      913,  913,  913,  814,  836,  913,  836,  913,  913,  913,
     1097      836,  838,  913,  838,  913,  913,  913,  838,  840,  913,
     1098
     1099      840,  913,  913,  913,  840,  842,  913,  842,  913,  913,
     1100      913,  842,  844,  913,  844,  913,  913,  913,  844,  846,
     1101      913,  846,  913,  913,  913,  846,  637,  913,  637,  913,
     1102      913,  913,  637,  866,  913,  866,  913,  913,  913,  866,
     1103      699,  913,  699,  913,  913,  913,  699,  703,  913,  703,
     1104      913,  913,  913,  703,   88,  913,   88,  913,  913,  913,
     1105       88,  871,  913,  871,  913,  913,  913,  871,  142,  913,
     1106      142,  913,  913,  913,  142,  210,  913,  210,  913,  913,
     1107      913,  210,   11,  913,  913,  913,  913,  913,  913,  913,
     1108      913,  913,  913,  913,  913,  913,  913,  913,  913,  913,
     1109
     1110      913,  913,  913,  913,  913,  913,  913,  913,  913,  913,
     1111      913,  913,  913,  913,  913,  913,  913,  913,  913,  913,
     1112      913,  913,  913,  913,  913,  913,  913,  913,  913,  913,
     1113      913,  913,  913,  913,  913,  913,  913,  913,  913,  913,
     1114      913,  913,  913,  913,  913,  913,  913,  913,  913,  913,
     1115      913,  913,  913,  913,  913,  913,  913,  913,  913,  913,
     1116      913,  913,  913,  913,  913,  913,  913,  913
    11161117    } ;
    11171118
    1118 static yyconst flex_int16_t yy_chk[2963] =
     1119static yyconst flex_int16_t yy_chk[2969] =
    11191120    {   0,
    11201121        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
     
    11371138        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
    11381139        5,    5,    5,    5,    5,    5,    5,    5,    5,    7,
    1139         8,    9,   10,   37,   37,   20,   39,    9,   10,  907,
     1140        8,    9,   10,   37,   37,   20,   39,    9,   10,  912,
    11401141        7,    8,   13,   13,   13,   13,   13,   13,   15,   15,
    11411142
    11421143       15,   15,   15,   15,   20,   25,   48,   39,   42,   28,
    1143        27,   28,   28,   28,   28,   28,   28,  110,  116,   25,
     1144       27,   28,   28,   28,   28,   28,   28,  111,  117,   25,
    11441145       29,   25,   27,   27,   27,   29,   48,   35,   40,    7,
    11451146        8,    9,   10,   40,   42,   29,   30,   47,   30,   30,
    1146        30,   30,   30,   30,   35,   57,   35,   35,   44,  127,
    1147        44,  127,  110,  116,   57,   30,   65,  547,   47,   30,
     1147       30,   30,   30,   30,   35,   58,   35,   35,   44,  128,
     1148       44,  128,  111,  117,   58,   30,   56,  551,   47,   30,
    11481149       47,   45,   45,   45,   49,   30,   30,   45,   45,   49,
    1149        45,   30,   40,   45,   45,   40,   49,   30,   45,   63,
    1150        62,   45,   49,   30,   74,  906,  547,   53,   63,   51,
    1151        61,   30,   62,   55,   30,   31,  109,   31,   31,   31,
    1152 
    1153        31,   31,   31,   50,   51,   53,   51,   65,   61,   54,
    1154        74,   55,   50,   88,   31,   51,   50,   55,   31,   54,
    1155       109,   50,   52,  143,   31,   50,   54,   52,  112,  154,
    1156        31,   56,  111,  898,  152,   52,   31,   52,  154,   88,
    1157        52,  108,   31,  128,   52,  128,  112,  108,   56,  143,
    1158        31,   38,  152,   56,  112,   38,   38,   58,   38,   60,
    1159        38,   38,  111,   38,   60,   38,   59,  111,  115,   58,
    1160        58,  117,  158,  108,   38,   38,   38,   60,   59,   58,
    1161       131,  130,   58,  130,  158,  114,   59,  132,   59,  117,
    1162       111,  114,  115,   59,  131,   38,  131,  117,   38,  132,
    1163 
    1164       133,  132,  133,   60,  173,  153,   60,   68,   68,   68,
    1165        68,   68,   68,   69,   69,   68,  165,  114,   69,  173,
    1166        60,  134,  134,  153,  134,   38,   38,   81,   81,   81,
    1167        81,   81,   81,  165,   69,   69,   69,   69,   69,   69,
    1168        78,   78,  135,  155,  135,   78,  146,   78,  136,  136,
    1169       136,  146,   78,   83,   83,   83,   83,   83,   83,  155,
    1170       897,   78,   78,   78,   78,   84,   84,   84,   84,   84,
    1171        84,  156,   78,  104,  104,  104,  104,  104,  104,  105,
    1172       105,  105,  105,  138,  140,  138,  140,  151,   78,  156,
    1173       146,   78,  306,  894,  157,  162,   78,   78,  161,  306,
    1174 
    1175        78,   78,  151,  160,  162,  176,  168,  105,   78,  151,
    1176       169,   78,  105,   78,   78,   78,  157,   78,   86,  160,
    1177       161,  164,   86,   86,  166,  176,  164,   86,   86,  168,
    1178        86,  163,   86,  167,  166,  105,  170,  169,  175,  164,
    1179       893,   86,   86,   86,  106,  172,  106,  106,  106,  106,
    1180       106,  106,  163,  163,  167,  171,  175,  170,  174,  177,
    1181       171,  178,   86,  106,  107,   86,  107,  172,  183,  107,
    1182       107,  107,  107,  107,  107,  174,  182,  183,  171,  106,
    1183       184,  182,  186,  178,  181,  106,  177,  222,  891,  222,
    1184       192,  180,  187,   86,  100,  100,  100,  100,  100,  100,
    1185 
    1186       186,  181,  107,  187,  188,  189,  180,  184,  185,  188,
    1187       100,  100,  100,  180,  100,  100,  190,  192,  189,  185,
    1188       187,  194,  732,  198,  188,  195,  191,  100,  193,  185,
    1189       185,  191,  100,  100,  100,  159,  190,  100,  195,  100,
    1190       159,  159,  159,  198,  159,  159,  195,  193,  159,  196,
    1191       159,  732,  209,  191,  197,  159,  159,  159,  223,  159,
    1192       223,  224,  196,  224,  196,  194,  286,  197,  194,  201,
    1193       201,  201,  201,  201,  201,  202,  202,  201,  209,  225,
    1194       202,  204,  204,  286,  213,  213,  204,  206,  206,  213,
    1195       890,  883,  206,  225,  206,  225,  202,  202,  202,  202,
    1196 
    1197       202,  202,  204,  204,  204,  204,  204,  204,  206,  206,
    1198       206,  206,  206,  206,  216,  216,  216,  216,  226,  227,
    1199       247,  227,  228,  228,  229,  228,  229,  230,  230,  230,
    1200       226,  232,  226,  232,  233,  240,  233,  238,  238,  241,
    1201       270,  241,  270,  239,  241,  239,  282,  216,  239,  239,
    1202       239,  239,  239,  239,  271,  247,  271,  882,  240,  282,
    1203       238,  241,  246,  241,  246,  246,  246,  246,  241,  245,
    1204       245,  245,  245,  245,  245,  248,  248,  248,  248,  248,
    1205       248,  239,  249,  249,  249,  249,  249,  249,  283,  284,
    1206       288,  287,  248,  285,  289,  252,  287,  246,  295,  289,
    1207 
    1208       297,  326,  245,  260,  274,  297,  283,  284,  248,  285,
    1209       288,  881,  326,  295,  248,  250,  250,  250,  250,  250,
    1210       250,  252,  257,  259,  259,  259,  259,  259,  259,  260,
    1211       274,  250,  251,  250,  251,  250,  250,  251,  251,  251,
    1212       251,  251,  251,  298,  292,  257,  880,  257,  250,  294,
    1213       290,  257,  298,  250,  293,  250,  259,  257,  250,  291,
    1214       250,  264,  264,  264,  264,  264,  264,  292,  296,  257,
    1215       290,  300,  293,  257,  291,  294,  299,  257,  301,  303,
    1216       291,  291,  304,  305,  296,  296,  307,  304,  309,  299,
    1217       308,  879,  305,  313,  264,  310,  301,  303,  300,  311,
    1218 
    1219       310,  312,  314,  318,  311,  316,  307,  312,  308,  309,
    1220       309,  314,  313,  315,  317,  319,  322,  320,  318,  315,
    1221       319,  316,  320,  317,  321,  323,  324,  327,  328,  321,
    1222       329,  328,  330,  331,  332,  322,  333,  334,  335,  324,
    1223       336,  337,  327,  323,  338,  330,  321,  335,  340,  329,
    1224       339,  342,  344,  345,  334,  331,  333,  332,  343,  346,
    1225       349,  340,  336,  350,  337,  347,  338,  343,  339,  348,
    1226       342,  345,  346,  347,  348,  349,  875,  351,  351,  352,
    1227       413,  350,  351,  410,  351,  352,  359,  359,  359,  359,
    1228       360,  360,  360,  360,  410,  369,  344,  369,  370,  413,
    1229 
    1230       370,  377,  377,  377,  377,  377,  377,  379,  389,  379,
    1231       417,  394,  379,  379,  379,  379,  379,  379,  389,  359,
    1232       378,  378,  378,  378,  378,  378,  381,  381,  381,  381,
    1233       381,  381,  417,  411,  389,  394,  378,  412,  378,  415,
    1234       378,  378,  384,  384,  384,  384,  384,  384,  392,  411,
    1235       415,  390,  412,  378,  392,  396,  578,  421,  378,  381,
    1236       378,  390,  420,  378,  578,  378,  382,  382,  382,  382,
    1237       382,  382,  391,  396,  424,  384,  414,  390,  420,  421,
    1238       392,  396,  382,  382,  382,  414,  382,  382,  385,  385,
    1239       385,  385,  385,  385,  428,  391,  424,  391,  871,  382,
    1240 
    1241       428,  391,  868,  395,  382,  382,  382,  391,  393,  382,
    1242       393,  382,  419,  393,  393,  393,  393,  393,  393,  391,
    1243       416,  385,  418,  391,  422,  419,  395,  391,  395,  416,
    1244       425,  418,  395,  430,  426,  423,  429,  422,  395,  426,
    1245       427,  431,  434,  439,  430,  438,  393,  436,  425,  432,
    1246       395,  423,  423,  441,  395,  427,  434,  429,  395,  436,
    1247       431,  440,  427,  442,  432,  439,  438,  443,  444,  442,
    1248       446,  448,  449,  450,  440,  451,  441,  444,  452,  453,
    1249       454,  456,  443,  458,  461,  446,  459,  460,  450,  454,
    1250       462,  448,  463,  452,  449,  464,  460,  451,  456,  453,
    1251 
    1252       465,  466,  467,  470,  468,  461,  458,  469,  459,  465,
    1253       462,  468,  463,  471,  469,  467,  472,  464,  473,  466,
    1254       474,  475,  477,  480,  478,  472,  473,  479,  470,  480,
    1255       479,  507,  475,  478,  508,  471,  473,  474,  489,  489,
    1256       489,  489,  528,  531,  477,  500,  500,  500,  500,  500,
    1257       500,  502,  502,  502,  502,  502,  502,  507,  531,  528,
    1258       508,  500,  529,  500,  533,  500,  500,  503,  503,  503,
    1259       503,  503,  503,  867,  866,  529,  504,  533,  500,  532,
    1260       542,  506,  534,  500,  502,  500,  504,  505,  500,  505,
    1261       500,  506,  505,  505,  505,  505,  505,  505,  536,  532,
    1262 
    1263       503,  542,  504,  536,  534,  535,  537,  506,  510,  510,
    1264       510,  510,  510,  510,  512,  865,  512,  537,  535,  512,
    1265       512,  512,  512,  512,  512,  505,  511,  511,  511,  511,
    1266       511,  511,  538,  539,  540,  538,  541,  546,  544,  543,
    1267       545,  549,  511,  544,  511,  548,  511,  511,  543,  540,
    1268       546,  545,  551,  539,  548,  541,  550,  552,  555,  511,
    1269       557,  551,  552,  549,  511,  558,  511,  555,  554,  511,
    1270       559,  511,  560,  550,  554,  562,  563,  557,  564,  565,
    1271       558,  560,  567,  568,  562,  559,  570,  571,  568,  574,
    1272       564,  575,  576,  563,  565,  570,  571,  567,  579,  580,
    1273 
    1274       581,  582,  589,  586,  575,  587,  580,  590,  579,  576,
    1275       583,  574,  586,  582,  592,  587,  583,  864,  863,  589,
    1276       590,  638,  581,  610,  610,  610,  610,  610,  610,  611,
    1277       611,  611,  611,  611,  611,  613,  592,  613,  638,  637,
    1278       613,  613,  613,  613,  613,  613,  616,  616,  616,  616,
    1279       616,  616,  637,  617,  617,  642,  610,  612,  612,  612,
    1280       612,  612,  612,  618,  634,  619,  862,  619,  639,  634,
    1281       619,  636,  642,  612,  635,  612,  617,  612,  612,  616,
    1282       636,  635,  634,  645,  646,  640,  618,  619,  641,  619,
    1283       612,  639,  640,  644,  619,  612,  641,  612,  643,  646,
    1284 
    1285       612,  643,  612,  647,  648,  645,  644,  649,  650,  651,
    1286       652,  650,  653,  654,  655,  657,  656,  660,  667,  658,
    1287       661,  648,  662,  655,  666,  647,  651,  653,  658,  649,
    1288       669,  662,  672,  654,  656,  684,  673,  657,  652,  680,
    1289       660,  672,  661,  673,  666,  667,  681,  669,  680,  683,
    1290       684,  716,  719,  722,  723,  861,  681,  723,  683,  703,
    1291       703,  703,  703,  703,  703,  707,  707,  707,  707,  707,
    1292       707,  717,  716,  722,  856,  703,  720,  703,  719,  703,
    1293       703,  717,  721,  720,  727,  724,  729,  721,  724,  725,
    1294       727,  730,  703,  728,  730,  729,  731,  703,  707,  703,
    1295 
    1296       733,  734,  703,  733,  703,  735,  728,  725,  736,  737,
    1297       734,  736,  738,  739,  740,  741,  742,  731,  748,  745,
    1298       738,  749,  737,  739,  750,  742,  752,  740,  773,  774,
    1299       753,  735,  771,  773,  752,  776,  741,  745,  748,  753,
    1300       772,  778,  745,  749,  774,  750,  760,  760,  760,  760,
    1301       760,  760,  771,  775,  777,  780,  779,  772,  776,  779,
    1302       781,  783,  785,  775,  783,  785,  786,  778,  780,  787,
    1303       789,  777,  787,  786,  788,  790,  792,  788,  796,  760,
    1304       811,  813,  814,  815,  816,  789,  815,  817,  781,  818,
    1305       817,  820,  818,  821,  822,  824,  855,  822,  790,  792,
    1306 
    1307       814,  796,  813,  827,  828,  825,  816,  811,  825,  820,
    1308       826,  829,  827,  826,  830,  845,  846,  824,  847,  821,
    1309       828,  847,  829,  846,  848,  849,  850,  851,  854,  850,
    1310       830,  854,  857,  848,  884,  857,  845,  858,  859,  860,
    1311       870,  853,  869,  849,  851,  870,  858,  873,  860,  849,
    1312       859,  869,  872,  874,  884,  872,  876,  873,  874,  876,
    1313       877,  878,  885,  877,  878,  886,  887,  888,  886,  889,
    1314       888,  892,  889,  895,  896,  899,  887,  885,  900,  901,
    1315       903,  902,  904,  852,  899,  905,  844,  843,  842,  896,
    1316       841,  900,  840,  892,  895,  905,  839,  838,  903,  837,
    1317 
    1318       836,  901,  902,  835,  904,  909,  909,  909,  909,  909,
    1319       909,  909,  909,  909,  909,  909,  909,  909,  910,  910,
    1320       910,  910,  910,  910,  910,  910,  910,  910,  910,  910,
    1321       910,  911,  911,  911,  911,  911,  911,  911,  911,  911,
    1322       911,  911,  911,  911,  912,  834,  833,  912,  832,  912,
    1323       912,  912,  912,  912,  913,  831,  823,  819,  913,  913,
    1324       913,  913,  913,  913,  914,  914,  914,  914,  914,  914,
    1325       914,  914,  914,  914,  914,  914,  914,  915,  812,  810,
    1326       915,  809,  915,  915,  915,  915,  915,  916,  808,  916,
    1327       916,  807,  916,  916,  916,  916,  916,  916,  806,  916,
    1328 
    1329       917,  805,  804,  917,  917,  917,  917,  917,  917,  917,
    1330       917,  803,  917,  918,  918,  918,  918,  918,  918,  918,
    1331       918,  918,  918,  918,  918,  918,  919,  919,  802,  919,
    1332       801,  800,  799,  919,  920,  798,  797,  920,  795,  920,
    1333       920,  920,  920,  920,  921,  794,  921,  793,  791,  784,
    1334       921,  922,  782,  922,  770,  769,  768,  922,  923,  767,
    1335       923,  766,  765,  764,  923,  924,  763,  924,  762,  759,
    1336       758,  924,  925,  757,  925,  751,  747,  746,  925,  926,
    1337       744,  926,  743,  726,  718,  926,  927,  715,  927,  710,
    1338       708,  704,  927,  928,  694,  928,  690,  688,  686,  928,
    1339 
    1340       929,  685,  929,  682,  679,  678,  929,  930,  677,  930,
    1341       931,  931,  676,  931,  931,  931,  675,  931,  932,  932,
    1342       674,  932,  933,  671,  670,  933,  668,  933,  933,  933,
    1343       933,  933,  934,  665,  934,  664,  663,  659,  934,  935,
    1344       632,  935,  628,  626,  624,  935,  936,  622,  936,  620,
    1345       614,  608,  936,  937,  606,  937,  938,  604,  938,  602,
    1346       600,  598,  938,  939,  596,  939,  940,  594,  593,  940,
    1347       591,  940,  940,  940,  940,  940,  941,  941,  941,  941,
    1348       941,  941,  941,  941,  941,  941,  941,  941,  941,  942,
    1349       942,  942,  942,  942,  942,  942,  942,  942,  942,  942,
    1350 
    1351       942,  942,  943,  588,  943,  585,  584,  577,  943,  944,
    1352       573,  944,  572,  569,  566,  944,  945,  561,  945,  556,
    1353       553,  530,  945,  946,  526,  946,  947,  524,  947,  522,
    1354       520,  518,  947,  948,  516,  948,  949,  515,  949,  514,
    1355       513,  501,  949,  950,  498,  950,  951,  496,  951,  495,
    1356       494,  492,  951,  952,  490,  952,  953,  487,  953,  485,
    1357       483,  481,  953,  954,  476,  954,  955,  457,  955,  455,
    1358       447,  445,  955,  956,  437,  956,  957,  435,  957,  433,
    1359       407,  405,  957,  958,  403,  958,  959,  401,  959,  400,
    1360       959,  399,  959,  960,  386,  960,  383,  960,  374,  960,
    1361 
    1362       961,  961,  372,  961,  961,  961,  371,  961,  962,  367,
    1363       962,  365,  363,  361,  962,  963,  357,  963,  355,  354,
    1364       353,  963,  964,  341,  964,  325,  302,  281,  964,  965,
    1365       279,  965,  966,  277,  966,  276,  275,  273,  966,  967,
    1366       272,  967,  968,  267,  968,  263,  262,  258,  968,  969,
    1367       255,  969,  970,  254,  970,  243,  242,  235,  970,  971,
    1368       234,  971,  972,  231,  221,  972,  219,  972,  972,  972,
    1369       972,  972,  973,  973,  973,  973,  973,  973,  973,  973,
    1370       973,  973,  973,  973,  973,  974,  218,  974,  217,  211,
    1371       210,  974,  975,  208,  975,  976,  203,  976,  179,  150,
    1372 
    1373       148,  976,  977,  147,  977,  978,  141,  978,  139,  137,
    1374       129,  978,  979,  126,  979,  980,  125,  980,  121,  102,
    1375        99,  980,  981,   96,  981,  982,   94,  982,   87,   73,
    1376        71,  982,  983,   67,  983,  984,   36,  984,   33,   18,
    1377        11,  984,  985,    4,  985,  986,    3,  986,    0,    0,
    1378         0,  986,  987,    0,  987,    0,    0,    0,  987,  988,
    1379         0,  988,  989,    0,  989,    0,    0,    0,  989,  990,
    1380         0,  990,  991,    0,  991,    0,  991,    0,  991,  992,
    1381         0,  992,    0,    0,    0,  992,  993,    0,  993,    0,
    1382         0,    0,  993,  994,    0,  994,  995,    0,  995,    0,
    1383 
    1384         0,    0,  995,  996,    0,  996,  997,    0,  997,    0,
    1385         0,    0,  997,  998,    0,  998,  999,    0,  999,    0,
    1386         0,    0,  999, 1000,    0, 1000, 1001,    0, 1001,    0,
    1387         0,    0, 1001, 1002,    0, 1002, 1003,    0, 1003,    0,
    1388         0,    0, 1003, 1004,    0, 1004, 1005,    0,    0, 1005,
    1389         0, 1005, 1005, 1005, 1005, 1005, 1006, 1006, 1006, 1006,
    1390      1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1007,
    1391         0, 1007,    0,    0,    0, 1007, 1008,    0, 1008, 1009,
    1392         0, 1009,    0,    0,    0, 1009, 1010,    0, 1010, 1011,
    1393         0, 1011,    0,    0,    0, 1011, 1012,    0, 1012, 1013,
    1394 
    1395         0, 1013,    0,    0,    0, 1013, 1014,    0, 1014, 1015,
    1396         0, 1015,    0,    0,    0, 1015, 1016,    0, 1016, 1017,
    1397         0, 1017,    0,    0,    0, 1017, 1018,    0, 1018, 1019,
    1398         0, 1019,    0,    0,    0, 1019, 1020,    0, 1020, 1021,
    1399         0, 1021,    0,    0,    0, 1021, 1022,    0, 1022, 1023,
    1400         0, 1023,    0,    0,    0, 1023, 1024,    0, 1024,    0,
    1401         0,    0, 1024, 1025,    0, 1025, 1026,    0, 1026,    0,
    1402         0,    0, 1026, 1027,    0, 1027, 1028,    0, 1028,    0,
    1403         0,    0, 1028, 1029,    0, 1029, 1030,    0, 1030,    0,
    1404         0,    0, 1030, 1031,    0, 1031, 1032,    0, 1032, 1033,
    1405 
    1406         0, 1033, 1034,    0,    0, 1034,    0, 1034, 1034, 1034,
    1407      1034, 1034, 1035,    0, 1035, 1036, 1036, 1036, 1036, 1036,
    1408      1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1037,    0,
    1409      1037,    0,    0,    0, 1037, 1038,    0, 1038, 1039,    0,
    1410      1039,    0,    0,    0, 1039, 1040,    0, 1040, 1041,    0,
    1411      1041, 1042,    0, 1042, 1043,    0,    0, 1043,    0, 1043,
    1412      1043, 1043, 1043, 1043, 1044,    0, 1044, 1045,    0, 1045,
    1413      1046,    0, 1046, 1047,    0, 1047, 1048,    0, 1048, 1049,
    1414         0, 1049, 1050,    0, 1050, 1051,    0, 1051,    0,    0,
    1415         0, 1051, 1052,    0, 1052, 1053,    0, 1053,    0,    0,
    1416 
    1417         0, 1053, 1054,    0, 1054, 1055,    0, 1055, 1056,    0,
    1418      1056, 1057,    0, 1057, 1058,    0, 1058,    0,    0,    0,
    1419      1058, 1059,    0,    0, 1059,    0, 1059, 1059, 1059, 1059,
     1150       45,   30,   40,   45,   45,   40,   49,   30,   45,   56,
     1151       63,   45,   49,   30,   75,  911,  551,   53,   66,   51,
     1152       62,   30,   63,   55,   30,   31,  166,   31,   31,   31,
     1153
     1154       31,   31,   31,   50,   51,   53,   51,   89,   62,   54,
     1155       75,   55,   50,  166,   31,   51,   50,   55,   31,   54,
     1156       64,   50,   52,  144,   31,   50,   54,   52,  110,   64,
     1157       31,   57,  112,   89,  159,   52,   31,   52,  903,   66,
     1158       52,  109,   31,  129,   52,  129,  159,  109,   57,  144,
     1159       31,   38,  110,   57,  113,   38,   38,   59,   38,   61,
     1160       38,   38,  112,   38,   61,   38,   60,  112,  116,   59,
     1161       59,  118,  113,  109,   38,   38,   38,   61,   60,   59,
     1162      113,  131,   59,  131,  177,  115,   60,  133,   60,  118,
     1163      112,  115,  116,   60,  134,   38,  134,  118,   38,  133,
     1164
     1165      136,  133,  136,   61,  177,  132,   61,   69,   69,   69,
     1166       69,   69,   69,   70,   70,   69,  175,  115,   70,  132,
     1167       61,  132,  137,  137,  137,   38,   38,   82,   82,   82,
     1168       82,   82,   82,  175,   70,   70,   70,   70,   70,   70,
     1169       79,   79,  153,  135,  135,   79,  135,   79,  139,  141,
     1170      139,  141,   79,   84,   84,   84,   84,   84,   84,  902,
     1171      153,   79,   79,   79,   79,   85,   85,   85,   85,   85,
     1172       85,  152,   79,  105,  105,  105,  105,  105,  105,  106,
     1173      106,  106,  106,  155,  154,  147,  152,  156,   79,  161,
     1174      147,   79,  155,  152,  174,  328,   79,   79,  157,  158,
     1175
     1176       79,   79,  154,  156,  162,  161,  328,  106,   79,  174,
     1177      163,   79,  106,   79,   79,   79,  157,   79,   87,  163,
     1178      165,  158,   87,   87,  167,  165,  162,   87,   87,  147,
     1179       87,  164,   87,  168,  167,  106,  169,  171,  165,  173,
     1180      170,   87,   87,   87,  107,  899,  107,  107,  107,  107,
     1181      107,  107,  164,  164,  168,  172,  178,  176,  171,  169,
     1182      172,  173,   87,  107,  108,   87,  108,  170,  179,  108,
     1183      108,  108,  108,  108,  108,  176,  183,  189,  172,  107,
     1184      185,  183,  186,  178,  184,  107,  181,  182,  189,  185,
     1185      179,  898,  194,   87,  101,  101,  101,  101,  101,  101,
     1186
     1187      191,  181,  108,  188,  182,  189,  184,  187,  181,  186,
     1188      101,  101,  101,  191,  101,  101,  192,  196,  187,  194,
     1189      193,  188,  896,  308,  195,  193,  190,  101,  187,  187,
     1190      308,  190,  101,  101,  101,  160,  192,  101,  198,  101,
     1191      160,  160,  160,  195,  160,  160,  190,  193,  160,  197,
     1192      160,  198,  199,  198,  200,  160,  160,  160,  211,  160,
     1193      331,  196,  197,  331,  196,  199,  204,  204,  215,  215,
     1194      197,  204,  284,  215,  200,  203,  203,  203,  203,  203,
     1195      203,  206,  206,  203,  211,  284,  206,  204,  204,  204,
     1196      204,  204,  204,  208,  208,  224,  895,  224,  208,  225,
     1197
     1198      208,  225,  206,  206,  206,  206,  206,  206,  218,  218,
     1199      218,  218,  227,  228,  208,  208,  208,  208,  208,  208,
     1200      226,  229,  226,  229,  242,  228,  227,  228,  227,  230,
     1201      230,  231,  230,  231,  232,  232,  232,  234,  235,  234,
     1202      235,  218,  240,  240,  241,  249,  241,  242,  254,  241,
     1203      241,  241,  241,  241,  241,  243,  272,  243,  272,  248,
     1204      243,  248,  248,  248,  248,  240,  247,  247,  247,  247,
     1205      247,  247,  262,  273,  254,  273,  288,  243,  285,  243,
     1206      249,  287,  241,  276,  243,  250,  250,  250,  250,  250,
     1207      250,  290,  286,  288,  248,  289,  285,  287,  262,  247,
     1208
     1209      289,  292,  250,  251,  251,  251,  251,  251,  251,  276,
     1210      286,  290,  291,  300,  295,  299,  472,  291,  250,  888,
     1211      299,  292,  300,  472,  250,  252,  252,  252,  252,  252,
     1212      252,  259,  295,  296,  261,  261,  261,  261,  261,  261,
     1213      293,  252,  253,  252,  253,  252,  252,  253,  253,  253,
     1214      253,  253,  253,  887,  259,  293,  259,  294,  252,  296,
     1215      259,  293,  293,  252,  297,  252,  259,  261,  252,  303,
     1216      252,  266,  266,  266,  266,  266,  266,  298,  259,  297,
     1217      294,  302,  259,  301,  305,  306,  259,  303,  307,  309,
     1218      306,  311,  310,  298,  298,  312,  301,  307,  313,  314,
     1219
     1220      312,  315,  305,  313,  266,  314,  316,  318,  302,  309,
     1221      310,  317,  311,  311,  320,  316,  319,  317,  324,  321,
     1222      315,  322,  323,  318,  321,  319,  322,  323,  325,  320,
     1223      326,  330,  329,  332,  334,  333,  335,  324,  336,  339,
     1224      330,  338,  340,  326,  323,  337,  325,  329,  333,  341,
     1225      338,  342,  332,  343,  345,  346,  334,  347,  336,  335,
     1226      348,  339,  337,  349,  346,  340,  343,  350,  352,  342,
     1227      353,  341,  351,  345,  413,  350,  349,  351,  348,  354,
     1228      354,  355,  886,  352,  354,  413,  354,  355,  353,  362,
     1229      362,  362,  362,  363,  363,  363,  363,  372,  373,  372,
     1230
     1231      373,  347,  380,  380,  380,  380,  380,  380,  382,  392,
     1232      382,  393,  397,  382,  382,  382,  382,  382,  382,  392,
     1233      885,  393,  362,  381,  381,  381,  381,  381,  381,  384,
     1234      384,  384,  384,  384,  384,  392,  397,  393,  414,  381,
     1235      415,  381,  418,  381,  381,  387,  387,  387,  387,  387,
     1236      387,  395,  422,  418,  414,  415,  381,  395,  399,  420,
     1237      416,  381,  384,  381,  423,  422,  381,  884,  381,  385,
     1238      385,  385,  385,  385,  385,  394,  399,  424,  387,  416,
     1239      423,  420,  432,  395,  399,  385,  385,  385,  417,  385,
     1240      385,  388,  388,  388,  388,  388,  388,  417,  394,  424,
     1241
     1242      394,  880,  385,  432,  394,  876,  398,  385,  385,  385,
     1243      394,  396,  385,  396,  385,  425,  396,  396,  396,  396,
     1244      396,  396,  394,  419,  388,  421,  394,  426,  425,  398,
     1245      394,  398,  419,  427,  421,  398,  428,  429,  437,  433,
     1246      431,  398,  429,  426,  426,  430,  431,  434,  435,  396,
     1247      433,  441,  437,  398,  428,  427,  439,  398,  442,  444,
     1248      430,  398,  443,  435,  445,  447,  434,  430,  439,  446,
     1249      445,  449,  441,  451,  447,  443,  452,  453,  454,  455,
     1250      442,  456,  444,  461,  446,  459,  449,  457,  462,  463,
     1251      464,  465,  453,  451,  455,  466,  457,  467,  452,  464,
     1252
     1253      454,  456,  459,  468,  469,  470,  461,  471,  474,  473,
     1254      475,  463,  465,  469,  462,  466,  473,  467,  476,  478,
     1255      471,  477,  481,  470,  479,  468,  532,  476,  482,  477,
     1256      535,  483,  475,  474,  483,  479,  478,  482,  511,  477,
     1257      484,  873,  512,  532,  481,  535,  484,  493,  493,  493,
     1258      493,  504,  504,  504,  504,  504,  504,  506,  506,  506,
     1259      506,  506,  506,  536,  511,  540,  533,  504,  512,  504,
     1260      540,  504,  504,  507,  507,  507,  507,  507,  507,  533,
     1261      583,  623,  508,  536,  504,  538,  545,  510,  583,  504,
     1262      506,  504,  508,  509,  504,  509,  504,  510,  509,  509,
     1263
     1264      509,  509,  509,  509,  623,  545,  507,  538,  508,  542,
     1265      537,  539,  542,  510,  514,  514,  514,  514,  514,  514,
     1266      516,  543,  516,  537,  539,  516,  516,  516,  516,  516,
     1267      516,  509,  515,  515,  515,  515,  515,  515,  541,  544,
     1268      546,  543,  547,  833,  550,  549,  553,  554,  515,  541,
     1269      515,  547,  515,  515,  544,  548,  549,  550,  552,  833,
     1270      548,  546,  555,  561,  554,  515,  562,  552,  553,  556,
     1271      515,  555,  515,  558,  556,  515,  559,  515,  563,  558,
     1272      561,  562,  564,  566,  567,  559,  568,  569,  571,  572,
     1273      574,  564,  566,  563,  572,  575,  579,  580,  568,  574,
     1274
     1275      581,  567,  569,  571,  575,  584,  585,  586,  587,  592,
     1276      580,  594,  591,  585,  595,  584,  588,  581,  579,  592,
     1277      587,  591,  588,  597,  872,  871,  643,  595,  594,  586,
     1278      615,  615,  615,  615,  615,  615,  616,  616,  616,  616,
     1279      616,  616,  618,  643,  618,  597,  642,  618,  618,  618,
     1280      618,  618,  618,  621,  621,  621,  621,  621,  621,  642,
     1281      622,  622,  647,  615,  617,  617,  617,  617,  617,  617,
     1282      624,  639,  624,  644,  640,  624,  639,  870,  641,  647,
     1283      617,  640,  617,  622,  617,  617,  621,  641,  645,  639,
     1284      646,  650,  624,  649,  624,  645,  644,  617,  646,  624,
     1285
     1286      648,  651,  617,  648,  617,  652,  649,  617,  653,  617,
     1287      654,  655,  656,  650,  655,  657,  651,  659,  658,  660,
     1288      661,  663,  662,  665,  672,  653,  666,  652,  660,  656,
     1289      663,  667,  654,  658,  671,  674,  677,  659,  661,  721,
     1290      667,  685,  678,  657,  662,  677,  665,  686,  666,  678,
     1291      685,  672,  674,  688,  671,  689,  724,  686,  869,  722,
     1292      721,  727,  688,  712,  712,  712,  712,  712,  712,  722,
     1293      689,  708,  708,  708,  708,  708,  708,  725,  726,  730,
     1294      732,  727,  724,  726,  725,  728,  732,  708,  728,  708,
     1295      729,  708,  708,  729,  733,  735,  712,  730,  735,  734,
     1296
     1297      736,  737,  738,  739,  708,  738,  740,  733,  734,  708,
     1298      741,  708,  739,  741,  708,  742,  708,  743,  745,  744,
     1299      746,  736,  750,  753,  747,  743,  754,  757,  742,  744,
     1300      737,  745,  740,  747,  755,  757,  776,  758,  781,  778,
     1301      750,  746,  777,  753,  778,  750,  758,  779,  754,  765,
     1302      765,  765,  765,  765,  765,  755,  776,  780,  782,  777,
     1303      783,  781,  779,  784,  785,  786,  784,  780,  788,  790,
     1304      794,  788,  790,  791,  795,  782,  792,  785,  793,  792,
     1305      791,  793,  765,  797,  801,  794,  783,  816,  818,  820,
     1306      819,  821,  820,  786,  825,  822,  823,  795,  822,  823,
     1307
     1308      826,  827,  829,  868,  827,  867,  797,  801,  819,  818,
     1309      834,  832,  825,  821,  816,  830,  831,  835,  830,  831,
     1310      832,  834,  850,  851,  829,  852,  826,  853,  852,  854,
     1311      851,  855,  856,  835,  855,  859,  853,  862,  859,  863,
     1312      862,  865,  864,  850,  866,  861,  874,  854,  863,  856,
     1313      865,  875,  878,  854,  864,  874,  875,  877,  879,  889,
     1314      877,  881,  878,  879,  881,  882,  883,  890,  882,  883,
     1315      891,  892,  893,  891,  894,  893,  897,  894,  900,  889,
     1316      901,  892,  890,  904,  905,  906,  908,  907,  909,  860,
     1317      910,  858,  904,  857,  849,  901,  848,  905,  897,  900,
     1318
     1319      910,  847,  846,  845,  908,  844,  843,  906,  907,  842,
     1320      909,  914,  914,  914,  914,  914,  914,  914,  914,  914,
     1321      914,  914,  914,  914,  915,  915,  915,  915,  915,  915,
     1322      915,  915,  915,  915,  915,  915,  915,  916,  916,  916,
     1323      916,  916,  916,  916,  916,  916,  916,  916,  916,  916,
     1324      917,  841,  840,  917,  839,  917,  917,  917,  917,  917,
     1325      918,  838,  837,  836,  918,  918,  918,  918,  918,  918,
     1326      919,  919,  919,  919,  919,  919,  919,  919,  919,  919,
     1327      919,  919,  919,  920,  828,  824,  920,  817,  920,  920,
     1328      920,  920,  920,  921,  815,  921,  921,  814,  921,  921,
     1329
     1330      921,  921,  921,  921,  813,  921,  922,  812,  811,  922,
     1331      922,  922,  922,  922,  922,  922,  922,  810,  922,  923,
     1332      923,  923,  923,  923,  923,  923,  923,  923,  923,  923,
     1333      923,  923,  924,  924,  809,  924,  808,  807,  806,  924,
     1334      925,  805,  804,  925,  803,  925,  925,  925,  925,  925,
     1335      926,  802,  926,  800,  799,  798,  926,  927,  796,  927,
     1336      789,  787,  775,  927,  928,  774,  928,  773,  772,  771,
     1337      928,  929,  770,  929,  769,  768,  767,  929,  930,  764,
     1338      930,  763,  762,  756,  930,  931,  752,  931,  751,  749,
     1339      748,  931,  932,  731,  932,  723,  720,  715,  932,  933,
     1340
     1341      713,  933,  709,  699,  695,  933,  934,  693,  934,  691,
     1342      690,  687,  934,  935,  684,  935,  936,  936,  683,  936,
     1343      936,  936,  682,  936,  937,  937,  681,  937,  938,  680,
     1344      679,  938,  676,  938,  938,  938,  938,  938,  939,  675,
     1345      939,  673,  670,  669,  939,  940,  668,  940,  664,  637,
     1346      633,  940,  941,  631,  941,  629,  627,  625,  941,  942,
     1347      619,  942,  943,  613,  943,  611,  609,  607,  943,  944,
     1348      605,  944,  945,  603,  601,  945,  599,  945,  945,  945,
     1349      945,  945,  946,  946,  946,  946,  946,  946,  946,  946,
     1350      946,  946,  946,  946,  946,  947,  947,  947,  947,  947,
     1351
     1352      947,  947,  947,  947,  947,  947,  947,  947,  948,  598,
     1353      948,  596,  593,  590,  948,  949,  589,  949,  582,  578,
     1354      577,  949,  950,  576,  950,  573,  570,  565,  950,  951,
     1355      560,  951,  952,  557,  952,  534,  530,  528,  952,  953,
     1356      526,  953,  954,  524,  954,  522,  520,  519,  954,  955,
     1357      518,  955,  956,  517,  956,  505,  502,  500,  956,  957,
     1358      499,  957,  958,  498,  958,  496,  494,  491,  958,  959,
     1359      489,  959,  960,  487,  960,  485,  480,  460,  960,  961,
     1360      458,  961,  962,  450,  962,  448,  440,  438,  962,  963,
     1361      436,  963,  964,  410,  964,  408,  964,  406,  964,  965,
     1362
     1363      404,  965,  403,  965,  402,  965,  966,  966,  389,  966,
     1364      966,  966,  386,  966,  967,  377,  967,  375,  374,  370,
     1365      967,  968,  368,  968,  366,  364,  360,  968,  969,  358,
     1366      969,  357,  356,  344,  969,  970,  327,  970,  971,  304,
     1367      971,  283,  281,  279,  971,  972,  278,  972,  973,  277,
     1368      973,  275,  274,  269,  973,  974,  265,  974,  975,  264,
     1369      975,  260,  257,  256,  975,  976,  245,  976,  977,  244,
     1370      237,  977,  236,  977,  977,  977,  977,  977,  978,  978,
     1371      978,  978,  978,  978,  978,  978,  978,  978,  978,  978,
     1372      978,  979,  233,  979,  223,  221,  220,  979,  980,  219,
     1373
     1374      980,  981,  213,  981,  212,  210,  205,  981,  982,  180,
     1375      982,  983,  151,  983,  149,  148,  142,  983,  984,  140,
     1376      984,  985,  138,  985,  130,  127,  126,  985,  986,  122,
     1377      986,  987,  103,  987,  100,   97,   95,  987,  988,   88,
     1378      988,  989,   74,  989,   72,   68,   36,  989,  990,   33,
     1379      990,  991,   18,  991,   11,    4,    3,  991,  992,    0,
     1380      992,    0,    0,    0,  992,  993,    0,  993,  994,    0,
     1381      994,    0,    0,    0,  994,  995,    0,  995,  996,    0,
     1382      996,    0,  996,    0,  996,  997,    0,  997,    0,    0,
     1383        0,  997,  998,    0,  998,    0,    0,    0,  998,  999,
     1384
     1385        0,  999, 1000,    0, 1000,    0,    0,    0, 1000, 1001,
     1386        0, 1001, 1002,    0, 1002,    0,    0,    0, 1002, 1003,
     1387        0, 1003, 1004,    0, 1004,    0,    0,    0, 1004, 1005,
     1388        0, 1005, 1006,    0, 1006,    0,    0,    0, 1006, 1007,
     1389        0, 1007, 1008,    0, 1008,    0,    0,    0, 1008, 1009,
     1390        0, 1009, 1010,    0,    0, 1010,    0, 1010, 1010, 1010,
     1391     1010, 1010, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011,
     1392     1011, 1011, 1011, 1011, 1011, 1012,    0, 1012,    0,    0,
     1393        0, 1012, 1013,    0, 1013, 1014,    0, 1014,    0,    0,
     1394        0, 1014, 1015,    0, 1015, 1016,    0, 1016,    0,    0,
     1395
     1396        0, 1016, 1017,    0, 1017, 1018,    0, 1018,    0,    0,
     1397        0, 1018, 1019,    0, 1019, 1020,    0, 1020,    0,    0,
     1398        0, 1020, 1021,    0, 1021, 1022,    0, 1022,    0,    0,
     1399        0, 1022, 1023,    0, 1023, 1024,    0, 1024,    0,    0,
     1400        0, 1024, 1025,    0, 1025, 1026,    0, 1026,    0,    0,
     1401        0, 1026, 1027,    0, 1027, 1028,    0, 1028,    0,    0,
     1402        0, 1028, 1029,    0, 1029,    0,    0,    0, 1029, 1030,
     1403        0, 1030, 1031,    0, 1031,    0,    0,    0, 1031, 1032,
     1404        0, 1032, 1033,    0, 1033,    0,    0,    0, 1033, 1034,
     1405        0, 1034, 1035,    0, 1035,    0,    0,    0, 1035, 1036,
     1406
     1407        0, 1036, 1037,    0, 1037, 1038,    0, 1038, 1039,    0,
     1408        0, 1039,    0, 1039, 1039, 1039, 1039, 1039, 1040,    0,
     1409     1040, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041,
     1410     1041, 1041, 1041, 1041, 1042,    0, 1042,    0,    0,    0,
     1411     1042, 1043,    0, 1043, 1044,    0, 1044,    0,    0,    0,
     1412     1044, 1045,    0, 1045, 1046,    0, 1046, 1047,    0, 1047,
     1413     1048,    0,    0, 1048,    0, 1048, 1048, 1048, 1048, 1048,
     1414     1049,    0, 1049, 1050,    0, 1050, 1051,    0, 1051, 1052,
     1415        0, 1052, 1053,    0, 1053, 1054,    0, 1054, 1055,    0,
     1416     1055, 1056,    0, 1056,    0,    0,    0, 1056, 1057,    0,
     1417
     1418     1057, 1058,    0, 1058,    0,    0,    0, 1058, 1059,    0,
    14201419     1059, 1060,    0, 1060, 1061,    0, 1061, 1062,    0, 1062,
    1421      1063,    0, 1063,    0,    0,    0, 1063, 1064,    0, 1064,
    1422         0,    0,    0, 1064, 1065,    0, 1065,    0,    0,    0,
    1423      1065, 1066,    0, 1066, 1067,    0, 1067,    0,    0,    0,
    1424      1067, 1068,    0, 1068,    0,    0,    0, 1068, 1069,    0,
    1425      1069,    0,    0,    0, 1069, 1070,    0, 1070,    0,    0,
    1426         0, 1070, 1071,    0, 1071,    0,    0,    0, 1071, 1072,
    1427 
    1428         0, 1072,    0,    0,    0, 1072, 1073,    0, 1073,    0,
    1429         0,    0, 1073, 1074,    0, 1074,    0,    0,    0, 1074,
    1430      1075,    0, 1075,    0,    0,    0, 1075, 1076,    0, 1076,
    1431         0,    0,    0, 1076, 1077,    0, 1077,    0,    0,    0,
    1432      1077, 1078,    0, 1078,    0,    0,    0, 1078, 1079,    0,
    1433      1079,    0,    0,    0, 1079, 1080,    0, 1080,    0,    0,
    1434         0, 1080, 1081,    0, 1081,    0,    0,    0, 1081, 1082,
    1435         0, 1082,    0,    0,    0, 1082,  908,  908,  908,  908,
    1436       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    1437       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    1438 
    1439       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    1440       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    1441       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    1442       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    1443       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    1444       908,  908,  908,  908,  908,  908,  908,  908,  908,  908,
    1445       908,  908
     1420     1063,    0, 1063,    0,    0,    0, 1063, 1064,    0,    0,
     1421     1064,    0, 1064, 1064, 1064, 1064, 1064, 1065,    0, 1065,
     1422     1066,    0, 1066, 1067,    0, 1067, 1068,    0, 1068,    0,
     1423        0,    0, 1068, 1069,    0, 1069,    0,    0,    0, 1069,
     1424     1070,    0, 1070,    0,    0,    0, 1070, 1071,    0, 1071,
     1425     1072,    0, 1072,    0,    0,    0, 1072, 1073,    0, 1073,
     1426        0,    0,    0, 1073, 1074,    0, 1074,    0,    0,    0,
     1427     1074, 1075,    0, 1075,    0,    0,    0, 1075, 1076,    0,
     1428
     1429     1076,    0,    0,    0, 1076, 1077,    0, 1077,    0,    0,
     1430        0, 1077, 1078,    0, 1078,    0,    0,    0, 1078, 1079,
     1431        0, 1079,    0,    0,    0, 1079, 1080,    0, 1080,    0,
     1432        0,    0, 1080, 1081,    0, 1081,    0,    0,    0, 1081,
     1433     1082,    0, 1082,    0,    0,    0, 1082, 1083,    0, 1083,
     1434        0,    0,    0, 1083, 1084,    0, 1084,    0,    0,    0,
     1435     1084, 1085,    0, 1085,    0,    0,    0, 1085, 1086,    0,
     1436     1086,    0,    0,    0, 1086, 1087,    0, 1087,    0,    0,
     1437        0, 1087,  913,  913,  913,  913,  913,  913,  913,  913,
     1438      913,  913,  913,  913,  913,  913,  913,  913,  913,  913,
     1439
     1440      913,  913,  913,  913,  913,  913,  913,  913,  913,  913,
     1441      913,  913,  913,  913,  913,  913,  913,  913,  913,  913,
     1442      913,  913,  913,  913,  913,  913,  913,  913,  913,  913,
     1443      913,  913,  913,  913,  913,  913,  913,  913,  913,  913,
     1444      913,  913,  913,  913,  913,  913,  913,  913,  913,  913,
     1445      913,  913,  913,  913,  913,  913,  913,  913,  913,  913,
     1446      913,  913,  913,  913,  913,  913,  913,  913
    14461447    } ;
    14471448
    14481449/* Table of booleans, true if rule could match eol. */
    1449 static yyconst flex_int32_t yy_rule_can_match_eol[187] =
     1450static yyconst flex_int32_t yy_rule_can_match_eol[188] =
    14501451    {   0,
    145114521, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     
    14551456    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    14561457    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1457     0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     1458    0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    14581459    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    14591460    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1460     0, 0, 0, 0, 0, 0, 0,     };
     1461    0, 0, 0, 0, 0, 0, 0, 0,     };
    14611462
    14621463static yy_state_type yy_last_accepting_state;
     
    14861487 * Created On       : Sat Sep 22 08:58:10 2001
    14871488 * Last Modified By : Peter A. Buhr
    1488  * Last Modified On : Tue Nov 29 11:32:00 2016
    1489  * Update Count     : 501
     1489 * Last Modified On : Fri Mar  3 22:18:00 2017
     1490 * Update Count     : 502
    14901491 */
    14911492#line 20 "lex.ll"
     
    15481549
    15491550
    1550 #line 1551 "Parser/lex.cc"
     1551#line 1552 "Parser/lex.cc"
    15511552
    15521553#define INITIAL 0
     
    17431744
    17441745                                   /* line directives */
    1745 #line 1746 "Parser/lex.cc"
     1746#line 1747 "Parser/lex.cc"
    17461747
    17471748        if ( !(yy_init) )
     
    17971798                                {
    17981799                                yy_current_state = (int) yy_def[yy_current_state];
    1799                                 if ( yy_current_state >= 909 )
     1800                                if ( yy_current_state >= 914 )
    18001801                                        yy_c = yy_meta[(unsigned int) yy_c];
    18011802                                }
     
    18031804                        ++yy_cp;
    18041805                        }
    1805                 while ( yy_base[yy_current_state] != 2877 );
     1806                while ( yy_base[yy_current_state] != 2883 );
    18061807
    18071808yy_find_action:
     
    22092210YY_RULE_SETUP
    22102211#line 237 "lex.ll"
     2212{ KEYWORD_RETURN(MUTEX); }                              // CFA
     2213        YY_BREAK
     2214case 70:
     2215YY_RULE_SETUP
     2216#line 238 "lex.ll"
    22112217{ KEYWORD_RETURN(NORETURN); }                   // C11
    22122218        YY_BREAK
    2213 case 70:
    2214 YY_RULE_SETUP
    2215 #line 238 "lex.ll"
     2219case 71:
     2220YY_RULE_SETUP
     2221#line 239 "lex.ll"
    22162222{ KEYWORD_RETURN(OFFSETOF); }           // GCC
    22172223        YY_BREAK
    2218 case 71:
    2219 YY_RULE_SETUP
    2220 #line 239 "lex.ll"
     2224case 72:
     2225YY_RULE_SETUP
     2226#line 240 "lex.ll"
    22212227{ NUMERIC_RETURN(ONE_T); }                              // CFA
    22222228        YY_BREAK
    2223 case 72:
    2224 YY_RULE_SETUP
    2225 #line 240 "lex.ll"
     2229case 73:
     2230YY_RULE_SETUP
     2231#line 241 "lex.ll"
    22262232{ KEYWORD_RETURN(OTYPE); }                              // CFA
    22272233        YY_BREAK
    2228 case 73:
    2229 YY_RULE_SETUP
    2230 #line 241 "lex.ll"
     2234case 74:
     2235YY_RULE_SETUP
     2236#line 242 "lex.ll"
    22312237{ KEYWORD_RETURN(REGISTER); }
    22322238        YY_BREAK
    2233 case 74:
    2234 YY_RULE_SETUP
    2235 #line 242 "lex.ll"
     2239case 75:
     2240YY_RULE_SETUP
     2241#line 243 "lex.ll"
    22362242{ KEYWORD_RETURN(RESTRICT); }                   // C99
    2237         YY_BREAK
    2238 case 75:
    2239 YY_RULE_SETUP
    2240 #line 243 "lex.ll"
    2241 { KEYWORD_RETURN(RESTRICT); }                   // GCC
    22422243        YY_BREAK
    22432244case 76:
     
    22492250YY_RULE_SETUP
    22502251#line 245 "lex.ll"
     2252{ KEYWORD_RETURN(RESTRICT); }                   // GCC
     2253        YY_BREAK
     2254case 78:
     2255YY_RULE_SETUP
     2256#line 246 "lex.ll"
    22512257{ KEYWORD_RETURN(RETURN); }
    22522258        YY_BREAK
    2253 case 78:
    2254 YY_RULE_SETUP
    2255 #line 246 "lex.ll"
     2259case 79:
     2260YY_RULE_SETUP
     2261#line 247 "lex.ll"
    22562262{ KEYWORD_RETURN(SHORT); }
    22572263        YY_BREAK
    2258 case 79:
    2259 YY_RULE_SETUP
    2260 #line 247 "lex.ll"
     2264case 80:
     2265YY_RULE_SETUP
     2266#line 248 "lex.ll"
    22612267{ KEYWORD_RETURN(SIGNED); }
    2262         YY_BREAK
    2263 case 80:
    2264 YY_RULE_SETUP
    2265 #line 248 "lex.ll"
    2266 { KEYWORD_RETURN(SIGNED); }                             // GCC
    22672268        YY_BREAK
    22682269case 81:
     
    22742275YY_RULE_SETUP
    22752276#line 250 "lex.ll"
     2277{ KEYWORD_RETURN(SIGNED); }                             // GCC
     2278        YY_BREAK
     2279case 83:
     2280YY_RULE_SETUP
     2281#line 251 "lex.ll"
    22762282{ KEYWORD_RETURN(SIZEOF); }
    22772283        YY_BREAK
    2278 case 83:
    2279 YY_RULE_SETUP
    2280 #line 251 "lex.ll"
     2284case 84:
     2285YY_RULE_SETUP
     2286#line 252 "lex.ll"
    22812287{ KEYWORD_RETURN(STATIC); }
    22822288        YY_BREAK
    2283 case 84:
    2284 YY_RULE_SETUP
    2285 #line 252 "lex.ll"
     2289case 85:
     2290YY_RULE_SETUP
     2291#line 253 "lex.ll"
    22862292{ KEYWORD_RETURN(STATICASSERT); }               // C11
    22872293        YY_BREAK
    2288 case 85:
    2289 YY_RULE_SETUP
    2290 #line 253 "lex.ll"
     2294case 86:
     2295YY_RULE_SETUP
     2296#line 254 "lex.ll"
    22912297{ KEYWORD_RETURN(STRUCT); }
    22922298        YY_BREAK
    2293 case 86:
    2294 YY_RULE_SETUP
    2295 #line 254 "lex.ll"
     2299case 87:
     2300YY_RULE_SETUP
     2301#line 255 "lex.ll"
    22962302{ KEYWORD_RETURN(SWITCH); }
    22972303        YY_BREAK
    2298 case 87:
    2299 YY_RULE_SETUP
    2300 #line 255 "lex.ll"
     2304case 88:
     2305YY_RULE_SETUP
     2306#line 256 "lex.ll"
    23012307{ KEYWORD_RETURN(THREADLOCAL); }                // C11
    23022308        YY_BREAK
    2303 case 88:
    2304 YY_RULE_SETUP
    2305 #line 256 "lex.ll"
     2309case 89:
     2310YY_RULE_SETUP
     2311#line 257 "lex.ll"
    23062312{ KEYWORD_RETURN(THROW); }                              // CFA
    23072313        YY_BREAK
    2308 case 89:
    2309 YY_RULE_SETUP
    2310 #line 257 "lex.ll"
     2314case 90:
     2315YY_RULE_SETUP
     2316#line 258 "lex.ll"
    23112317{ KEYWORD_RETURN(THROWRESUME); }                // CFA
    23122318        YY_BREAK
    2313 case 90:
    2314 YY_RULE_SETUP
    2315 #line 258 "lex.ll"
     2319case 91:
     2320YY_RULE_SETUP
     2321#line 259 "lex.ll"
    23162322{ KEYWORD_RETURN(TRAIT); }                              // CFA
    23172323        YY_BREAK
    2318 case 91:
    2319 YY_RULE_SETUP
    2320 #line 259 "lex.ll"
     2324case 92:
     2325YY_RULE_SETUP
     2326#line 260 "lex.ll"
    23212327{ KEYWORD_RETURN(TRY); }                                // CFA
    23222328        YY_BREAK
    2323 case 92:
    2324 YY_RULE_SETUP
    2325 #line 260 "lex.ll"
     2329case 93:
     2330YY_RULE_SETUP
     2331#line 261 "lex.ll"
    23262332{ KEYWORD_RETURN(TTYPE); }                              // CFA
    23272333        YY_BREAK
    2328 case 93:
    2329 YY_RULE_SETUP
    2330 #line 261 "lex.ll"
     2334case 94:
     2335YY_RULE_SETUP
     2336#line 262 "lex.ll"
    23312337{ KEYWORD_RETURN(TYPEDEF); }
    2332         YY_BREAK
    2333 case 94:
    2334 YY_RULE_SETUP
    2335 #line 262 "lex.ll"
    2336 { KEYWORD_RETURN(TYPEOF); }                             // GCC
    23372338        YY_BREAK
    23382339case 95:
     
    23492350YY_RULE_SETUP
    23502351#line 265 "lex.ll"
     2352{ KEYWORD_RETURN(TYPEOF); }                             // GCC
     2353        YY_BREAK
     2354case 98:
     2355YY_RULE_SETUP
     2356#line 266 "lex.ll"
    23512357{ KEYWORD_RETURN(UNION); }
    23522358        YY_BREAK
    2353 case 98:
    2354 YY_RULE_SETUP
    2355 #line 266 "lex.ll"
     2359case 99:
     2360YY_RULE_SETUP
     2361#line 267 "lex.ll"
    23562362{ KEYWORD_RETURN(UNSIGNED); }
    23572363        YY_BREAK
    2358 case 99:
    2359 YY_RULE_SETUP
    2360 #line 267 "lex.ll"
     2364case 100:
     2365YY_RULE_SETUP
     2366#line 268 "lex.ll"
    23612367{ KEYWORD_RETURN(VALIST); }                     // GCC
    23622368        YY_BREAK
    2363 case 100:
    2364 YY_RULE_SETUP
    2365 #line 268 "lex.ll"
     2369case 101:
     2370YY_RULE_SETUP
     2371#line 269 "lex.ll"
    23662372{ KEYWORD_RETURN(VOID); }
    23672373        YY_BREAK
    2368 case 101:
    2369 YY_RULE_SETUP
    2370 #line 269 "lex.ll"
     2374case 102:
     2375YY_RULE_SETUP
     2376#line 270 "lex.ll"
    23712377{ KEYWORD_RETURN(VOLATILE); }
    2372         YY_BREAK
    2373 case 102:
    2374 YY_RULE_SETUP
    2375 #line 270 "lex.ll"
    2376 { KEYWORD_RETURN(VOLATILE); }                   // GCC
    23772378        YY_BREAK
    23782379case 103:
     
    23842385YY_RULE_SETUP
    23852386#line 272 "lex.ll"
     2387{ KEYWORD_RETURN(VOLATILE); }                   // GCC
     2388        YY_BREAK
     2389case 105:
     2390YY_RULE_SETUP
     2391#line 273 "lex.ll"
    23862392{ KEYWORD_RETURN(WHILE); }
    23872393        YY_BREAK
    2388 case 105:
    2389 YY_RULE_SETUP
    2390 #line 273 "lex.ll"
     2394case 106:
     2395YY_RULE_SETUP
     2396#line 274 "lex.ll"
    23912397{ NUMERIC_RETURN(ZERO_T); }                             // CFA
    23922398        YY_BREAK
    23932399/* identifier */
    2394 case 106:
    2395 YY_RULE_SETUP
    2396 #line 276 "lex.ll"
     2400case 107:
     2401YY_RULE_SETUP
     2402#line 277 "lex.ll"
    23972403{ IDENTIFIER_RETURN(); }
    23982404        YY_BREAK
    2399 case 107:
    2400 YY_RULE_SETUP
    2401 #line 277 "lex.ll"
     2405case 108:
     2406YY_RULE_SETUP
     2407#line 278 "lex.ll"
    24022408{ ATTRIBUTE_RETURN(); }
    24032409        YY_BREAK
    2404 case 108:
    2405 YY_RULE_SETUP
    2406 #line 278 "lex.ll"
     2410case 109:
     2411YY_RULE_SETUP
     2412#line 279 "lex.ll"
    24072413{ BEGIN BKQUOTE; }
    24082414        YY_BREAK
    2409 case 109:
    2410 YY_RULE_SETUP
    2411 #line 279 "lex.ll"
     2415case 110:
     2416YY_RULE_SETUP
     2417#line 280 "lex.ll"
    24122418{ IDENTIFIER_RETURN(); }
    24132419        YY_BREAK
    2414 case 110:
    2415 YY_RULE_SETUP
    2416 #line 280 "lex.ll"
     2420case 111:
     2421YY_RULE_SETUP
     2422#line 281 "lex.ll"
    24172423{ BEGIN 0; }
    24182424        YY_BREAK
    24192425/* numeric constants */
    2420 case 111:
    2421 YY_RULE_SETUP
    2422 #line 283 "lex.ll"
     2426case 112:
     2427YY_RULE_SETUP
     2428#line 284 "lex.ll"
    24232429{ NUMERIC_RETURN(ZERO); }                               // CFA
    24242430        YY_BREAK
    2425 case 112:
    2426 YY_RULE_SETUP
    2427 #line 284 "lex.ll"
     2431case 113:
     2432YY_RULE_SETUP
     2433#line 285 "lex.ll"
    24282434{ NUMERIC_RETURN(ONE); }                                // CFA
    2429         YY_BREAK
    2430 case 113:
    2431 YY_RULE_SETUP
    2432 #line 285 "lex.ll"
    2433 { NUMERIC_RETURN(INTEGERconstant); }
    24342435        YY_BREAK
    24352436case 114:
     
    24462447YY_RULE_SETUP
    24472448#line 288 "lex.ll"
     2449{ NUMERIC_RETURN(INTEGERconstant); }
     2450        YY_BREAK
     2451case 117:
     2452YY_RULE_SETUP
     2453#line 289 "lex.ll"
    24482454{ NUMERIC_RETURN(REALDECIMALconstant); } // must appear before floating_constant
    24492455        YY_BREAK
    2450 case 117:
    2451 YY_RULE_SETUP
    2452 #line 289 "lex.ll"
     2456case 118:
     2457YY_RULE_SETUP
     2458#line 290 "lex.ll"
    24532459{ NUMERIC_RETURN(REALFRACTIONconstant); } // must appear before floating_constant
    2454         YY_BREAK
    2455 case 118:
    2456 YY_RULE_SETUP
    2457 #line 290 "lex.ll"
    2458 { NUMERIC_RETURN(FLOATINGconstant); }
    24592460        YY_BREAK
    24602461case 119:
     
    24632464{ NUMERIC_RETURN(FLOATINGconstant); }
    24642465        YY_BREAK
     2466case 120:
     2467YY_RULE_SETUP
     2468#line 292 "lex.ll"
     2469{ NUMERIC_RETURN(FLOATINGconstant); }
     2470        YY_BREAK
    24652471/* character constant, allows empty value */
    2466 case 120:
    2467 YY_RULE_SETUP
    2468 #line 294 "lex.ll"
     2472case 121:
     2473YY_RULE_SETUP
     2474#line 295 "lex.ll"
    24692475{ BEGIN QUOTE; rm_underscore(); strtext = new std::string( yytext, yyleng ); }
    24702476        YY_BREAK
    2471 case 121:
    2472 YY_RULE_SETUP
    2473 #line 295 "lex.ll"
     2477case 122:
     2478YY_RULE_SETUP
     2479#line 296 "lex.ll"
    24742480{ strtext->append( yytext, yyleng ); }
    24752481        YY_BREAK
    2476 case 122:
    2477 /* rule 122 can match eol */
    2478 YY_RULE_SETUP
    2479 #line 296 "lex.ll"
     2482case 123:
     2483/* rule 123 can match eol */
     2484YY_RULE_SETUP
     2485#line 297 "lex.ll"
    24802486{ BEGIN 0; strtext->append( yytext, yyleng ); RETURN_STR(CHARACTERconstant); }
    24812487        YY_BREAK
    24822488/* ' stop highlighting */
    24832489/* string constant */
    2484 case 123:
    2485 YY_RULE_SETUP
    2486 #line 300 "lex.ll"
     2490case 124:
     2491YY_RULE_SETUP
     2492#line 301 "lex.ll"
    24872493{ BEGIN STRING; rm_underscore(); strtext = new std::string( yytext, yyleng ); }
    24882494        YY_BREAK
    2489 case 124:
    2490 YY_RULE_SETUP
    2491 #line 301 "lex.ll"
     2495case 125:
     2496YY_RULE_SETUP
     2497#line 302 "lex.ll"
    24922498{ strtext->append( yytext, yyleng ); }
    24932499        YY_BREAK
    2494 case 125:
    2495 /* rule 125 can match eol */
    2496 YY_RULE_SETUP
    2497 #line 302 "lex.ll"
     2500case 126:
     2501/* rule 126 can match eol */
     2502YY_RULE_SETUP
     2503#line 303 "lex.ll"
    24982504{ BEGIN 0; strtext->append( yytext, yyleng ); RETURN_STR(STRINGliteral); }
    24992505        YY_BREAK
    25002506/* " stop highlighting */
    25012507/* common character/string constant */
    2502 case 126:
    2503 YY_RULE_SETUP
    2504 #line 306 "lex.ll"
     2508case 127:
     2509YY_RULE_SETUP
     2510#line 307 "lex.ll"
    25052511{ rm_underscore(); strtext->append( yytext, yyleng ); }
    25062512        YY_BREAK
    2507 case 127:
    2508 /* rule 127 can match eol */
    2509 YY_RULE_SETUP
    2510 #line 307 "lex.ll"
     2513case 128:
     2514/* rule 128 can match eol */
     2515YY_RULE_SETUP
     2516#line 308 "lex.ll"
    25112517{}                                              // continuation (ALSO HANDLED BY CPP)
    25122518        YY_BREAK
    2513 case 128:
    2514 YY_RULE_SETUP
    2515 #line 308 "lex.ll"
     2519case 129:
     2520YY_RULE_SETUP
     2521#line 309 "lex.ll"
    25162522{ strtext->append( yytext, yyleng ); } // unknown escape character
    25172523        YY_BREAK
    25182524/* punctuation */
    2519 case 129:
    2520 YY_RULE_SETUP
    2521 #line 311 "lex.ll"
    2522 { ASCIIOP_RETURN(); }
    2523         YY_BREAK
    25242525case 130:
    25252526YY_RULE_SETUP
     
    25502551YY_RULE_SETUP
    25512552#line 317 "lex.ll"
     2553{ ASCIIOP_RETURN(); }
     2554        YY_BREAK
     2555case 136:
     2556YY_RULE_SETUP
     2557#line 318 "lex.ll"
    25522558{ ASCIIOP_RETURN(); }                                   // also operator
    2553         YY_BREAK
    2554 case 136:
    2555 YY_RULE_SETUP
    2556 #line 318 "lex.ll"
    2557 { ASCIIOP_RETURN(); }
    25582559        YY_BREAK
    25592560case 137:
     
    25652566YY_RULE_SETUP
    25662567#line 320 "lex.ll"
     2568{ ASCIIOP_RETURN(); }
     2569        YY_BREAK
     2570case 139:
     2571YY_RULE_SETUP
     2572#line 321 "lex.ll"
    25672573{ ASCIIOP_RETURN(); }                                   // also operator
    25682574        YY_BREAK
    2569 case 139:
    2570 YY_RULE_SETUP
    2571 #line 321 "lex.ll"
     2575case 140:
     2576YY_RULE_SETUP
     2577#line 322 "lex.ll"
    25722578{ NAMEDOP_RETURN(ELLIPSIS); }
    25732579        YY_BREAK
    25742580/* alternative C99 brackets, "<:" & "<:<:" handled by preprocessor */
    2575 case 140:
    2576 YY_RULE_SETUP
    2577 #line 324 "lex.ll"
     2581case 141:
     2582YY_RULE_SETUP
     2583#line 325 "lex.ll"
    25782584{ RETURN_VAL('['); }
    25792585        YY_BREAK
    2580 case 141:
    2581 YY_RULE_SETUP
    2582 #line 325 "lex.ll"
     2586case 142:
     2587YY_RULE_SETUP
     2588#line 326 "lex.ll"
    25832589{ RETURN_VAL(']'); }
    25842590        YY_BREAK
    2585 case 142:
    2586 YY_RULE_SETUP
    2587 #line 326 "lex.ll"
     2591case 143:
     2592YY_RULE_SETUP
     2593#line 327 "lex.ll"
    25882594{ RETURN_VAL('{'); }
    25892595        YY_BREAK
    2590 case 143:
    2591 YY_RULE_SETUP
    2592 #line 327 "lex.ll"
     2596case 144:
     2597YY_RULE_SETUP
     2598#line 328 "lex.ll"
    25932599{ RETURN_VAL('}'); }
    25942600        YY_BREAK
    25952601/* operators */
    2596 case 144:
    2597 YY_RULE_SETUP
    2598 #line 330 "lex.ll"
    2599 { ASCIIOP_RETURN(); }
    2600         YY_BREAK
    26012602case 145:
    26022603YY_RULE_SETUP
     
    26662667case 158:
    26672668YY_RULE_SETUP
    2668 #line 345 "lex.ll"
     2669#line 344 "lex.ll"
     2670{ ASCIIOP_RETURN(); }
     2671        YY_BREAK
     2672case 159:
     2673YY_RULE_SETUP
     2674#line 346 "lex.ll"
    26692675{ NAMEDOP_RETURN(ICR); }
    26702676        YY_BREAK
    2671 case 159:
    2672 YY_RULE_SETUP
    2673 #line 346 "lex.ll"
     2677case 160:
     2678YY_RULE_SETUP
     2679#line 347 "lex.ll"
    26742680{ NAMEDOP_RETURN(DECR); }
    26752681        YY_BREAK
    2676 case 160:
    2677 YY_RULE_SETUP
    2678 #line 347 "lex.ll"
     2682case 161:
     2683YY_RULE_SETUP
     2684#line 348 "lex.ll"
    26792685{ NAMEDOP_RETURN(EQ); }
    26802686        YY_BREAK
    2681 case 161:
    2682 YY_RULE_SETUP
    2683 #line 348 "lex.ll"
     2687case 162:
     2688YY_RULE_SETUP
     2689#line 349 "lex.ll"
    26842690{ NAMEDOP_RETURN(NE); }
    26852691        YY_BREAK
    2686 case 162:
    2687 YY_RULE_SETUP
    2688 #line 349 "lex.ll"
     2692case 163:
     2693YY_RULE_SETUP
     2694#line 350 "lex.ll"
    26892695{ NAMEDOP_RETURN(LS); }
    26902696        YY_BREAK
    2691 case 163:
    2692 YY_RULE_SETUP
    2693 #line 350 "lex.ll"
     2697case 164:
     2698YY_RULE_SETUP
     2699#line 351 "lex.ll"
    26942700{ NAMEDOP_RETURN(RS); }
    26952701        YY_BREAK
    2696 case 164:
    2697 YY_RULE_SETUP
    2698 #line 351 "lex.ll"
     2702case 165:
     2703YY_RULE_SETUP
     2704#line 352 "lex.ll"
    26992705{ NAMEDOP_RETURN(LE); }
    27002706        YY_BREAK
    2701 case 165:
    2702 YY_RULE_SETUP
    2703 #line 352 "lex.ll"
     2707case 166:
     2708YY_RULE_SETUP
     2709#line 353 "lex.ll"
    27042710{ NAMEDOP_RETURN(GE); }
    27052711        YY_BREAK
    2706 case 166:
    2707 YY_RULE_SETUP
    2708 #line 353 "lex.ll"
     2712case 167:
     2713YY_RULE_SETUP
     2714#line 354 "lex.ll"
    27092715{ NAMEDOP_RETURN(ANDAND); }
    27102716        YY_BREAK
    2711 case 167:
    2712 YY_RULE_SETUP
    2713 #line 354 "lex.ll"
     2717case 168:
     2718YY_RULE_SETUP
     2719#line 355 "lex.ll"
    27142720{ NAMEDOP_RETURN(OROR); }
    27152721        YY_BREAK
    2716 case 168:
    2717 YY_RULE_SETUP
    2718 #line 355 "lex.ll"
     2722case 169:
     2723YY_RULE_SETUP
     2724#line 356 "lex.ll"
    27192725{ NAMEDOP_RETURN(ARROW); }
    27202726        YY_BREAK
    2721 case 169:
    2722 YY_RULE_SETUP
    2723 #line 356 "lex.ll"
     2727case 170:
     2728YY_RULE_SETUP
     2729#line 357 "lex.ll"
    27242730{ NAMEDOP_RETURN(PLUSassign); }
    27252731        YY_BREAK
    2726 case 170:
    2727 YY_RULE_SETUP
    2728 #line 357 "lex.ll"
     2732case 171:
     2733YY_RULE_SETUP
     2734#line 358 "lex.ll"
    27292735{ NAMEDOP_RETURN(MINUSassign); }
    27302736        YY_BREAK
    2731 case 171:
    2732 YY_RULE_SETUP
    2733 #line 358 "lex.ll"
     2737case 172:
     2738YY_RULE_SETUP
     2739#line 359 "lex.ll"
    27342740{ NAMEDOP_RETURN(MULTassign); }
    27352741        YY_BREAK
    2736 case 172:
    2737 YY_RULE_SETUP
    2738 #line 359 "lex.ll"
     2742case 173:
     2743YY_RULE_SETUP
     2744#line 360 "lex.ll"
    27392745{ NAMEDOP_RETURN(DIVassign); }
    27402746        YY_BREAK
    2741 case 173:
    2742 YY_RULE_SETUP
    2743 #line 360 "lex.ll"
     2747case 174:
     2748YY_RULE_SETUP
     2749#line 361 "lex.ll"
    27442750{ NAMEDOP_RETURN(MODassign); }
    27452751        YY_BREAK
    2746 case 174:
    2747 YY_RULE_SETUP
    2748 #line 361 "lex.ll"
     2752case 175:
     2753YY_RULE_SETUP
     2754#line 362 "lex.ll"
    27492755{ NAMEDOP_RETURN(ANDassign); }
    27502756        YY_BREAK
    2751 case 175:
    2752 YY_RULE_SETUP
    2753 #line 362 "lex.ll"
     2757case 176:
     2758YY_RULE_SETUP
     2759#line 363 "lex.ll"
    27542760{ NAMEDOP_RETURN(ORassign); }
    27552761        YY_BREAK
    2756 case 176:
    2757 YY_RULE_SETUP
    2758 #line 363 "lex.ll"
     2762case 177:
     2763YY_RULE_SETUP
     2764#line 364 "lex.ll"
    27592765{ NAMEDOP_RETURN(ERassign); }
    27602766        YY_BREAK
    2761 case 177:
    2762 YY_RULE_SETUP
    2763 #line 364 "lex.ll"
     2767case 178:
     2768YY_RULE_SETUP
     2769#line 365 "lex.ll"
    27642770{ NAMEDOP_RETURN(LSassign); }
    27652771        YY_BREAK
    2766 case 178:
    2767 YY_RULE_SETUP
    2768 #line 365 "lex.ll"
     2772case 179:
     2773YY_RULE_SETUP
     2774#line 366 "lex.ll"
    27692775{ NAMEDOP_RETURN(RSassign); }
    27702776        YY_BREAK
    2771 case 179:
    2772 YY_RULE_SETUP
    2773 #line 367 "lex.ll"
     2777case 180:
     2778YY_RULE_SETUP
     2779#line 368 "lex.ll"
    27742780{ NAMEDOP_RETURN(ATassign); }                   // CFA
    27752781        YY_BREAK
    27762782/* CFA, operator identifier */
    2777 case 180:
    2778 YY_RULE_SETUP
    2779 #line 370 "lex.ll"
     2783case 181:
     2784YY_RULE_SETUP
     2785#line 371 "lex.ll"
    27802786{ IDENTIFIER_RETURN(); }                                // unary
    2781         YY_BREAK
    2782 case 181:
    2783 YY_RULE_SETUP
    2784 #line 371 "lex.ll"
    2785 { IDENTIFIER_RETURN(); }
    27862787        YY_BREAK
    27872788case 182:
     
    27932794YY_RULE_SETUP
    27942795#line 373 "lex.ll"
     2796{ IDENTIFIER_RETURN(); }
     2797        YY_BREAK
     2798case 184:
     2799YY_RULE_SETUP
     2800#line 374 "lex.ll"
    27952801{ IDENTIFIER_RETURN(); }                // binary
    27962802        YY_BREAK
     
    28212827          an argument list.
    28222828        */
    2823 case 184:
    2824 YY_RULE_SETUP
    2825 #line 400 "lex.ll"
     2829case 185:
     2830YY_RULE_SETUP
     2831#line 401 "lex.ll"
    28262832{
    28272833        // 1 or 2 character unary operator ?
     
    28362842        YY_BREAK
    28372843/* unknown characters */
    2838 case 185:
    2839 YY_RULE_SETUP
    2840 #line 412 "lex.ll"
     2844case 186:
     2845YY_RULE_SETUP
     2846#line 413 "lex.ll"
    28412847{ printf("unknown character(s):\"%s\" on line %d\n", yytext, yylineno); }
    28422848        YY_BREAK
    2843 case 186:
    2844 YY_RULE_SETUP
    2845 #line 414 "lex.ll"
     2849case 187:
     2850YY_RULE_SETUP
     2851#line 415 "lex.ll"
    28462852ECHO;
    28472853        YY_BREAK
    2848 #line 2849 "Parser/lex.cc"
     2854#line 2855 "Parser/lex.cc"
    28492855case YY_STATE_EOF(INITIAL):
    28502856case YY_STATE_EOF(COMMENT):
     
    31433149                        {
    31443150                        yy_current_state = (int) yy_def[yy_current_state];
    3145                         if ( yy_current_state >= 909 )
     3151                        if ( yy_current_state >= 914 )
    31463152                                yy_c = yy_meta[(unsigned int) yy_c];
    31473153                        }
     
    31713177                {
    31723178                yy_current_state = (int) yy_def[yy_current_state];
    3173                 if ( yy_current_state >= 909 )
     3179                if ( yy_current_state >= 914 )
    31743180                        yy_c = yy_meta[(unsigned int) yy_c];
    31753181                }
    31763182        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
    3177         yy_is_jam = (yy_current_state == 908);
     3183        yy_is_jam = (yy_current_state == 913);
    31783184
    31793185        return yy_is_jam ? 0 : yy_current_state;
     
    38213827#define YYTABLES_NAME "yytables"
    38223828
    3823 #line 414 "lex.ll"
     3829#line 415 "lex.ll"
    38243830
    38253831
  • src/Parser/lex.ll

    r7fe2498 ra7c90d4  
    1010 * Created On       : Sat Sep 22 08:58:10 2001
    1111 * Last Modified By : Peter A. Buhr
    12  * Last Modified On : Tue Nov 29 11:32:00 2016
    13  * Update Count     : 501
     12 * Last Modified On : Fri Mar  3 22:18:00 2017
     13 * Update Count     : 502
    1414 */
    1515
     
    235235long                    { KEYWORD_RETURN(LONG); }
    236236lvalue                  { KEYWORD_RETURN(LVALUE); }                             // CFA
     237mutex                   { KEYWORD_RETURN(MUTEX); }                              // CFA
    237238_Noreturn               { KEYWORD_RETURN(NORETURN); }                   // C11
    238239__builtin_offsetof { KEYWORD_RETURN(OFFSETOF); }                // GCC
  • src/Parser/parser.cc

    r7fe2498 ra7c90d4  
    144144   enum yytokentype {
    145145     TYPEDEF = 258,
    146      AUTO = 259,
    147      EXTERN = 260,
    148      REGISTER = 261,
    149      STATIC = 262,
    150      INLINE = 263,
    151      FORTRAN = 264,
    152      CONST = 265,
    153      VOLATILE = 266,
    154      RESTRICT = 267,
    155      FORALL = 268,
    156      LVALUE = 269,
    157      VOID = 270,
    158      CHAR = 271,
    159      SHORT = 272,
    160      INT = 273,
    161      LONG = 274,
    162      FLOAT = 275,
    163      DOUBLE = 276,
    164      SIGNED = 277,
    165      UNSIGNED = 278,
    166      ZERO_T = 279,
    167      ONE_T = 280,
    168      VALIST = 281,
    169      BOOL = 282,
    170      COMPLEX = 283,
    171      IMAGINARY = 284,
    172      TYPEOF = 285,
    173      LABEL = 286,
    174      ENUM = 287,
    175      STRUCT = 288,
    176      UNION = 289,
    177      OTYPE = 290,
    178      FTYPE = 291,
    179      DTYPE = 292,
    180      TTYPE = 293,
    181      TRAIT = 294,
    182      SIZEOF = 295,
    183      OFFSETOF = 296,
    184      ATTRIBUTE = 297,
    185      EXTENSION = 298,
    186      IF = 299,
    187      ELSE = 300,
    188      SWITCH = 301,
    189      CASE = 302,
    190      DEFAULT = 303,
    191      DO = 304,
    192      WHILE = 305,
    193      FOR = 306,
    194      BREAK = 307,
    195      CONTINUE = 308,
    196      GOTO = 309,
    197      RETURN = 310,
    198      CHOOSE = 311,
    199      DISABLE = 312,
    200      ENABLE = 313,
    201      FALLTHRU = 314,
    202      TRY = 315,
    203      CATCH = 316,
    204      CATCHRESUME = 317,
    205      FINALLY = 318,
    206      THROW = 319,
    207      THROWRESUME = 320,
    208      AT = 321,
    209      ASM = 322,
    210      ALIGNAS = 323,
    211      ALIGNOF = 324,
    212      ATOMIC = 325,
    213      GENERIC = 326,
    214      NORETURN = 327,
    215      STATICASSERT = 328,
    216      THREADLOCAL = 329,
    217      IDENTIFIER = 330,
    218      QUOTED_IDENTIFIER = 331,
    219      TYPEDEFname = 332,
    220      TYPEGENname = 333,
    221      ATTR_IDENTIFIER = 334,
    222      ATTR_TYPEDEFname = 335,
    223      ATTR_TYPEGENname = 336,
    224      INTEGERconstant = 337,
    225      CHARACTERconstant = 338,
    226      STRINGliteral = 339,
    227      REALDECIMALconstant = 340,
    228      REALFRACTIONconstant = 341,
    229      FLOATINGconstant = 342,
    230      ZERO = 343,
    231      ONE = 344,
    232      ARROW = 345,
    233      ICR = 346,
    234      DECR = 347,
    235      LS = 348,
    236      RS = 349,
    237      LE = 350,
    238      GE = 351,
    239      EQ = 352,
    240      NE = 353,
    241      ANDAND = 354,
    242      OROR = 355,
    243      ELLIPSIS = 356,
    244      MULTassign = 357,
    245      DIVassign = 358,
    246      MODassign = 359,
    247      PLUSassign = 360,
    248      MINUSassign = 361,
    249      LSassign = 362,
    250      RSassign = 363,
    251      ANDassign = 364,
    252      ERassign = 365,
    253      ORassign = 366,
    254      ATassign = 367,
    255      THEN = 368
     146     EXTERN = 259,
     147     STATIC = 260,
     148     AUTO = 261,
     149     REGISTER = 262,
     150     THREADLOCAL = 263,
     151     INLINE = 264,
     152     FORTRAN = 265,
     153     NORETURN = 266,
     154     CONST = 267,
     155     VOLATILE = 268,
     156     RESTRICT = 269,
     157     ATOMIC = 270,
     158     FORALL = 271,
     159     LVALUE = 272,
     160     MUTEX = 273,
     161     VOID = 274,
     162     CHAR = 275,
     163     SHORT = 276,
     164     INT = 277,
     165     LONG = 278,
     166     FLOAT = 279,
     167     DOUBLE = 280,
     168     SIGNED = 281,
     169     UNSIGNED = 282,
     170     ZERO_T = 283,
     171     ONE_T = 284,
     172     VALIST = 285,
     173     BOOL = 286,
     174     COMPLEX = 287,
     175     IMAGINARY = 288,
     176     TYPEOF = 289,
     177     LABEL = 290,
     178     ENUM = 291,
     179     STRUCT = 292,
     180     UNION = 293,
     181     OTYPE = 294,
     182     FTYPE = 295,
     183     DTYPE = 296,
     184     TTYPE = 297,
     185     TRAIT = 298,
     186     SIZEOF = 299,
     187     OFFSETOF = 300,
     188     ATTRIBUTE = 301,
     189     EXTENSION = 302,
     190     IF = 303,
     191     ELSE = 304,
     192     SWITCH = 305,
     193     CASE = 306,
     194     DEFAULT = 307,
     195     DO = 308,
     196     WHILE = 309,
     197     FOR = 310,
     198     BREAK = 311,
     199     CONTINUE = 312,
     200     GOTO = 313,
     201     RETURN = 314,
     202     CHOOSE = 315,
     203     DISABLE = 316,
     204     ENABLE = 317,
     205     FALLTHRU = 318,
     206     TRY = 319,
     207     CATCH = 320,
     208     CATCHRESUME = 321,
     209     FINALLY = 322,
     210     THROW = 323,
     211     THROWRESUME = 324,
     212     AT = 325,
     213     ASM = 326,
     214     ALIGNAS = 327,
     215     ALIGNOF = 328,
     216     GENERIC = 329,
     217     STATICASSERT = 330,
     218     IDENTIFIER = 331,
     219     QUOTED_IDENTIFIER = 332,
     220     TYPEDEFname = 333,
     221     TYPEGENname = 334,
     222     ATTR_IDENTIFIER = 335,
     223     ATTR_TYPEDEFname = 336,
     224     ATTR_TYPEGENname = 337,
     225     INTEGERconstant = 338,
     226     CHARACTERconstant = 339,
     227     STRINGliteral = 340,
     228     REALDECIMALconstant = 341,
     229     REALFRACTIONconstant = 342,
     230     FLOATINGconstant = 343,
     231     ZERO = 344,
     232     ONE = 345,
     233     ARROW = 346,
     234     ICR = 347,
     235     DECR = 348,
     236     LS = 349,
     237     RS = 350,
     238     LE = 351,
     239     GE = 352,
     240     EQ = 353,
     241     NE = 354,
     242     ANDAND = 355,
     243     OROR = 356,
     244     ELLIPSIS = 357,
     245     MULTassign = 358,
     246     DIVassign = 359,
     247     MODassign = 360,
     248     PLUSassign = 361,
     249     MINUSassign = 362,
     250     LSassign = 363,
     251     RSassign = 364,
     252     ANDassign = 365,
     253     ERassign = 366,
     254     ORassign = 367,
     255     ATassign = 368,
     256     THEN = 369
    256257   };
    257258#endif
    258259/* Tokens.  */
    259260#define TYPEDEF 258
    260 #define AUTO 259
    261 #define EXTERN 260
    262 #define REGISTER 261
    263 #define STATIC 262
    264 #define INLINE 263
    265 #define FORTRAN 264
    266 #define CONST 265
    267 #define VOLATILE 266
    268 #define RESTRICT 267
    269 #define FORALL 268
    270 #define LVALUE 269
    271 #define VOID 270
    272 #define CHAR 271
    273 #define SHORT 272
    274 #define INT 273
    275 #define LONG 274
    276 #define FLOAT 275
    277 #define DOUBLE 276
    278 #define SIGNED 277
    279 #define UNSIGNED 278
    280 #define ZERO_T 279
    281 #define ONE_T 280
    282 #define VALIST 281
    283 #define BOOL 282
    284 #define COMPLEX 283
    285 #define IMAGINARY 284
    286 #define TYPEOF 285
    287 #define LABEL 286
    288 #define ENUM 287
    289 #define STRUCT 288
    290 #define UNION 289
    291 #define OTYPE 290
    292 #define FTYPE 291
    293 #define DTYPE 292
    294 #define TTYPE 293
    295 #define TRAIT 294
    296 #define SIZEOF 295
    297 #define OFFSETOF 296
    298 #define ATTRIBUTE 297
    299 #define EXTENSION 298
    300 #define IF 299
    301 #define ELSE 300
    302 #define SWITCH 301
    303 #define CASE 302
    304 #define DEFAULT 303
    305 #define DO 304
    306 #define WHILE 305
    307 #define FOR 306
    308 #define BREAK 307
    309 #define CONTINUE 308
    310 #define GOTO 309
    311 #define RETURN 310
    312 #define CHOOSE 311
    313 #define DISABLE 312
    314 #define ENABLE 313
    315 #define FALLTHRU 314
    316 #define TRY 315
    317 #define CATCH 316
    318 #define CATCHRESUME 317
    319 #define FINALLY 318
    320 #define THROW 319
    321 #define THROWRESUME 320
    322 #define AT 321
    323 #define ASM 322
    324 #define ALIGNAS 323
    325 #define ALIGNOF 324
    326 #define ATOMIC 325
    327 #define GENERIC 326
    328 #define NORETURN 327
    329 #define STATICASSERT 328
    330 #define THREADLOCAL 329
    331 #define IDENTIFIER 330
    332 #define QUOTED_IDENTIFIER 331
    333 #define TYPEDEFname 332
    334 #define TYPEGENname 333
    335 #define ATTR_IDENTIFIER 334
    336 #define ATTR_TYPEDEFname 335
    337 #define ATTR_TYPEGENname 336
    338 #define INTEGERconstant 337
    339 #define CHARACTERconstant 338
    340 #define STRINGliteral 339
    341 #define REALDECIMALconstant 340
    342 #define REALFRACTIONconstant 341
    343 #define FLOATINGconstant 342
    344 #define ZERO 343
    345 #define ONE 344
    346 #define ARROW 345
    347 #define ICR 346
    348 #define DECR 347
    349 #define LS 348
    350 #define RS 349
    351 #define LE 350
    352 #define GE 351
    353 #define EQ 352
    354 #define NE 353
    355 #define ANDAND 354
    356 #define OROR 355
    357 #define ELLIPSIS 356
    358 #define MULTassign 357
    359 #define DIVassign 358
    360 #define MODassign 359
    361 #define PLUSassign 360
    362 #define MINUSassign 361
    363 #define LSassign 362
    364 #define RSassign 363
    365 #define ANDassign 364
    366 #define ERassign 365
    367 #define ORassign 366
    368 #define ATassign 367
    369 #define THEN 368
     261#define EXTERN 259
     262#define STATIC 260
     263#define AUTO 261
     264#define REGISTER 262
     265#define THREADLOCAL 263
     266#define INLINE 264
     267#define FORTRAN 265
     268#define NORETURN 266
     269#define CONST 267
     270#define VOLATILE 268
     271#define RESTRICT 269
     272#define ATOMIC 270
     273#define FORALL 271
     274#define LVALUE 272
     275#define MUTEX 273
     276#define VOID 274
     277#define CHAR 275
     278#define SHORT 276
     279#define INT 277
     280#define LONG 278
     281#define FLOAT 279
     282#define DOUBLE 280
     283#define SIGNED 281
     284#define UNSIGNED 282
     285#define ZERO_T 283
     286#define ONE_T 284
     287#define VALIST 285
     288#define BOOL 286
     289#define COMPLEX 287
     290#define IMAGINARY 288
     291#define TYPEOF 289
     292#define LABEL 290
     293#define ENUM 291
     294#define STRUCT 292
     295#define UNION 293
     296#define OTYPE 294
     297#define FTYPE 295
     298#define DTYPE 296
     299#define TTYPE 297
     300#define TRAIT 298
     301#define SIZEOF 299
     302#define OFFSETOF 300
     303#define ATTRIBUTE 301
     304#define EXTENSION 302
     305#define IF 303
     306#define ELSE 304
     307#define SWITCH 305
     308#define CASE 306
     309#define DEFAULT 307
     310#define DO 308
     311#define WHILE 309
     312#define FOR 310
     313#define BREAK 311
     314#define CONTINUE 312
     315#define GOTO 313
     316#define RETURN 314
     317#define CHOOSE 315
     318#define DISABLE 316
     319#define ENABLE 317
     320#define FALLTHRU 318
     321#define TRY 319
     322#define CATCH 320
     323#define CATCHRESUME 321
     324#define FINALLY 322
     325#define THROW 323
     326#define THROWRESUME 324
     327#define AT 325
     328#define ASM 326
     329#define ALIGNAS 327
     330#define ALIGNOF 328
     331#define GENERIC 329
     332#define STATICASSERT 330
     333#define IDENTIFIER 331
     334#define QUOTED_IDENTIFIER 332
     335#define TYPEDEFname 333
     336#define TYPEGENname 334
     337#define ATTR_IDENTIFIER 335
     338#define ATTR_TYPEDEFname 336
     339#define ATTR_TYPEGENname 337
     340#define INTEGERconstant 338
     341#define CHARACTERconstant 339
     342#define STRINGliteral 340
     343#define REALDECIMALconstant 341
     344#define REALFRACTIONconstant 342
     345#define FLOATINGconstant 343
     346#define ZERO 344
     347#define ONE 345
     348#define ARROW 346
     349#define ICR 347
     350#define DECR 348
     351#define LS 349
     352#define RS 350
     353#define LE 351
     354#define GE 352
     355#define EQ 353
     356#define NE 354
     357#define ANDAND 355
     358#define OROR 356
     359#define ELLIPSIS 357
     360#define MULTassign 358
     361#define DIVassign 359
     362#define MODassign 360
     363#define PLUSassign 361
     364#define MINUSassign 362
     365#define LSassign 363
     366#define RSassign 364
     367#define ANDassign 365
     368#define ERassign 366
     369#define ORassign 367
     370#define ATassign 368
     371#define THEN 369
    370372
    371373
     
    377379
    378380/* Line 293 of yacc.c  */
    379 #line 139 "parser.yy"
     381#line 141 "parser.yy"
    380382
    381383        Token tok;
     
    397399
    398400/* Line 293 of yacc.c  */
    399 #line 400 "Parser/parser.cc"
     401#line 402 "Parser/parser.cc"
    400402} YYSTYPE;
    401403# define YYSTYPE_IS_TRIVIAL 1
     
    409411
    410412/* Line 343 of yacc.c  */
    411 #line 412 "Parser/parser.cc"
     413#line 414 "Parser/parser.cc"
    412414
    413415#ifdef short
     
    626628
    627629/* YYFINAL -- State number of the termination state.  */
    628 #define YYFINAL  240
     630#define YYFINAL  241
    629631/* YYLAST -- Last index in YYTABLE.  */
    630 #define YYLAST   11898
     632#define YYLAST   11830
    631633
    632634/* YYNTOKENS -- Number of terminals.  */
    633 #define YYNTOKENS  138
     635#define YYNTOKENS  139
    634636/* YYNNTS -- Number of nonterminals.  */
    635637#define YYNNTS  249
    636638/* YYNRULES -- Number of rules.  */
    637 #define YYNRULES  775
     639#define YYNRULES  776
    638640/* YYNRULES -- Number of states.  */
    639 #define YYNSTATES  1582
     641#define YYNSTATES  1583
    640642
    641643/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
    642644#define YYUNDEFTOK  2
    643 #define YYMAXUTOK   368
     645#define YYMAXUTOK   369
    644646
    645647#define YYTRANSLATE(YYX)                                                \
     
    652654       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    653655       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    654        2,     2,     2,   126,     2,     2,     2,   129,   123,     2,
    655      114,   115,   122,   124,   121,   125,   118,   128,     2,     2,
    656        2,     2,     2,     2,     2,     2,     2,     2,   135,   137,
    657      130,   136,   131,   134,     2,     2,     2,     2,     2,     2,
     656       2,     2,     2,   127,     2,     2,     2,   130,   124,     2,
     657     115,   116,   123,   125,   122,   126,   119,   129,     2,     2,
     658       2,     2,     2,     2,     2,     2,     2,     2,   136,   138,
     659     131,   137,   132,   135,     2,     2,     2,     2,     2,     2,
    658660       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    659661       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    660        2,   116,     2,   117,   132,     2,     2,     2,     2,     2,
     662       2,   117,     2,   118,   133,     2,     2,     2,     2,     2,
    661663       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    662664       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    663        2,     2,     2,   119,   133,   120,   127,     2,     2,     2,
     665       2,     2,     2,   120,   134,   121,   128,     2,     2,     2,
    664666       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    665667       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     
    685687      85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
    686688      95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
    687      105,   106,   107,   108,   109,   110,   111,   112,   113
     689     105,   106,   107,   108,   109,   110,   111,   112,   113,   114
    688690};
    689691
     
    724726    1076,  1083,  1085,  1087,  1089,  1091,  1093,  1095,  1097,  1099,
    725727    1101,  1103,  1105,  1107,  1109,  1111,  1113,  1115,  1116,  1118,
    726     1120,  1123,  1125,  1127,  1129,  1131,  1133,  1135,  1137,  1138,
    727     1144,  1146,  1149,  1153,  1155,  1158,  1160,  1162,  1164,  1166,
     728    1120,  1123,  1125,  1127,  1129,  1131,  1133,  1135,  1137,  1139,
     729    1140,  1146,  1148,  1151,  1155,  1157,  1160,  1162,  1164,  1166,
    728730    1168,  1170,  1172,  1174,  1176,  1178,  1180,  1182,  1184,  1186,
    729731    1188,  1190,  1192,  1194,  1196,  1198,  1200,  1202,  1204,  1206,
    730     1209,  1212,  1216,  1220,  1222,  1226,  1228,  1231,  1234,  1237,
    731     1242,  1247,  1252,  1257,  1259,  1262,  1265,  1269,  1271,  1274,
    732     1277,  1279,  1282,  1285,  1289,  1291,  1294,  1297,  1299,  1302,
    733     1305,  1309,  1311,  1314,  1317,  1319,  1321,  1323,  1325,  1331,
    734     1332,  1340,  1349,  1351,  1355,  1359,  1361,  1363,  1364,  1367,
    735     1370,  1374,  1378,  1383,  1385,  1388,  1392,  1395,  1397,  1402,
    736     1403,  1405,  1408,  1411,  1413,  1414,  1416,  1419,  1426,  1427,
    737     1436,  1438,  1442,  1445,  1450,  1451,  1454,  1455,  1457,  1459,
    738     1461,  1467,  1473,  1479,  1481,  1487,  1493,  1503,  1505,  1511,
    739     1512,  1514,  1516,  1522,  1524,  1526,  1532,  1538,  1540,  1544,
    740     1548,  1553,  1555,  1557,  1559,  1561,  1564,  1566,  1570,  1574,
    741     1577,  1581,  1583,  1587,  1589,  1591,  1593,  1595,  1597,  1599,
    742     1601,  1603,  1605,  1607,  1609,  1612,  1614,  1616,  1617,  1620,
    743     1623,  1625,  1630,  1631,  1633,  1636,  1640,  1645,  1648,  1651,
    744     1653,  1656,  1659,  1665,  1671,  1679,  1686,  1688,  1691,  1694,
    745     1698,  1700,  1703,  1706,  1711,  1714,  1719,  1720,  1725,  1728,
    746     1730,  1732,  1734,  1736,  1737,  1740,  1746,  1752,  1766,  1768,
    747     1770,  1774,  1778,  1781,  1785,  1789,  1792,  1797,  1799,  1806,
    748     1816,  1817,  1829,  1831,  1835,  1839,  1843,  1845,  1847,  1853,
    749     1856,  1862,  1863,  1865,  1867,  1871,  1872,  1874,  1876,  1878,
    750     1884,  1885,  1892,  1895,  1897,  1900,  1905,  1908,  1912,  1916,
    751     1920,  1925,  1931,  1937,  1943,  1950,  1952,  1954,  1956,  1960,
    752     1961,  1967,  1968,  1970,  1972,  1975,  1982,  1984,  1988,  1989,
    753     1991,  1996,  1998,  2000,  2002,  2004,  2007,  2009,  2012,  2015,
    754     2017,  2021,  2024,  2028,  2033,  2036,  2041,  2046,  2050,  2059,
    755     2063,  2066,  2068,  2071,  2078,  2087,  2091,  2094,  2098,  2102,
    756     2107,  2112,  2116,  2118,  2120,  2122,  2127,  2136,  2140,  2143,
    757     2147,  2151,  2156,  2161,  2165,  2168,  2170,  2173,  2176,  2178,
    758     2182,  2185,  2189,  2194,  2197,  2202,  2207,  2211,  2218,  2227,
    759     2231,  2234,  2236,  2239,  2242,  2245,  2249,  2254,  2257,  2262,
    760     2267,  2271,  2278,  2287,  2291,  2294,  2296,  2299,  2302,  2304,
    761     2306,  2309,  2313,  2318,  2321,  2326,  2333,  2342,  2344,  2347,
    762     2350,  2352,  2355,  2358,  2362,  2367,  2369,  2374,  2379,  2383,
    763     2389,  2398,  2402,  2405,  2409,  2411,  2417,  2423,  2430,  2437,
    764     2439,  2442,  2445,  2447,  2450,  2453,  2457,  2462,  2464,  2469,
    765     2474,  2478,  2484,  2493,  2497,  2499,  2502,  2504,  2507,  2514,
    766     2520,  2527,  2535,  2543,  2545,  2548,  2551,  2553,  2556,  2559,
    767     2563,  2568,  2570,  2575,  2580,  2584,  2593,  2597,  2599,  2601,
    768     2604,  2606,  2608,  2611,  2615,  2618,  2622,  2625,  2629,  2633,
    769     2636,  2641,  2645,  2648,  2652,  2655,  2660,  2664,  2667,  2674,
    770     2681,  2688,  2696,  2698,  2701,  2703,  2705,  2707,  2710,  2714,
    771     2717,  2721,  2724,  2728,  2732,  2737,  2740,  2744,  2749,  2752,
    772     2758,  2765,  2772,  2773,  2775,  2776
     732    1208,  1211,  1214,  1218,  1222,  1224,  1228,  1230,  1233,  1236,
     733    1239,  1244,  1249,  1254,  1259,  1261,  1264,  1267,  1271,  1273,
     734    1276,  1279,  1281,  1284,  1287,  1291,  1293,  1296,  1299,  1301,
     735    1304,  1307,  1311,  1313,  1316,  1319,  1321,  1323,  1325,  1327,
     736    1333,  1334,  1342,  1351,  1353,  1357,  1361,  1363,  1365,  1366,
     737    1369,  1372,  1376,  1380,  1385,  1387,  1390,  1394,  1397,  1399,
     738    1404,  1405,  1407,  1410,  1413,  1415,  1416,  1418,  1421,  1428,
     739    1429,  1438,  1440,  1444,  1447,  1452,  1453,  1456,  1457,  1459,
     740    1461,  1463,  1469,  1475,  1481,  1483,  1489,  1495,  1505,  1507,
     741    1513,  1514,  1516,  1518,  1524,  1526,  1528,  1534,  1540,  1542,
     742    1546,  1550,  1555,  1557,  1559,  1561,  1563,  1566,  1568,  1572,
     743    1576,  1579,  1583,  1585,  1589,  1591,  1593,  1595,  1597,  1599,
     744    1601,  1603,  1605,  1607,  1609,  1611,  1614,  1616,  1618,  1619,
     745    1622,  1625,  1627,  1632,  1633,  1635,  1638,  1642,  1647,  1650,
     746    1653,  1655,  1658,  1661,  1667,  1673,  1681,  1688,  1690,  1693,
     747    1696,  1700,  1702,  1705,  1708,  1713,  1716,  1721,  1722,  1727,
     748    1730,  1732,  1734,  1736,  1738,  1739,  1742,  1748,  1754,  1768,
     749    1770,  1772,  1776,  1780,  1783,  1787,  1791,  1794,  1799,  1801,
     750    1808,  1818,  1819,  1831,  1833,  1837,  1841,  1845,  1847,  1849,
     751    1855,  1858,  1864,  1865,  1867,  1869,  1873,  1874,  1876,  1878,
     752    1880,  1886,  1887,  1894,  1897,  1899,  1902,  1907,  1910,  1914,
     753    1918,  1922,  1927,  1933,  1939,  1945,  1952,  1954,  1956,  1958,
     754    1962,  1963,  1969,  1970,  1972,  1974,  1977,  1984,  1986,  1990,
     755    1991,  1993,  1998,  2000,  2002,  2004,  2006,  2009,  2011,  2014,
     756    2017,  2019,  2023,  2026,  2030,  2035,  2038,  2043,  2048,  2052,
     757    2061,  2065,  2068,  2070,  2073,  2080,  2089,  2093,  2096,  2100,
     758    2104,  2109,  2114,  2118,  2120,  2122,  2124,  2129,  2138,  2142,
     759    2145,  2149,  2153,  2158,  2163,  2167,  2170,  2172,  2175,  2178,
     760    2180,  2184,  2187,  2191,  2196,  2199,  2204,  2209,  2213,  2220,
     761    2229,  2233,  2236,  2238,  2241,  2244,  2247,  2251,  2256,  2259,
     762    2264,  2269,  2273,  2280,  2289,  2293,  2296,  2298,  2301,  2304,
     763    2306,  2308,  2311,  2315,  2320,  2323,  2328,  2335,  2344,  2346,
     764    2349,  2352,  2354,  2357,  2360,  2364,  2369,  2371,  2376,  2381,
     765    2385,  2391,  2400,  2404,  2407,  2411,  2413,  2419,  2425,  2432,
     766    2439,  2441,  2444,  2447,  2449,  2452,  2455,  2459,  2464,  2466,
     767    2471,  2476,  2480,  2486,  2495,  2499,  2501,  2504,  2506,  2509,
     768    2516,  2522,  2529,  2537,  2545,  2547,  2550,  2553,  2555,  2558,
     769    2561,  2565,  2570,  2572,  2577,  2582,  2586,  2595,  2599,  2601,
     770    2603,  2606,  2608,  2610,  2613,  2617,  2620,  2624,  2627,  2631,
     771    2635,  2638,  2643,  2647,  2650,  2654,  2657,  2662,  2666,  2669,
     772    2676,  2683,  2690,  2698,  2700,  2703,  2705,  2707,  2709,  2712,
     773    2716,  2719,  2723,  2726,  2730,  2734,  2739,  2742,  2746,  2751,
     774    2754,  2760,  2767,  2774,  2775,  2777,  2778
    773775};
    774776
     
    776778static const yytype_int16 yyrhs[] =
    777779{
    778      315,     0,    -1,    -1,    -1,    82,    -1,    85,    -1,    86,
    779       -1,    87,    -1,    83,    -1,    75,    -1,    79,    -1,   145,
    780       -1,    75,    -1,    79,    -1,    75,    -1,   145,    -1,    88,
    781       -1,    89,    -1,   147,    -1,    84,    -1,   147,    84,    -1,
    782       75,    -1,   145,    -1,   175,    -1,   114,   177,   115,    -1,
    783      114,   181,   115,    -1,   148,    -1,   149,   116,   139,   172,
    784      140,   117,    -1,   149,   114,   150,   115,    -1,   149,   118,
    785      144,    -1,   149,   118,   116,   139,   152,   140,   117,    -1,
    786      149,    86,    -1,   149,    90,   144,    -1,   149,    90,   116,
    787      139,   152,   140,   117,    -1,   149,    91,    -1,   149,    92,
    788       -1,   114,   288,   115,   119,   292,   385,   120,    -1,   149,
    789      119,   150,   120,    -1,   151,    -1,   150,   121,   151,    -1,
    790       -1,   172,    -1,   153,    -1,   152,   121,   153,    -1,   154,
    791       -1,    85,   153,    -1,    85,   116,   139,   152,   140,   117,
    792       -1,   154,   118,   153,    -1,   154,   118,   116,   139,   152,
    793      140,   117,    -1,   154,    90,   153,    -1,   154,    90,   116,
    794      139,   152,   140,   117,    -1,    82,   155,    -1,    87,   155,
    795       -1,   144,   155,    -1,    -1,   155,    86,    -1,   149,    -1,
    796      141,    -1,   146,    -1,    43,   159,    -1,   157,   159,    -1,
    797      158,   159,    -1,    91,   156,    -1,    92,   156,    -1,    40,
    798      156,    -1,    40,   114,   288,   115,    -1,    69,   156,    -1,
    799       69,   114,   288,   115,    -1,    41,   114,   288,   121,   144,
    800      115,    -1,    79,    -1,    79,   114,   151,   115,    -1,    79,
    801      114,   289,   115,    -1,   122,    -1,   123,    -1,   124,    -1,
    802      125,    -1,   126,    -1,   127,    -1,   156,    -1,   114,   288,
    803      115,   159,    -1,   159,    -1,   160,   122,   159,    -1,   160,
    804      128,   159,    -1,   160,   129,   159,    -1,   160,    -1,   161,
    805      124,   160,    -1,   161,   125,   160,    -1,   161,    -1,   162,
    806       93,   161,    -1,   162,    94,   161,    -1,   162,    -1,   163,
    807      130,   162,    -1,   163,   131,   162,    -1,   163,    95,   162,
    808       -1,   163,    96,   162,    -1,   163,    -1,   164,    97,   163,
    809       -1,   164,    98,   163,    -1,   164,    -1,   165,   123,   164,
    810       -1,   165,    -1,   166,   132,   165,    -1,   166,    -1,   167,
    811      133,   166,    -1,   167,    -1,   168,    99,   167,    -1,   168,
    812       -1,   169,   100,   168,    -1,   169,    -1,   169,   134,   177,
    813      135,   170,    -1,   169,   134,   135,   170,    -1,   170,    -1,
    814      170,    -1,   156,   174,   172,    -1,    -1,   172,    -1,   136,
    815       -1,   112,    -1,   102,    -1,   103,    -1,   104,    -1,   105,
    816       -1,   106,    -1,   107,    -1,   108,    -1,   109,    -1,   110,
    817       -1,   111,    -1,   116,   139,   121,   176,   140,   117,    -1,
    818      116,   139,   172,   121,   176,   140,   117,    -1,   173,    -1,
    819      176,   121,   173,    -1,   172,    -1,   177,   121,   172,    -1,
    820       -1,   177,    -1,   180,    -1,   181,    -1,   185,    -1,   186,
    821       -1,   198,    -1,   200,    -1,   201,    -1,   206,    -1,   132,
    822      149,   119,   150,   120,   137,    -1,   285,   135,   325,   179,
    823       -1,   119,   120,    -1,   119,   139,   139,   217,   182,   140,
    824      120,    -1,   183,    -1,   182,   139,   183,    -1,   220,    -1,
    825       43,   220,    -1,   321,    -1,    43,   321,    -1,   179,   140,
    826       -1,   179,    -1,   184,   179,    -1,   178,   137,    -1,    44,
    827      114,   177,   115,   179,    -1,    44,   114,   177,   115,   179,
    828       45,   179,    -1,    46,   114,   177,   115,   191,    -1,    46,
    829      114,   177,   115,   119,   139,   213,   192,   120,    -1,    56,
    830      114,   177,   115,   191,    -1,    56,   114,   177,   115,   119,
    831      139,   213,   194,   120,    -1,   171,    -1,   171,   101,   171,
    832       -1,   323,    -1,   187,    -1,   188,   121,   187,    -1,    47,
    833      188,   135,    -1,    48,   135,    -1,   189,    -1,   190,   189,
    834       -1,   190,   179,    -1,    -1,   193,    -1,   190,   184,    -1,
    835      193,   190,   184,    -1,    -1,   195,    -1,   190,   197,    -1,
    836      190,   184,   196,    -1,   195,   190,   197,    -1,   195,   190,
    837      184,   196,    -1,    -1,   197,    -1,    59,    -1,    59,   137,
    838       -1,    50,   114,   177,   115,   179,    -1,    49,   179,    50,
    839      114,   177,   115,   137,    -1,    51,   114,   139,   199,   115,
    840      179,    -1,   178,   140,   137,   178,   137,   178,    -1,   220,
    841      178,   137,   178,    -1,    54,   285,   137,    -1,    54,   122,
    842      177,   137,    -1,    53,   137,    -1,    53,   285,   137,    -1,
    843       52,   137,    -1,    52,   285,   137,    -1,    55,   178,   137,
    844       -1,    64,   173,   137,    -1,    65,   173,   137,    -1,    65,
    845      173,    66,   172,   137,    -1,    60,   181,   202,    -1,    60,
    846      181,   204,    -1,    60,   181,   202,   204,    -1,   203,    -1,
    847       61,   114,   101,   115,   181,    -1,   203,    61,   114,   101,
    848      115,   181,    -1,    62,   114,   101,   115,   181,    -1,   203,
    849       62,   114,   101,   115,   181,    -1,    61,   114,   139,   139,
    850      205,   140,   115,   181,   140,    -1,   203,    61,   114,   139,
    851      139,   205,   140,   115,   181,   140,    -1,    62,   114,   139,
    852      139,   205,   140,   115,   181,   140,    -1,   203,    62,   114,
    853      139,   139,   205,   140,   115,   181,   140,    -1,    63,   181,
    854       -1,   235,    -1,   235,   322,    -1,   235,   370,    -1,   379,
    855      144,    -1,   379,    -1,    67,   207,   114,   146,   115,   137,
    856       -1,    67,   207,   114,   146,   135,   208,   115,   137,    -1,
    857       67,   207,   114,   146,   135,   208,   135,   208,   115,   137,
    858       -1,    67,   207,   114,   146,   135,   208,   135,   208,   135,
    859      211,   115,   137,    -1,    67,   207,    54,   114,   146,   135,
    860      135,   208,   135,   211,   135,   212,   115,   137,    -1,    -1,
    861       11,    -1,    -1,   209,    -1,   210,    -1,   209,   121,   210,
    862       -1,   146,   114,   171,   115,    -1,   116,   171,   117,   146,
    863      114,   171,   115,    -1,    -1,   146,    -1,   211,   121,   146,
    864       -1,   144,    -1,   212,   121,   144,    -1,   140,    -1,   214,
    865       -1,   220,    -1,   214,   139,   220,    -1,   140,    -1,   216,
    866       -1,   230,    -1,   216,   139,   230,    -1,    -1,   218,    -1,
    867       31,   219,   137,    -1,   218,    31,   219,   137,    -1,   287,
    868       -1,   219,   121,   287,    -1,   221,    -1,   230,    -1,   222,
    869      140,   137,    -1,   227,   140,   137,    -1,   224,   140,   137,
    870       -1,   306,   140,   137,    -1,   309,   140,   137,    -1,   223,
    871      290,    -1,   241,   223,   290,    -1,   222,   140,   121,   139,
    872      285,   290,    -1,   380,   285,   324,    -1,   383,   285,   324,
    873       -1,   237,   383,   285,   324,    -1,   225,    -1,   237,   225,
    874       -1,   241,   225,    -1,   241,   237,   225,    -1,   224,   140,
    875      121,   139,   285,    -1,   383,   285,   114,   139,   273,   140,
    876      115,    -1,   226,   285,   114,   139,   273,   140,   115,    -1,
    877      116,   139,   275,   140,   117,    -1,   116,   139,   275,   140,
    878      121,   139,   276,   140,   117,    -1,     3,   223,    -1,     3,
    879      225,    -1,   227,   140,   121,   139,   144,    -1,     3,   234,
    880      322,    -1,   228,   140,   121,   139,   322,    -1,   237,     3,
    881      234,   322,    -1,   234,     3,   322,    -1,   234,     3,   237,
    882      322,    -1,     3,   144,   136,   172,    -1,   229,   140,   121,
    883      139,   144,   136,   172,    -1,   232,   231,   140,   137,    -1,
    884      228,   140,   137,    -1,   229,   140,   137,    -1,   249,   140,
    885      137,    -1,   322,   324,   290,    -1,   231,   121,   325,   322,
    886      324,   290,    -1,   245,    -1,   249,    -1,   253,    -1,   296,
    887       -1,   245,    -1,   251,    -1,   253,    -1,   296,    -1,   246,
    888       -1,   250,    -1,   254,    -1,   297,    -1,   246,    -1,   252,
    889       -1,   254,    -1,   297,    -1,    -1,   237,    -1,   238,    -1,
    890      237,   238,    -1,   239,    -1,   327,    -1,    10,    -1,    12,
    891       -1,    11,    -1,    14,    -1,    70,    -1,    -1,    13,   114,
    892      240,   299,   115,    -1,   242,    -1,   237,   242,    -1,   241,
    893      237,   242,    -1,   243,    -1,   242,   243,    -1,     5,    -1,
    894        7,    -1,     4,    -1,     6,    -1,    74,    -1,     8,    -1,
    895        9,    -1,    72,    -1,    16,    -1,    21,    -1,    20,    -1,
    896       18,    -1,    19,    -1,    17,    -1,    22,    -1,    23,    -1,
    897       15,    -1,    27,    -1,    28,    -1,    29,    -1,    26,    -1,
    898       24,    -1,    25,    -1,   246,    -1,   241,   246,    -1,   245,
    899      243,    -1,   245,   243,   237,    -1,   245,   243,   246,    -1,
    900      247,    -1,   236,   248,   236,    -1,   244,    -1,   237,   244,
    901       -1,   247,   238,    -1,   247,   244,    -1,    30,   114,   289,
    902      115,    -1,    30,   114,   177,   115,    -1,    81,   114,   289,
    903      115,    -1,    81,   114,   177,   115,    -1,   250,    -1,   241,
    904      250,    -1,   249,   243,    -1,   249,   243,   237,    -1,   255,
    905       -1,   237,   255,    -1,   250,   238,    -1,   252,    -1,   241,
    906      252,    -1,   251,   243,    -1,   251,   243,   237,    -1,   256,
    907       -1,   237,   256,    -1,   252,   238,    -1,   254,    -1,   241,
    908      254,    -1,   253,   243,    -1,   253,   243,   237,    -1,    77,
    909       -1,   237,    77,    -1,   254,   238,    -1,   257,    -1,   268,
    910       -1,   259,    -1,   270,    -1,   260,   325,   119,   261,   120,
    911       -1,    -1,   260,   325,   287,   258,   119,   261,   120,    -1,
    912      260,   325,   114,   305,   115,   119,   261,   120,    -1,   259,
    913       -1,   260,   325,   287,    -1,   260,   325,   298,    -1,    33,
    914       -1,    34,    -1,    -1,   261,   262,    -1,   263,   137,    -1,
    915       43,   263,   137,    -1,   234,   264,   137,    -1,    43,   234,
    916      264,   137,    -1,   379,    -1,   379,   287,    -1,   263,   121,
    917      287,    -1,   263,   121,    -1,   265,    -1,   264,   121,   325,
    918      265,    -1,    -1,   267,    -1,   331,   266,    -1,   344,   266,
    919       -1,   370,    -1,    -1,   267,    -1,   135,   171,    -1,    32,
    920      325,   119,   271,   385,   120,    -1,    -1,    32,   325,   287,
    921      269,   119,   271,   385,   120,    -1,   270,    -1,    32,   325,
    922      287,    -1,   287,   272,    -1,   271,   121,   287,   272,    -1,
    923       -1,   136,   171,    -1,    -1,   274,    -1,   276,    -1,   275,
    924       -1,   275,   140,   121,   139,   276,    -1,   276,   140,   121,
    925      139,   101,    -1,   275,   140,   121,   139,   101,    -1,   280,
    926       -1,   276,   140,   121,   139,   280,    -1,   275,   140,   121,
    927      139,   280,    -1,   275,   140,   121,   139,   276,   140,   121,
    928      139,   280,    -1,   281,    -1,   276,   140,   121,   139,   281,
    929       -1,    -1,   278,    -1,   279,    -1,   279,   140,   121,   139,
    930      101,    -1,   283,    -1,   282,    -1,   279,   140,   121,   139,
    931      283,    -1,   279,   140,   121,   139,   282,    -1,   282,    -1,
    932      375,   285,   386,    -1,   383,   285,   386,    -1,   237,   383,
    933      285,   386,    -1,   225,    -1,   283,    -1,   375,    -1,   383,
    934       -1,   237,   383,    -1,   384,    -1,   233,   349,   386,    -1,
    935      233,   353,   386,    -1,   233,   386,    -1,   233,   364,   386,
    936       -1,   144,    -1,   284,   121,   144,    -1,   142,    -1,    77,
    937       -1,    78,    -1,   143,    -1,    77,    -1,    78,    -1,   144,
    938       -1,    77,    -1,    78,    -1,   379,    -1,   234,    -1,   234,
    939      358,    -1,   288,    -1,   384,    -1,    -1,   136,   291,    -1,
    940      112,   291,    -1,   172,    -1,   119,   292,   385,   120,    -1,
    941       -1,   291,    -1,   293,   291,    -1,   292,   121,   291,    -1,
    942      292,   121,   293,   291,    -1,   294,   135,    -1,   287,   135,
    943       -1,   295,    -1,   294,   295,    -1,   118,   287,    -1,   116,
    944      139,   172,   140,   117,    -1,   116,   139,   323,   140,   117,
    945       -1,   116,   139,   171,   101,   171,   140,   117,    -1,   118,
    946      116,   139,   152,   140,   117,    -1,   297,    -1,   241,   297,
    947       -1,   296,   243,    -1,   296,   243,   237,    -1,   298,    -1,
    948      237,   298,    -1,   297,   238,    -1,    78,   114,   305,   115,
    949       -1,   300,   386,    -1,   299,   121,   300,   386,    -1,    -1,
    950      302,   287,   301,   303,    -1,   234,   349,    -1,    35,    -1,
    951       37,    -1,    36,    -1,    38,    -1,    -1,   303,   304,    -1,
    952      133,   287,   114,   305,   115,    -1,   133,   119,   139,   311,
    953      120,    -1,   133,   114,   139,   299,   140,   115,   119,   139,
    954      311,   120,   114,   305,   115,    -1,   289,    -1,   172,    -1,
    955      305,   121,   289,    -1,   305,   121,   172,    -1,    35,   307,
    956       -1,   242,    35,   307,    -1,   306,   121,   307,    -1,   308,
    957      303,    -1,   308,   303,   136,   289,    -1,   287,    -1,   286,
    958      114,   139,   299,   140,   115,    -1,    39,   287,   114,   139,
    959      299,   140,   115,   119,   120,    -1,    -1,    39,   287,   114,
    960      139,   299,   140,   115,   119,   310,   311,   120,    -1,   312,
    961       -1,   311,   139,   312,    -1,   313,   140,   137,    -1,   314,
    962      140,   137,    -1,   223,    -1,   225,    -1,   313,   140,   121,
    963      139,   285,    -1,   234,   322,    -1,   314,   140,   121,   139,
    964      322,    -1,    -1,   316,    -1,   318,    -1,   316,   139,   318,
    965       -1,    -1,   316,    -1,   220,    -1,   320,    -1,    67,   114,
    966      146,   115,   137,    -1,    -1,     5,    84,   319,   119,   317,
    967      120,    -1,    43,   318,    -1,   321,    -1,   336,   181,    -1,
    968      340,   139,   215,   181,    -1,   224,   181,    -1,   232,   336,
    969      181,    -1,   237,   336,   181,    -1,   241,   336,   181,    -1,
    970      241,   237,   336,   181,    -1,   232,   340,   139,   215,   181,
    971       -1,   237,   340,   139,   215,   181,    -1,   241,   340,   139,
    972      215,   181,    -1,   241,   237,   340,   139,   215,   181,    -1,
    973      331,    -1,   344,    -1,   336,    -1,   171,   127,   171,    -1,
    974       -1,    67,   114,   146,   115,   325,    -1,    -1,   326,    -1,
    975      327,    -1,   326,   327,    -1,    42,   114,   114,   328,   115,
    976      115,    -1,   329,    -1,   328,   121,   329,    -1,    -1,   330,
    977       -1,   330,   114,   150,   115,    -1,    75,    -1,    77,    -1,
    978       78,    -1,    10,    -1,   332,   325,    -1,   333,    -1,   334,
    979      325,    -1,   335,   325,    -1,   142,    -1,   114,   332,   115,
    980       -1,   157,   331,    -1,   157,   237,   331,    -1,   114,   333,
    981      115,   325,    -1,   332,   362,    -1,   114,   333,   115,   362,
    982       -1,   114,   334,   115,   363,    -1,   114,   334,   115,    -1,
    983      114,   333,   115,   114,   139,   277,   140,   115,    -1,   114,
    984      335,   115,    -1,   337,   325,    -1,   338,    -1,   339,   325,
    985       -1,   332,   114,   139,   277,   140,   115,    -1,   114,   338,
    986      115,   114,   139,   277,   140,   115,    -1,   114,   337,   115,
    987       -1,   157,   336,    -1,   157,   237,   336,    -1,   114,   338,
    988      115,    -1,   114,   338,   115,   362,    -1,   114,   339,   115,
    989      363,    -1,   114,   339,   115,    -1,   341,    -1,   342,    -1,
    990      343,    -1,   332,   114,   284,   115,    -1,   114,   342,   115,
    991      114,   139,   277,   140,   115,    -1,   114,   341,   115,    -1,
    992      157,   340,    -1,   157,   237,   340,    -1,   114,   342,   115,
    993       -1,   114,   342,   115,   362,    -1,   114,   343,   115,   363,
    994       -1,   114,   343,   115,    -1,   345,   325,    -1,   346,    -1,
    995      347,   325,    -1,   348,   325,    -1,   354,    -1,   114,   345,
    996      115,    -1,   157,   344,    -1,   157,   237,   344,    -1,   114,
    997      346,   115,   325,    -1,   345,   362,    -1,   114,   346,   115,
    998      362,    -1,   114,   347,   115,   363,    -1,   114,   347,   115,
    999       -1,   345,   114,   139,   277,   140,   115,    -1,   114,   346,
    1000      115,   114,   139,   277,   140,   115,    -1,   114,   348,   115,
    1001       -1,   332,   325,    -1,   350,    -1,   351,   325,    -1,   352,
    1002      325,    -1,   157,   349,    -1,   157,   237,   349,    -1,   114,
    1003      350,   115,   325,    -1,   332,   368,    -1,   114,   350,   115,
    1004      362,    -1,   114,   351,   115,   363,    -1,   114,   351,   115,
    1005       -1,   332,   114,   139,   277,   140,   115,    -1,   114,   350,
    1006      115,   114,   139,   277,   140,   115,    -1,   114,   352,   115,
    1007       -1,   354,   325,    -1,   355,    -1,   356,   325,    -1,   357,
    1008      325,    -1,    77,    -1,    78,    -1,   157,   353,    -1,   157,
    1009      237,   353,    -1,   114,   355,   115,   325,    -1,   354,   368,
    1010       -1,   114,   355,   115,   368,    -1,   354,   114,   139,   277,
    1011      140,   115,    -1,   114,   355,   115,   114,   139,   277,   140,
    1012      115,    -1,   359,    -1,   360,   325,    -1,   361,   325,    -1,
    1013      157,    -1,   157,   237,    -1,   157,   358,    -1,   157,   237,
    1014      358,    -1,   114,   359,   115,   325,    -1,   362,    -1,   114,
    1015      359,   115,   362,    -1,   114,   360,   115,   363,    -1,   114,
    1016      360,   115,    -1,   114,   139,   277,   140,   115,    -1,   114,
    1017      359,   115,   114,   139,   277,   140,   115,    -1,   114,   361,
    1018      115,    -1,   116,   117,    -1,   116,   117,   363,    -1,   363,
    1019       -1,   116,   139,   172,   140,   117,    -1,   116,   139,   122,
    1020      140,   117,    -1,   363,   116,   139,   172,   140,   117,    -1,
    1021      363,   116,   139,   122,   140,   117,    -1,   365,    -1,   366,
    1022      325,    -1,   367,   325,    -1,   157,    -1,   157,   237,    -1,
    1023      157,   364,    -1,   157,   237,   364,    -1,   114,   365,   115,
    1024      325,    -1,   368,    -1,   114,   365,   115,   368,    -1,   114,
    1025      366,   115,   363,    -1,   114,   366,   115,    -1,   114,   139,
    1026      277,   140,   115,    -1,   114,   365,   115,   114,   139,   277,
    1027      140,   115,    -1,   114,   367,   115,    -1,   369,    -1,   369,
    1028      363,    -1,   363,    -1,   116,   117,    -1,   116,   139,   237,
    1029      122,   140,   117,    -1,   116,   139,   237,   140,   117,    -1,
    1030      116,   139,   237,   172,   140,   117,    -1,   116,   139,     7,
    1031      236,   172,   140,   117,    -1,   116,   139,   237,     7,   172,
    1032      140,   117,    -1,   371,    -1,   372,   325,    -1,   373,   325,
    1033       -1,   157,    -1,   157,   237,    -1,   157,   370,    -1,   157,
    1034      237,   370,    -1,   114,   371,   115,   325,    -1,   362,    -1,
    1035      114,   371,   115,   362,    -1,   114,   372,   115,   363,    -1,
    1036      114,   372,   115,    -1,   114,   371,   115,   114,   139,   277,
    1037      140,   115,    -1,   114,   373,   115,    -1,   375,    -1,   383,
    1038       -1,   237,   383,    -1,   376,    -1,   377,    -1,   157,   235,
    1039       -1,   237,   157,   235,    -1,   157,   384,    -1,   237,   157,
    1040      384,    -1,   157,   374,    -1,   237,   157,   374,    -1,   116,
    1041      117,   235,    -1,   378,   235,    -1,   116,   117,   363,   235,
    1042       -1,   378,   363,   235,    -1,   363,   235,    -1,   116,   117,
    1043      376,    -1,   378,   376,    -1,   116,   117,   363,   376,    -1,
    1044      378,   363,   376,    -1,   363,   376,    -1,   116,   139,   237,
    1045      122,   140,   117,    -1,   116,   139,   237,   172,   140,   117,
    1046       -1,   116,   139,   241,   172,   140,   117,    -1,   116,   139,
    1047      241,   237,   172,   140,   117,    -1,   383,    -1,   237,   383,
    1048       -1,   380,    -1,   381,    -1,   382,    -1,   157,   234,    -1,
    1049      237,   157,   234,    -1,   157,   384,    -1,   237,   157,   384,
    1050       -1,   157,   379,    -1,   237,   157,   379,    -1,   116,   117,
    1051      234,    -1,   116,   117,   363,   234,    -1,   363,   234,    -1,
    1052      116,   117,   381,    -1,   116,   117,   363,   381,    -1,   363,
    1053      381,    -1,   116,   139,   276,   140,   117,    -1,   383,   114,
    1054      139,   273,   140,   115,    -1,   226,   114,   139,   273,   140,
    1055      115,    -1,    -1,   121,    -1,    -1,   136,   172,    -1
     780     316,     0,    -1,    -1,    -1,    83,    -1,    86,    -1,    87,
     781      -1,    88,    -1,    84,    -1,    76,    -1,    80,    -1,   146,
     782      -1,    76,    -1,    80,    -1,    76,    -1,   146,    -1,    89,
     783      -1,    90,    -1,   148,    -1,    85,    -1,   148,    85,    -1,
     784      76,    -1,   146,    -1,   176,    -1,   115,   178,   116,    -1,
     785     115,   182,   116,    -1,   149,    -1,   150,   117,   140,   173,
     786     141,   118,    -1,   150,   115,   151,   116,    -1,   150,   119,
     787     145,    -1,   150,   119,   117,   140,   153,   141,   118,    -1,
     788     150,    87,    -1,   150,    91,   145,    -1,   150,    91,   117,
     789     140,   153,   141,   118,    -1,   150,    92,    -1,   150,    93,
     790      -1,   115,   289,   116,   120,   293,   386,   121,    -1,   150,
     791     120,   151,   121,    -1,   152,    -1,   151,   122,   152,    -1,
     792      -1,   173,    -1,   154,    -1,   153,   122,   154,    -1,   155,
     793      -1,    86,   154,    -1,    86,   117,   140,   153,   141,   118,
     794      -1,   155,   119,   154,    -1,   155,   119,   117,   140,   153,
     795     141,   118,    -1,   155,    91,   154,    -1,   155,    91,   117,
     796     140,   153,   141,   118,    -1,    83,   156,    -1,    88,   156,
     797      -1,   145,   156,    -1,    -1,   156,    87,    -1,   150,    -1,
     798     142,    -1,   147,    -1,    47,   160,    -1,   158,   160,    -1,
     799     159,   160,    -1,    92,   157,    -1,    93,   157,    -1,    44,
     800     157,    -1,    44,   115,   289,   116,    -1,    73,   157,    -1,
     801      73,   115,   289,   116,    -1,    45,   115,   289,   122,   145,
     802     116,    -1,    80,    -1,    80,   115,   152,   116,    -1,    80,
     803     115,   290,   116,    -1,   123,    -1,   124,    -1,   125,    -1,
     804     126,    -1,   127,    -1,   128,    -1,   157,    -1,   115,   289,
     805     116,   160,    -1,   160,    -1,   161,   123,   160,    -1,   161,
     806     129,   160,    -1,   161,   130,   160,    -1,   161,    -1,   162,
     807     125,   161,    -1,   162,   126,   161,    -1,   162,    -1,   163,
     808      94,   162,    -1,   163,    95,   162,    -1,   163,    -1,   164,
     809     131,   163,    -1,   164,   132,   163,    -1,   164,    96,   163,
     810      -1,   164,    97,   163,    -1,   164,    -1,   165,    98,   164,
     811      -1,   165,    99,   164,    -1,   165,    -1,   166,   124,   165,
     812      -1,   166,    -1,   167,   133,   166,    -1,   167,    -1,   168,
     813     134,   167,    -1,   168,    -1,   169,   100,   168,    -1,   169,
     814      -1,   170,   101,   169,    -1,   170,    -1,   170,   135,   178,
     815     136,   171,    -1,   170,   135,   136,   171,    -1,   171,    -1,
     816     171,    -1,   157,   175,   173,    -1,    -1,   173,    -1,   137,
     817      -1,   113,    -1,   103,    -1,   104,    -1,   105,    -1,   106,
     818      -1,   107,    -1,   108,    -1,   109,    -1,   110,    -1,   111,
     819      -1,   112,    -1,   117,   140,   122,   177,   141,   118,    -1,
     820     117,   140,   173,   122,   177,   141,   118,    -1,   174,    -1,
     821     177,   122,   174,    -1,   173,    -1,   178,   122,   173,    -1,
     822      -1,   178,    -1,   181,    -1,   182,    -1,   186,    -1,   187,
     823      -1,   199,    -1,   201,    -1,   202,    -1,   207,    -1,   133,
     824     150,   120,   151,   121,   138,    -1,   286,   136,   326,   180,
     825      -1,   120,   121,    -1,   120,   140,   140,   218,   183,   141,
     826     121,    -1,   184,    -1,   183,   140,   184,    -1,   221,    -1,
     827      47,   221,    -1,   322,    -1,    47,   322,    -1,   180,   141,
     828      -1,   180,    -1,   185,   180,    -1,   179,   138,    -1,    48,
     829     115,   178,   116,   180,    -1,    48,   115,   178,   116,   180,
     830      49,   180,    -1,    50,   115,   178,   116,   192,    -1,    50,
     831     115,   178,   116,   120,   140,   214,   193,   121,    -1,    60,
     832     115,   178,   116,   192,    -1,    60,   115,   178,   116,   120,
     833     140,   214,   195,   121,    -1,   172,    -1,   172,   102,   172,
     834      -1,   324,    -1,   188,    -1,   189,   122,   188,    -1,    51,
     835     189,   136,    -1,    52,   136,    -1,   190,    -1,   191,   190,
     836      -1,   191,   180,    -1,    -1,   194,    -1,   191,   185,    -1,
     837     194,   191,   185,    -1,    -1,   196,    -1,   191,   198,    -1,
     838     191,   185,   197,    -1,   196,   191,   198,    -1,   196,   191,
     839     185,   197,    -1,    -1,   198,    -1,    63,    -1,    63,   138,
     840      -1,    54,   115,   178,   116,   180,    -1,    53,   180,    54,
     841     115,   178,   116,   138,    -1,    55,   115,   140,   200,   116,
     842     180,    -1,   179,   141,   138,   179,   138,   179,    -1,   221,
     843     179,   138,   179,    -1,    58,   286,   138,    -1,    58,   123,
     844     178,   138,    -1,    57,   138,    -1,    57,   286,   138,    -1,
     845      56,   138,    -1,    56,   286,   138,    -1,    59,   179,   138,
     846      -1,    68,   174,   138,    -1,    69,   174,   138,    -1,    69,
     847     174,    70,   173,   138,    -1,    64,   182,   203,    -1,    64,
     848     182,   205,    -1,    64,   182,   203,   205,    -1,   204,    -1,
     849      65,   115,   102,   116,   182,    -1,   204,    65,   115,   102,
     850     116,   182,    -1,    66,   115,   102,   116,   182,    -1,   204,
     851      66,   115,   102,   116,   182,    -1,    65,   115,   140,   140,
     852     206,   141,   116,   182,   141,    -1,   204,    65,   115,   140,
     853     140,   206,   141,   116,   182,   141,    -1,    66,   115,   140,
     854     140,   206,   141,   116,   182,   141,    -1,   204,    66,   115,
     855     140,   140,   206,   141,   116,   182,   141,    -1,    67,   182,
     856      -1,   236,    -1,   236,   323,    -1,   236,   371,    -1,   380,
     857     145,    -1,   380,    -1,    71,   208,   115,   147,   116,   138,
     858      -1,    71,   208,   115,   147,   136,   209,   116,   138,    -1,
     859      71,   208,   115,   147,   136,   209,   136,   209,   116,   138,
     860      -1,    71,   208,   115,   147,   136,   209,   136,   209,   136,
     861     212,   116,   138,    -1,    71,   208,    58,   115,   147,   136,
     862     136,   209,   136,   212,   136,   213,   116,   138,    -1,    -1,
     863      13,    -1,    -1,   210,    -1,   211,    -1,   210,   122,   211,
     864      -1,   147,   115,   172,   116,    -1,   117,   172,   118,   147,
     865     115,   172,   116,    -1,    -1,   147,    -1,   212,   122,   147,
     866      -1,   145,    -1,   213,   122,   145,    -1,   141,    -1,   215,
     867      -1,   221,    -1,   215,   140,   221,    -1,   141,    -1,   217,
     868      -1,   231,    -1,   217,   140,   231,    -1,    -1,   219,    -1,
     869      35,   220,   138,    -1,   219,    35,   220,   138,    -1,   288,
     870      -1,   220,   122,   288,    -1,   222,    -1,   231,    -1,   223,
     871     141,   138,    -1,   228,   141,   138,    -1,   225,   141,   138,
     872      -1,   307,   141,   138,    -1,   310,   141,   138,    -1,   224,
     873     291,    -1,   242,   224,   291,    -1,   223,   141,   122,   140,
     874     286,   291,    -1,   381,   286,   325,    -1,   384,   286,   325,
     875      -1,   238,   384,   286,   325,    -1,   226,    -1,   238,   226,
     876      -1,   242,   226,    -1,   242,   238,   226,    -1,   225,   141,
     877     122,   140,   286,    -1,   384,   286,   115,   140,   274,   141,
     878     116,    -1,   227,   286,   115,   140,   274,   141,   116,    -1,
     879     117,   140,   276,   141,   118,    -1,   117,   140,   276,   141,
     880     122,   140,   277,   141,   118,    -1,     3,   224,    -1,     3,
     881     226,    -1,   228,   141,   122,   140,   145,    -1,     3,   235,
     882     323,    -1,   229,   141,   122,   140,   323,    -1,   238,     3,
     883     235,   323,    -1,   235,     3,   323,    -1,   235,     3,   238,
     884     323,    -1,     3,   145,   137,   173,    -1,   230,   141,   122,
     885     140,   145,   137,   173,    -1,   233,   232,   141,   138,    -1,
     886     229,   141,   138,    -1,   230,   141,   138,    -1,   250,   141,
     887     138,    -1,   323,   325,   291,    -1,   232,   122,   326,   323,
     888     325,   291,    -1,   246,    -1,   250,    -1,   254,    -1,   297,
     889      -1,   246,    -1,   252,    -1,   254,    -1,   297,    -1,   247,
     890      -1,   251,    -1,   255,    -1,   298,    -1,   247,    -1,   253,
     891      -1,   255,    -1,   298,    -1,    -1,   238,    -1,   239,    -1,
     892     238,   239,    -1,   240,    -1,   328,    -1,    12,    -1,    14,
     893      -1,    13,    -1,    17,    -1,    18,    -1,    15,    -1,    -1,
     894      16,   115,   241,   300,   116,    -1,   243,    -1,   238,   243,
     895      -1,   242,   238,   243,    -1,   244,    -1,   243,   244,    -1,
     896       4,    -1,     5,    -1,     6,    -1,     7,    -1,     8,    -1,
     897       9,    -1,    10,    -1,    11,    -1,    20,    -1,    25,    -1,
     898      24,    -1,    22,    -1,    23,    -1,    21,    -1,    26,    -1,
     899      27,    -1,    19,    -1,    31,    -1,    32,    -1,    33,    -1,
     900      30,    -1,    28,    -1,    29,    -1,   247,    -1,   242,   247,
     901      -1,   246,   244,    -1,   246,   244,   238,    -1,   246,   244,
     902     247,    -1,   248,    -1,   237,   249,   237,    -1,   245,    -1,
     903     238,   245,    -1,   248,   239,    -1,   248,   245,    -1,    34,
     904     115,   290,   116,    -1,    34,   115,   178,   116,    -1,    82,
     905     115,   290,   116,    -1,    82,   115,   178,   116,    -1,   251,
     906      -1,   242,   251,    -1,   250,   244,    -1,   250,   244,   238,
     907      -1,   256,    -1,   238,   256,    -1,   251,   239,    -1,   253,
     908      -1,   242,   253,    -1,   252,   244,    -1,   252,   244,   238,
     909      -1,   257,    -1,   238,   257,    -1,   253,   239,    -1,   255,
     910      -1,   242,   255,    -1,   254,   244,    -1,   254,   244,   238,
     911      -1,    78,    -1,   238,    78,    -1,   255,   239,    -1,   258,
     912      -1,   269,    -1,   260,    -1,   271,    -1,   261,   326,   120,
     913     262,   121,    -1,    -1,   261,   326,   288,   259,   120,   262,
     914     121,    -1,   261,   326,   115,   306,   116,   120,   262,   121,
     915      -1,   260,    -1,   261,   326,   288,    -1,   261,   326,   299,
     916      -1,    37,    -1,    38,    -1,    -1,   262,   263,    -1,   264,
     917     138,    -1,    47,   264,   138,    -1,   235,   265,   138,    -1,
     918      47,   235,   265,   138,    -1,   380,    -1,   380,   288,    -1,
     919     264,   122,   288,    -1,   264,   122,    -1,   266,    -1,   265,
     920     122,   326,   266,    -1,    -1,   268,    -1,   332,   267,    -1,
     921     345,   267,    -1,   371,    -1,    -1,   268,    -1,   136,   172,
     922      -1,    36,   326,   120,   272,   386,   121,    -1,    -1,    36,
     923     326,   288,   270,   120,   272,   386,   121,    -1,   271,    -1,
     924      36,   326,   288,    -1,   288,   273,    -1,   272,   122,   288,
     925     273,    -1,    -1,   137,   172,    -1,    -1,   275,    -1,   277,
     926      -1,   276,    -1,   276,   141,   122,   140,   277,    -1,   277,
     927     141,   122,   140,   102,    -1,   276,   141,   122,   140,   102,
     928      -1,   281,    -1,   277,   141,   122,   140,   281,    -1,   276,
     929     141,   122,   140,   281,    -1,   276,   141,   122,   140,   277,
     930     141,   122,   140,   281,    -1,   282,    -1,   277,   141,   122,
     931     140,   282,    -1,    -1,   279,    -1,   280,    -1,   280,   141,
     932     122,   140,   102,    -1,   284,    -1,   283,    -1,   280,   141,
     933     122,   140,   284,    -1,   280,   141,   122,   140,   283,    -1,
     934     283,    -1,   376,   286,   387,    -1,   384,   286,   387,    -1,
     935     238,   384,   286,   387,    -1,   226,    -1,   284,    -1,   376,
     936      -1,   384,    -1,   238,   384,    -1,   385,    -1,   234,   350,
     937     387,    -1,   234,   354,   387,    -1,   234,   387,    -1,   234,
     938     365,   387,    -1,   145,    -1,   285,   122,   145,    -1,   143,
     939      -1,    78,    -1,    79,    -1,   144,    -1,    78,    -1,    79,
     940      -1,   145,    -1,    78,    -1,    79,    -1,   380,    -1,   235,
     941      -1,   235,   359,    -1,   289,    -1,   385,    -1,    -1,   137,
     942     292,    -1,   113,   292,    -1,   173,    -1,   120,   293,   386,
     943     121,    -1,    -1,   292,    -1,   294,   292,    -1,   293,   122,
     944     292,    -1,   293,   122,   294,   292,    -1,   295,   136,    -1,
     945     288,   136,    -1,   296,    -1,   295,   296,    -1,   119,   288,
     946      -1,   117,   140,   173,   141,   118,    -1,   117,   140,   324,
     947     141,   118,    -1,   117,   140,   172,   102,   172,   141,   118,
     948      -1,   119,   117,   140,   153,   141,   118,    -1,   298,    -1,
     949     242,   298,    -1,   297,   244,    -1,   297,   244,   238,    -1,
     950     299,    -1,   238,   299,    -1,   298,   239,    -1,    79,   115,
     951     306,   116,    -1,   301,   387,    -1,   300,   122,   301,   387,
     952      -1,    -1,   303,   288,   302,   304,    -1,   235,   350,    -1,
     953      39,    -1,    41,    -1,    40,    -1,    42,    -1,    -1,   304,
     954     305,    -1,   134,   288,   115,   306,   116,    -1,   134,   120,
     955     140,   312,   121,    -1,   134,   115,   140,   300,   141,   116,
     956     120,   140,   312,   121,   115,   306,   116,    -1,   290,    -1,
     957     173,    -1,   306,   122,   290,    -1,   306,   122,   173,    -1,
     958      39,   308,    -1,   243,    39,   308,    -1,   307,   122,   308,
     959      -1,   309,   304,    -1,   309,   304,   137,   290,    -1,   288,
     960      -1,   287,   115,   140,   300,   141,   116,    -1,    43,   288,
     961     115,   140,   300,   141,   116,   120,   121,    -1,    -1,    43,
     962     288,   115,   140,   300,   141,   116,   120,   311,   312,   121,
     963      -1,   313,    -1,   312,   140,   313,    -1,   314,   141,   138,
     964      -1,   315,   141,   138,    -1,   224,    -1,   226,    -1,   314,
     965     141,   122,   140,   286,    -1,   235,   323,    -1,   315,   141,
     966     122,   140,   323,    -1,    -1,   317,    -1,   319,    -1,   317,
     967     140,   319,    -1,    -1,   317,    -1,   221,    -1,   321,    -1,
     968      71,   115,   147,   116,   138,    -1,    -1,     4,    85,   320,
     969     120,   318,   121,    -1,    47,   319,    -1,   322,    -1,   337,
     970     182,    -1,   341,   140,   216,   182,    -1,   225,   182,    -1,
     971     233,   337,   182,    -1,   238,   337,   182,    -1,   242,   337,
     972     182,    -1,   242,   238,   337,   182,    -1,   233,   341,   140,
     973     216,   182,    -1,   238,   341,   140,   216,   182,    -1,   242,
     974     341,   140,   216,   182,    -1,   242,   238,   341,   140,   216,
     975     182,    -1,   332,    -1,   345,    -1,   337,    -1,   172,   128,
     976     172,    -1,    -1,    71,   115,   147,   116,   326,    -1,    -1,
     977     327,    -1,   328,    -1,   327,   328,    -1,    46,   115,   115,
     978     329,   116,   116,    -1,   330,    -1,   329,   122,   330,    -1,
     979      -1,   331,    -1,   331,   115,   151,   116,    -1,    76,    -1,
     980      78,    -1,    79,    -1,    12,    -1,   333,   326,    -1,   334,
     981      -1,   335,   326,    -1,   336,   326,    -1,   143,    -1,   115,
     982     333,   116,    -1,   158,   332,    -1,   158,   238,   332,    -1,
     983     115,   334,   116,   326,    -1,   333,   363,    -1,   115,   334,
     984     116,   363,    -1,   115,   335,   116,   364,    -1,   115,   335,
     985     116,    -1,   115,   334,   116,   115,   140,   278,   141,   116,
     986      -1,   115,   336,   116,    -1,   338,   326,    -1,   339,    -1,
     987     340,   326,    -1,   333,   115,   140,   278,   141,   116,    -1,
     988     115,   339,   116,   115,   140,   278,   141,   116,    -1,   115,
     989     338,   116,    -1,   158,   337,    -1,   158,   238,   337,    -1,
     990     115,   339,   116,    -1,   115,   339,   116,   363,    -1,   115,
     991     340,   116,   364,    -1,   115,   340,   116,    -1,   342,    -1,
     992     343,    -1,   344,    -1,   333,   115,   285,   116,    -1,   115,
     993     343,   116,   115,   140,   278,   141,   116,    -1,   115,   342,
     994     116,    -1,   158,   341,    -1,   158,   238,   341,    -1,   115,
     995     343,   116,    -1,   115,   343,   116,   363,    -1,   115,   344,
     996     116,   364,    -1,   115,   344,   116,    -1,   346,   326,    -1,
     997     347,    -1,   348,   326,    -1,   349,   326,    -1,   355,    -1,
     998     115,   346,   116,    -1,   158,   345,    -1,   158,   238,   345,
     999      -1,   115,   347,   116,   326,    -1,   346,   363,    -1,   115,
     1000     347,   116,   363,    -1,   115,   348,   116,   364,    -1,   115,
     1001     348,   116,    -1,   346,   115,   140,   278,   141,   116,    -1,
     1002     115,   347,   116,   115,   140,   278,   141,   116,    -1,   115,
     1003     349,   116,    -1,   333,   326,    -1,   351,    -1,   352,   326,
     1004      -1,   353,   326,    -1,   158,   350,    -1,   158,   238,   350,
     1005      -1,   115,   351,   116,   326,    -1,   333,   369,    -1,   115,
     1006     351,   116,   363,    -1,   115,   352,   116,   364,    -1,   115,
     1007     352,   116,    -1,   333,   115,   140,   278,   141,   116,    -1,
     1008     115,   351,   116,   115,   140,   278,   141,   116,    -1,   115,
     1009     353,   116,    -1,   355,   326,    -1,   356,    -1,   357,   326,
     1010      -1,   358,   326,    -1,    78,    -1,    79,    -1,   158,   354,
     1011      -1,   158,   238,   354,    -1,   115,   356,   116,   326,    -1,
     1012     355,   369,    -1,   115,   356,   116,   369,    -1,   355,   115,
     1013     140,   278,   141,   116,    -1,   115,   356,   116,   115,   140,
     1014     278,   141,   116,    -1,   360,    -1,   361,   326,    -1,   362,
     1015     326,    -1,   158,    -1,   158,   238,    -1,   158,   359,    -1,
     1016     158,   238,   359,    -1,   115,   360,   116,   326,    -1,   363,
     1017      -1,   115,   360,   116,   363,    -1,   115,   361,   116,   364,
     1018      -1,   115,   361,   116,    -1,   115,   140,   278,   141,   116,
     1019      -1,   115,   360,   116,   115,   140,   278,   141,   116,    -1,
     1020     115,   362,   116,    -1,   117,   118,    -1,   117,   118,   364,
     1021      -1,   364,    -1,   117,   140,   173,   141,   118,    -1,   117,
     1022     140,   123,   141,   118,    -1,   364,   117,   140,   173,   141,
     1023     118,    -1,   364,   117,   140,   123,   141,   118,    -1,   366,
     1024      -1,   367,   326,    -1,   368,   326,    -1,   158,    -1,   158,
     1025     238,    -1,   158,   365,    -1,   158,   238,   365,    -1,   115,
     1026     366,   116,   326,    -1,   369,    -1,   115,   366,   116,   369,
     1027      -1,   115,   367,   116,   364,    -1,   115,   367,   116,    -1,
     1028     115,   140,   278,   141,   116,    -1,   115,   366,   116,   115,
     1029     140,   278,   141,   116,    -1,   115,   368,   116,    -1,   370,
     1030      -1,   370,   364,    -1,   364,    -1,   117,   118,    -1,   117,
     1031     140,   238,   123,   141,   118,    -1,   117,   140,   238,   141,
     1032     118,    -1,   117,   140,   238,   173,   141,   118,    -1,   117,
     1033     140,     5,   237,   173,   141,   118,    -1,   117,   140,   238,
     1034       5,   173,   141,   118,    -1,   372,    -1,   373,   326,    -1,
     1035     374,   326,    -1,   158,    -1,   158,   238,    -1,   158,   371,
     1036      -1,   158,   238,   371,    -1,   115,   372,   116,   326,    -1,
     1037     363,    -1,   115,   372,   116,   363,    -1,   115,   373,   116,
     1038     364,    -1,   115,   373,   116,    -1,   115,   372,   116,   115,
     1039     140,   278,   141,   116,    -1,   115,   374,   116,    -1,   376,
     1040      -1,   384,    -1,   238,   384,    -1,   377,    -1,   378,    -1,
     1041     158,   236,    -1,   238,   158,   236,    -1,   158,   385,    -1,
     1042     238,   158,   385,    -1,   158,   375,    -1,   238,   158,   375,
     1043      -1,   117,   118,   236,    -1,   379,   236,    -1,   117,   118,
     1044     364,   236,    -1,   379,   364,   236,    -1,   364,   236,    -1,
     1045     117,   118,   377,    -1,   379,   377,    -1,   117,   118,   364,
     1046     377,    -1,   379,   364,   377,    -1,   364,   377,    -1,   117,
     1047     140,   238,   123,   141,   118,    -1,   117,   140,   238,   173,
     1048     141,   118,    -1,   117,   140,   242,   173,   141,   118,    -1,
     1049     117,   140,   242,   238,   173,   141,   118,    -1,   384,    -1,
     1050     238,   384,    -1,   381,    -1,   382,    -1,   383,    -1,   158,
     1051     235,    -1,   238,   158,   235,    -1,   158,   385,    -1,   238,
     1052     158,   385,    -1,   158,   380,    -1,   238,   158,   380,    -1,
     1053     117,   118,   235,    -1,   117,   118,   364,   235,    -1,   364,
     1054     235,    -1,   117,   118,   382,    -1,   117,   118,   364,   382,
     1055      -1,   364,   382,    -1,   117,   140,   277,   141,   118,    -1,
     1056     384,   115,   140,   274,   141,   116,    -1,   227,   115,   140,
     1057     274,   141,   116,    -1,    -1,   122,    -1,    -1,   137,   173,
     1058      -1
    10561059};
    10571060
     
    10591062static const yytype_uint16 yyrline[] =
    10601063{
    1061        0,   326,   326,   330,   337,   338,   339,   340,   341,   345,
    1062      346,   347,   351,   352,   356,   357,   361,   362,   366,   370,
    1063      371,   382,   384,   386,   387,   389,   394,   395,   401,   403,
    1064      405,   407,   409,   411,   413,   415,   417,   419,   428,   429,
    1065      435,   436,   440,   441,   445,   446,   448,   450,   452,   454,
    1066      456,   461,   463,   465,   477,   478,   486,   489,   491,   493,
    1067      498,   511,   513,   515,   517,   519,   521,   523,   525,   527,
    1068      529,   531,   538,   539,   545,   546,   547,   548,   552,   553,
    1069      560,   561,   563,   565,   570,   571,   573,   578,   579,   581,
    1070      586,   587,   589,   591,   593,   598,   599,   601,   606,   607,
    1071      612,   613,   618,   619,   624,   625,   630,   631,   636,   637,
    1072      640,   647,   652,   653,   661,   662,   666,   667,   668,   669,
    1073      670,   671,   672,   673,   674,   675,   676,   677,   687,   689,
    1074      694,   695,   700,   701,   707,   708,   714,   715,   716,   717,
    1075      718,   719,   720,   721,   722,   732,   739,   741,   752,   753,
    1076      758,   760,   765,   767,   772,   776,   777,   782,   787,   790,
    1077      792,   794,   804,   806,   817,   818,   820,   824,   826,   830,
    1078      831,   836,   837,   841,   846,   847,   851,   853,   859,   860,
    1079      864,   866,   868,   870,   876,   877,   881,   883,   888,   890,
    1080      892,   897,   899,   904,   906,   910,   913,   917,   920,   924,
    1081      926,   928,   930,   935,   937,   939,   944,   946,   948,   950,
    1082      952,   957,   959,   961,   963,   968,   976,   977,   982,   984,
    1083      989,   993,   995,   997,   999,  1001,  1007,  1008,  1014,  1015,
    1084     1019,  1020,  1025,  1027,  1033,  1034,  1036,  1042,  1047,  1057,
    1085     1059,  1063,  1064,  1069,  1071,  1075,  1076,  1080,  1082,  1086,
    1086     1087,  1091,  1092,  1096,  1097,  1112,  1113,  1114,  1115,  1116,
    1087     1120,  1125,  1132,  1142,  1147,  1152,  1160,  1165,  1170,  1175,
    1088     1180,  1210,  1215,  1222,  1224,  1231,  1236,  1241,  1252,  1257,
    1089     1262,  1267,  1272,  1281,  1286,  1316,  1320,  1321,  1322,  1328,
    1090     1333,  1341,  1342,  1343,  1344,  1353,  1354,  1355,  1356,  1360,
    1091     1361,  1362,  1363,  1372,  1373,  1374,  1375,  1380,  1381,  1390,
    1092     1391,  1396,  1397,  1401,  1403,  1405,  1407,  1409,  1412,  1411,
    1093     1423,  1424,  1426,  1436,  1437,  1442,  1444,  1446,  1448,  1450,
    1094     1453,  1455,  1457,  1462,  1464,  1466,  1468,  1470,  1472,  1474,
    1095     1476,  1478,  1480,  1482,  1484,  1486,  1488,  1490,  1496,  1497,
    1096     1499,  1501,  1503,  1508,  1509,  1515,  1516,  1518,  1520,  1525,
    1097     1527,  1529,  1531,  1536,  1537,  1539,  1541,  1546,  1547,  1549,
    1098     1554,  1555,  1557,  1559,  1564,  1565,  1567,  1572,  1573,  1575,
    1099     1577,  1582,  1584,  1586,  1591,  1592,  1596,  1597,  1601,  1604,
    1100     1603,  1607,  1609,  1613,  1618,  1623,  1625,  1631,  1632,  1637,
    1101     1638,  1643,  1646,  1654,  1655,  1657,  1659,  1664,  1665,  1671,
    1102     1672,  1674,  1677,  1680,  1685,  1686,  1691,  1696,  1699,  1698,
    1103     1702,  1706,  1714,  1716,  1722,  1723,  1731,  1732,  1736,  1737,
    1104     1738,  1740,  1742,  1749,  1750,  1752,  1754,  1759,  1760,  1766,
    1105     1767,  1771,  1772,  1777,  1778,  1779,  1781,  1789,  1790,  1792,
    1106     1795,  1797,  1801,  1802,  1803,  1805,  1807,  1812,  1817,  1825,
    1107     1827,  1836,  1838,  1843,  1844,  1845,  1849,  1850,  1851,  1855,
    1108     1856,  1857,  1861,  1862,  1863,  1868,  1869,  1874,  1875,  1877,
    1109     1882,  1883,  1888,  1889,  1890,  1891,  1892,  1907,  1908,  1913,
    1110     1914,  1920,  1922,  1925,  1927,  1929,  1952,  1953,  1955,  1957,
    1111     1962,  1963,  1965,  1970,  1975,  1976,  1982,  1981,  1985,  1989,
    1112     1991,  1993,  1995,  2001,  2002,  2007,  2012,  2014,  2019,  2021,
    1113     2022,  2024,  2029,  2031,  2033,  2038,  2040,  2045,  2050,  2058,
    1114     2064,  2063,  2077,  2078,  2083,  2084,  2088,  2093,  2098,  2106,
    1115     2111,  2122,  2123,  2128,  2129,  2135,  2136,  2140,  2141,  2142,
    1116     2147,  2146,  2157,  2165,  2171,  2177,  2186,  2192,  2198,  2204,
    1117     2210,  2218,  2224,  2232,  2238,  2247,  2248,  2249,  2253,  2259,
    1118     2260,  2270,  2271,  2275,  2276,  2281,  2286,  2287,  2293,  2294,
    1119     2296,  2301,  2302,  2303,  2304,  2339,  2341,  2342,  2344,  2349,
    1120     2354,  2359,  2361,  2363,  2368,  2370,  2372,  2374,  2379,  2381,
    1121     2390,  2392,  2393,  2398,  2400,  2402,  2407,  2409,  2411,  2416,
    1122     2418,  2420,  2432,  2433,  2434,  2438,  2440,  2442,  2447,  2449,
    1123     2451,  2456,  2458,  2460,  2475,  2477,  2478,  2480,  2485,  2486,
    1124     2491,  2493,  2495,  2500,  2502,  2504,  2506,  2511,  2513,  2515,
    1125     2525,  2527,  2528,  2530,  2535,  2537,  2539,  2544,  2546,  2548,
    1126     2550,  2555,  2557,  2559,  2572,  2574,  2575,  2577,  2582,  2587,
    1127     2595,  2597,  2599,  2604,  2606,  2611,  2613,  2630,  2631,  2633,
    1128     2638,  2640,  2642,  2644,  2646,  2651,  2652,  2654,  2656,  2661,
    1129     2663,  2665,  2671,  2673,  2675,  2679,  2681,  2683,  2685,  2719,
    1130     2720,  2722,  2727,  2729,  2731,  2733,  2735,  2740,  2741,  2743,
    1131     2745,  2750,  2752,  2754,  2760,  2761,  2763,  2772,  2775,  2777,
    1132     2780,  2782,  2784,  2798,  2799,  2801,  2806,  2808,  2810,  2812,
    1133     2814,  2819,  2820,  2822,  2824,  2829,  2831,  2839,  2840,  2841,
    1134     2846,  2847,  2852,  2854,  2856,  2858,  2860,  2862,  2869,  2871,
    1135     2873,  2875,  2877,  2880,  2882,  2884,  2886,  2888,  2893,  2895,
    1136     2897,  2902,  2928,  2929,  2931,  2935,  2936,  2940,  2942,  2944,
    1137     2946,  2948,  2950,  2957,  2959,  2961,  2963,  2965,  2967,  2972,
    1138     2979,  2981,  2999,  3001,  3006,  3007
     1064       0,   328,   328,   332,   339,   340,   341,   342,   343,   347,
     1065     348,   349,   353,   354,   358,   359,   363,   364,   368,   372,
     1066     373,   384,   386,   388,   389,   391,   396,   397,   403,   405,
     1067     407,   409,   411,   413,   415,   417,   419,   421,   430,   431,
     1068     437,   438,   442,   443,   447,   448,   450,   452,   454,   456,
     1069     458,   463,   465,   467,   479,   480,   488,   491,   493,   495,
     1070     500,   513,   515,   517,   519,   521,   523,   525,   527,   529,
     1071     531,   533,   540,   541,   547,   548,   549,   550,   554,   555,
     1072     562,   563,   565,   567,   572,   573,   575,   580,   581,   583,
     1073     588,   589,   591,   593,   595,   600,   601,   603,   608,   609,
     1074     614,   615,   620,   621,   626,   627,   632,   633,   638,   639,
     1075     642,   649,   654,   655,   663,   664,   668,   669,   670,   671,
     1076     672,   673,   674,   675,   676,   677,   678,   679,   689,   691,
     1077     696,   697,   702,   703,   709,   710,   716,   717,   718,   719,
     1078     720,   721,   722,   723,   724,   734,   741,   743,   754,   755,
     1079     760,   762,   767,   769,   774,   778,   779,   784,   789,   792,
     1080     794,   796,   806,   808,   819,   820,   822,   826,   828,   832,
     1081     833,   838,   839,   843,   848,   849,   853,   855,   861,   862,
     1082     866,   868,   870,   872,   878,   879,   883,   885,   890,   892,
     1083     894,   899,   901,   906,   908,   912,   915,   919,   922,   926,
     1084     928,   930,   932,   937,   939,   941,   946,   948,   950,   952,
     1085     954,   959,   961,   963,   965,   970,   978,   979,   984,   986,
     1086     991,   995,   997,   999,  1001,  1003,  1009,  1010,  1016,  1017,
     1087    1021,  1022,  1027,  1029,  1035,  1036,  1038,  1044,  1049,  1059,
     1088    1061,  1065,  1066,  1071,  1073,  1077,  1078,  1082,  1084,  1088,
     1089    1089,  1093,  1094,  1098,  1099,  1114,  1115,  1116,  1117,  1118,
     1090    1122,  1127,  1134,  1144,  1149,  1154,  1162,  1167,  1172,  1177,
     1091    1182,  1212,  1217,  1224,  1226,  1233,  1238,  1243,  1254,  1259,
     1092    1264,  1269,  1274,  1283,  1288,  1318,  1322,  1323,  1324,  1330,
     1093    1335,  1343,  1344,  1345,  1346,  1355,  1356,  1357,  1358,  1362,
     1094    1363,  1364,  1365,  1374,  1375,  1376,  1377,  1382,  1383,  1392,
     1095    1393,  1398,  1399,  1403,  1405,  1407,  1409,  1411,  1413,  1416,
     1096    1415,  1427,  1428,  1430,  1440,  1441,  1446,  1448,  1450,  1452,
     1097    1454,  1457,  1459,  1461,  1466,  1468,  1470,  1472,  1474,  1476,
     1098    1478,  1480,  1482,  1484,  1486,  1488,  1490,  1492,  1494,  1500,
     1099    1501,  1503,  1505,  1507,  1512,  1513,  1519,  1520,  1522,  1524,
     1100    1529,  1531,  1533,  1535,  1540,  1541,  1543,  1545,  1550,  1551,
     1101    1553,  1558,  1559,  1561,  1563,  1568,  1569,  1571,  1576,  1577,
     1102    1579,  1581,  1586,  1588,  1590,  1595,  1596,  1600,  1601,  1605,
     1103    1608,  1607,  1611,  1613,  1617,  1622,  1627,  1629,  1635,  1636,
     1104    1641,  1642,  1647,  1650,  1658,  1659,  1661,  1663,  1668,  1669,
     1105    1675,  1676,  1678,  1681,  1684,  1689,  1690,  1695,  1700,  1703,
     1106    1702,  1706,  1710,  1718,  1720,  1726,  1727,  1735,  1736,  1740,
     1107    1741,  1742,  1744,  1746,  1753,  1754,  1756,  1758,  1763,  1764,
     1108    1770,  1771,  1775,  1776,  1781,  1782,  1783,  1785,  1793,  1794,
     1109    1796,  1799,  1801,  1805,  1806,  1807,  1809,  1811,  1816,  1821,
     1110    1829,  1831,  1840,  1842,  1847,  1848,  1849,  1853,  1854,  1855,
     1111    1859,  1860,  1861,  1865,  1866,  1867,  1872,  1873,  1878,  1879,
     1112    1881,  1886,  1887,  1892,  1893,  1894,  1895,  1896,  1911,  1912,
     1113    1917,  1918,  1924,  1926,  1929,  1931,  1933,  1956,  1957,  1959,
     1114    1961,  1966,  1967,  1969,  1974,  1979,  1980,  1986,  1985,  1989,
     1115    1993,  1995,  1997,  1999,  2005,  2006,  2011,  2016,  2018,  2023,
     1116    2025,  2026,  2028,  2033,  2035,  2037,  2042,  2044,  2049,  2054,
     1117    2062,  2068,  2067,  2081,  2082,  2087,  2088,  2092,  2097,  2102,
     1118    2110,  2115,  2126,  2127,  2132,  2133,  2139,  2140,  2144,  2145,
     1119    2146,  2151,  2150,  2161,  2169,  2175,  2181,  2190,  2196,  2202,
     1120    2208,  2214,  2222,  2228,  2236,  2242,  2251,  2252,  2253,  2257,
     1121    2263,  2264,  2274,  2275,  2279,  2280,  2285,  2290,  2291,  2297,
     1122    2298,  2300,  2305,  2306,  2307,  2308,  2343,  2345,  2346,  2348,
     1123    2353,  2358,  2363,  2365,  2367,  2372,  2374,  2376,  2378,  2383,
     1124    2385,  2394,  2396,  2397,  2402,  2404,  2406,  2411,  2413,  2415,
     1125    2420,  2422,  2424,  2436,  2437,  2438,  2442,  2444,  2446,  2451,
     1126    2453,  2455,  2460,  2462,  2464,  2479,  2481,  2482,  2484,  2489,
     1127    2490,  2495,  2497,  2499,  2504,  2506,  2508,  2510,  2515,  2517,
     1128    2519,  2529,  2531,  2532,  2534,  2539,  2541,  2543,  2548,  2550,
     1129    2552,  2554,  2559,  2561,  2563,  2576,  2578,  2579,  2581,  2586,
     1130    2591,  2599,  2601,  2603,  2608,  2610,  2615,  2617,  2634,  2635,
     1131    2637,  2642,  2644,  2646,  2648,  2650,  2655,  2656,  2658,  2660,
     1132    2665,  2667,  2669,  2675,  2677,  2679,  2683,  2685,  2687,  2689,
     1133    2723,  2724,  2726,  2731,  2733,  2735,  2737,  2739,  2744,  2745,
     1134    2747,  2749,  2754,  2756,  2758,  2764,  2765,  2767,  2776,  2779,
     1135    2781,  2784,  2786,  2788,  2802,  2803,  2805,  2810,  2812,  2814,
     1136    2816,  2818,  2823,  2824,  2826,  2828,  2833,  2835,  2843,  2844,
     1137    2845,  2850,  2851,  2856,  2858,  2860,  2862,  2864,  2866,  2873,
     1138    2875,  2877,  2879,  2881,  2884,  2886,  2888,  2890,  2892,  2897,
     1139    2899,  2901,  2906,  2932,  2933,  2935,  2939,  2940,  2944,  2946,
     1140    2948,  2950,  2952,  2954,  2961,  2963,  2965,  2967,  2969,  2971,
     1141    2976,  2983,  2985,  3003,  3005,  3010,  3011
    11391142};
    11401143#endif
     
    11451148static const char *const yytname[] =
    11461149{
    1147   "$end", "error", "$undefined", "TYPEDEF", "AUTO", "EXTERN", "REGISTER",
    1148   "STATIC", "INLINE", "FORTRAN", "CONST", "VOLATILE", "RESTRICT", "FORALL",
    1149   "LVALUE", "VOID", "CHAR", "SHORT", "INT", "LONG", "FLOAT", "DOUBLE",
    1150   "SIGNED", "UNSIGNED", "ZERO_T", "ONE_T", "VALIST", "BOOL", "COMPLEX",
    1151   "IMAGINARY", "TYPEOF", "LABEL", "ENUM", "STRUCT", "UNION", "OTYPE",
    1152   "FTYPE", "DTYPE", "TTYPE", "TRAIT", "SIZEOF", "OFFSETOF", "ATTRIBUTE",
    1153   "EXTENSION", "IF", "ELSE", "SWITCH", "CASE", "DEFAULT", "DO", "WHILE",
    1154   "FOR", "BREAK", "CONTINUE", "GOTO", "RETURN", "CHOOSE", "DISABLE",
    1155   "ENABLE", "FALLTHRU", "TRY", "CATCH", "CATCHRESUME", "FINALLY", "THROW",
    1156   "THROWRESUME", "AT", "ASM", "ALIGNAS", "ALIGNOF", "ATOMIC", "GENERIC",
    1157   "NORETURN", "STATICASSERT", "THREADLOCAL", "IDENTIFIER",
     1150  "$end", "error", "$undefined", "TYPEDEF", "EXTERN", "STATIC", "AUTO",
     1151  "REGISTER", "THREADLOCAL", "INLINE", "FORTRAN", "NORETURN", "CONST",
     1152  "VOLATILE", "RESTRICT", "ATOMIC", "FORALL", "LVALUE", "MUTEX", "VOID",
     1153  "CHAR", "SHORT", "INT", "LONG", "FLOAT", "DOUBLE", "SIGNED", "UNSIGNED",
     1154  "ZERO_T", "ONE_T", "VALIST", "BOOL", "COMPLEX", "IMAGINARY", "TYPEOF",
     1155  "LABEL", "ENUM", "STRUCT", "UNION", "OTYPE", "FTYPE", "DTYPE", "TTYPE",
     1156  "TRAIT", "SIZEOF", "OFFSETOF", "ATTRIBUTE", "EXTENSION", "IF", "ELSE",
     1157  "SWITCH", "CASE", "DEFAULT", "DO", "WHILE", "FOR", "BREAK", "CONTINUE",
     1158  "GOTO", "RETURN", "CHOOSE", "DISABLE", "ENABLE", "FALLTHRU", "TRY",
     1159  "CATCH", "CATCHRESUME", "FINALLY", "THROW", "THROWRESUME", "AT", "ASM",
     1160  "ALIGNAS", "ALIGNOF", "GENERIC", "STATICASSERT", "IDENTIFIER",
    11581161  "QUOTED_IDENTIFIER", "TYPEDEFname", "TYPEGENname", "ATTR_IDENTIFIER",
    11591162  "ATTR_TYPEDEFname", "ATTR_TYPEGENname", "INTEGERconstant",
     
    12741277     345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
    12751278     355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
    1276      365,   366,   367,   368,    40,    41,    91,    93,    46,   123,
    1277      125,    44,    42,    38,    43,    45,    33,   126,    47,    37,
    1278       60,    62,    94,   124,    63,    58,    61,    59
     1279     365,   366,   367,   368,   369,    40,    41,    91,    93,    46,
     1280     123,   125,    44,    42,    38,    43,    45,    33,   126,    47,
     1281      37,    60,    62,    94,   124,    63,    58,    61,    59
    12791282};
    12801283# endif
     
    12831286static const yytype_uint16 yyr1[] =
    12841287{
    1285        0,   138,   139,   140,   141,   141,   141,   141,   141,   142,
    1286      142,   142,   143,   143,   144,   144,   145,   145,   146,   147,
    1287      147,   148,   148,   148,   148,   148,   149,   149,   149,   149,
    1288      149,   149,   149,   149,   149,   149,   149,   149,   150,   150,
    1289      151,   151,   152,   152,   153,   153,   153,   153,   153,   153,
    1290      153,   154,   154,   154,   155,   155,   156,   156,   156,   156,
    1291      156,   156,   156,   156,   156,   156,   156,   156,   156,   156,
    1292      156,   156,   157,   157,   158,   158,   158,   158,   159,   159,
    1293      160,   160,   160,   160,   161,   161,   161,   162,   162,   162,
    1294      163,   163,   163,   163,   163,   164,   164,   164,   165,   165,
    1295      166,   166,   167,   167,   168,   168,   169,   169,   170,   170,
    1296      170,   171,   172,   172,   173,   173,   174,   174,   174,   174,
    1297      174,   174,   174,   174,   174,   174,   174,   174,   175,   175,
    1298      176,   176,   177,   177,   178,   178,   179,   179,   179,   179,
    1299      179,   179,   179,   179,   179,   180,   181,   181,   182,   182,
    1300      183,   183,   183,   183,   183,   184,   184,   185,   186,   186,
    1301      186,   186,   186,   186,   187,   187,   187,   188,   188,   189,
    1302      189,   190,   190,   191,   192,   192,   193,   193,   194,   194,
    1303      195,   195,   195,   195,   196,   196,   197,   197,   198,   198,
    1304      198,   199,   199,   200,   200,   200,   200,   200,   200,   200,
    1305      200,   200,   200,   201,   201,   201,   202,   202,   202,   202,
    1306      202,   203,   203,   203,   203,   204,   205,   205,   205,   205,
    1307      205,   206,   206,   206,   206,   206,   207,   207,   208,   208,
    1308      209,   209,   210,   210,   211,   211,   211,   212,   212,   213,
    1309      213,   214,   214,   215,   215,   216,   216,   217,   217,   218,
    1310      218,   219,   219,   220,   220,   221,   221,   221,   221,   221,
    1311      222,   222,   222,   223,   223,   223,   224,   224,   224,   224,
    1312      224,   225,   225,   226,   226,   227,   227,   227,   228,   228,
    1313      228,   228,   228,   229,   229,   230,   230,   230,   230,   231,
    1314      231,   232,   232,   232,   232,   233,   233,   233,   233,   234,
    1315      234,   234,   234,   235,   235,   235,   235,   236,   236,   237,
    1316      237,   238,   238,   239,   239,   239,   239,   239,   240,   239,
    1317      241,   241,   241,   242,   242,   243,   243,   243,   243,   243,
    1318      243,   243,   243,   244,   244,   244,   244,   244,   244,   244,
    1319      244,   244,   244,   244,   244,   244,   244,   244,   245,   245,
    1320      245,   245,   245,   246,   246,   247,   247,   247,   247,   248,
    1321      248,   248,   248,   249,   249,   249,   249,   250,   250,   250,
    1322      251,   251,   251,   251,   252,   252,   252,   253,   253,   253,
    1323      253,   254,   254,   254,   255,   255,   256,   256,   257,   258,
    1324      257,   257,   257,   259,   259,   260,   260,   261,   261,   262,
    1325      262,   262,   262,   263,   263,   263,   263,   264,   264,   265,
    1326      265,   265,   265,   265,   266,   266,   267,   268,   269,   268,
    1327      268,   270,   271,   271,   272,   272,   273,   273,   274,   274,
    1328      274,   274,   274,   275,   275,   275,   275,   276,   276,   277,
    1329      277,   278,   278,   279,   279,   279,   279,   280,   280,   280,
    1330      280,   280,   281,   281,   281,   281,   281,   282,   282,   283,
    1331      283,   284,   284,   285,   285,   285,   286,   286,   286,   287,
    1332      287,   287,   288,   288,   288,   289,   289,   290,   290,   290,
    1333      291,   291,   292,   292,   292,   292,   292,   293,   293,   294,
    1334      294,   295,   295,   295,   295,   295,   296,   296,   296,   296,
    1335      297,   297,   297,   298,   299,   299,   301,   300,   300,   302,
    1336      302,   302,   302,   303,   303,   304,   304,   304,   305,   305,
    1337      305,   305,   306,   306,   306,   307,   307,   308,   308,   309,
    1338      310,   309,   311,   311,   312,   312,   313,   313,   313,   314,
    1339      314,   315,   315,   316,   316,   317,   317,   318,   318,   318,
    1340      319,   318,   318,   320,   320,   320,   321,   321,   321,   321,
    1341      321,   321,   321,   321,   321,   322,   322,   322,   323,   324,
    1342      324,   325,   325,   326,   326,   327,   328,   328,   329,   329,
    1343      329,   330,   330,   330,   330,   331,   331,   331,   331,   332,
    1344      332,   333,   333,   333,   334,   334,   334,   334,   335,   335,
    1345      336,   336,   336,   337,   337,   337,   338,   338,   338,   339,
    1346      339,   339,   340,   340,   340,   341,   341,   341,   342,   342,
    1347      342,   343,   343,   343,   344,   344,   344,   344,   345,   345,
    1348      346,   346,   346,   347,   347,   347,   347,   348,   348,   348,
    1349      349,   349,   349,   349,   350,   350,   350,   351,   351,   351,
    1350      351,   352,   352,   352,   353,   353,   353,   353,   354,   354,
    1351      355,   355,   355,   356,   356,   357,   357,   358,   358,   358,
    1352      359,   359,   359,   359,   359,   360,   360,   360,   360,   361,
    1353      361,   361,   362,   362,   362,   363,   363,   363,   363,   364,
    1354      364,   364,   365,   365,   365,   365,   365,   366,   366,   366,
    1355      366,   367,   367,   367,   368,   368,   368,   369,   369,   369,
    1356      369,   369,   369,   370,   370,   370,   371,   371,   371,   371,
    1357      371,   372,   372,   372,   372,   373,   373,   374,   374,   374,
    1358      375,   375,   376,   376,   376,   376,   376,   376,   377,   377,
    1359      377,   377,   377,   377,   377,   377,   377,   377,   378,   378,
    1360      378,   378,   379,   379,   379,   380,   380,   381,   381,   381,
    1361      381,   381,   381,   382,   382,   382,   382,   382,   382,   383,
    1362      384,   384,   385,   385,   386,   386
     1288       0,   139,   140,   141,   142,   142,   142,   142,   142,   143,
     1289     143,   143,   144,   144,   145,   145,   146,   146,   147,   148,
     1290     148,   149,   149,   149,   149,   149,   150,   150,   150,   150,
     1291     150,   150,   150,   150,   150,   150,   150,   150,   151,   151,
     1292     152,   152,   153,   153,   154,   154,   154,   154,   154,   154,
     1293     154,   155,   155,   155,   156,   156,   157,   157,   157,   157,
     1294     157,   157,   157,   157,   157,   157,   157,   157,   157,   157,
     1295     157,   157,   158,   158,   159,   159,   159,   159,   160,   160,
     1296     161,   161,   161,   161,   162,   162,   162,   163,   163,   163,
     1297     164,   164,   164,   164,   164,   165,   165,   165,   166,   166,
     1298     167,   167,   168,   168,   169,   169,   170,   170,   171,   171,
     1299     171,   172,   173,   173,   174,   174,   175,   175,   175,   175,
     1300     175,   175,   175,   175,   175,   175,   175,   175,   176,   176,
     1301     177,   177,   178,   178,   179,   179,   180,   180,   180,   180,
     1302     180,   180,   180,   180,   180,   181,   182,   182,   183,   183,
     1303     184,   184,   184,   184,   184,   185,   185,   186,   187,   187,
     1304     187,   187,   187,   187,   188,   188,   188,   189,   189,   190,
     1305     190,   191,   191,   192,   193,   193,   194,   194,   195,   195,
     1306     196,   196,   196,   196,   197,   197,   198,   198,   199,   199,
     1307     199,   200,   200,   201,   201,   201,   201,   201,   201,   201,
     1308     201,   201,   201,   202,   202,   202,   203,   203,   203,   203,
     1309     203,   204,   204,   204,   204,   205,   206,   206,   206,   206,
     1310     206,   207,   207,   207,   207,   207,   208,   208,   209,   209,
     1311     210,   210,   211,   211,   212,   212,   212,   213,   213,   214,
     1312     214,   215,   215,   216,   216,   217,   217,   218,   218,   219,
     1313     219,   220,   220,   221,   221,   222,   222,   222,   222,   222,
     1314     223,   223,   223,   224,   224,   224,   225,   225,   225,   225,
     1315     225,   226,   226,   227,   227,   228,   228,   228,   229,   229,
     1316     229,   229,   229,   230,   230,   231,   231,   231,   231,   232,
     1317     232,   233,   233,   233,   233,   234,   234,   234,   234,   235,
     1318     235,   235,   235,   236,   236,   236,   236,   237,   237,   238,
     1319     238,   239,   239,   240,   240,   240,   240,   240,   240,   241,
     1320     240,   242,   242,   242,   243,   243,   244,   244,   244,   244,
     1321     244,   244,   244,   244,   245,   245,   245,   245,   245,   245,
     1322     245,   245,   245,   245,   245,   245,   245,   245,   245,   246,
     1323     246,   246,   246,   246,   247,   247,   248,   248,   248,   248,
     1324     249,   249,   249,   249,   250,   250,   250,   250,   251,   251,
     1325     251,   252,   252,   252,   252,   253,   253,   253,   254,   254,
     1326     254,   254,   255,   255,   255,   256,   256,   257,   257,   258,
     1327     259,   258,   258,   258,   260,   260,   261,   261,   262,   262,
     1328     263,   263,   263,   263,   264,   264,   264,   264,   265,   265,
     1329     266,   266,   266,   266,   266,   267,   267,   268,   269,   270,
     1330     269,   269,   271,   272,   272,   273,   273,   274,   274,   275,
     1331     275,   275,   275,   275,   276,   276,   276,   276,   277,   277,
     1332     278,   278,   279,   279,   280,   280,   280,   280,   281,   281,
     1333     281,   281,   281,   282,   282,   282,   282,   282,   283,   283,
     1334     284,   284,   285,   285,   286,   286,   286,   287,   287,   287,
     1335     288,   288,   288,   289,   289,   289,   290,   290,   291,   291,
     1336     291,   292,   292,   293,   293,   293,   293,   293,   294,   294,
     1337     295,   295,   296,   296,   296,   296,   296,   297,   297,   297,
     1338     297,   298,   298,   298,   299,   300,   300,   302,   301,   301,
     1339     303,   303,   303,   303,   304,   304,   305,   305,   305,   306,
     1340     306,   306,   306,   307,   307,   307,   308,   308,   309,   309,
     1341     310,   311,   310,   312,   312,   313,   313,   314,   314,   314,
     1342     315,   315,   316,   316,   317,   317,   318,   318,   319,   319,
     1343     319,   320,   319,   319,   321,   321,   321,   322,   322,   322,
     1344     322,   322,   322,   322,   322,   322,   323,   323,   323,   324,
     1345     325,   325,   326,   326,   327,   327,   328,   329,   329,   330,
     1346     330,   330,   331,   331,   331,   331,   332,   332,   332,   332,
     1347     333,   333,   334,   334,   334,   335,   335,   335,   335,   336,
     1348     336,   337,   337,   337,   338,   338,   338,   339,   339,   339,
     1349     340,   340,   340,   341,   341,   341,   342,   342,   342,   343,
     1350     343,   343,   344,   344,   344,   345,   345,   345,   345,   346,
     1351     346,   347,   347,   347,   348,   348,   348,   348,   349,   349,
     1352     349,   350,   350,   350,   350,   351,   351,   351,   352,   352,
     1353     352,   352,   353,   353,   353,   354,   354,   354,   354,   355,
     1354     355,   356,   356,   356,   357,   357,   358,   358,   359,   359,
     1355     359,   360,   360,   360,   360,   360,   361,   361,   361,   361,
     1356     362,   362,   362,   363,   363,   363,   364,   364,   364,   364,
     1357     365,   365,   365,   366,   366,   366,   366,   366,   367,   367,
     1358     367,   367,   368,   368,   368,   369,   369,   369,   370,   370,
     1359     370,   370,   370,   370,   371,   371,   371,   372,   372,   372,
     1360     372,   372,   373,   373,   373,   373,   374,   374,   375,   375,
     1361     375,   376,   376,   377,   377,   377,   377,   377,   377,   378,
     1362     378,   378,   378,   378,   378,   378,   378,   378,   378,   379,
     1363     379,   379,   379,   380,   380,   380,   381,   381,   382,   382,
     1364     382,   382,   382,   382,   383,   383,   383,   383,   383,   383,
     1365     384,   385,   385,   386,   386,   387,   387
    13631366};
    13641367
     
    13971400       6,     1,     1,     1,     1,     1,     1,     1,     1,     1,
    13981401       1,     1,     1,     1,     1,     1,     1,     0,     1,     1,
    1399        2,     1,     1,     1,     1,     1,     1,     1,     0,     5,
    1400        1,     2,     3,     1,     2,     1,     1,     1,     1,     1,
     1402       2,     1,     1,     1,     1,     1,     1,     1,     1,     0,
     1403       5,     1,     2,     3,     1,     2,     1,     1,     1,     1,
    14011404       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
    1402        1,     1,     1,     1,     1,     1,     1,     1,     1,     2,
    1403        2,     3,     3,     1,     3,     1,     2,     2,     2,     4,
    1404        4,     4,     4,     1,     2,     2,     3,     1,     2,     2,
    1405        1,     2,     2,     3,     1,     2,     2,     1,     2,     2,
    1406        3,     1,     2,     2,     1,     1,     1,     1,     5,     0,
    1407        7,     8,     1,     3,     3,     1,     1,     0,     2,     2,
    1408        3,     3,     4,     1,     2,     3,     2,     1,     4,     0,
    1409        1,     2,     2,     1,     0,     1,     2,     6,     0,     8,
    1410        1,     3,     2,     4,     0,     2,     0,     1,     1,     1,
    1411        5,     5,     5,     1,     5,     5,     9,     1,     5,     0,
    1412        1,     1,     5,     1,     1,     5,     5,     1,     3,     3,
    1413        4,     1,     1,     1,     1,     2,     1,     3,     3,     2,
    1414        3,     1,     3,     1,     1,     1,     1,     1,     1,     1,
    1415        1,     1,     1,     1,     2,     1,     1,     0,     2,     2,
    1416        1,     4,     0,     1,     2,     3,     4,     2,     2,     1,
    1417        2,     2,     5,     5,     7,     6,     1,     2,     2,     3,
    1418        1,     2,     2,     4,     2,     4,     0,     4,     2,     1,
    1419        1,     1,     1,     0,     2,     5,     5,    13,     1,     1,
    1420        3,     3,     2,     3,     3,     2,     4,     1,     6,     9,
    1421        0,    11,     1,     3,     3,     3,     1,     1,     5,     2,
    1422        5,     0,     1,     1,     3,     0,     1,     1,     1,     5,
    1423        0,     6,     2,     1,     2,     4,     2,     3,     3,     3,
    1424        4,     5,     5,     5,     6,     1,     1,     1,     3,     0,
    1425        5,     0,     1,     1,     2,     6,     1,     3,     0,     1,
    1426        4,     1,     1,     1,     1,     2,     1,     2,     2,     1,
    1427        3,     2,     3,     4,     2,     4,     4,     3,     8,     3,
    1428        2,     1,     2,     6,     8,     3,     2,     3,     3,     4,
    1429        4,     3,     1,     1,     1,     4,     8,     3,     2,     3,
    1430        3,     4,     4,     3,     2,     1,     2,     2,     1,     3,
    1431        2,     3,     4,     2,     4,     4,     3,     6,     8,     3,
    1432        2,     1,     2,     2,     2,     3,     4,     2,     4,     4,
    1433        3,     6,     8,     3,     2,     1,     2,     2,     1,     1,
    1434        2,     3,     4,     2,     4,     6,     8,     1,     2,     2,
    1435        1,     2,     2,     3,     4,     1,     4,     4,     3,     5,
    1436        8,     3,     2,     3,     1,     5,     5,     6,     6,     1,
    1437        2,     2,     1,     2,     2,     3,     4,     1,     4,     4,
    1438        3,     5,     8,     3,     1,     2,     1,     2,     6,     5,
    1439        6,     7,     7,     1,     2,     2,     1,     2,     2,     3,
    1440        4,     1,     4,     4,     3,     8,     3,     1,     1,     2,
    1441        1,     1,     2,     3,     2,     3,     2,     3,     3,     2,
    1442        4,     3,     2,     3,     2,     4,     3,     2,     6,     6,
    1443        6,     7,     1,     2,     1,     1,     1,     2,     3,     2,
    1444        3,     2,     3,     3,     4,     2,     3,     4,     2,     5,
    1445        6,     6,     0,     1,     0,     2
     1405       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
     1406       2,     2,     3,     3,     1,     3,     1,     2,     2,     2,
     1407       4,     4,     4,     4,     1,     2,     2,     3,     1,     2,
     1408       2,     1,     2,     2,     3,     1,     2,     2,     1,     2,
     1409       2,     3,     1,     2,     2,     1,     1,     1,     1,     5,
     1410       0,     7,     8,     1,     3,     3,     1,     1,     0,     2,
     1411       2,     3,     3,     4,     1,     2,     3,     2,     1,     4,
     1412       0,     1,     2,     2,     1,     0,     1,     2,     6,     0,
     1413       8,     1,     3,     2,     4,     0,     2,     0,     1,     1,
     1414       1,     5,     5,     5,     1,     5,     5,     9,     1,     5,
     1415       0,     1,     1,     5,     1,     1,     5,     5,     1,     3,
     1416       3,     4,     1,     1,     1,     1,     2,     1,     3,     3,
     1417       2,     3,     1,     3,     1,     1,     1,     1,     1,     1,
     1418       1,     1,     1,     1,     1,     2,     1,     1,     0,     2,
     1419       2,     1,     4,     0,     1,     2,     3,     4,     2,     2,
     1420       1,     2,     2,     5,     5,     7,     6,     1,     2,     2,
     1421       3,     1,     2,     2,     4,     2,     4,     0,     4,     2,
     1422       1,     1,     1,     1,     0,     2,     5,     5,    13,     1,
     1423       1,     3,     3,     2,     3,     3,     2,     4,     1,     6,
     1424       9,     0,    11,     1,     3,     3,     3,     1,     1,     5,
     1425       2,     5,     0,     1,     1,     3,     0,     1,     1,     1,
     1426       5,     0,     6,     2,     1,     2,     4,     2,     3,     3,
     1427       3,     4,     5,     5,     5,     6,     1,     1,     1,     3,
     1428       0,     5,     0,     1,     1,     2,     6,     1,     3,     0,
     1429       1,     4,     1,     1,     1,     1,     2,     1,     2,     2,
     1430       1,     3,     2,     3,     4,     2,     4,     4,     3,     8,
     1431       3,     2,     1,     2,     6,     8,     3,     2,     3,     3,
     1432       4,     4,     3,     1,     1,     1,     4,     8,     3,     2,
     1433       3,     3,     4,     4,     3,     2,     1,     2,     2,     1,
     1434       3,     2,     3,     4,     2,     4,     4,     3,     6,     8,
     1435       3,     2,     1,     2,     2,     2,     3,     4,     2,     4,
     1436       4,     3,     6,     8,     3,     2,     1,     2,     2,     1,
     1437       1,     2,     3,     4,     2,     4,     6,     8,     1,     2,
     1438       2,     1,     2,     2,     3,     4,     1,     4,     4,     3,
     1439       5,     8,     3,     2,     3,     1,     5,     5,     6,     6,
     1440       1,     2,     2,     1,     2,     2,     3,     4,     1,     4,
     1441       4,     3,     5,     8,     3,     1,     2,     1,     2,     6,
     1442       5,     6,     7,     7,     1,     2,     2,     1,     2,     2,
     1443       3,     4,     1,     4,     4,     3,     8,     3,     1,     1,
     1444       2,     1,     1,     2,     3,     2,     3,     2,     3,     3,
     1445       2,     4,     3,     2,     3,     2,     4,     3,     2,     6,
     1446       6,     6,     7,     1,     2,     1,     1,     1,     2,     3,
     1447       2,     3,     2,     3,     3,     4,     2,     3,     4,     2,
     1448       5,     6,     6,     0,     1,     0,     2
    14461449};
    14471450
     
    14511454static const yytype_uint16 yydefact[] =
    14521455{
    1453      307,   307,   327,   325,   328,   326,   330,   331,   313,   315,
    1454      314,     0,   316,   341,   333,   338,   336,   337,   335,   334,
    1455      339,   340,   346,   347,   345,   342,   343,   344,   571,   395,
    1456      396,     0,     0,     0,   307,     0,   317,   332,   329,     9,
    1457      381,     0,    10,    16,    17,     0,     2,    72,    73,   589,
    1458       11,   307,   547,   253,     3,   477,     3,   266,     0,     3,
    1459        3,     3,   254,     0,     0,     0,   308,   309,   311,   307,
    1460      320,   323,   355,   291,   348,   353,   292,   363,   293,   377,
    1461      367,   384,   392,   571,   385,   420,   294,   496,   500,     3,
    1462        3,     0,     2,   543,   548,   553,   312,     0,     0,   571,
    1463      601,   571,     2,   612,   613,   614,   307,     0,   755,   756,
    1464        0,    14,     0,    15,   307,   275,   276,     0,   308,   299,
    1465      300,   301,   302,   550,   318,     0,   572,   573,    14,   470,
    1466      471,    13,   466,   469,     0,   527,   522,   513,   470,   471,
    1467        0,     0,   552,     0,   307,     0,     0,     0,     0,     0,
    1468        0,     0,     0,   307,   307,     0,   757,   308,   606,   618,
    1469      761,   754,   752,   759,     0,     0,     0,   260,     2,     0,
    1470      556,   464,   465,   463,     0,     0,     0,     0,   658,   659,
    1471        0,     0,     3,   569,   565,   571,   586,   571,   571,   567,
    1472        2,   566,   571,   625,   571,   571,   628,     0,     0,     0,
    1473      307,   307,   325,   382,     2,   307,   267,   310,   321,   356,
    1474      368,   501,     0,     2,     0,   477,   268,   308,   349,   364,
    1475      378,   497,     0,     2,     0,   324,   350,   357,   358,     0,
    1476      365,   369,   379,   383,     0,   498,   502,     0,     0,     0,
    1477        1,   307,     2,   554,   600,   602,   307,     2,   765,   308,
    1478      768,   569,   569,     0,   308,     0,     0,   278,   571,   567,
    1479        2,   307,     0,     0,   307,     0,   421,   574,     2,   525,
    1480        2,   578,    19,     0,    18,     0,     0,     0,     0,    21,
    1481       69,     4,     8,     5,     6,     7,     0,     0,   307,     2,
    1482       74,    75,    76,    77,    57,    22,    58,    26,    56,    78,
    1483      307,     0,    80,    84,    87,    90,    95,    98,   100,   102,
    1484      104,   106,   108,   112,   519,    23,   473,   475,   518,     0,
    1485      472,   476,     0,   590,   605,   608,   611,   617,   620,   623,
    1486        2,   763,   307,   766,   571,     2,    72,   307,     3,   451,
    1487        0,   774,   308,   307,   320,   295,   348,   296,   370,   297,
    1488      377,   374,   386,   571,   387,     3,     3,   433,   437,   447,
    1489      452,   298,   496,   307,   453,   730,   731,   307,   454,   456,
    1490        2,   607,   619,   753,     2,     2,   255,     2,   482,     0,
    1491      480,   479,   478,   146,     2,     2,   257,     2,     2,   256,
    1492        2,   286,     2,   287,     0,     0,     0,     0,     0,     0,
    1493        0,     0,     0,   591,   630,   571,     0,     0,   477,     2,
    1494      585,   594,   684,   587,   588,   557,   307,     2,   624,   633,
    1495      626,   627,     0,   281,   307,   307,   354,   308,     0,   308,
    1496      307,   758,   762,   760,   558,   307,   569,   261,   269,   322,
    1497        0,     2,   559,   307,   523,   351,   352,   288,   366,   380,
    1498      471,   307,   397,   393,   394,   499,   524,   258,   259,   544,
    1499      307,   461,     0,   307,   243,     0,     2,   245,     0,   308,
    1500      307,     0,   263,     2,   264,   283,     0,     0,     2,   307,
    1501      569,   307,   509,   511,   510,   512,     0,     0,   774,     0,
    1502      772,   424,     0,   307,     0,   307,   514,   307,   584,   581,
    1503      582,   583,     0,   576,   579,     0,    20,   307,    64,   307,
    1504       78,    59,   307,    66,   307,   307,    62,    63,     2,   132,
    1505        0,     0,     0,   752,   307,    31,     0,    34,    35,    40,
    1506        2,     0,    40,   118,   119,   120,   121,   122,   123,   124,
    1507      125,   126,   127,   117,   116,     0,    60,    61,     0,     0,
     1456     307,   307,   326,   327,   328,   329,   330,   331,   332,   333,
     1457     313,   315,   314,   318,     0,   316,   317,   342,   334,   339,
     1458     337,   338,   336,   335,   340,   341,   347,   348,   346,   343,
     1459     344,   345,   572,   396,   397,     0,     0,     0,   307,     0,
     1460       9,   382,     0,    10,    16,    17,     0,     2,    72,    73,
     1461     590,    11,   307,   548,   253,     3,   478,     3,   266,     0,
     1462       3,     3,     3,   254,     0,     0,     0,   308,   309,   311,
     1463     307,   321,   324,   356,   291,   349,   354,   292,   364,   293,
     1464     378,   368,   385,   393,   572,   386,   421,   294,   497,   501,
     1465       3,     3,     0,     2,   544,   549,   554,   312,     0,     0,
     1466     572,   602,   572,     2,   613,   614,   615,   307,     0,   756,
     1467     757,     0,    14,     0,    15,   307,   275,   276,     0,   308,
     1468     299,   300,   301,   302,   551,   319,     0,   573,   574,    14,
     1469     471,   472,    13,   467,   470,     0,   528,   523,   514,   471,
     1470     472,     0,     0,   553,     0,   307,     0,     0,     0,     0,
     1471       0,     0,     0,     0,   307,   307,     0,   758,   308,   607,
     1472     619,   762,   755,   753,   760,     0,     0,     0,   260,     2,
     1473       0,   557,   465,   466,   464,     0,     0,     0,     0,   659,
     1474     660,     0,     0,     3,   570,   566,   572,   587,   572,   572,
     1475     568,     2,   567,   572,   626,   572,   572,   629,     0,     0,
     1476       0,   307,   307,   326,   383,     2,   307,   267,   310,   322,
     1477     357,   369,   502,     0,     2,     0,   478,   268,   308,   350,
     1478     365,   379,   498,     0,     2,     0,   325,   351,   358,   359,
     1479       0,   366,   370,   380,   384,     0,   499,   503,     0,     0,
     1480       0,     1,   307,     2,   555,   601,   603,   307,     2,   766,
     1481     308,   769,   570,   570,     0,   308,     0,     0,   278,   572,
     1482     568,     2,   307,     0,     0,   307,     0,   422,   575,     2,
     1483     526,     2,   579,    19,     0,    18,     0,     0,     0,     0,
     1484      21,    69,     4,     8,     5,     6,     7,     0,     0,   307,
     1485       2,    74,    75,    76,    77,    57,    22,    58,    26,    56,
     1486      78,   307,     0,    80,    84,    87,    90,    95,    98,   100,
     1487     102,   104,   106,   108,   112,   520,    23,   474,   476,   519,
     1488       0,   473,   477,     0,   591,   606,   609,   612,   618,   621,
     1489     624,     2,   764,   307,   767,   572,     2,    72,   307,     3,
     1490     452,     0,   775,   308,   307,   321,   295,   349,   296,   371,
     1491     297,   378,   375,   387,   572,   388,     3,     3,   434,   438,
     1492     448,   453,   298,   497,   307,   454,   731,   732,   307,   455,
     1493     457,     2,   608,   620,   754,     2,     2,   255,     2,   483,
     1494       0,   481,   480,   479,   146,     2,     2,   257,     2,     2,
     1495     256,     2,   286,     2,   287,     0,     0,     0,     0,     0,
     1496       0,     0,     0,     0,   592,   631,   572,     0,     0,   478,
     1497       2,   586,   595,   685,   588,   589,   558,   307,     2,   625,
     1498     634,   627,   628,     0,   281,   307,   307,   355,   308,     0,
     1499     308,   307,   759,   763,   761,   559,   307,   570,   261,   269,
     1500     323,     0,     2,   560,   307,   524,   352,   353,   288,   367,
     1501     381,   472,   307,   398,   394,   395,   500,   525,   258,   259,
     1502     545,   307,   462,     0,   307,   243,     0,     2,   245,     0,
     1503     308,   307,     0,   263,     2,   264,   283,     0,     0,     2,
     1504     307,   570,   307,   510,   512,   511,   513,     0,     0,   775,
     1505       0,   773,   425,     0,   307,     0,   307,   515,   307,   585,
     1506     582,   583,   584,     0,   577,   580,     0,    20,   307,    64,
     1507     307,    78,    59,   307,    66,   307,   307,    62,    63,     2,
     1508     132,     0,     0,     0,   753,   307,    31,     0,    34,    35,
     1509      40,     2,     0,    40,   118,   119,   120,   121,   122,   123,
     1510     124,   125,   126,   127,   117,   116,     0,    60,    61,     0,
    15081511       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    1509        0,     0,     0,     0,     0,     0,     0,     2,   670,   474,
    1510      667,   571,   571,   675,   503,   307,     2,   609,   610,     2,
    1511      621,   622,     0,   764,   767,     0,   307,   307,     0,   732,
    1512      308,   303,   304,   305,   306,   736,   727,   728,   734,     0,
    1513        2,     2,     0,   692,   571,   774,   641,   571,   571,   774,
    1514      571,   655,   571,   571,   706,   774,   689,   571,   571,   697,
    1515      704,   459,   307,   375,   455,   308,   371,   372,   376,     0,
    1516        0,     0,   307,   742,   308,   747,   774,   739,   307,   744,
    1517      774,   307,   307,     0,     0,    21,     2,     0,    22,     0,
    1518      483,   772,     0,     0,   489,   247,     0,   307,     0,     0,
    1519        0,   571,   597,   599,   629,   571,   636,   639,   592,   631,
    1520        0,   285,     0,   289,   682,     0,   307,   282,     0,     0,
    1521        0,     0,   280,     2,     0,   265,   560,   307,     0,     0,
    1522      307,     0,   308,     3,   440,     3,   444,   443,   615,     0,
    1523      555,   307,   308,    72,     3,   307,   774,   308,     3,   453,
    1524      454,     2,     0,     0,     0,   508,   319,   307,   504,   506,
    1525      773,     0,     0,   422,     0,     3,     2,     2,     0,   526,
    1526        3,     0,   578,    40,   549,     0,     2,     0,     0,     0,
    1527       41,     0,     0,   307,    24,     0,    25,     0,   114,     3,
    1528        2,    32,     0,    38,     0,     2,    29,     0,   113,    81,
    1529       82,    83,    85,    86,    88,    89,    93,    94,    91,    92,
    1530       96,    97,    99,   101,   103,   105,   107,     0,     0,   307,
    1531        0,     0,     0,   671,   672,   668,   669,   521,   520,   307,
    1532      307,   421,   738,   307,   743,   308,   307,   686,   729,   685,
    1533        2,   307,     0,     0,     0,     0,     0,     0,     0,     0,
    1534      707,     0,   775,   693,   644,   660,   694,     2,   640,   647,
    1535      457,   642,   643,   458,     2,   654,   663,   656,   657,   460,
    1536      690,   691,   705,   733,   737,   735,   774,   373,   393,   273,
    1537        2,   769,     2,   448,   741,   746,   449,     3,   427,     3,
    1538        3,     3,   477,     0,     0,     2,   491,   488,   773,     0,
    1539      484,     2,   487,   490,     0,   307,   248,   270,     3,   277,
    1540      279,     0,     2,   593,   595,   596,     2,   632,   634,   635,
    1541      569,     0,   683,   561,     3,   360,   359,   362,   361,   307,
    1542      562,     0,   563,     0,   307,   388,   409,   398,     0,   403,
    1543      397,     0,     0,   462,   246,     0,     0,     3,     2,   692,
    1544      455,     0,   551,     0,   774,   513,   424,   417,   111,   425,
    1545      772,     0,   307,   307,   307,     0,   575,   577,     0,    65,
    1546      307,     0,    67,    70,    71,     0,   133,   482,    79,   115,
    1547      130,     3,   114,     0,    28,    40,     3,     0,    37,   110,
    1548        0,     3,   571,   678,   681,   673,     3,     3,   740,   745,
    1549        2,    72,   307,     3,     3,   308,     0,     3,   571,   650,
    1550      653,   571,   571,   700,   703,   307,     3,   645,   661,   695,
    1551      307,   307,   450,   307,   307,     0,     0,     0,     0,   262,
    1552      111,     0,     3,     3,     0,   485,     0,   481,     0,     0,
    1553      251,   307,     0,     0,   134,     0,     0,     0,     0,     0,
    1554      134,     0,     0,   114,   114,   226,    21,   381,   465,    69,
    1555        0,    22,   135,     0,     3,   136,   137,     2,   148,   138,
    1556      139,   140,   141,   142,   143,   150,     0,   152,     0,     0,
    1557        0,   307,   307,   477,   571,     0,   564,   397,   409,     0,
    1558        0,     0,   716,     0,   407,   410,   414,   571,   414,   721,
    1559      413,   713,   571,   571,   406,   399,   404,   307,   603,     2,
    1560      688,   687,     0,   693,     2,   505,   507,   423,     0,   528,
    1561        3,   536,   537,     0,     2,   532,     3,     3,     0,     0,
    1562      580,     0,   772,   114,     0,     3,    54,     0,    54,    54,
    1563        3,    42,    44,    39,     0,     3,   109,     0,     2,   674,
    1564      676,   677,     0,     0,   307,     0,     0,     0,     3,   571,
    1565        0,     2,   646,   648,   649,     2,   662,   664,     2,   696,
    1566      698,   699,     0,     0,    72,     0,     3,     3,     3,     3,
    1567      435,   434,   438,   771,     2,     2,   770,     0,     0,     0,
    1568        0,     3,   486,     3,     0,   249,   151,   153,     0,     0,
    1569        0,     0,     2,   197,     0,   195,     0,     0,     0,     0,
    1570        0,     0,     0,     0,   227,     0,     0,   157,   154,   307,
    1571        0,   571,     0,   272,   284,     3,     3,   290,   570,   637,
    1572      307,     0,   400,     0,     0,     0,     0,   416,   717,   718,
    1573      571,   401,   411,   415,   412,   714,   715,   405,   390,   307,
    1574      271,   307,   419,     0,   539,   516,   307,     0,     0,   515,
    1575      530,    68,     0,   131,   128,     0,    51,     2,    45,    52,
    1576       53,     0,     0,     0,     0,    27,     0,   679,   307,   604,
    1577      616,   748,   749,   750,     0,   701,   307,   307,   307,     3,
    1578        3,     0,   709,     0,     0,     0,     0,   307,   307,     3,
    1579      568,   492,   493,     0,   252,     0,     0,     0,     0,   307,
    1580      198,   196,     0,   193,   199,     0,     0,     0,     0,   203,
    1581      206,   204,   200,     0,   201,     0,     0,    40,   149,   147,
    1582      134,   250,     0,     0,   391,   402,   571,   724,   726,   719,
    1583      409,   442,   446,   445,     0,   533,     2,   534,     2,   535,
    1584      529,   307,    36,   129,    55,     0,    43,    33,     2,    49,
    1585        2,    47,    30,     3,   751,     3,     3,     3,     0,     0,
    1586      708,   710,   651,   665,   274,     2,   432,     3,   431,     0,
    1587      495,   134,     0,     0,   134,     3,     0,   134,     3,   308,
    1588      307,   194,     0,     2,     2,   215,   205,     0,     0,     0,
    1589        0,     0,     0,   145,   598,   638,     2,   720,   722,   723,
    1590      408,     2,     0,     0,     2,     3,     0,     0,     0,     0,
    1591        0,     0,   711,   712,   307,     0,   494,   158,     0,     0,
    1592        2,   171,   134,   160,     0,   188,     0,   134,     0,   308,
    1593        2,   162,     0,     2,     0,     2,     2,     2,   202,     0,
    1594        0,   228,    37,   307,   307,   538,   540,   531,     0,     3,
    1595        3,   680,   652,   666,   702,   436,   134,   164,   167,     0,
    1596      166,   170,     3,   173,   172,     0,   134,   190,   134,     3,
    1597        0,   307,     0,   307,     0,     2,     0,     2,     0,   221,
    1598        0,     0,     0,   229,   230,   144,     3,     2,    46,     0,
    1599        0,   159,     0,     0,   169,   239,   174,     2,   241,   189,
    1600        0,   192,   178,   207,     3,   216,   308,   220,   209,     3,
    1601        0,   307,     0,   307,   228,     0,     0,     0,   228,     0,
    1602        0,     0,    50,    48,   165,   168,   134,     0,   175,   307,
    1603      134,   134,     0,   179,     0,     0,   716,   217,   218,   219,
    1604        0,   208,     3,   210,     3,     0,     0,     0,   222,     0,
    1605      231,   725,   307,   155,   176,   161,   134,   242,   191,   186,
    1606      184,   180,   163,   134,     0,   717,     0,     0,     0,   234,
    1607        0,   232,     0,   234,     0,   156,   177,   187,   181,   185,
    1608      184,   182,     3,     3,     0,     0,   235,     0,     0,   223,
    1609        0,   517,   183,   211,   213,     3,     3,     0,     0,     0,
    1610        0,   212,   214,   236,   237,     0,   233,   224,     0,     0,
    1611      225,   238
     1512       0,     0,     0,     0,     0,     0,     0,     0,     2,   671,
     1513     475,   668,   572,   572,   676,   504,   307,     2,   610,   611,
     1514       2,   622,   623,     0,   765,   768,     0,   307,   307,     0,
     1515     733,   308,   303,   304,   305,   306,   737,   728,   729,   735,
     1516       0,     2,     2,     0,   693,   572,   775,   642,   572,   572,
     1517     775,   572,   656,   572,   572,   707,   775,   690,   572,   572,
     1518     698,   705,   460,   307,   376,   456,   308,   372,   373,   377,
     1519       0,     0,     0,   307,   743,   308,   748,   775,   740,   307,
     1520     745,   775,   307,   307,     0,     0,    21,     2,     0,    22,
     1521       0,   484,   773,     0,     0,   490,   247,     0,   307,     0,
     1522       0,     0,   572,   598,   600,   630,   572,   637,   640,   593,
     1523     632,     0,   285,     0,   289,   683,     0,   307,   282,     0,
     1524       0,     0,     0,   280,     2,     0,   265,   561,   307,     0,
     1525       0,   307,     0,   308,     3,   441,     3,   445,   444,   616,
     1526       0,   556,   307,   308,    72,     3,   307,   775,   308,     3,
     1527     454,   455,     2,     0,     0,     0,   509,   320,   307,   505,
     1528     507,   774,     0,     0,   423,     0,     3,     2,     2,     0,
     1529     527,     3,     0,   579,    40,   550,     0,     2,     0,     0,
     1530       0,    41,     0,     0,   307,    24,     0,    25,     0,   114,
     1531       3,     2,    32,     0,    38,     0,     2,    29,     0,   113,
     1532      81,    82,    83,    85,    86,    88,    89,    93,    94,    91,
     1533      92,    96,    97,    99,   101,   103,   105,   107,     0,     0,
     1534     307,     0,     0,     0,   672,   673,   669,   670,   522,   521,
     1535     307,   307,   422,   739,   307,   744,   308,   307,   687,   730,
     1536     686,     2,   307,     0,     0,     0,     0,     0,     0,     0,
     1537       0,   708,     0,   776,   694,   645,   661,   695,     2,   641,
     1538     648,   458,   643,   644,   459,     2,   655,   664,   657,   658,
     1539     461,   691,   692,   706,   734,   738,   736,   775,   374,   394,
     1540     273,     2,   770,     2,   449,   742,   747,   450,     3,   428,
     1541       3,     3,     3,   478,     0,     0,     2,   492,   489,   774,
     1542       0,   485,     2,   488,   491,     0,   307,   248,   270,     3,
     1543     277,   279,     0,     2,   594,   596,   597,     2,   633,   635,
     1544     636,   570,     0,   684,   562,     3,   361,   360,   363,   362,
     1545     307,   563,     0,   564,     0,   307,   389,   410,   399,     0,
     1546     404,   398,     0,     0,   463,   246,     0,     0,     3,     2,
     1547     693,   456,     0,   552,     0,   775,   514,   425,   418,   111,
     1548     426,   773,     0,   307,   307,   307,     0,   576,   578,     0,
     1549      65,   307,     0,    67,    70,    71,     0,   133,   483,    79,
     1550     115,   130,     3,   114,     0,    28,    40,     3,     0,    37,
     1551     110,     0,     3,   572,   679,   682,   674,     3,     3,   741,
     1552     746,     2,    72,   307,     3,     3,   308,     0,     3,   572,
     1553     651,   654,   572,   572,   701,   704,   307,     3,   646,   662,
     1554     696,   307,   307,   451,   307,   307,     0,     0,     0,     0,
     1555     262,   111,     0,     3,     3,     0,   486,     0,   482,     0,
     1556       0,   251,   307,     0,     0,   134,     0,     0,     0,     0,
     1557       0,   134,     0,     0,   114,   114,   226,    21,   382,   466,
     1558      69,     0,    22,   135,     0,     3,   136,   137,     2,   148,
     1559     138,   139,   140,   141,   142,   143,   150,     0,   152,     0,
     1560       0,     0,   307,   307,   478,   572,     0,   565,   398,   410,
     1561       0,     0,     0,   717,     0,   408,   411,   415,   572,   415,
     1562     722,   414,   714,   572,   572,   407,   400,   405,   307,   604,
     1563       2,   689,   688,     0,   694,     2,   506,   508,   424,     0,
     1564     529,     3,   537,   538,     0,     2,   533,     3,     3,     0,
     1565       0,   581,     0,   773,   114,     0,     3,    54,     0,    54,
     1566      54,     3,    42,    44,    39,     0,     3,   109,     0,     2,
     1567     675,   677,   678,     0,     0,   307,     0,     0,     0,     3,
     1568     572,     0,     2,   647,   649,   650,     2,   663,   665,     2,
     1569     697,   699,   700,     0,     0,    72,     0,     3,     3,     3,
     1570       3,   436,   435,   439,   772,     2,     2,   771,     0,     0,
     1571       0,     0,     3,   487,     3,     0,   249,   151,   153,     0,
     1572       0,     0,     0,     2,   197,     0,   195,     0,     0,     0,
     1573       0,     0,     0,     0,     0,   227,     0,     0,   157,   154,
     1574     307,     0,   572,     0,   272,   284,     3,     3,   290,   571,
     1575     638,   307,     0,   401,     0,     0,     0,     0,   417,   718,
     1576     719,   572,   402,   412,   416,   413,   715,   716,   406,   391,
     1577     307,   271,   307,   420,     0,   540,   517,   307,     0,     0,
     1578     516,   531,    68,     0,   131,   128,     0,    51,     2,    45,
     1579      52,    53,     0,     0,     0,     0,    27,     0,   680,   307,
     1580     605,   617,   749,   750,   751,     0,   702,   307,   307,   307,
     1581       3,     3,     0,   710,     0,     0,     0,     0,   307,   307,
     1582       3,   569,   493,   494,     0,   252,     0,     0,     0,     0,
     1583     307,   198,   196,     0,   193,   199,     0,     0,     0,     0,
     1584     203,   206,   204,   200,     0,   201,     0,     0,    40,   149,
     1585     147,   134,   250,     0,     0,   392,   403,   572,   725,   727,
     1586     720,   410,   443,   447,   446,     0,   534,     2,   535,     2,
     1587     536,   530,   307,    36,   129,    55,     0,    43,    33,     2,
     1588      49,     2,    47,    30,     3,   752,     3,     3,     3,     0,
     1589       0,   709,   711,   652,   666,   274,     2,   433,     3,   432,
     1590       0,   496,   134,     0,     0,   134,     3,     0,   134,     3,
     1591     308,   307,   194,     0,     2,     2,   215,   205,     0,     0,
     1592       0,     0,     0,     0,   145,   599,   639,     2,   721,   723,
     1593     724,   409,     2,     0,     0,     2,     3,     0,     0,     0,
     1594       0,     0,     0,   712,   713,   307,     0,   495,   158,     0,
     1595       0,     2,   171,   134,   160,     0,   188,     0,   134,     0,
     1596     308,     2,   162,     0,     2,     0,     2,     2,     2,   202,
     1597       0,     0,   228,    37,   307,   307,   539,   541,   532,     0,
     1598       3,     3,   681,   653,   667,   703,   437,   134,   164,   167,
     1599       0,   166,   170,     3,   173,   172,     0,   134,   190,   134,
     1600       3,     0,   307,     0,   307,     0,     2,     0,     2,     0,
     1601     221,     0,     0,     0,   229,   230,   144,     3,     2,    46,
     1602       0,     0,   159,     0,     0,   169,   239,   174,     2,   241,
     1603     189,     0,   192,   178,   207,     3,   216,   308,   220,   209,
     1604       3,     0,   307,     0,   307,   228,     0,     0,     0,   228,
     1605       0,     0,     0,    50,    48,   165,   168,   134,     0,   175,
     1606     307,   134,   134,     0,   179,     0,     0,   717,   217,   218,
     1607     219,     0,   208,     3,   210,     3,     0,     0,     0,   222,
     1608       0,   231,   726,   307,   155,   176,   161,   134,   242,   191,
     1609     186,   184,   180,   163,   134,     0,   718,     0,     0,     0,
     1610     234,     0,   232,     0,   234,     0,   156,   177,   187,   181,
     1611     185,   184,   182,     3,     3,     0,     0,   235,     0,     0,
     1612     223,     0,   518,   183,   211,   213,     3,     3,     0,     0,
     1613       0,     0,   212,   214,   236,   237,     0,   233,   224,     0,
     1614       0,   225,   238
    16121615};
    16131616
     
    16151618static const yytype_int16 yydefgoto[] =
    16161619{
    1617       -1,   801,   464,   294,    49,   132,   133,   295,   296,   274,
    1618      297,   298,   752,   753,  1100,  1101,  1102,  1226,   299,   379,
    1619      301,   302,   303,   304,   305,   306,   307,   308,   309,   310,
    1620      311,   312,   313,   991,   519,   940,   545,   315,   941,  1022,
    1621     1023,  1523,  1025,  1026,  1027,  1028,  1524,  1029,  1030,  1428,
    1622     1429,  1391,  1392,  1393,  1497,  1498,  1502,  1503,  1548,  1549,
    1623     1031,  1346,  1032,  1033,  1279,  1280,  1281,  1474,  1034,  1175,
    1624     1452,  1453,  1454,  1557,  1575,  1466,  1467,   465,   466,   865,
    1625      866,   999,    52,    53,    54,    55,    56,   339,   155,    59,
    1626       60,    61,    62,   182,   468,   341,    64,  1475,    65,   254,
    1627       67,    68,   264,   343,   344,    71,    72,   345,   119,    75,
    1628      200,    76,   120,   347,   348,   349,   121,    80,   351,    81,
    1629      691,    82,    83,   690,   897,   898,  1053,  1054,  1202,  1055,
    1630       84,   492,    85,   490,   723,   847,   848,   355,   356,   693,
    1631      694,   695,   357,   358,   696,   360,   462,  1036,   134,   135,
    1632      317,   318,   167,   650,   651,   652,   653,   654,   361,   122,
    1633       88,   487,   488,   915,   489,   269,   496,   319,    89,   136,
    1634      137,    90,  1311,  1084,  1085,  1086,  1087,    91,    92,   712,
    1635       93,   263,    94,    95,   183,   993,   685,   410,   126,    96,
    1636      502,   503,   504,   184,   258,   186,   187,   188,   259,    99,
    1637      100,   101,   102,   103,   104,   105,   191,   192,   193,   194,
    1638      195,   814,   606,   607,   608,   609,   196,   611,   612,   613,
    1639      569,   570,   571,   572,  1059,   106,   615,   616,   617,   618,
    1640      619,   620,  1060,  1061,  1062,  1063,   595,   364,   365,   366,
    1641      367,   320,   161,   108,   109,   110,   369,   721,   621
     1620      -1,   802,   465,   295,    50,   133,   134,   296,   297,   275,
     1621     298,   299,   753,   754,  1101,  1102,  1103,  1227,   300,   380,
     1622     302,   303,   304,   305,   306,   307,   308,   309,   310,   311,
     1623     312,   313,   314,   992,   520,   941,   546,   316,   942,  1023,
     1624    1024,  1524,  1026,  1027,  1028,  1029,  1525,  1030,  1031,  1429,
     1625    1430,  1392,  1393,  1394,  1498,  1499,  1503,  1504,  1549,  1550,
     1626    1032,  1347,  1033,  1034,  1280,  1281,  1282,  1475,  1035,  1176,
     1627    1453,  1454,  1455,  1558,  1576,  1467,  1468,   466,   467,   866,
     1628     867,  1000,    53,    54,    55,    56,    57,   340,   156,    60,
     1629      61,    62,    63,   183,   469,   342,    65,  1476,    66,   255,
     1630      68,    69,   265,   344,   345,    72,    73,   346,   120,    76,
     1631     201,    77,   121,   348,   349,   350,   122,    81,   352,    82,
     1632     692,    83,    84,   691,   898,   899,  1054,  1055,  1203,  1056,
     1633      85,   493,    86,   491,   724,   848,   849,   356,   357,   694,
     1634     695,   696,   358,   359,   697,   361,   463,  1037,   135,   136,
     1635     318,   319,   168,   651,   652,   653,   654,   655,   362,   123,
     1636      89,   488,   489,   916,   490,   270,   497,   320,    90,   137,
     1637     138,    91,  1312,  1085,  1086,  1087,  1088,    92,    93,   713,
     1638      94,   264,    95,    96,   184,   994,   686,   411,   127,    97,
     1639     503,   504,   505,   185,   259,   187,   188,   189,   260,   100,
     1640     101,   102,   103,   104,   105,   106,   192,   193,   194,   195,
     1641     196,   815,   607,   608,   609,   610,   197,   612,   613,   614,
     1642     570,   571,   572,   573,  1060,   107,   616,   617,   618,   619,
     1643     620,   621,  1061,  1062,  1063,  1064,   596,   365,   366,   367,
     1644     368,   321,   162,   109,   110,   111,   370,   722,   622
    16421645};
    16431646
    16441647/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    16451648   STATE-NUM.  */
    1646 #define YYPACT_NINF -1346
     1649#define YYPACT_NINF -1376
    16471650static const yytype_int16 yypact[] =
    16481651{
    1649     7080, 10336, -1346,    65, -1346, -1346, -1346, -1346, -1346, -1346,
    1650    -1346,    62, -1346, -1346, -1346, -1346, -1346, -1346, -1346, -1346,
    1651    -1346, -1346, -1346, -1346, -1346, -1346, -1346, -1346,   140, -1346,
    1652    -1346,  1135,  1743,    79,  8505,   107, -1346, -1346, -1346, -1346,
    1653    -1346,   187, -1346, -1346, -1346,  1055,   192, -1346, -1346, -1346,
    1654    -1346, 10182, -1346, -1346, -1346,   118,   227, -1346,  1650, -1346,
    1655    -1346, -1346, -1346,  2245,   362,    74,  8626, -1346, -1346, 10182,
    1656     1874, -1346, -1346,  1963,   424,  3845,  1754,   831,  1963,  1126,
    1657    -1346, -1346, -1346,   140, -1346, -1346,  1963,  1440, -1346,   315,
    1658    -1346,   449,   497, -1346, -1346, -1346, -1346,   340,   227,   140,
    1659    -1346,   140, -1346, -1346, -1346, -1346,  6995,  1650, -1346, -1346,
    1660     1650, -1346,   379, -1346,  9247, -1346, -1346,  2348, 10491, -1346,
    1661      797,   797,   797, -1346, -1346,  1229,   140, -1346,   431,   468,
    1662      505, -1346, -1346, -1346,   517, -1346, -1346, -1346, -1346, -1346,
    1663      536,   569, -1346,   522,  9788,  2012,   153,   486,   556,   589,
    1664      592,   600,   612, 10524,  8132,   576, -1346, 10222, -1346, -1346,
    1665    -1346, -1346,   587, -1346,   216,  3873,  3873, -1346,   616,   454,
    1666    -1346, -1346, -1346, -1346,   636,   467,   478,   540, -1346, -1346,
    1667     2245,  2715,   640,   713, -1346,    42, -1346,   140,   140,   227,
    1668    -1346, -1346,    80, -1346,   140,   140, -1346,  2887,   679,   692,
    1669      797,  7794, -1346, -1346, -1346, 10182, -1346, -1346,  1963, -1346,
    1670    -1346, -1346,   227, -1346,  1650,   118, -1346,  8898, -1346,   797,
    1671      797,   797,   227, -1346,  1135, -1346,  7163, -1346, -1346,   691,
    1672      797, -1346,   797, -1346,   993,   797, -1346,  1135,   700,   717,
    1673    -1346,  8505,   606, -1346, -1346, -1346, 10149, -1346, -1346,  4159,
    1674    -1346,   713,    16,  5182, 10491,  2348,  2887, -1346,    92, -1346,
    1675    -1346,  9247,  1650,   697, 11820,  1743,   800, -1346, -1346,    59,
    1676    -1346,   509, -1346,   765,   838,  5241,   819,  5182,  5622, -1346,
    1677      821, -1346, -1346, -1346, -1346, -1346,  6113,  6113,  9552,   192,
    1678    -1346, -1346, -1346, -1346, -1346, -1346, -1346, -1346,  1842,  2541,
    1679     9788,  5182, -1346,   385,   290,   801,   638,   472,   837,   833,
    1680      835,   879,    26, -1346, -1346, -1346,   733, -1346, -1346,   223,
    1681    -1346, -1346,  2012, -1346, -1346,   432,   865, -1346,   659,   865,
    1682    -1346, -1346,  6995, -1346,   140,   874,   876,  9906, -1346, -1346,
    1683      878,  1713,  9333,  7918,  1963,  1963, -1346,  1963,   797,  1963,
    1684      797, -1346, -1346,   140, -1346, -1346, -1346, -1346, -1346, -1346,
    1685    -1346,  1963,   797, 10609,  1650, -1346, -1346, 10642,  1324, -1346,
    1686    -1346, -1346, -1346, -1346, -1346, -1346, -1346, -1346,  3398,  5182,
    1687    -1346, -1346, -1346, -1346, -1346, -1346, -1346, -1346, -1346, -1346,
    1688    -1346, -1346, -1346, -1346,   921,   880,   906,   909,   944,   914,
    1689      916,   918,  2715, -1346, -1346,   140,   902,   935,   118,   934,
    1690    -1346, -1346,   949, -1346, -1346, -1346, 10149, -1346, -1346, -1346,
    1691    -1346, -1346,  2887, -1346,  9788,  9788, -1346,   797,  2348,  8042,
    1692     9408, -1346, -1346, -1346, -1346, 10149,    16, -1346, -1346,  1963,
    1693      227, -1346, -1346, 10149, -1346,  7659, -1346, -1346,   797,   797,
    1694      187,  9788, -1346,   954, -1346,   797, -1346, -1346, -1346, -1346,
    1695    10950, -1346,   397, 11485, -1346,   227,   960, -1346,  2348, 11525,
    1696     7794,  6374, -1346, -1346, -1346, -1346,   980,  2887, -1346,  9408,
    1697      713,  7345, -1346, -1346, -1346, -1346,  1499,   420,   951,  1743,
    1698      969,   967,   990, 11820,  1343,  9247, -1346, 11820, -1346, -1346,
    1699    -1346, -1346,   422, -1346,   996,   976, -1346,  9552, -1346, 10682,
    1700    -1346, -1346,  9552, -1346,  9670,  9552, -1346, -1346,   192, -1346,
    1701      452,  1006,  1007, -1346,  7884, -1346,   532, -1346, -1346,  5182,
    1702    -1346,   763,  5182, -1346, -1346, -1346, -1346, -1346, -1346, -1346,
    1703    -1346, -1346, -1346, -1346, -1346,  5182, -1346, -1346,  5182,  5182,
    1704     5182,  5182,  5182,  5182,  5182,  5182,  5182,  5182,  5182,  5182,
    1705     5182,  5182,  5182,  5182,  5182,  5182,  3194,   733,   674, -1346,
    1706    -1346,   140,   140, -1346, -1346,  9788, -1346, -1346,   949, -1346,
    1707    -1346,   949,  6559, -1346, -1346,  1743, 10642,  7884,  1002, -1346,
    1708    10757, -1346,   797,   797,   797, -1346, -1346,   587, -1346,  1011,
    1709      953,  1016,  5182,  2260,   168,   951, -1346,   140,   140,   951,
    1710      211, -1346,   140,   140,   949,   951, -1346,   140,   140, -1346,
    1711      865, -1346, 10797, -1346,  1650, 11676,   797,   797, -1346,  1953,
    1712      266,   729, 10797, -1346,  7263, -1346,   951, -1346, 10609, -1346,
    1713      193,  9018,  9018,  1650,  4710,   989, -1346,   550,  1010,  1012,
    1714    -1346,  1021,  3873,   390, -1346,  1117,  1650,  9018,   606,  2348,
    1715      606,   235,   865, -1346, -1346,   274,   865, -1346, -1346, -1346,
    1716     2348, -1346,   522, -1346,   865,   227, 10950, -1346,   487,  1045,
    1717      620,  1049, -1346,   874,   227, -1346, -1346, 10149,   227,   633,
    1718     6712,  1046, 11676, -1346, -1346,  1051, -1346, -1346, -1346,   606,
    1719    -1346, 11601, 11751,   876, -1346,  9018,   518,  9333, -1346, -1346,
    1720      587,  1047,  1050,  1499,  2494, -1346, -1346, 11820, -1346, -1346,
    1721     1743,  1052,  5182, -1346,  1743,  1053, -1346, -1346,  1057, -1346,
    1722     1053,  1060,   509,  5182, -1346,  1061,   192,  1063,  1072,  1073,
    1723    -1346,  1076,  1077,  7884, -1346,  5182, -1346,  5073,  5182,  1068,
    1724    -1346, -1346,   657, -1346,  5182, -1346, -1346,   828, -1346, -1346,
    1725    -1346, -1346,   385,   385,   290,   290,   801,   801,   801,   801,
    1726      638,   638,   472,   837,   833,   835,   879,  5182,   327, 10950,
    1727     1084,  1085,  1086,   674, -1346, -1346, -1346, -1346, -1346, 10950,
    1728    10950, -1346, -1346, 10609, -1346,  8256, 10024, -1346, -1346, -1346,
    1729      953, 10950,   985,  1089,  1093,  1107,  1110,  1115,  1120,  1124,
    1730    -1346,  4610, -1346,  2260, -1346, -1346, -1346, -1346, -1346, -1346,
    1731    -1346, -1346, -1346, -1346, -1346, -1346, -1346, -1346, -1346, -1346,
    1732    -1346, -1346,   949, -1346, -1346, -1346,   951,   797, -1346, -1346,
    1733    -1346, -1346, -1346, -1346, -1346, -1346, -1346, -1346, -1346,  1127,
    1734     1130, -1346,   118,  1068,  4710, -1346, -1346, -1346,  3398,  1123,
    1735    -1346, -1346, -1346, -1346,  1743,  7483,  1215, -1346, -1346, -1346,
    1736    -1346,  1116, -1346, -1346, -1346,   949, -1346, -1346, -1346,   949,
    1737      713,  1136,   949, -1346, -1346, -1346, -1346, -1346, -1346,  8132,
    1738    -1346,   227, -1346,  1142, 10682, -1346,  2205, -1346,   542,  1743,
    1739    -1346,  1152,  1157, -1346, -1346,  1156,  1162, -1346,   775,  1004,
    1740    -1346,   751, -1346,  2494,   951, -1346,   967, -1346, -1346, -1346,
    1741      969,  1165, 11820,  9247,  9788,  1168, -1346, -1346,   677,  1169,
    1742     8132,   606,  1169, -1346, -1346,  1169, -1346,  3398, -1346, -1346,
    1743    -1346,  1163,  5182,  1278, -1346,  5182, -1346,  1278, -1346, -1346,
    1744     5182, -1346,   317,   865, -1346, -1346, -1346, -1346, -1346, -1346,
    1745    -1346,   876,  9906, -1346, -1346,  8380,  1174, -1346,   318,   865,
    1746    -1346,   324,   376,   865, -1346,   797,  4908, -1346, -1346, -1346,
    1747    10950, 10950, -1346,  9408,  9408,  1177,  1176,  1184,  1186, -1346,
    1748      793,    61,  1068, -1346,  1278, -1346,  3873, -1346,  5182,   543,
    1749    -1346,  7760,  1195,  1198, 11362,  1199,  1200,  1074,  1128,  1197,
    1750     5182,  1209,   227,  5182,  5182,  1300,  1189,  1193,   187,   182,
    1751      688,  1196,  1212,  1214, -1346, -1346, -1346,  1217, -1346, -1346,
    1752    -1346, -1346, -1346, -1346, -1346, -1346,  1219, -1346,  1743,  1234,
    1753     5182, 10950, 10950,   118,   140,  1237, -1346, -1346,  2205,   575,
    1754     1180,  5182,  2333,   588, -1346, -1346,  1222,    54,  1222, -1346,
    1755    -1346, -1346,   140,   140,  1743, -1346, -1346, 10376, -1346, -1346,
    1756    -1346, -1346,  1255,  1004, -1346, -1346,  1238, -1346,  1254, -1346,
    1757     1053, -1346, -1346,  2348,  1259, -1346, -1346, -1346,   708,  1256,
    1758    -1346,  1266,  1021,  5182,  1265,  1163, -1346,   818, -1346, -1346,
    1759     1264, -1346,    23, -1346,  1270,  1264, -1346,  1275, -1346, -1346,
    1760    -1346,   949,  1276,  1280,  8008,  1287,  1288,  1291, -1346,   140,
    1761     1294, -1346, -1346, -1346,   949, -1346, -1346, -1346, -1346, -1346,
    1762    -1346,   949,  5182,  5182,   876,  1298, -1346, -1346, -1346, -1346,
    1763    -1346, -1346, -1346, -1346, -1346, -1346, -1346,  5182,  5182,  1306,
    1764     1307,  1264, -1346, -1346,  1743, -1346, -1346, -1346,  5182,  5182,
    1765     1361,  5182, -1346, -1346,  1296, -1346,  1297,  5182,  1302,  1303,
    1766     5182,  1094,  1304,    -2, -1346,    55,  1896, -1346, -1346,  7483,
    1767     1273,   140,   608, -1346, -1346, -1346, -1346, -1346, -1346, -1346,
    1768    10451,   618, -1346,   858,  1310,  1313,  1329, -1346,  2333, -1346,
    1769      140, -1346, -1346, -1346, -1346, -1346, -1346, -1346, -1346, 11178,
    1770    -1346,  9408, -1346,  1330, -1346, -1346,  9247,   621,   664, -1346,
    1771     1328, -1346,  1336, -1346, -1346,  1347,  1331, -1346, -1346,  1331,
    1772     1331,  1278,  1349,   897,  1631, -1346,  1350, -1346, 10950, -1346,
    1773    -1346, -1346, -1346, -1346,  1355, -1346, 10950, 10950, 10950, -1346,
    1774    -1346,  1357, -1346,  1359,  1345,  1365,   815,  9093,  9213, -1346,
    1775    -1346, -1346, -1346,  1362, -1346,   710,   712,  1344,   754,  7625,
    1776    -1346, -1346,   698, -1346, -1346,   761,  1371,  1376,   227,  1429,
    1777      937, -1346, -1346,  5182, -1346,  1379,   522,  5182, -1346, -1346,
    1778    11362, -1346,  1384,  1385, -1346, -1346,   416,   865, -1346, -1346,
    1779     2205, -1346, -1346, -1346,  1375, -1346, -1346, -1346, -1346, -1346,
    1780    -1346,  9247, -1346, -1346, -1346,  1278, -1346, -1346, -1346, -1346,
    1781    -1346, -1346, -1346, -1346, -1346, -1346, -1346, -1346,  1387,  1390,
    1782    -1346, -1346, -1346, -1346, -1346, -1346, -1346,  1396, -1346,  1397,
    1783    -1346, 11362,    52,  5182, 11362, -1346,  1400,  5182, -1346,  8823,
    1784     9247, -1346,   242,  1401,  1418, -1346, -1346,  1406,  1407,  1388,
    1785      522,   291,   885, -1346, -1346, -1346, -1346, -1346, -1346,   949,
    1786    -1346, -1346,  1650,  2348,  1409,  1264,  1278,  1278,  1416,  1417,
    1787     1421,  1425, -1346, -1346,  9408,  1420, -1346,  1497,  5182,  1412,
    1788    -1346, -1346, 11272, -1346,   794, -1346,  1415, 11362,  1424,  9483,
    1789    -1346, -1346,  1439, -1346,  1442, -1346,  1454,  1461, -1346,  1431,
    1790     1427,   210,  1430, 10950,  9247, -1346, -1346, -1346,  1455,  1264,
    1791     1264, -1346, -1346, -1346, -1346, -1346, 11362,    76, -1346,   476,
    1792    -1346, -1346,  5498, -1346, -1346,  1443,  5182, -1346,  5182,  5498,
    1793      227, 10830,   227, 10830,  1462, -1346,  1467, -1346,  1457, -1346,
    1794     5182,  1480,   308,  1475, -1346, -1346, -1346,  1479, -1346,  1483,
    1795     1485, -1346,  5182,  5182, -1346, -1346,   963,    96, -1346, -1346,
    1796     1471, -1346,   963, -1346, -1346,  1784, 10757,   606, -1346, -1346,
    1797      227, 10830,   227, 10830,   210,  1487,  5182,  1477,   210,   210,
    1798     1500,  1502, -1346, -1346, -1346, -1346, 11272,  1498,   963,  8747,
    1799     5182, 11182,  1503,   963,  1510,  1784,  2509, -1346, -1346, -1346,
    1800     1512, -1346, -1346, -1346, -1346,  1493,   522,  1516, -1346,   358,
    1801    -1346, -1346,  9788, -1346, 11044, -1346, 11272, -1346, -1346,  1501,
    1802    10954, -1346, -1346, 11182,   227,  2509,   227,  1519,  1520,   522,
    1803     1522, -1346,  1509,   522,   809, -1346, 11044, -1346, -1346, -1346,
    1804    10954, -1346, -1346, -1346,   227,   227, -1346,   568,  5182, -1346,
    1805      824, -1346, -1346, -1346, -1346, -1346, -1346,   522,   606,  1533,
    1806     1514, -1346, -1346, -1346, -1346,   843, -1346, -1346,  1518,   606,
    1807    -1346, -1346
     1652    3644, 10282,    32, -1376, -1376, -1376, -1376, -1376, -1376, -1376,
     1653   -1376, -1376, -1376, -1376,    24, -1376, -1376, -1376, -1376, -1376,
     1654   -1376, -1376, -1376, -1376, -1376, -1376, -1376, -1376, -1376, -1376,
     1655   -1376, -1376,    56, -1376, -1376,  1230,  1113,    65,  7226,    72,
     1656   -1376, -1376,   176, -1376, -1376, -1376,   630,    11, -1376, -1376,
     1657   -1376, -1376,  7013, -1376, -1376, -1376,   138,    27, -1376,  1340,
     1658   -1376, -1376, -1376, -1376,  1755,   264,    88,  8626, -1376, -1376,
     1659    7013,  2358, -1376, -1376,  1485,   327,  7092,  1156,  1585,  1485,
     1660    1669, -1376, -1376, -1376,    56, -1376, -1376,  1485,  2327, -1376,
     1661     227, -1376,   362,   385, -1376, -1376, -1376, -1376,   285,    27,
     1662      56, -1376,    56, -1376, -1376, -1376, -1376,  4122,  1340, -1376,
     1663   -1376,  1340, -1376,   258, -1376, 10471, -1376, -1376,  2035, 10553,
     1664   -1376,  2430,  2430,  2430, -1376, -1376,   833,    56, -1376,   306,
     1665     321,   331, -1376, -1376, -1376,   334, -1376, -1376, -1376, -1376,
     1666   -1376,   359,   376, -1376,   421,  9775,  2503,   117,   409,   412,
     1667     431,   448,   469,   476, 10588,  8042,   456, -1376, 10169, -1376,
     1668   -1376, -1376, -1376,   480, -1376,   126,  4748,  4748, -1376,   493,
     1669     186, -1376, -1376, -1376, -1376,   512,   259,   317,   443, -1376,
     1670   -1376,  1755,  2698,   513,   571, -1376,    17, -1376,    56,    56,
     1671      27, -1376, -1376,    61, -1376,    56,    56, -1376,  2953,   537,
     1672     569,  2430,  8661, -1376, -1376, -1376,  7013, -1376, -1376,  1485,
     1673   -1376, -1376, -1376,    27, -1376,  1340,   138, -1376,  8906, -1376,
     1674    2430,  2430,  2430,    27, -1376,  1230, -1376,  6886, -1376, -1376,
     1675     566,  2430, -1376,  2430, -1376,   935,  2430, -1376,  1230,   578,
     1676     585, -1376,  7226,   720, -1376, -1376, -1376,  9503, -1376, -1376,
     1677    3855, -1376,   571,    62,  5470, 10553,  2035,  2953, -1376,   223,
     1678   -1376, -1376, 10471,  1340,   593,  9062,  1113,   617, -1376, -1376,
     1679     310, -1376,   575, -1376,   623,   663,  6523,   636,  5470,  7370,
     1680   -1376,   651, -1376, -1376, -1376, -1376, -1376, 11419, 11419,  9541,
     1681      11, -1376, -1376, -1376, -1376, -1376, -1376, -1376, -1376,   786,
     1682    2399,  9775,  5470, -1376,   648,   477,   598,   567,   732,   661,
     1683     654,   656,   722,   110, -1376, -1376, -1376,   588, -1376, -1376,
     1684     251, -1376, -1376,  2503, -1376, -1376,    51,   724, -1376,   530,
     1685     724, -1376, -1376,  4122, -1376,    56,   694,   730,  9892, -1376,
     1686   -1376,  1107,  1664,  9269,  9183,  1485,  1485, -1376,  1485,  2430,
     1687    1485,  2430, -1376, -1376,    56, -1376, -1376, -1376, -1376, -1376,
     1688   -1376, -1376,  1485,  2430, 10623,  1340, -1376, -1376, 10705,  1192,
     1689   -1376, -1376, -1376, -1376, -1376, -1376, -1376, -1376, -1376,  8357,
     1690    5470, -1376, -1376, -1376, -1376, -1376, -1376, -1376, -1376, -1376,
     1691   -1376, -1376, -1376, -1376, -1376,   956,   758,   766,   768,   961,
     1692     778,   783,   797,  2698, -1376, -1376,    56,   708,   746,   138,
     1693     800, -1376, -1376,   816, -1376, -1376, -1376,  9503, -1376, -1376,
     1694   -1376, -1376, -1376,  2953, -1376,  9775,  9775, -1376,  2430,  2035,
     1695   10927,  9345, -1376, -1376, -1376, -1376,  9503,    62, -1376, -1376,
     1696    1485,    27, -1376, -1376,  9503, -1376,  6971, -1376, -1376,  2430,
     1697    2430,   176,  9775, -1376,   809, -1376,  2430, -1376, -1376, -1376,
     1698   -1376, 10134, -1376,   602,  3294, -1376,    27,   825, -1376,  2035,
     1699   11619,  8661, 11437, -1376, -1376, -1376, -1376,   966,  2953, -1376,
     1700    9345,   571,  8504, -1376, -1376, -1376, -1376,   680,   633,   810,
     1701    1113,   830,   828,   842,  9062,  1033, 10471, -1376,  9062, -1376,
     1702   -1376, -1376, -1376,   645, -1376,   859,   844, -1376,  9541, -1376,
     1703   10740, -1376, -1376,  9541, -1376,  9658,  9541, -1376, -1376,    11,
     1704   -1376,   659,   870,   891, -1376,  7792, -1376,   703, -1376, -1376,
     1705    5470, -1376,   726,  5470, -1376, -1376, -1376, -1376, -1376, -1376,
     1706   -1376, -1376, -1376, -1376, -1376, -1376,  5470, -1376, -1376,  5470,
     1707    5470,  5470,  5470,  5470,  5470,  5470,  5470,  5470,  5470,  5470,
     1708    5470,  5470,  5470,  5470,  5470,  5470,  5470,  2514,   588,  1160,
     1709   -1376, -1376,    56,    56, -1376, -1376,  9775, -1376, -1376,   816,
     1710   -1376, -1376,   816, 11493, -1376, -1376,  1113, 10705,  7792,   894,
     1711   -1376, 10775, -1376,  2430,  2430,  2430, -1376, -1376,   480, -1376,
     1712     904,   683,   912,  5470,  2122,   241,   810, -1376,    56,    56,
     1713     810,   244, -1376,    56,    56,   816,   810, -1376,    56,    56,
     1714   -1376,   724, -1376, 10857, -1376,  1340, 11707,  2430,  2430, -1376,
     1715    1324,   547,   608, 10857, -1376,  5856, -1376,   810, -1376, 10623,
     1716   -1376,   124,  2858,  2858,  1340,  5055,   864, -1376,   745,   916,
     1717     920, -1376,   922,  4748,   416, -1376,  1013,  1340,  2858,   720,
     1718    2035,   720,   404,   724, -1376, -1376,   457,   724, -1376, -1376,
     1719   -1376,  2035, -1376,   421, -1376,   724,    27, 10134, -1376,   710,
     1720     963,   728,   969, -1376,   694,    27, -1376, -1376,  9503,    27,
     1721     741, 10317,   976, 11707, -1376, -1376,   984, -1376, -1376, -1376,
     1722     720, -1376, 11663, 11751,   730, -1376,  2858,   294,  9269, -1376,
     1723   -1376,   480,   985,   987,   680,  3105, -1376, -1376,  9062, -1376,
     1724   -1376,  1113,   989,  5470, -1376,  1113,   992, -1376, -1376,  1004,
     1725   -1376,   992,  1005,   575,  5470, -1376,  1008,    11,  1014,  1029,
     1726    1030, -1376,  1031,  1034,  7792, -1376,  5470, -1376,  5273,  5470,
     1727    1027, -1376, -1376,   742, -1376,  5470, -1376, -1376,   750, -1376,
     1728   -1376, -1376, -1376,   648,   648,   477,   477,   598,   598,   598,
     1729     598,   567,   567,   732,   661,   654,   656,   722,  5470,   230,
     1730   10134,  1035,  1041,  1042,  1160, -1376, -1376, -1376, -1376, -1376,
     1731   10134, 10134, -1376, -1376, 10623, -1376,  8167, 10009, -1376, -1376,
     1732   -1376,   683, 10134,   972,  1052,  1054,  1055,  1063,  1072,  1084,
     1733    1085, -1376,  6850, -1376,  2122, -1376, -1376, -1376, -1376, -1376,
     1734   -1376, -1376, -1376, -1376, -1376, -1376, -1376, -1376, -1376, -1376,
     1735   -1376, -1376, -1376,   816, -1376, -1376, -1376,   810,  2430, -1376,
     1736   -1376, -1376, -1376, -1376, -1376, -1376, -1376, -1376, -1376, -1376,
     1737    1089,  1091, -1376,   138,  1027,  5055, -1376, -1376, -1376,  8357,
     1738    1092, -1376, -1376, -1376, -1376,  1113,  7531,  1175, -1376, -1376,
     1739   -1376, -1376,  1080, -1376, -1376, -1376,   816, -1376, -1376, -1376,
     1740     816,   571,  1104,   816, -1376, -1376, -1376, -1376, -1376, -1376,
     1741    8042, -1376,    27, -1376,  1006, 10740, -1376,  1890, -1376,   455,
     1742    1113, -1376,  1108,  1106, -1376, -1376,  1111,  1119, -1376,   802,
     1743    1243, -1376,   695, -1376,  3105,   810, -1376,   828, -1376, -1376,
     1744   -1376,   830,  1124,  9062, 10471,  9775,  1127, -1376, -1376,   788,
     1745    1126,  8042,   720,  1126, -1376, -1376,  1126, -1376,  8357, -1376,
     1746   -1376, -1376,  1122,  5470,   908, -1376,  5470, -1376,   908, -1376,
     1747   -1376,  5470, -1376,   474,   724, -1376, -1376, -1376, -1376, -1376,
     1748   -1376, -1376,   730,  9892, -1376, -1376,  8292,  1131, -1376,   504,
     1749     724, -1376,   505,   521,   724, -1376,  2430,  8378, -1376, -1376,
     1750   -1376, 10134, 10134, -1376,  9345,  9345,  1133,  1132,  1144,  1162,
     1751   -1376,   731,    55,  1027, -1376,   908, -1376,  4748, -1376,  5470,
     1752     460, -1376,  7667,  1161,  1164, 11363,  1165,  1170,   749,   900,
     1753    1822,  5470,  1172,    27,  5470,  5470,  1277,  1157,  1159,   176,
     1754     -15,   441,  1167,  1176,  1154, -1376, -1376, -1376,  1184, -1376,
     1755   -1376, -1376, -1376, -1376, -1376, -1376, -1376,  1177, -1376,  1113,
     1756    1196,  5470, 10134, 10134,   138,    56,  1198, -1376, -1376,  1890,
     1757     468,  1914,  5470,  2338,   488, -1376, -1376,  1185,    39,  1185,
     1758   -1376, -1376, -1376,    56,    56,  1113, -1376, -1376, 10399, -1376,
     1759   -1376, -1376, -1376,  1201,  1243, -1376, -1376,  1163, -1376,  1203,
     1760   -1376,   992, -1376, -1376,  2035,  1207, -1376, -1376, -1376,   808,
     1761    1202, -1376,  1213,   922,  5470,  1215,  1122, -1376,  1868, -1376,
     1762   -1376,  1212, -1376,   -13, -1376,  1219,  1212, -1376,  1224, -1376,
     1763   -1376, -1376,   816,  1228,  1233,  7917,  1236,  1239,  1246, -1376,
     1764      56,  1245, -1376, -1376, -1376,   816, -1376, -1376, -1376, -1376,
     1765   -1376, -1376,   816,  5470,  5470,   730,  1247, -1376, -1376, -1376,
     1766   -1376, -1376, -1376, -1376, -1376, -1376, -1376, -1376,  5470,  5470,
     1767    1253,  1254,  1212, -1376, -1376,  1113, -1376, -1376, -1376,  5470,
     1768    5470,  1292,  5470, -1376, -1376,  1242, -1376,  1248,  5470,  1250,
     1769    1252,  5470,  1051,  1257,    13, -1376,    15,  1010, -1376, -1376,
     1770    7531,  1260,    56,   550, -1376, -1376, -1376, -1376, -1376, -1376,
     1771   -1376, 10435,   551, -1376,   820,  1276,  1280,  1281, -1376,  2338,
     1772   -1376,    56, -1376, -1376, -1376, -1376, -1376, -1376, -1376, -1376,
     1773   11013, -1376,  9345, -1376,  1285, -1376, -1376, 10471,   552,   557,
     1774   -1376,  1288, -1376,  1291, -1376, -1376,  1299,  1337, -1376, -1376,
     1775    1337,  1337,   908,  1307,  1935,  1975, -1376,  1317, -1376, 10134,
     1776   -1376, -1376, -1376, -1376, -1376,  1321, -1376, 10134, 10134, 10134,
     1777   -1376, -1376,  1322, -1376,  1323,  1326,  1330,   763,  9027,  9148,
     1778   -1376, -1376, -1376, -1376,  1331, -1376,   812,   865,  1333,   877,
     1779    7352, -1376, -1376,   595, -1376, -1376,   899,  1336,  1338,    27,
     1780    1385,   884, -1376, -1376,  5470, -1376,  1339,   421,  5470, -1376,
     1781   -1376, 11363, -1376,  1341,  1343, -1376, -1376,   522,   724, -1376,
     1782   -1376,  1890, -1376, -1376, -1376,  1335, -1376, -1376, -1376, -1376,
     1783   -1376, -1376, 10471, -1376, -1376, -1376,   908, -1376, -1376, -1376,
     1784   -1376, -1376, -1376, -1376, -1376, -1376, -1376, -1376, -1376,  1355,
     1785    1357, -1376, -1376, -1376, -1376, -1376, -1376, -1376,  1361, -1376,
     1786    1381, -1376, 11363,   177,  5470, 11363, -1376,  1384,  5470, -1376,
     1787    3411, 10471, -1376,   292,  1399,  1401, -1376, -1376,  1390,  1393,
     1788    1372,   421,   238,   882, -1376, -1376, -1376, -1376, -1376, -1376,
     1789     816, -1376, -1376,  1340,  2035,  1395,  1212,   908,   908,  1402,
     1790    1404,  1406,  1410, -1376, -1376,  9345,  1407, -1376,  1468,  5470,
     1791    1394, -1376, -1376, 11276, -1376,   907, -1376,  1405, 11363,  1408,
     1792    9421, -1376, -1376,  1417, -1376,  1421, -1376,  1437,  1438, -1376,
     1793    1412,  1414,    20,  1418, 10134, 10471, -1376, -1376, -1376,  1424,
     1794    1212,  1212, -1376, -1376, -1376, -1376, -1376, 11363,   179, -1376,
     1795     318, -1376, -1376,  8748, -1376, -1376,  1419,  5470, -1376,  5470,
     1796    8748,    27, 10892,    27, 10892,  1428, -1376,  1442, -1376,  1425,
     1797   -1376,  5470,  1448,   280,  1444, -1376, -1376, -1376,  1446, -1376,
     1798    1454,  1456, -1376,  5470,  5470, -1376, -1376,   968,   151, -1376,
     1799   -1376,  1439, -1376,   968, -1376, -1376,  2100, 10775,   720, -1376,
     1800   -1376,    27, 10892,    27, 10892,    20,  1460,  5470,  1441,    20,
     1801      20,  1465,  1471, -1376, -1376, -1376, -1376, 11276,  1462,   968,
     1802    8830,  5470, 11189,  1469,   968,  1473,  2100,  2682, -1376, -1376,
     1803   -1376,  1477, -1376, -1376, -1376, -1376,  1459,   421,  1480, -1376,
     1804     290, -1376, -1376,  9775, -1376, 11097, -1376, 11276, -1376, -1376,
     1805    1467, 11010, -1376, -1376, 11189,    27,  2682,    27,  1492,  1495,
     1806     421,  1498, -1376,  1476,   421,   915, -1376, 11097, -1376, -1376,
     1807   -1376, 11010, -1376, -1376, -1376,    27,    27, -1376,   378,  5470,
     1808   -1376,   924, -1376, -1376, -1376, -1376, -1376, -1376,   421,   720,
     1809    1500,  1479, -1376, -1376, -1376, -1376,   925, -1376, -1376,  1481,
     1810     720, -1376, -1376
    18081811};
    18091812
     
    18111814static const yytype_int16 yypgoto[] =
    18121815{
    1813    -1346,  4712,  1583, -1346,  1844, -1346,     7,     0,   257, -1346,
    1814    -1346,   637,  -508,  -460,  -702, -1047, -1346,   -72,  1640,  1181,
    1815    -1346,   368,   492,   531,   498,   557,  1092,  1099,  1100,  1106,
    1816     1091, -1346,  -277,  -697,  5286,  -774, -1346, -1346,   722,   565,
    1817     -972,   603, -1346,   111, -1346,   496, -1130, -1346, -1346,   208,
    1818    -1346, -1322,  -943,   325, -1346, -1346, -1346, -1346,   128, -1151,
    1819    -1346, -1346, -1346, -1346, -1346, -1346,   400, -1046, -1346, -1346,
    1820     -544, -1346,   196,   138, -1346,   243, -1346,  -329, -1346, -1346,
    1821    -1346,   648,  -823, -1346, -1346,     5, -1137,   564,   270, -1346,
    1822    -1346, -1346,  -130, -1346,    18,  -452,    47,  -213,  -191,  2570,
    1823     4418, -1346, -1346,   131,   355,   744,  1341,    39,  2331, -1346,
    1824    -1346, -1346,   276, -1346,   365,   201,  2987,    15,  -227, -1346,
    1825    -1346,  5549,  5788,  -872, -1346,   795,   639,   391,   634,  -919,
    1826    -1346, -1346,  6180,   970,   781,  -314, -1346,   -52,  -391,   770,
    1827    -1346, -1346,  -927,  -863,   -63,   -19, -1346,  1233, -1346,  1364,
    1828      -99,  -296,  -180,  -136,   762,   840, -1346,  1048,   405,  3462,
    1829     1523,  -417,   986, -1346, -1346,   792, -1346,  -436, -1346,   -73,
    1830    -1346, -1346, -1346, -1262,   494, -1346, -1346, -1346,  1230, -1346,
    1831        6, -1346, -1346,  -803,  -107, -1345,  -150,  6282, -1346,  3941,
    1832    -1346,   982, -1346,   -18,   212,  -176,  -173,  -169,     2,   -42,
    1833      -40,   -32,   586,    10,    22,    49,    50,  -166,  -163,  -160,
    1834     -158,  -318,  -540,  -528,  -480,  -587,  -304,  -556, -1346, -1346,
    1835     -509,  1145,  1154,  1155,  1813,  5019,  -577,  -507,  -497,  -488,
    1836     -468, -1346,  -925, -1029, -1004, -1003,  -581,  -252,  -244, -1346,
    1837    -1346,   169,    77,   -45, -1346,  3860,   -39,  -632,   147
     1816   -1376,  4863,  1583, -1376,   725, -1376,     7,     0,   -57, -1376,
     1817   -1376,   597,  -512,  -465,  -798,  -919, -1376,   -36,  3888,  1181,
     1818   -1376,   132,   515,   586,  -238,   582,  1058,  1059,  1062,  1064,
     1819    1066, -1376,   939,  -595,  5485,  -840, -1376, -1376,   687,  -126,
     1820    -935,   622, -1376,   519, -1376,   454, -1338, -1376, -1376,   172,
     1821   -1376, -1119,  -858,   288, -1376, -1376, -1376, -1376,    95, -1375,
     1822   -1376, -1376, -1376, -1376, -1376, -1376,   368, -1329, -1376, -1376,
     1823   -1087, -1376,   161,   109, -1376,   215, -1376,  -362, -1376, -1376,
     1824   -1376,   618,  -833, -1376, -1376,    19, -1199,   459,   209, -1376,
     1825   -1376, -1376,  -213, -1376,     4,  -466,    47,   141,  -194,  2584,
     1826    4298, -1376, -1376,    41,   265,   712,  1506,   152,  2823, -1376,
     1827   -1376, -1376,   214, -1376,  -219,   188,  3114,   425,  -333, -1376,
     1828   -1376,  5335,  5712,  -824, -1376,   771,   609,   366,   610,  -517,
     1829   -1376, -1376,  6089,   945,   761,  -534, -1376,   -30,    44,  1078,
     1830   -1376, -1376,  -953,  -932,   822,   946, -1376,    83, -1376,  1436,
     1831    -179,  -226,  -197,  -137,   737,   821, -1376,  1038,   510,  3608,
     1832    1612,  -447,   975, -1376, -1376,   784, -1376,  -437, -1376,    57,
     1833   -1376, -1376, -1376, -1254,   482, -1376, -1376, -1376,  1221, -1376,
     1834      18, -1376, -1376,  -809,  -101, -1324,  -140,  6095, -1376,  6226,
     1835   -1376,   977, -1376,   -92,   355,  -176,  -168,  -165,     2,   -43,
     1836     -40,   -37,  1068,    14,    40,    49,   -86,  -163,  -158,  -155,
     1837    -153,  -320,  -507,  -497,  -487,  -543,  -318,  -509, -1376, -1376,
     1838    -544,  1140,  1143,  1145,  1378,  4858,  -559,  -564,  -539,  -533,
     1839    -530, -1376, -1014, -1040, -1039, -1008,  -574,  -195,  -248, -1376,
     1840   -1376,    71,   135,   -23, -1376,  4054,   393,  -625,  -253
    18381841};
    18391842
     
    18411844   positive, shift that token.  If negative, reduce the rule which
    18421845   number is the opposite.  If YYTABLE_NINF, syntax error.  */
    1843 #define YYTABLE_NINF -547
     1846#define YYTABLE_NINF -548
    18441847static const yytype_int16 yytable[] =
    18451848{
    1846       50,   113,    98,   147,   395,   148,   115,   396,   112,   426,
    1847      257,   397,   163,   149,   398,   689,   815,   399,    63,   859,
    1848      400,  1194,   401,   605,   757,   919,   816,   706,  1067,   381,
    1849      382,   113,   113,   408,    50,   437,    98,   610,  1169,    73,
    1850      142,   834,  1035,  1430,   806,    50,  1195,  1196,   117,  1374,
    1851     1228,    50,    63,   158,   739,   150,  1140,  1141,    50,   784,
    1852      803,   250,  1037,    50,  1283,   189,    50,   151,   212,    50,
    1853     1434,   222,   804,    73,   215,   163,   725,   107,   107,   395,
    1854      730,   210,   396,   407,    33,   596,   397,   675,   708,   398,
    1855      423,   359,   399,   807,   152,   400,    33,   401,   156,  1388,
    1856     1389,   472,   474,   808,   198,   321,   684,    50,   333,  1285,
    1857       50,   107,   809,  1233,   688,   623,   467,    50,  1430,   635,
    1858      805,  1142,    33,   639,   589,   113,   565,  1199,   679,   681,
    1859      473,    69,  1348,   210,    33,  1284,   819,  1203,   147,  1203,
    1860      148,  1234,   826,  -240,  -240,    50,   107,   158,   149,   123,
    1861      633,   444,  1457,   248,   637,   199,   242,    50,   409,   371,
    1862      566,   156,  1147,   403,   456,    69,   433,   170,   715,  1286,
    1863      409,  1390,   210,   803,  1434,  1190,   124,  1462,  1156,  1434,
    1864       50,    50,    33,   158,  1316,   804,  1319,  1321,  1148,   522,
    1865      150,   316,   494,   141,   417,   495,   409,    50,  1157,   729,
    1866      331,    78,   151,  1148,  1434,    50,   478,   158,   409,   243,
    1867       33,  1434,    97,   147,    50,   148,  -240,    50,   741,   440,
    1868      160,   143,   433,   149,   113,   928,   978,   709,   673,   152,
    1869      165,   404,   210,   805,   113,    78,   979,   113,   403,  1172,
    1870     1173,    50,   113,    98,   966,  1105,    97,   459,   428,   461,
    1871      850,   850,   431,    33,   166,    50,    50,   146,   158,    63,
    1872      803,   163,    50,    97,   210,   113,   850,   242,   323,   210,
    1873       58,    58,   804,  1299,   955,   185,    77,    33,    97,   788,
    1874       73,    97,   817,   160,   601,    73,   467,   584,  1078,  1388,
    1875     1389,   706,  1151,   807,   272,  1348,   514,  1345,   598,   610,
    1876      415,   144,  1348,   808,    58,   467,   404,   473,   431,   153,
    1877       77,   486,   809,   467,   850,   677,    33,   -10,   107,  1223,
    1878      805,   682,    50,   434,   371,   824,  1450,   601,   851,   602,
    1879     1140,  1141,   816,   442,   819,   316,    58,   375,   574,    58,
    1880       50,    50,   794,   868,   575,   219,   168,   156,  1142,   872,
    1881     1531,   409,   708,   376,  1197,    70,  1035,    97,   891,    33,
    1882       33,  1400,  1348,   623,    50,   197,    33,   359,    50,    97,
    1883      596,  1530,    69,   792,   432,  1398,  1037,   470,   648,   583,
    1884      596,   834,  1551,   839,   668,   321,   321,   840,   876,    70,
    1885      409,   907,   394,   185,   845,  1142,  1546,  1479,   623,   521,
    1886      273,   807,    50,  1550,   371,    86,  1410,   623,   735,   833,
    1887      737,   808,   321,   738,   551,   552,   742,    97,    33,   589,
    1888      809,   208,    50,  1487,   340,   844,  1411,  -299,    50,    97,
    1889      432,  1108,  1121,   409,   409,  1512,   237,  1514,  1125,    86,
    1890      601,   697,    78,  1488,   210,   918,  1347,    78,   745,   240,
    1891     1259,  1260,   669,    97,   242,    73,   321,  1425,    33,   668,
    1892     1222,   359,   950,   113,  1470,   623,  1471,   476,    50,   160,
    1893      112,   316,   316,  1542,    73,   321,  1194,    50,   706,   371,
    1894      623,    50,    73,    98,   210,  1103,    50,    58,  1088,   113,
    1895     1128,   709,   601,  1543,   113,   977,   979,  -542,   316,    63,
    1896      949,  1195,  1196,  1127,  1130,  1080,   861,   548,   647,   610,
    1897      117,    58,   698,   549,   550,   253,   860,    77,   699,   498,
    1898       73,  1142,    77,  1496,   359,   862,   113,   669,  1528,  1501,
    1899     1366,   113,   409,   751,    97,   716,   321,   731,   756,   708,
    1900      486,   717,   316,   732,   486,   -12,   576,   470,   409,   959,
    1901     1508,   686,   870,   604,   316,  1526,   316,   467,   107,   316,
    1902     1533,   316,   316,   880,    57,   116,   470,   744,   623,   559,
    1903      560,   904,   439,   745,   470,   385,   700,   990,   359,   359,
    1904      958,  1199,  -467,   835,   499,   113,   500,   501,   388,   849,
    1905      849,   386,  1139,   598,   359,   977,    70,  1463,    57,   390,
    1906       50,   324,   885,    50,   389,   849,   272,   111,   745,  1468,
    1907     1299,  1464,    69,  1375,   185,   391,  1468,    78,   521,  -468,
    1908       43,    44,   316,   521,    50,   111,   521,   138,   139,   113,
    1909      206,   268,   908,   216,   601,   718,    78,   159,    43,    44,
    1910       47,    48,   359,    50,    78,   511,    86,   113,   750,   190,
    1911      270,    86,   213,   849,   602,   223,    50,   697,   113,    50,
    1912      113,   392,   706,  1064,  1154,   869,   855,   871,   546,   547,
    1913       50,   325,   989,  1106,  1419,  1420,  1527,   393,   709,  1065,
    1914     1155,   111,    78,   271,     8,     9,    10,    11,    12,  1567,
    1915      370,  1427,    77,    97,    43,    44,  1064,   208,   604,   113,
    1916      340,   374,   592,  1568,   326,   546,   903,   327,   626,  1200,
    1917      596,    77,  1192,    50,    50,   328,    33,   210,   796,    77,
    1918      113,   990,   995,   708,   113,  1201,    73,   329,   592,  1154,
    1919     1043,   159,   592,   555,   556,   887,   383,   896,   623,  1200,
    1920       73,   745,  1306,   372,    36,  1291,   219,   546,   893,   833,
    1921      387,    58,   820,  1485,   575,  1295,   823,    77,  1307,   706,
    1922      697,   405,   829,   279,   486,  1494,  1427,   159,   557,   558,
    1923      697,   697,   944,   579,   918,   409,    43,    44,   945,  1362,
    1924      407,   438,   697,   843,  1132,  1308,   883,   846,   567,  1517,
    1925      409,   159,  1090,   424,   340,   890,    47,    48,   945,   892,
    1926       50,  1309,   515,   441,   377,    57,   425,     8,     9,    10,
    1927       11,    12,   802,    50,   225,   604,   481,   226,   470,   745,
    1928      230,    86,   232,  1219,   208,  1341,   359,  1342,   447,   575,
    1929      235,   745,   470,   745,  -300,  1351,    70,   457,   111,    33,
    1930       86,     8,     9,    10,    11,    12,   841,   567,    86,   409,
    1931      842,    43,    44,   520,   458,    47,    48,   340,   648,   899,
    1932     1152,  1569,   709,  1187,   113,  1021,  1337,    36,   841,  1344,
    1933      918,   918,  1074,    33,   395,   745,  1352,   396,  1056,   755,
    1934      505,   397,   745,    63,   398,   321,    86,   399,    78,   908,
    1935      400,   601,   401,   111,   553,   554,    50,    47,    48,   113,
    1936     1096,    36,    78,  1097,    73,  1098,    43,    44,   372,  1435,
    1937     -112,   340,   340,    50,  -112,   745,   759,   760,   761,  -418,
    1938      359,   359,   506,   835,  1561,   802,   604,   340,  1081,   881,
    1939      575,   113,  1334,   509,  1227,   514,  1335,   648,  1091,  1570,
    1940     1515,  1048,   107,   113,  1519,  1567,  1058,   113,   948,   945,
    1941     1099,   592,   225,    39,  1099,   171,   172,    42,  1578,   709,
    1942      561,   697,   697,    77,  1579,   562,    43,    44,   563,   486,
    1943     1083,   316,   111,   323,   409,   340,  1214,    77,   564,  1096,
    1944      439,   330,  1097,   982,  1098,    43,    44,   592,   372,   678,
    1945      680,   586,   370,    -3,   113,   661,    69,   592,  1357,  1358,
    1946      107,  1099,  1046,   592,  1021,  1412,   945,    50,    50,    50,
    1947     1388,  1389,   802,  1318,     8,     9,    10,    11,    12,    63,
    1948      796,   662,   697,   697,   663,   604,  1229,  1230,    39,   665,
    1949     1056,   666,    42,   667,   403,   242,   323,   409,   113,   671,
    1950       73,    43,    44,   762,   763,    57,    33,   208,    50,   672,
    1951       50,   674,    50,   766,   767,   768,   769,   439,   417,   664,
    1952      409,  1075,   208,   899,   113,   247,    78,   800,   111,   601,
    1953      138,   450,   520,  -389,    36,    47,    48,   520,   107,  -244,
    1954      520,    43,    44,    50,   764,   765,  1544,   602,   225,   226,
    1955      720,   627,    86,   232,   478,   323,   409,   113,  1058,   817,
    1956      323,   601,   404,   722,  1099,   235,    86,   451,  1057,   724,
    1957      733,   918,   452,   734,   896,   938,   770,   771,   908,   797,
    1958      601,   746,   747,  1171,   -14,   604,    47,    48,   799,  -301,
    1959       39,   778,    69,   810,    42,    58,     8,     9,    10,    11,
    1960       12,    77,   858,    43,    44,   -15,  1302,   857,   864,    39,
    1961      208,   171,   172,    42,   113,  1276,  1277,  1278,   592,   340,
    1962      886,   626,    43,    44,   888,   900,  -441,  -546,    33,    45,
    1963      912,   924,   917,   918,   717,   926,   929,    47,    48,  1021,
    1964      668,    51,   114,   225,   931,   918,   918,   932,   933,   942,
    1965     1303,   934,   935,    58,   359,   359,    36,    63,    50,   952,
    1966      953,   954,    78,    39,   968,   171,   172,    42,   969,   918,
    1967      128,  1163,   129,   130,   131,    51,    43,    44,    73,   697,
    1968       70,  1081,   970,    43,    44,   971,   145,   697,   697,   697,
    1969      972,   113,    51,   113,   113,   973,   899,   896,  1099,   974,
    1970     1099,  1099,  -429,   997,   181,  -428,  1038,   205,   669,   623,
    1971       51,  1044,  1040,   340,   340,    39,   107,   178,   179,    42,
    1972     1057,  1047,  1193,  1083,  1057,  1165,  1416,  1068,    43,    44,
    1973       86,    58,    39,  1070,   171,   172,    42,    77,  1069,  1071,
    1974     1079,   918,  1056,  1089,  1093,    43,    44,   114,   937,  1119,
    1975     1021,   174,  1143,   107,  1050,   114,   409,  1144,   256,   261,
    1976       50,  1146,    47,    48,   111,  1145,   138,   139,    73,  1158,
    1977       69,  1174,  1159,  1161,  1162,   113,  1081,    43,    44,  1167,
    1978      439,   359,  1099,  1170,    -9,   300,   145,   592,  -464,   395,
    1979      546,   -11,   396,   745,   114,   337,   397,    -3,   205,   398,
    1980      251,  1021,   399,   252,  1021,   400,   107,   401,   265,  1183,
    1981     1058,  1177,  1189,   111,  1181,   215,    70,  1051,  1083,   899,
    1982     1096,   181,   181,  1097,   210,  1098,    43,    44,  1507,   511,
    1983     1210,   494,    50,    50,  1212,  1220,   113,   113,   256,  1215,
    1984       78,  1221,  1224,  1099,  1099,  1231,    51,  1235,   107,  1355,
    1985     1237,  1239,  1021,  1289,   697,  1240,   140,  1021,   205,    39,
    1986     1350,   171,   172,    42,  1241,  1242,    86,   209,  1243,  1245,
    1987     1057,  1267,    43,    44,   210,  1252,   228,  1314,   111,  1081,
    1988      138,   139,    51,  1261,  1262,  1296,  1021,   107,  1297,    57,
    1989      261,    43,    44,  1270,  1271,   261,   256,   256,   374,  1273,
    1990     1274,  1282,   114,  -302,  1298,  1304,   884,   436,  1310,    58,
    1991        8,     9,    10,    11,    12,    77,  1312,   726,  1343,   209,
    1992     1332,  1083,   727,   147,  1313,   148,  1317,  1322,  1024,   300,
    1993       78,    73,  1324,   149,  1330,    50,  1331,   113,    73,  1340,
    1994     1333,   300,    33,   321,  1509,  1353,    58,  1082,   403,   266,
    1995     1354,   107,  1278,  1360,  1371,   480,  1021,   568,   209,  1364,
    1996     1365,  1021,  1402,   145,  1382,    50,    50,  1383,   158,   107,
    1997       36,  -430,  1057,   114,  1386,  1397,   107,   668,   337,  1404,
    1998     1406,  1407,   603,   622,  1021,  1408,  1021,   340,   340,  1417,
    1999     1021,  1421,  1422,  1021,    70,    50,  1423,   371,    73,    58,
    2000     1424,  1335,  1426,  1361,   632,    77,  1021,  1431,   632,   951,
    2001     1021,  1473,  1436,  1478,  1440,  1444,   404,  1442,   209,   956,
    2002      957,  1438,  1446,  1350,  1449,    57,  1448,  1455,   113,   316,
    2003     1350,   967,  1458,   174,    39,  1574,   107,  1480,    42,   113,
    2004     1469,    58,  1482,   181,    86,   669,  1581,    43,    44,   211,
    2005      209,  1511,  1484,  1513,  1486,   209,  1489,   636,   453,  1491,
    2006     1492,   640,  1493,   256,  1516,   300,   300,  1160,  1500,   256,
    2007     1477,   632,  1477,   713,  1518,  1521,  1522,  1409,  1525,    58,
    2008       58,    47,    48,  1532,    70,  1534,   219,  1536,  1539,   491,
    2009     1350,  1541,   300,    78,  1554,  1555,  1558,   164,  1547,   169,
    2010       78,   211,   175,   176,   177,  1552,  1559,  1553,  1576,   256,
    2011     1477,  1577,  1477,   772,   340,  1580,   776,  1176,   256,   229,
    2012      632,   773,    51,   774,  1095,  1565,  1566,   714,  1451,    58,
    2013      775,  1495,   238,   239,    86,  1288,   114,  1401,  1562,  1356,
    2014      211,  1560,  1472,   209,    58,  1520,  1182,  1191,   300,  1049,
    2015      114,  1370,  1204,   300,   920,   300,   300,  1077,   996,  1092,
    2016       78,   863,    58,   914,   208,   337,   111,  1076,    77,    58,
    2017     1305,   711,   780,  1096,   927,    77,  1097,   476,  1098,    43,
    2018       44,   781,   782,  1265,  1266,    39,  1268,   171,   172,    42,
    2019        0,     0,  1272,     0,     0,  1275,     0,     0,    43,    44,
    2020      211,  1451,   649,    57,     0,  1451,  1451,  1320,   568,   568,
    2021     1137,  1138,     0,     0,   439,     0,   300,   454,     2,   202,
    2022        4,     5,     6,     7,     0,   406,     0,   632,   337,    58,
    2023      209,   622,   211,  1540,     0,    77,     0,   211,     0,     0,
    2024     1082,   603,  1024,     0,   603,     0,   209,    70,    39,     0,
    2025      178,   179,    42,     0,    70,     0,  1556,     0,     0,     0,
    2026     1556,    43,    44,   632,     0,     0,   592,     0,   592,     0,
    2027      209,  1185,  1186,   632,     0,   622,     0,     0,   111,   632,
    2028      138,   139,   632,   632,  1573,     0,    37,   600,    38,   601,
    2029        0,    43,    44,    57,     0,    47,    48,    86,   632,     0,
    2030      256,     0,     0,     0,    86,     0,   592,     0,   592,   602,
    2031        0,   256,     0,   719,    70,     0,     0,   836,   728,    39,
    2032        0,   178,   179,    42,     0,   211,     0,     0,     0,     0,
    2033        0,   114,    43,    44,     0,  1082,   852,     0,     2,   202,
    2034        4,     5,     6,     7,     0,     0,   632,   909,   622,   867,
    2035        0,    -3,     0,  1363,   714,   714,     0,     0,  1505,     0,
    2036      409,     0,   173,     0,    86,     0,    47,    48,  1394,   224,
    2037        0,     0,     0,   206,   216,   508,     0,   510,   513,   588,
    2038        0,   599,     0,     0,   337,     0,   516,   517,   525,     0,
    2039        0,   209,   526,   527,   528,     0,     0,     0,   630,   631,
    2040      510,   510,     0,     0,  1387,     0,    37,  1395,    38,   791,
    2041        0,   173,   211,     0,   173,     0,   529,     0,   530,     0,
    2042      531,   532,     0,   438,   568,     0,   209,     2,   202,     4,
    2043        5,     6,     7,     0,   632,   209,   962,   510,  1082,     0,
    2044        0,   603,   525,     0,     0,     0,   526,   527,   528,     0,
    2045        0,     0,   211,   838,   603,  1433,    57,     0,   411,     0,
    2046     1437,     0,     0,    57,     0,   419,     0,     0,  1323,     0,
    2047      529,   856,   530,     0,   531,  1287,  1325,  1326,  1327,   510,
    2048        0,     0,     8,     9,    10,    11,    12,     0,   111,  1461,
    2049      138,   450,     0,   209,     0,    37,     0,    38,     0,     0,
    2050        0,    43,    44,   209,     0,     0,   300,     0,   209,     0,
    2051        0,     0,     0,     0,    33,     0,     0,     0,   173,     0,
    2052        0,     0,     0,    57,     0,     0,     0,     0,     0,     0,
    2053      337,   411,     0,     0,     0,   114,     0,  1052,     0,     0,
    2054        0,     0,    36,     0,   916,     0,     0,    39,   491,   909,
    2055      909,    42,     0,     0,   714,     0,     0,     0,     0,     0,
    2056       43,    44,     0,     0,   114,   300,   173,     0,     0,     0,
    2057        0,   337,     0,   211,     0,     0,     0,     0,     0,     0,
    2058        0,     0,     0,     0,     0,     0,    45,  1545,     0,   573,
    2059        0,     0,     0,  1545,    47,    48,   209,     0,   577,     0,
    2060        0,   580,     0,   337,     0,     0,     0,     0,   211,  1545,
    2061        0,     0,   454,  1545,     0,     0,     0,   211,     0,     0,
    2062        0,     0,     0,     0,   632,   632,     0,     0,     0,     0,
     1849      51,   114,    99,   148,    64,   396,   149,   427,   113,   150,
     1850     624,  1195,  1196,   397,   707,   690,   398,   258,   399,   438,
     1851     116,   758,   606,   400,   611,   785,   401,   860,   402,   382,
     1852     383,  1141,  1142,  1036,   468,   114,   114,   808,    51,  1200,
     1853      99,    70,    64,  1197,   409,   817,    51,   726,   118,   835,
     1854     740,   731,    51,  1143,   159,   676,   143,  1038,  1375,    51,
     1855     151,   816,   809,    37,    51,  1431,   190,    51,   810,   213,
     1856      51,  1349,   223,  1286,   685,   820,  1170,  1068,  1234,    70,
     1857     396,   827,   689,  1284,   251,    37,   152,   274,   397,   216,
     1858     404,   398,   807,   399,   804,   153,   405,   424,   400,   157,
     1859     515,   401,    37,   402,   805,   273,  1235,    37,    51,   852,
     1860     523,    51,   473,   475,   806,  1480,   636,   124,    51,   593,
     1861     640,   -10,   199,   161,   869,   627,   114,  1532,   920,   154,
     1862    1287,   334,   243,   408,   410,   108,   108,  1451,   148,   125,
     1863    1431,   149,   175,   597,   150,   593,    51,   169,   159,   593,
     1864    1106,  1285,    74,  1513,   249,  1515,   410,  1148,    51,  1552,
     1865     372,  1458,   157,   521,  1531,   404,   577,   716,   410,  1157,
     1866     200,   405,   908,   108,  1173,  1174,   418,   474,   410,  1229,
     1867     142,    51,    51,  1149,   159,  1300,   161,   144,    79,  1547,
     1868      74,   252,   317,  1158,   253,   151,  1551,  1152,    51,   680,
     1869     682,   332,  -240,  -240,   468,   108,    51,   804,   159,    59,
     1870      59,   566,   674,   148,    78,    51,   149,   805,    51,   150,
     1871     441,   152,   929,   468,  1191,   114,    79,   806,  1389,  1390,
     1872     153,   468,   243,   324,  1349,   114,   719,   808,   114,   474,
     1873     956,  1349,    51,   114,    99,   567,    64,    59,   376,   429,
     1874     462,   166,    78,   432,  1224,   980,    51,    51,   624,   159,
     1875     460,   603,   809,    51,   377,    71,   114,   198,   810,    37,
     1876     730,   979,  -240,   820,  1435,   167,    59,   433,   707,    59,
     1877    1143,  1463,   445,    70,   220,   710,   611,    37,   471,   742,
     1878      37,   145,   967,   624,   804,   457,  1079,  1391,   437,   679,
     1879     681,  1349,   624,    71,   805,  1141,  1142,  1149,   386,   432,
     1880     585,   669,   487,  1317,   806,  1320,  1322,   670,   767,   768,
     1881     769,   770,   678,    51,   387,   372,   892,  1143,   683,   736,
     1882    -299,   738,   209,   433,   739,  1346,   317,   743,   479,   795,
     1883     410,    51,    51,  1389,  1390,   808,   481,  1036,   157,   238,
     1884     789,   817,   746,   821,  1411,    98,   818,   824,   602,   825,
     1885     624,   602,   241,   830,   341,    51,   951,   575,   593,    51,
     1886     809,  1038,   161,   576,  1412,   624,   810,   108,  1435,   649,
     1887     584,   389,   521,  1435,   844,  -543,   669,   521,   847,   835,
     1888     521,   846,   670,    98,    74,   254,  1488,   390,  1516,    74,
     1889     243,   147,  1520,    51,   593,   372,  1543,    98,  1435,   909,
     1890     512,   602,  1401,  1399,   593,  1435,  1489,    48,    49,   186,
     1891     593,   -12,    98,    51,   175,    98,  1544,    59,   597,    51,
     1892      79,   603,  1426,   547,   548,    79,  -468,  1348,   597,   391,
     1893    1464,   779,  1128,  1131,   495,   164,  -469,   496,   637,   269,
     1894      37,    59,   641,  1143,  1465,   392,    78,  1198,   471,    58,
     1895     117,    78,  1509,   624,   114,   707,  1195,  1196,  1223,    51,
     1896     547,   113,   317,   317,   271,   468,  1081,   471,    51,   590,
     1897     372,  1104,    51,   440,    99,   471,    64,    51,  1089,   905,
     1898     114,   272,   211,  1200,   978,   114,   611,    58,  1197,   317,
     1899    1568,    98,  1471,    37,  1472,   634,   273,    71,   164,   638,
     1900      87,   118,   547,    98,  1569,   980,   861,   280,  1376,   873,
     1901      37,   410,  1300,    70,   709,   325,   207,   114,   326,   217,
     1902      44,    45,   114,   862,   752,   648,   395,   186,   322,   757,
     1903    1204,   487,  1204,   317,   211,   487,   960,   327,    87,   710,
     1904      37,    37,   863,  1260,  1261,   317,   516,   317,   378,   871,
     1905     317,    98,   317,   317,   328,   393,  1529,    37,    37,    74,
     1906     881,   371,   877,    98,   410,   593,   171,  1065,   627,  1420,
     1907    1421,   394,  1155,   211,   983,   329,   114,   499,    74,  1109,
     1908    1065,   410,   330,  1066,   978,   375,    74,    98,  1156,   434,
     1909    1469,    51,   552,   553,    51,    79,  1193,  1469,   209,  1497,
     1910    1201,   477,   850,   850,   384,  1502,   882,   108,   244,  1122,
     1911    1126,   410,   602,   317,    79,    51,  1202,   388,   850,   797,
     1912     114,    78,    79,   624,    74,   406,  1129,  1367,   602,   410,
     1913     341,  1527,   408,   211,    51,   580,  1534,   410,   114,   707,
     1914      78,   500,   425,   501,   502,   434,   990,    51,    78,   114,
     1915      51,   114,  1076,   556,   557,   840,   870,  1528,   872,   841,
     1916      79,    51,  1155,  1201,  1307,   211,   850,   439,    98,  1309,
     1917     211,   760,   761,   762,   426,   220,   851,   851,  1292,  1296,
     1918    1308,    59,   554,   555,   164,  1310,    78,   605,   558,   559,
     1919     114,    58,   851,   568,   448,   410,    40,   904,   837,   416,
     1920      43,    48,    49,   482,    51,    51,   458,   746,   699,    44,
     1921      45,   114,   996,   459,   700,   114,   842,   853,   793,   471,
     1922     843,   599,   435,  1352,   341,   209,   710,  -419,   897,   506,
     1923     868,  1044,   443,   471,   593,    46,   707,    71,   507,   717,
     1924     851,   510,    87,    48,    49,   718,    40,    87,   186,    40,
     1925      43,   732,   900,    43,   834,   487,   515,   733,   597,    44,
     1926      45,   549,    44,    45,   590,   745,  1363,   550,   551,   112,
     1927     845,   746,  1133,   226,   174,   562,   227,   563,   709,   231,
     1928     564,   233,    44,    45,  1428,   714,   112,   341,   801,   236,
     1929     602,    51,   112,    48,    49,  1057,    48,    49,   522,    44,
     1930      45,  1059,   587,   842,    51,    44,    45,  1075,   322,   322,
     1931     751,   112,   565,   139,   140,    40,   886,   172,   173,    43,
     1932     560,   561,   746,   174,    44,    45,   174,    98,    44,    45,
     1933      74,   331,   605,   756,   888,   322,   672,  1188,    -3,  -112,
     1934     746,   341,   341,  -112,    74,   211,  1486,   894,   945,   649,
     1935    1153,   673,   856,   576,   946,   114,  1022,   341,  1495,  1428,
     1936      64,   949,   946,   526,   662,   396,    79,   527,   528,   529,
     1937     939,  1335,   663,   397,   664,  1336,   398,  1164,   399,   322,
     1938      79,   440,  1518,   400,   666,   211,   401,    51,   402,   667,
     1939     114,   530,    78,   531,  1091,   532,   533,    70,   322,   112,
     1940     946,   139,   140,   668,    51,   341,    78,   909,   675,   602,
     1941     710,   226,    44,    45,  1220,    48,    49,    87,  1342,  -390,
     1942     576,   797,   114,   248,   746,   959,   324,   410,   649,  1092,
     1943     174,    58,  1049,  1082,   114,  -244,    87,   603,   114,  1358,
     1944    1359,  1100,   721,   266,    87,  1100,   803,  1057,   209,   605,
     1945     687,   404,   725,  1059,  1570,   723,   900,   405,   440,   322,
     1946     487,  1084,   317,   209,   734,   709,    40,   360,   172,   173,
     1947      43,  1343,   735,  1215,   112,   701,   747,   746,   174,    44,
     1948      45,  1097,    87,  1345,  1098,   114,  1099,    44,    45,   746,
     1949     -14,   108,  1100,  1413,   946,  1022,    64,   748,    51,    51,
     1950      51,   112,   798,   139,   451,  1353,   836,   710,    74,  1389,
     1951    1390,   746,   800,  1436,    44,    45,   599,   522,  1140,   746,
     1952     811,  1562,   522,  1266,  1267,   522,  1269,   576,  1166,   114,
     1953    1571,  1579,  1273,    70,   859,  1276,  1568,  1580,   865,    51,
     1954     452,    51,   -15,    51,    79,   453,   858,   226,   227,   108,
     1955     628,   209,   233,  1230,  1231,   114,   174,   763,   764,   803,
     1956     605,   243,   324,   410,   236,    59,   418,   665,   410,   887,
     1957      78,   479,   324,   410,    51,   889,  1545,   818,   324,   602,
     1958     174,  1165,  1167,  1169,   174,   547,   901,   526,   114,   341,
     1959    -442,   527,   528,   529,   834,  1100,  -547,   669,   913,   112,
     1960     918,   139,   140,   670,   718,   897,  1277,  1278,  1279,   925,
     1961     160,   927,    44,    45,   930,   530,  1048,   531,   211,   532,
     1962    1288,    71,   191,    59,   512,   214,   932,   108,   224,   900,
     1963     765,   766,   771,   772,   624,   933,   934,   935,   727,   943,
     1964     936,   953,   226,   728,    74,   114,   803,   954,   955,   709,
     1965     203,     3,     4,     5,     6,     7,     8,     9,   969,   605,
     1966     970,   971,    10,    11,    12,    13,    14,    15,    16,   972,
     1967    1022,    52,   115,    40,    64,   172,   173,    43,   973,   112,
     1968      79,   139,   140,   341,   341,   884,    44,    45,    87,    51,
     1969     974,   975,    44,    45,   891,  -430,    37,  -429,   893,  1057,
     1970    1039,    59,    87,   998,   160,  1059,    78,  1041,  1395,    52,
     1971    1045,    70,   371,   593,  1069,   593,   373,   146,  1070,  1071,
     1972    1362,   440,   114,    52,   114,   114,  1082,  1072,   897,  1100,
     1973    1080,  1100,  1100,  1090,  1094,   182,   938,  1120,   206,  1144,
     1974     160,    52,  1058,   360,  1145,    10,    11,    12,    13,    14,
     1975      15,    16,   900,   593,  1084,   593,  1146,    71,    40,   605,
     1976     172,   173,    43,  1417,   160,   568,  1159,   410,  1147,  1160,
     1977    1162,    44,    45,    48,    49,  1163,   442,  1171,   115,    37,
     1978    1175,  1022,  1178,    -9,    -3,  -465,   115,   495,   746,   257,
     1979     262,    51,  1338,   -11,  1410,    -3,   129,   375,   130,   131,
     1980     132,  1351,  1184,  1182,  1190,   108,   114,  1211,   322,    44,
     1981      45,  1052,  1221,  1100,  1213,    58,   301,   146,  1216,  1222,
     1982     396,  1082,    74,  1225,  1232,   115,   338,  1236,   397,   206,
     1983    1238,   398,  1022,   399,  1240,  1022,  1268,   360,   400,  1241,
     1984     174,   401,   108,   402,  1242,  1452,   836,  1243,   909,  1084,
     1985     602,  1246,   182,   182,  1244,  1253,    48,    49,    79,   174,
     1986     216,  1262,  1263,    51,    51,  1508,    87,   114,   114,   257,
     1987    1271,  1290,   174,  1083,  1100,  1100,  1272,    52,  1274,    59,
     1988    1275,   373,  1297,  1022,    78,  1283,  1298,  1299,  1022,   206,
     1989     112,  1305,   139,   451,  1058,   108,  1194,   698,  1058,  1311,
     1990     360,  1047,  1313,    44,    45,   404,    40,  1314,   172,   173,
     1991      43,   405,    74,    52,  1315,  1318,    59,  1022,  1452,    44,
     1992      45,   262,  1452,  1452,  1082,  1323,   262,   257,   257,  1325,
     1993    1331,  1332,  1333,   115,   669,    71,  1334,   108,  1344,  1341,
     1994     670,  1354,  1279,  1355,  1361,  1372,  1416,  1365,    79,  1366,
     1995    1541,    58,  1084,   148,   360,   360,   149,   341,   341,   150,
     1996     301,   373,   141,  1383,  1351,  1384,    51,  -431,   114,    59,
     1997     360,  1351,   301,  1557,    78,  1510,   108,  1557,  1025,   203,
     1998       3,     4,     5,     6,     7,     8,     9,  1022,   569,  1387,
     1999    1398,  1403,  1022,  1405,   146,  1407,    51,    51,  1408,   159,
     2000    1409,  1574,    87,  1478,   115,  1478,  1418,  1427,  1422,   338,
     2001    1423,    59,  1424,   604,   623,  1022,  1425,  1022,   360,  1336,
     2002    1432,  1022,  1172,  1441,  1022,    71,    51,  1443,   372,  1445,
     2003    1447,  1351,  1459,  1437,  1481,   633,  1439,  1022,  1449,   633,
     2004     108,  1022,  1450,  1478,  1058,  1478,  1456,  1470,  1483,    59,
     2005      59,  1485,   267,  1487,   412,   220,  1490,  1492,   108,   114,
     2006     317,   420,  1493,   210,  1494,   108,  1575,  1501,  1517,  1519,
     2007     114,  1522,   229,  1526,   182,    74,  1523,  1582,  -300,  1535,
     2008    1533,   174,    74,  1537,   341,  1540,  1542,    10,    11,    12,
     2009      13,    14,    15,    16,   257,  1548,   301,   301,  1555,    59,
     2010     257,  1556,   633,  1559,  1560,   209,  1577,  1578,  1177,  1581,
     2011     773,    79,   774,   698,    59,   210,   775,  1161,    79,   776,
     2012    1096,    37,   777,   301,  1289,   108,  1496,   412,   165,    58,
     2013     170,  1402,    59,   176,   177,   178,  1563,    78,  1357,    59,
     2014     257,  1521,    74,  1561,    78,  1473,  1058,  1183,  1192,   257,
     2015     230,   633,   919,    52,   210,   440,  1050,  1371,   715,  1205,
     2016     921,   454,  -301,   239,   240,  1093,  1083,   115,  1078,   212,
     2017     997,    10,    11,    12,    13,    14,    15,    16,    79,   301,
     2018      87,   115,   864,   915,   301,   574,   301,   301,    71,  1306,
     2019    1077,     0,   492,   712,   578,    71,   338,   581,   781,    59,
     2020     928,   782,   360,   783,    78,    37,     0,   950,     0,     0,
     2021       0,     0,     0,     0,   210,     0,   698,     0,     0,    58,
     2022     174,   212,     0,   174,   174,   174,   698,   698,     0,     0,
     2023      40,     0,   179,   180,    43,     0,     0,     0,   698,   569,
     2024     569,     0,     0,    44,    45,   885,   210,   301,     0,     0,
     2025       0,   210,     0,     0,     0,    71,   407,     0,   633,   338,
     2026     212,  1083,   623,   412,     0,   211,     0,   420,     0,   601,
     2027      87,   602,   604,     0,     0,   604,     0,    48,    49,     0,
     2028       0,     0,     0,     0,   991,     0,     0,     0,  1356,     0,
     2029       0,   603,  1025,     0,   633,     0,   360,   360,     0,   207,
     2030     217,     0,     0,     0,   633,   650,   623,     0,     0,     0,
     2031     633,     0,     0,   633,   633,   211,     0,     0,     0,     0,
     2032     212,    40,     0,   179,   180,    43,     0,     0,     0,   633,
     2033       0,   257,     0,     0,    44,    45,     0,   455,     0,   210,
     2034       0,     0,   257,     0,     0,   412,     0,     0,   952,   439,
     2035       0,   477,   212,     0,     0,     0,     0,   212,   957,   958,
     2036     181,     0,   115,     0,  1083,     0,     0,     0,    48,    49,
     2037     968,     0,     0,     0,     0,     0,     0,   633,   910,   623,
     2038    1107,     0,    58,     0,     0,   715,   715,     0,    40,    58,
     2039     172,   173,    43,     0,     0,   174,     0,     0,     0,     0,
     2040       0,    44,    45,  1364,     0,     0,   322,     0,     0,     0,
     2041     589,     0,   600,     0,     0,   338,   720,   698,   698,     0,
     2042       0,   729,     0,     0,     0,     0,   210,     0,   991,   631,
     2043     632,     0,     0,    87,   112,  1168,   574,   574,     0,     0,
     2044      87,  1097,   210,     0,  1098,   212,  1099,    44,    45,    58,
     2045    1474,     0,  1479,     0,  1388,   569,    40,  1396,   179,   180,
     2046      43,     0,     0,     0,     0,   633,   210,   963,     0,    44,
     2047      45,     0,   604,     0,     0,  1228,     0,     0,   698,   698,
     2048      40,   919,   179,   180,    43,   604,     0,     0,     0,     0,
     2049    1512,     0,  1514,    44,    45,  1051,     0,   410,     0,     0,
     2050      87,   112,     0,    48,    49,  1434,   174,     0,  1097,     0,
     2051    1438,  1098,   792,  1099,    44,    45,  1052,     0,     0,  1051,
     2052       0,   410,  1303,     0,     0,     0,     0,    48,    49,     0,
     2053     875,     0,   212,     0,   879,     0,     0,   301,     0,  1462,
     2054       0,   112,  1319,     0,  1553,     0,  1554,     0,  1097,  1138,
     2055    1139,  1098,     0,  1099,    44,    45,   839,   174,     0,     0,
     2056     174,   338,     0,     0,  1566,  1567,   115,     0,  1053,     0,
     2057     360,   360,   212,     0,   857,     0,     0,   919,   919,     0,
     2058     910,   910,  1321,     0,     0,   715,     0,   210,   174,     0,
     2059       0,     0,     0,     0,     0,   115,   301,     0,     0,     0,
     2060       0,    40,   338,   179,   180,    43,     0,     0,   174,     0,
     2061    1186,  1187,     0,   174,    44,    45,     0,     0,     0,     0,
     2062       0,     0,   210,     0,    10,    11,    12,    13,    14,    15,
     2063      16,   210,     0,     0,   338,     0,     0,  1546,     0,     0,
     2064     256,     0,   174,  1546,     0,     0,  1304,   917,    48,    49,
     2065       0,   492,   574,     0,     0,   633,   633,     0,    37,  1546,
     2066       0,     0,     0,  1546,     0,     0,    40,     0,   179,   180,
     2067      43,     0,     0,   301,     0,   698,     0,     0,     0,    44,
     2068      45,     0,     0,   698,   698,   698,     0,     0,    40,   210,
     2069     179,   180,    43,   212,     0,     0,     0,   360,     0,   210,
     2070       0,    44,    45,     0,   210,  1506,     0,   410,     0,     0,
     2071       0,     0,   174,    48,    49,     0,     0,   174,     0,     0,
     2072    1053,     0,  1053,     0,  1053,     0,     0,   601,   212,   602,
     2073       0,     0,   455,     0,     0,    48,    49,   212,     0,   115,
     2074     174,     0,   174,     0,     0,   910,   174,     0,     0,   174,
     2075       0,     0,     0,     0,     0,   257,     0,     0,     0,     0,
     2076       0,     0,   174,     0,     0,     0,   174,   902,     0,   903,
     2077       0,     0,     0,     0,     0,     0,     0,   906,   907,     0,
     2078       0,     0,   912,     0,     0,   650,   338,     0,     0,     0,
     2079       0,  1001,   210,     0,     0,   212,     0,     0,     0,   922,
     2080       0,     0,     0,     0,   926,   212,     0,  1324,     0,     0,
     2081     212,     0,     0,     0,     0,  1326,  1327,  1328,   919,     0,
     2082    -302,  1111,     0,   600,     0,     0,  1067,     0,     0,    10,
     2083      11,    12,    13,    14,    15,    16,     0,  1124,     0,     0,
     2084      10,    11,    12,    13,    14,    15,    16,     0,     0,     0,
     2085     698,   301,   203,     3,     4,     5,     6,     7,     8,     9,
     2086       0,     0,   115,    37,   650,     0,     0,     0,     0,     0,
     2087    1053,     0,     0,     0,    37,     0,     0,     0,     0,     0,
     2088     919,     0,     0,   633,     0,     0,     0,   225,   115,     0,
     2089       0,     0,   919,   919,     0,     0,     0,     0,   212,     0,
     2090       0,     0,     0,     0,    40,     0,   179,   180,    43,     0,
     2091       0,     0,     0,     0,     0,     0,   919,    44,    45,     0,
     2092       0,   986,     0,   987,   988,   989,   412,     0,     0,   633,
     2093     633,     0,    10,    11,    12,    13,    14,    15,    16,     0,
     2094       0,   301,  1040,  1051,     0,   410,     0,     0,     0,     0,
     2095       0,    48,    49,     0,     0,     0,     0,     0,  1046,     0,
     2096       0,     0,   210,     0,     0,  1001,    37,     0,     0,     0,
     2097       0,     0,  1053,     0,     0,     0,     0,     0,     0,     0,
     2098       0,  1073,  1457,   115,     0,     0,     0,     0,   919,     0,
     2099       0,  1208,   534,   535,   536,   537,   538,   539,   540,   541,
     2100     542,   543,   544,     0,     0,    10,    11,    12,    13,    14,
     2101      15,    16,     0,     0,     0,  1095,     0,     0,     0,     0,
     2102    1105,   262,   115,     0,     0,  1108,   545,     0,     0,     0,
     2103    1113,  1114,     0,     0,     0,  1116,     0,  1117,  1118,    37,
     2104       0,  1121,     0,     0,     0,   257,     0,     0,   276,   277,
     2105    1136,   278,     0,     0,     0,     0,   633,     0,     0,     0,
     2106       0,     0,   412,     0,     0,     0,  1150,  1151,   212,    40,
     2107       0,   262,     0,    43,    67,   119,     0,   279,     0,     0,
     2108     280,  1265,    44,    45,   281,     0,   115,   282,   283,   273,
     2109     284,   285,   286,    44,    45,     0,   287,   288,  1179,     0,
     2110       0,  1181,     0,     0,   115,     0,     0,     0,    46,     0,
     2111       0,   115,    67,   115,     0,   115,    48,    49,     0,   289,
     2112       0,   378,     0,     0,     0,     0,   158,    48,    49,   291,
     2113     292,   293,   294,     0,     0,     0,     0,     0,     0,     0,
     2114     778,     0,     0,     0,   218,     0,     0,  1507,   262,     0,
     2115       0,     0,     0,   115,  1214,   115,     0,     0,     0,     0,
     2116    1218,  1219,     0,     0,     0,  1369,     0,     0,     0,  1226,
     2117       0,   115,     0,     0,  1233,     0,     0,  1507,  1507,  1237,
     2118       0,   250,     0,     0,    10,    11,    12,    13,    14,    15,
     2119      16,     0,  1245,     0,   301,     0,     0,     0,     0,     0,
     2120      10,    11,    12,    13,    14,    15,    16,  1507,  1252,     0,
     2121    1254,  1255,  1256,  1257,     0,     0,     0,     0,    37,     0,
     2122     323,     0,     0,     0,     0,  1264,     0,  1150,   250,   343,
     2123       0,     0,     0,     0,    37,     0,     0,     0,     0,     0,
     2124       0,     0,     0,     0,     0,     0,     0,     0,    40,     0,
     2125     179,   180,    43,     0,     0,     0,   403,     0,     0,  1293,
     2126    1294,    44,    45,     0,    40,     0,   179,   180,    43,     0,
     2127       0,     0,   423,     0,     0,   428,   430,    44,    45,     0,
     2128     158,     0,     0,     0,     0,     0,     0,  1506,     0,   410,
     2129       0,     0,     0,     0,     0,    48,    49,     0,     0,     0,
     2130       0,   446,     0,   181,     0,   449,     0,   450,     0,     0,
     2131     456,    48,    49,    75,     0,     0,    67,     0,     0,     0,
     2132       0,   470,     0,  1329,  1330,     0,     0,     0,     0,     0,
     2133       0,   478,     0,  1340,     0,     0,     0,     0,     0,   430,
     2134       0,     0,     0,     0,     0,     0,   210,     0,     0,     0,
     2135       0,    75,   203,     3,     4,     5,     6,     7,     8,     9,
     2136      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2137      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
     2138      30,    31,     0,   219,   335,    33,    34,     0,     0,     0,
     2139       0,     0,     0,     0,    37,     0,   210,  1379,     0,  1380,
     2140    1381,  1382,     0,     0,     0,     0,     0,   250,     0,     0,
     2141       0,  1386,   591,     0,     0,     0,     0,     0,   626,  1397,
     2142       0,     0,   170,     0,     0,     0,    41,    42,     0,     0,
     2143       0,     0,     0,     0,     0,     0,     0,     0,   635,     0,
     2144       0,     0,   635,     0,     0,     0,     0,     0,     0,  1419,
     2145       0,     0,   212,     0,     0,    10,    11,    12,    13,    14,
     2146      15,    16,     0,     0,  -427,   684,     0,     0,   347,     0,
     2147       0,    48,    49,   210,     0,     0,     0,     0,     0,     0,
     2148       0,     0,     0,     0,     0,     0,     0,     0,     0,    37,
     2149       0,   470,     0,  1460,  1461,     0,     0,     0,     0,     0,
     2150       0,     0,   212,     0,     0,   343,  1466,     0,     0,     0,
     2151     470,     0,     0,  1466,     0,     0,     0,     0,   470,    40,
     2152       0,   179,   180,    43,     0,     0,     0,     0,     0,     0,
     2153    1491,     0,    44,    45,     0,   693,     0,     0,   430,     0,
     2154     447,     0,     0,     0,     0,   703,     0,     0,  1505,     0,
     2155       0,     0,     0,  1511,   708,    75,    67,     0,   256,     0,
     2156      75,     0,     0,     0,     0,     0,    48,    49,   430,     0,
     2157       0,     0,   430,     0,     0,     0,     0,     0,     0,   212,
     2158       0,     0,     0,     0,     0,     0,  1538,     0,  1539,     0,
     2159       0,     0,     0,     0,     0,     0,     0,     0,     0,   343,
     2160       0,     0,     0,     0,    80,     0,     0,    10,    11,    12,
     2161      13,    14,    15,    16,     0,     0,     0,     0,     0,     0,
     2162       0,     0,     0,     0,     0,     0,  1564,  1565,     0,     0,
     2163       0,     0,     0,     0,     0,     0,     0,     0,     0,  1572,
     2164    1573,    37,    80,   784,     0,     0,     0,     0,     0,     0,
     2165       0,   592,     0,     0,     0,     0,     0,   219,     0,     0,
     2166       0,   635,   796,     0,     0,     0,     0,     0,     0,     0,
     2167       0,    40,     0,     0,   221,    43,     0,   592,   814,     0,
     2168       0,   592,     0,     0,    44,    45,     0,     0,     0,     0,
     2169       0,     0,     0,     0,     0,     0,     0,   591,     0,     0,
     2170       0,     0,   838,     0,     0,     0,     0,   591,     0,     0,
     2171     714,     0,     0,   635,     0,     0,   343,   343,    48,    49,
    20632172       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2064        0,     0,   300,  1456,   173,     0,     0,     0,   510,   510,
    2065      510,   510,   510,   510,   510,   510,   510,   510,   510,   510,
    2066      510,   510,   510,   510,   510,   510,     0,   411,   173,     0,
    2067        0,   419,   173,     0,     0,   211,     0,     0,     0,     0,
    2068        0,     0,   649,     0,     0,   211,     0,     0,  1000,  1052,
    2069      211,  1052,     0,  1052,     0,     0,     0,     0,     0,     0,
    2070     1164,  1166,  1168,     0,     0,     0,     0,     0,   114,     0,
    2071        0,     0,     0,     0,   909,     0,     0,     0,     0,     0,
    2072        0,     0,     0,  1066,   256,     0,     0,     0,     0,     0,
    2073        8,     9,    10,    11,    12,     0,   901,     0,   902,     0,
    2074       39,     0,   178,   179,    42,     0,   905,   906,     0,   411,
    2075        0,   911,     0,    43,    44,   337,     0,     0,     0,     0,
    2076        0,   649,    33,     0,     0,     0,   209,     0,   921,     0,
    2077        0,     0,     0,   925,     0,     0,     0,     0,   211,  1050,
    2078       39,   409,   178,   179,    42,     0,     0,    47,    48,     0,
    2079       36,    74,   599,    43,    44,    39,     0,   178,   179,    42,
    2080     1051,     0,     0,     8,     9,    10,    11,    12,    43,    44,
    2081        0,     0,     0,     0,     0,     0,     0,     0,     0,   180,
    2082      300,     0,   510,     0,     0,    74,     0,    47,    48,     0,
    2083        0,   114,     0,     0,   600,    33,   601,     0,     0,  1052,
    2084      573,   573,    47,    48,     0,     0,     0,   510,     0,     0,
    2085        0,     0,   632,     0,     0,     0,     0,   114,     0,     0,
    2086      218,     0,  1000,    36,     0,     0,     0,     0,    39,     0,
    2087      178,   179,    42,     0,     0,     0,     0,   510,     0,     0,
    2088        0,    43,    44,    39,     0,   178,   179,    42,  1207,     0,
    2089      985,     0,   986,   987,   988,     0,    43,    44,   632,   632,
    2090        0,     0,     0,     0,     0,     0,     0,  1050,     0,   409,
    2091      300,  1039,     0,     0,     0,    47,    48,     0,     0,     0,
    2092        0,     0,   255,     0,     0,     0,     0,  1045,   173,     0,
    2093       47,    48,     0,     0,   874,     0,     0,     0,   878,     0,
    2094        0,  1052,     0,     0,     0,   346,     0,   173,   211,     0,
    2095     1072,     0,   114,     0,     0,     0,     0,     0,     0,     0,
    2096      173,     0,     0,     0,     8,     9,    10,    11,    12,     0,
    2097        0,     0,     0,     0,     0,     0,     0,     0,  1264,     8,
    2098        9,    10,    11,    12,  1094,     0,     0,     0,     0,  1104,
    2099      261,   114,     0,     0,  1107,     0,    33,     0,     0,  1112,
    2100     1113,     0,     0,     0,  1115,     0,  1116,  1117,     0,     0,
    2101     1120,    33,     0,     0,   256,     0,     0,   446,     0,  1135,
    2102        0,     0,     0,     0,    36,   632,     0,     0,     0,    39,
    2103       66,   118,    74,    42,     0,  1149,  1150,    74,     0,    36,
    2104      261,     0,    43,    44,    39,     0,   178,   179,    42,     0,
    2105      510,     0,     0,     0,     0,   114,   573,    43,    44,     0,
    2106        0,     0,   510,     0,    66,  1415,     0,  1178,   713,     0,
    2107     1180,     0,     0,   114,     0,     0,    47,    48,     0,     0,
    2108      114,   157,   114,  1505,   114,   409,     0,     0,     0,     0,
    2109        0,    47,    48,     0,     0,     0,     0,     0,     0,   217,
    2110        0,   510,     0,   533,   534,   535,   536,   537,   538,   539,
    2111      540,   541,   542,   543,     0,     0,  1506,   261,     0,     0,
    2112        0,     0,   114,  1213,   114,     0,     0,     0,   591,  1217,
    2113     1218,     0,     0,     0,   218,     0,   249,   544,  1225,     0,
    2114      114,     0,     0,  1232,     0,     0,  1506,  1506,  1236,     0,
    2115      209,   510,     0,     0,   591,     0,     0,     0,   591,     0,
    2116        0,  1244,     0,   300,     0,     0,     0,     0,     0,   173,
    2117        0,     0,     0,     0,     0,   322,  1506,  1251,     0,  1253,
    2118     1254,  1255,  1256,   249,   342,     8,     9,    10,    11,    12,
    2119        0,     0,     0,     0,  1263,     0,  1149,     0,     0,     0,
    2120      209,     0,     0,     0,     0,     0,     0,    74,     0,     0,
    2121        0,   402,     0,     0,     0,     0,     0,    33,     0,     0,
    2122        0,   346,     0,     0,     0,  1110,    74,   422,  1292,  1293,
    2123      427,   429,     0,     0,    74,   157,     0,     0,     0,     0,
    2124        0,  1123,     0,     0,     0,    36,     0,   510,   510,     0,
    2125       39,   346,   178,   179,    42,     0,   445,     0,     0,     0,
    2126      448,   218,   449,    43,    44,   455,     0,     0,     0,     0,
    2127      346,    66,    74,     0,     0,     0,   469,   209,     0,     0,
    2128        0,     0,     0,     0,     0,     0,   477,     0,     0,   180,
    2129        0,     0,  1328,  1329,   429,     0,     0,    47,    48,     0,
    2130        0,     0,  1339,     0,     0,     0,     0,     0,   173,     0,
    2131        0,   173,   173,   173,     0,   346,     0,     0,     0,     0,
     2173      75,     0,   343,     0,     0,     0,     0,     0,     0,     0,
     2174       0,     0,     0,     0,   347,     0,     0,     0,     0,    75,
     2175       0,   693,     0,     0,     0,     0,     0,    75,     0,   351,
     2176       0,     0,   470,     0,     0,     0,     0,     0,     0,     0,
     2177       0,     0,     0,     0,   347,     0,   470,     0,     0,     0,
     2178     343,     0,     0,     0,   219,     0,     0,     0,     0,   914,
     2179       0,     0,   430,   347,     0,    75,    10,    11,    12,    13,
     2180      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2181      24,    25,    26,    27,    28,    29,    30,    31,   708,     0,
     2182      32,    33,    34,     0,     0,     0,     0,     0,     0,     0,
     2183      37,     0,     0,     0,     0,     0,     0,     0,   347,     0,
     2184       0,     0,     0,     0,     0,     0,    80,     0,     0,     0,
     2185       0,    80,     0,     0,   693,     0,     0,     0,     0,     0,
     2186     112,     0,    41,    42,   693,   693,     0,     0,   635,     0,
     2187       0,   966,     0,    44,    45,     0,   693,     0,     0,     0,
     2188       0,     0,     0,     0,     0,     0,   977,     0,     0,     0,
    21322189       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2133      411,     0,   211,     0,     0,     0,     0,     0,     0,     0,
     2190     592,   347,     0,     0,   202,   203,     3,     4,     5,     6,
     2191       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2192      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     2193      27,    28,    29,    30,    31,     0,   592,    32,    33,    34,
     2194      67,     0,   594,     0,     0,     0,   592,    37,   221,     0,
     2195       0,     0,   592,     0,     0,   347,   347,     0,     0,     0,
     2196       0,     0,     0,     0,   796,     0,     0,     0,   594,     0,
     2197       0,   347,   594,     0,     0,     0,     0,     0,     0,   204,
     2198      42,     0,     0,     0,  1074,     0,     0,     0,     0,     0,
     2199     347,     0,     0,     0,     0,     0,     0,   430,   119,     0,
     2200       0,    75,     0,     0,     0,   708,     0,     0,     0,     0,
     2201       0,     0,     0,     0,     0,    75,     0,     0,   205,   347,
     2202       0,    80,     0,     0,    48,    49,     0,     0,     0,     0,
     2203       0,     0,     0,     0,     0,   351,     0,   591,     0,     0,
     2204      80,     0,     0,     0,     0,     0,     0,     0,    80,     0,
     2205     428,     0,     0,     0,     0,   693,   693,   347,   343,   343,
     2206       0,     0,     0,     0,     0,   351,     0,     0,     0,     0,
     2207       0,     0,     0,     0,     0,   221,    67,     0,     0,     0,
     2208       0,     0,     0,     0,   351,     0,    80,     0,     0,     0,
     2209       0,     0,     0,   347,     0,     0,     0,     0,    88,     0,
     2210       0,     0,     0,   347,   347,     0,     0,   592,     0,     0,
     2211     219,     0,     0,     0,     0,   347,   693,   693,     0,     0,
     2212       0,     0,     0,     0,     0,     0,     0,  1199,     0,   351,
     2213       0,     0,     0,     0,  -542,     0,    88,     1,     2,     3,
     2214       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     2215      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2216      24,    25,    26,    27,    28,    29,    30,    31,   222,     0,
     2217      32,    33,    34,    35,     0,     0,     0,    36,     0,    75,
     2218      37,    38,     0,     0,     0,     0,     0,     0,     0,   708,
     2219       0,   594,   351,     0,     0,     0,     0,     0,     0,     0,
     2220       0,     0,     0,   347,     0,    39,     0,     0,     0,     0,
     2221      40,     0,    41,    42,    43,     0,     0,     0,     0,     0,
     2222       0,     0,     0,    44,    45,     0,     0,   594,     0,     0,
     2223       0,     0,     0,     0,     0,     0,     0,   594,     0,     0,
     2224       0,     0,     0,   594,   347,     0,   351,   351,     0,    46,
     2225       0,    47,     0,   363,    67,     0,     0,    48,    49,     0,
     2226       0,     0,   351,     0,     0,     0,     0,     0,     0,     0,
     2227       0,     0,     0,     0,     0,     0,   592,     0,     0,     0,
     2228       0,   351,     0,     0,   693,     0,   708,     0,     0,     0,
     2229       0,   119,    80,     0,   347,   347,     0,   347,   347,     0,
     2230       0,     0,     0,     0,     0,     0,    80,     0,     0,     0,
     2231     351,     0,     0,   693,     0,    75,     0,     0,     0,     0,
     2232       0,   693,   693,   693,     0,     0,     0,     0,     0,     0,
     2233       0,     0,   343,   343,     0,     0,     0,     0,     0,     0,
     2234      88,     0,     0,     0,  1350,    88,     0,     0,   351,     0,
     2235       0,     0,     0,     0,     0,   347,   347,    10,    11,    12,
     2236      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2237      23,    24,    25,    26,    27,    28,    29,    30,    31,     0,
     2238       0,    32,    33,    34,   351,     0,   119,     0,     0,     0,
     2239       0,    37,     0,     0,   351,   351,     0,     0,   594,     0,
     2240       0,   221,     0,     0,     0,     0,   351,     0,     0,     0,
    21342241       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2135        0,     0,     0,     0,     0,     0,     0,     8,     9,    10,
    2136       11,    12,   249,     0,     0,     0,  1378,   590,  1379,  1380,
    2137     1381,     0,     0,   625,     0,     0,     0,   591,   346,     0,
    2138     1385,     0,   211,     0,     0,     0,     0,     0,  1396,    33,
    2139        0,   169,     0,   634,     0,     0,     0,   634,     0,     0,
     2242       0,     0,     0,   204,    42,  1400,     0,     0,   347,     0,
     2243       0,     0,     0,     0,     0,     0,   595,     0,     0,     0,
     2244       0,     0,   222,     0,     0,     0,     0,     0,     0,     0,
     2245       0,     0,     0,     0,     0,     0,     0,     0,     0,   343,
     2246       0,     0,   595,     0,     0,     0,   595,     0,    48,    49,
     2247      80,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2248       0,     0,     0,     0,     0,     0,     0,     0,   693,   119,
     2249       0,     0,     0,    75,   351,     0,     0,     0,     0,     0,
     2250       0,     0,     0,     0,     0,     0,     0,  1350,     0,     0,
     2251       0,     0,     0,     0,  1350,    88,  1477,     0,  1477,     0,
     2252       0,     0,     0,   347,     0,   347,     0,     0,     0,   363,
     2253       0,     0,     0,     0,    88,   351,     0,     0,     0,     0,
     2254       0,     0,    88,     0,     0,     0,     0,     0,     0,     0,
     2255       0,     0,   347,     0,     0,     0,  1477,     0,  1477,   363,
     2256     347,   347,   347,     0,     0,     0,     0,   594,     0,   222,
     2257       0,   347,   347,     0,  1350,     0,     0,     0,   363,     0,
     2258      88,  1536,     0,    75,     0,   351,   351,     0,   351,   351,
     2259       0,     0,     0,     0,     0,     0,   163,     0,     0,     0,
     2260       0,     0,     0,     0,     0,     0,    80,     0,     0,     0,
     2261       0,   215,     0,     0,     0,     0,     0,     0,     0,     0,
     2262       0,     0,     0,   363,    10,    11,    12,    13,    14,    15,
     2263      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2264      26,    27,    28,    29,    30,    31,   351,   351,    32,    33,
     2265      34,     0,     0,     0,   509,     0,   511,   514,    37,   163,
     2266       0,     0,     0,   263,   219,   517,   518,     0,     0,     0,
     2267       0,     0,     0,     0,     0,     0,     0,     0,     0,   511,
     2268     511,     0,     0,     0,     0,   595,   363,     0,     0,   163,
     2269      41,    42,     0,     0,     0,     0,     0,     0,   347,   369,
     2270       0,     0,   374,     0,     0,     0,     0,     0,     0,     0,
     2271       0,     0,     0,     0,     0,     0,   511,     0,     0,   351,
     2272       0,   595,     0,     0,     0,     0,     0,   347,     0,   248,
     2273       0,   595,     0,     0,     0,    48,    49,   595,     0,     0,
     2274     363,   363,     0,     0,     0,     0,    75,     0,     0,     0,
     2275     163,     0,     0,    75,     0,   592,   363,   592,   511,     0,
     2276       0,     0,   215,     0,     0,     0,     0,     0,     0,     0,
     2277       0,     0,     0,     0,     0,   363,     0,     0,     0,     0,
     2278       0,     0,     0,     0,    80,     0,    88,     0,     0,     0,
     2279       0,     0,     0,     0,     0,   592,     0,   592,     0,   374,
     2280      88,     0,     0,     0,   363,     0,   163,     0,     0,     0,
     2281       0,     0,     0,    75,   351,     0,   351,     0,     0,     0,
    21402282       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2141        0,     0,     0,   591,     0,     0,     0,    36,  1418,     0,
    2142        0,     0,    39,   591,   178,   179,    42,     0,     0,   591,
    2143        0,     0,   346,   346,     0,    43,    44,     0,     0,     0,
    2144        0,     0,     0,     0,     0,     0,   469,    79,   346,     0,
    2145        0,     0,     0,     0,     0,     0,     0,     0,     0,   211,
    2146      342,   255,  1459,  1460,     0,   469,   411,   346,     0,    47,
    2147       48,     0,     0,   469,     0,  1465,     0,     0,    74,     0,
    2148        0,    79,  1465,   173,     0,     0,     0,     0,   510,     0,
    2149      692,     0,    74,   429,     0,     0,   346,     0,     0,  1490,
    2150      702,     0,     0,     0,     0,     0,     0,     0,     0,   707,
    2151        0,    66,     0,     0,     0,     0,   220,  1504,     0,     0,
    2152        0,     0,  1510,   429,     0,     0,     0,   429,     0,     0,
    2153        0,     0,     0,     0,   346,     0,     0,     0,     0,     0,
     2283       0,     0,     0,   524,     0,     0,     0,     0,     0,     0,
     2284       0,     0,   363,   351,     0,   163,     0,     0,     0,     0,
     2285       0,   351,   351,   351,     0,   208,     0,     0,     0,     0,
     2286       0,     0,   351,   351,   228,     0,   232,     0,   234,     0,
     2287       0,     0,     0,     0,    80,     0,   237,     0,   363,     0,
     2288       0,     0,   598,     0,     0,     0,     0,   625,   363,   363,
     2289       0,     0,   595,     0,     0,   222,     0,     0,     0,     0,
     2290     363,     0,     0,     0,     0,     0,     0,   208,     0,   232,
     2291     234,   237,     0,     0,     0,     0,     0,     0,     0,     0,
     2292       0,     0,     0,     0,     0,     0,     0,   511,   511,   511,
     2293     511,   511,   511,   511,   511,   511,   511,   511,   511,   511,
     2294     511,   511,   511,   511,   511,     0,   208,     0,     0,     0,
     2295       0,     0,     0,     0,     0,   221,     0,     0,     0,     0,
     2296       0,     0,     0,     0,    88,     0,     0,     0,     0,   163,
     2297     163,     0,     0,     0,     0,   369,     0,     0,     0,     0,
     2298       0,     0,     0,     0,     0,     0,     0,     0,   363,   351,
     2299       0,     0,     0,     0,     0,     0,   163,     0,     0,     0,
     2300       0,     0,     0,     0,     0,     0,   208,     0,   232,   234,
     2301     237,     0,     0,     0,     0,     0,     0,     0,   351,     0,
     2302       0,     0,     0,     0,   711,     0,     0,     0,     0,   363,
     2303       0,     0,     0,     0,     0,     0,     0,    80,   208,     0,
     2304     163,     0,     0,   208,    80,     0,   594,     0,   594,     0,
     2305       0,     0,   524,     0,   524,     0,     0,   524,     0,   163,
     2306     524,   595,     0,     0,     0,     0,     0,     0,     0,   369,
     2307       0,     0,     0,     0,     0,     0,     0,     0,     0,   363,
     2308     363,     0,   363,   363,     0,     0,   594,     0,   594,     0,
    21542309       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2155      510,     0,     0,     0,   342,  1537,     0,  1538,     0,     0,
    2156        0,     0,   510,   510,     0,     0,     0,     0,     0,  1368,
    2157      346,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2158      346,   346,     0,     0,   591,     0,   510,   218,     0,     0,
    2159        0,     0,   346,     0,   173,  1563,  1564,     0,   783,     0,
    2160        0,   350,     0,     0,     0,     0,     0,     0,  1571,  1572,
    2161        0,     0,     0,     0,     0,     0,   634,   795,     0,     0,
     2310      88,   511,     0,     0,    80,     0,     0,     0,     0,     0,
     2311       0,   208,     0,     0,     0,     0,     0,     0,     0,     0,
     2312     163,     0,     0,     0,     0,     0,   511,     0,     0,     0,
     2313       0,   208,   369,     0,     0,   799,     0,   629,     0,   234,
     2314     363,   363,     0,     0,     0,     0,     0,     0,     0,     0,
     2315       0,   237,     0,     0,     0,     0,   511,     0,     0,     0,
     2316       0,     0,     0,     0,     0,     0,     0,   598,     0,     0,
     2317       0,     0,     0,     0,     0,     0,     0,   598,     0,     0,
     2318       0,     0,     0,     0,     0,     0,   369,   369,     0,     0,
     2319       0,   208,     0,     0,     0,     0,     0,     0,     0,     0,
     2320       0,     0,   369,     0,     0,     0,     0,     0,     0,     0,
     2321       0,   208,     0,   363,     0,     0,   208,     0,   208,     0,
    21622322       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2163        0,     0,     0,   813,     0,     0,     0,     0,     0,     0,
    2164        0,     0,     0,     0,     0,   173,     0,     0,   173,     0,
    2165        0,     0,   590,     0,     0,     0,    74,   837,   510,     0,
    2166        0,     0,   590,     0,     0,     0,     0,     0,   634,     0,
    2167        0,   342,   342,     0,     0,     0,   173,     0,     0,     0,
    2168      346,     0,     0,     0,     0,     0,     0,   342,    79,     0,
    2169        0,     0,     0,    79,   275,   276,   173,   277,     0,     0,
    2170        0,   173,     0,     0,     0,     0,   692,     0,     0,     0,
    2171        0,     0,     0,     0,     0,     0,     0,   469,     0,     0,
    2172        0,   346,     0,   278,     0,     0,     0,     0,     0,   279,
    2173      173,   469,     0,   280,     0,   342,   281,   282,   272,   283,
    2174      284,   285,    43,    44,   913,   286,   287,   429,     0,     0,
    2175        0,     0,     0,   591,     0,     0,     0,     0,     0,     0,
    2176        0,     0,     0,     0,     0,     0,     0,     0,   288,     0,
    2177      377,   346,   346,   707,   346,   346,    47,    48,   290,   291,
    2178      292,   293,     0,     0,   593,     0,     0,     0,     0,   777,
    2179      220,     0,    74,     0,     0,     0,     0,     0,     0,     0,
    2180      173,     0,     0,     0,     0,   173,     0,     0,     0,   692,
    2181      593,     0,     0,     0,   593,     0,     0,     0,     0,   692,
    2182      692,     0,     0,   634,     0,     0,   965,     0,   173,     0,
    2183      173,   692,   346,   346,   173,     0,     0,   173,     0,     0,
    2184        0,   976,     0,     0,     0,     0,     0,     0,     0,     0,
    2185      173,     0,     0,     0,   173,     0,     0,     0,     0,     0,
    2186        0,     0,     0,    79,     0,     0,     0,     0,     0,     0,
    2187        0,     0,     0,     0,     0,     0,     0,   350,     0,     0,
    2188        0,     0,    79,     0,     0,     0,     0,     0,     0,     0,
    2189       79,     0,     0,     0,     0,    66,     0,     0,   275,   276,
    2190        0,   277,     0,     0,     0,   346,     0,   350,     0,     0,
    2191        0,     0,     0,     0,     0,     0,     0,   220,     0,   795,
    2192        0,     0,    87,     0,     0,     0,   350,   278,    79,     0,
    2193        0,     0,     0,   645,     0,   138,   139,   280,     0,  1073,
    2194      281,   282,   272,   283,   284,   285,    43,    44,     0,   286,
    2195      287,     0,   429,   118,     0,     0,    87,     0,     0,     0,
    2196      707,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2197       74,   350,   288,     0,   646,     0,   647,   378,     0,     0,
    2198       47,    48,   290,   291,   292,   293,     0,     0,     0,     0,
    2199        0,   221,   590,     0,     0,     0,     0,     0,     0,     0,
    2200      346,     0,   346,     0,     0,   427,     0,     0,     0,     0,
    2201      692,   692,     0,   342,   342,     0,     0,     0,     0,     0,
    2202        0,     0,     0,     0,     0,     0,     0,     0,     0,   346,
    2203        0,    66,     0,   593,   350,     0,     0,   346,   346,   346,
    2204        0,     0,     0,     0,     0,     0,     0,     0,   346,   346,
     2323       0,     0,     0,     0,   208,   524,     0,   208,   208,     0,
     2324       0,     0,     0,     0,   208,     0,     0,     0,     0,     0,
     2325     369,     0,   911,     0,     0,     0,     0,     0,   208,     0,
     2326       0,     0,     0,     0,     0,     0,   208,     0,     0,     0,
     2327       0,     0,     0,     0,     0,     0,     0,     0,    88,     0,
     2328       0,     0,   276,   277,     0,   278,     0,     0,   711,     0,
    22052329       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2206       74,     0,     0,     0,     0,     0,     0,     0,     0,   593,
    2207        0,   692,   692,     0,     0,     0,   362,     0,     0,   593,
    2208        0,     0,  1198,     0,     0,   593,     0,     0,   350,   350,
     2330       0,     0,     0,     0,     0,     0,     0,     0,   363,     0,
     2331     363,   279,     0,     0,   280,     0,     0,     0,   281,     0,
     2332       0,   282,   283,   273,   284,   285,   286,    44,    45,   511,
     2333     287,   288,     0,     0,     0,     0,     0,   363,     0,     0,
     2334     625,   511,     0,     0,     0,   363,   363,   363,     0,     0,
     2335       0,     0,     0,   289,     0,   378,   363,   363,   379,     0,
     2336       0,    48,    49,   291,   292,   293,   294,     0,    88,     0,
     2337       0,     0,     0,     0,     0,     0,     0,     0,     0,   208,
     2338     511,   629,   234,   237,     0,     0,     0,     0,     0,     0,
    22092339       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2210        0,     0,     0,     0,   350,     0,     0,     0,     0,     0,
     2340     155,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2341       0,     0,     0,     0,   208,   629,     0,     0,     0,     0,
     2342       0,     0,     0,   208,     0,     0,     0,     0,     0,     0,
     2343     511,     0,     0,     0,   369,     0,     0,     0,     0,   524,
     2344       0,     0,     0,     0,     0,     0,   242,     0,     0,   222,
     2345       0,     0,     0,     0,     0,     0,   247,     0,     0,     0,
     2346       0,     0,     0,     0,     0,     0,     0,     0,     0,   163,
     2347       0,     0,     0,     0,     0,   711,     0,     0,     0,     0,
     2348       0,   208,     0,   363,     0,     0,     0,     0,     0,     0,
     2349       0,   208,     0,     0,     0,     0,   208,     0,     0,     0,
     2350       0,     0,   333,   364,     0,     0,     0,   598,     0,     0,
     2351       0,     0,   363,     0,     0,     0,     0,     0,     0,     0,
     2352       0,     0,   385,     0,     0,     0,   511,   511,   369,   369,
     2353       0,    88,     0,     0,   413,     0,     0,     0,    88,     0,
     2354     595,   413,   595,     0,   417,     0,     0,     0,     0,     0,
     2355       0,     0,     0,     0,     0,     0,     0,     0,   431,     0,
     2356       0,     0,     0,     0,     0,     0,     0,   436,     0,     0,
     2357       0,     0,   208,     0,     0,     0,     0,   444,     0,     0,
     2358     595,     0,   595,     0,   208,     0,     0,     0,     0,   276,
     2359     277,     0,   278,     0,     0,     0,   461,     0,    88,     0,
     2360       0,   472,   208,     0,     0,     0,     0,   413,     0,     0,
     2361       0,     0,   524,     0,   480,     0,     0,     0,   279,     0,
     2362       0,   280,   494,     0,   498,   281,   208,     0,   282,   283,
     2363     273,   284,   285,   286,    44,    45,     0,   287,   288,     0,
     2364       0,     0,     0,   525,     0,     0,     0,     0,     0,     0,
     2365       0,     0,     0,     0,     0,     0,     0,     0,     0,   711,
     2366     289,     0,   378,     0,     0,   413,     0,   749,    48,    49,
     2367     291,   292,   293,   294,   413,   579,     0,   413,   582,     0,
     2368       0,     0,     0,     0,   583,     0,   364,     0,     0,   588,
     2369     615,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2370       0,     0,   208,     0,     0,     0,     0,     0,     0,     0,
     2371       0,     0,     0,     0,     0,     0,   639,     0,     0,     0,
     2372       0,     0,     0,     0,   642,     0,     0,     0,   643,   644,
     2373       0,   645,     0,     0,     0,   524,     0,     0,   656,   657,
     2374       0,   658,   659,   413,   660,     0,   661,   413,     0,     0,
     2375       0,     0,     0,     0,   208,     0,   711,     0,     0,     0,
     2376       0,     0,     0,   583,     0,   208,     0,   511,     0,     0,
     2377       0,   677,     0,     0,     0,     0,     0,     0,     0,   364,
    22112378       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2212        0,     0,     0,   350,     0,     0,     0,     0,     0,     0,
    2213        0,     0,     0,     0,    79,     0,     0,     0,     0,     0,
    2214        0,   218,     0,     0,   707,     0,     0,     0,    79,     0,
    2215        0,     0,   350,     0,     0,     0,     0,     0,     0,     0,
    2216        0,     0,     0,    87,     0,     0,     0,     0,    87,     0,
    2217        0,     0,     0,     0,     0,   346,     0,     0,     0,     0,
     2379       0,     0,     0,     0,     0,   688,     0,     0,     0,     0,
     2380       0,     0,   369,   369,     0,     0,     0,   276,   277,     0,
     2381     278,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2382     702,     0,     0,     0,     0,   413,     0,   706,   364,   511,
     2383       0,     0,   461,     0,     0,     0,   279,     0,     0,   280,
     2384       0,   511,   511,   281,     0,     0,   282,   283,   273,   284,
     2385     285,   286,    44,    45,     0,   287,   288,     0,     0,     0,
     2386       0,     0,   208,     0,     0,   511,     0,     0,     0,     0,
     2387       0,     0,   744,   364,     0,     0,     0,     0,   289,     0,
     2388     378,     0,     0,   938,   755,     0,    48,    49,   291,   292,
     2389     293,   294,     0,     0,   215,     0,     0,     0,     0,     0,
    22182390       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2219      350,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2220        0,     0,     0,     0,   346,     0,     0,     0,     0,    66,
     2391       0,     0,     0,     0,     0,     0,   413,   413,     0,     0,
     2392       0,   780,     0,     0,     0,     0,     0,     0,     0,   369,
     2393     790,     0,     0,   791,     0,   794,   364,   511,     0,     0,
     2394       0,     0,     0,     0,   215,     0,     0,     0,     0,   615,
     2395       0,     0,   615,   615,     0,   812,     0,     0,     0,   615,
     2396       0,     0,     0,     0,     0,     0,     0,     0,     0,   833,
     2397       0,   364,     0,     0,     0,     0,     0,     0,     0,     0,
     2398     353,   364,     0,     0,     0,     0,   524,   208,   524,     0,
     2399     364,   364,     0,     0,     0,     0,     0,     0,     0,     0,
     2400     855,     0,     0,     0,   276,   277,   364,   278,     0,     0,
     2401     413,   876,     0,     0,   413,   880,     0,     0,     0,     0,
     2402       0,   374,     0,   883,     0,     0,   524,     0,   524,     0,
     2403       0,     0,     0,   279,     0,     0,   280,   890,     0,     0,
     2404     281,     0,     0,   282,   283,   273,   284,   285,   286,    44,
     2405      45,     0,   287,   288,   364,   615,     0,     0,     0,     0,
     2406       0,     0,     0,     0,     0,   242,     0,   163,     0,     0,
     2407       0,     0,     0,     0,     0,   289,     0,   378,     0,     0,
     2408     923,   924,     0,    48,    49,   291,   292,   293,   294,     0,
     2409     931,     0,   364,     0,     0,     0,     0,     0,     0,     0,
     2410       0,     0,     0,     0,   944,     0,     0,     0,     0,   948,
    22212411       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2222        0,     0,     0,    74,     0,     0,   350,     0,     0,     0,
    2223       74,     0,   591,     0,   591,     0,   350,   350,     0,   692,
    2224      593,   707,     0,   220,     0,     0,   118,     0,   350,     0,
    2225        0,     0,     0,     0,     0,     0,     0,     0,     0,   594,
    2226        0,     0,     0,     0,     0,   221,     0,     0,   692,     0,
    2227        0,     0,   591,     0,   591,     0,   692,   692,   692,     0,
    2228        0,     0,     0,     0,     0,   594,     0,   342,   342,   594,
    2229       74,     0,     0,     0,     0,     0,     0,     0,     0,  1349,
     2412     315,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2413     339,     0,   413,     0,     0,     0,     0,     0,   208,     0,
     2414       0,   381,   381,     0,     0,     0,     0,     0,     0,   615,
     2415       0,   615,     0,     0,     0,     0,     0,     0,     0,     0,
     2416       0,     0,   615,   353,     0,     0,     0,     0,   353,   353,
     2417       0,   981,     0,     0,     0,     0,     0,     0,   982,     0,
     2418       0,     0,     0,     0,     0,     0,     0,     0,   208,   353,
     2419       0,     0,     0,   353,   984,     0,   985,     0,     0,     0,
     2420       0,     0,     0,     0,     0,     0,     0,     0,     0,   995,
     2421       0,     0,     0,     0,     0,   999,     0,     0,     0,     0,
     2422       0,     0,     0,     0,     0,     0,  1042,     0,     0,   476,
     2423    1043,     0,     0,     0,     0,     0,     0,     0,   364,     0,
     2424       0,     0,     0,     0,     0,   413,     0,     0,     0,     0,
     2425       0,     0,     0,     0,     0,     0,   353,   615,   615,     0,
     2426       0,     0,     0,     0,     0,   208,     0,     0,     0,     0,
     2427       0,     0,     0,     0,     0,     0,     0,     0,     0,   364,
     2428       0,     0,     0,     0,     0,     0,   353,     0,     0,     0,
    22302429       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2231        0,     0,    79,     0,     0,     8,     9,    10,    11,    12,
    2232       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2233       23,    24,    25,    26,    27,     0,   350,     0,    87,     0,
    2234        0,   118,     0,     0,     0,     0,     0,    33,     0,     0,
    2235        0,     0,   362,     0,     0,     0,     0,    87,     0,     0,
    2236        0,     0,     0,     0,     0,    87,     0,     0,     0,     0,
    2237        0,   162,     0,   275,   276,    36,   277,   350,     0,     0,
    2238     1399,     0,   362,     0,     0,     0,   214,     0,     0,     0,
    2239        0,     0,   221,     0,     0,     0,     0,     0,     0,     0,
    2240        0,   362,   278,    87,     0,     0,     0,     0,   279,   593,
    2241        0,     0,   280,     0,   342,   281,   282,   272,   283,   284,
    2242      285,    43,    44,     0,   286,   287,     0,   350,   350,   127,
    2243      350,   350,     0,     0,   162,     0,     0,     0,   262,     0,
    2244        0,     0,     0,   692,   118,     0,   362,   288,    79,   377,
    2245        0,     0,   378,     0,     0,    47,    48,   290,   291,   292,
    2246      293,     0,  1349,     0,   162,     0,     0,     0,     0,  1349,
    2247        0,  1476,     0,  1476,   368,     0,     0,   373,     0,     0,
    2248        0,     0,     0,     0,   127,     0,     0,     0,   350,   350,
     2430       0,   413,  1112,     0,     0,   353,     0,     0,     0,     0,
     2431       0,   364,     0,     0,  1115,     0,     0,   413,  1125,     0,
     2432     615,   615,  1132,     0,   208,     0,     0,     0,     0,     0,
     2433       0,     0,   364,   364,     0,     0,     0,     0,     0,     0,
    22492434       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2250      127,     0,   127,     0,     0,     0,     0,     0,   594,   362,
    2251        0,  1476,     0,  1476,     0,     0,     0,     0,     0,     0,
    2252        0,     0,     0,     0,     0,   162,     0,   267,     0,  1349,
    2253        0,     0,     0,     0,     0,     0,  1535,   214,     0,     0,
    2254        0,     0,     0,     0,   594,     0,     0,     0,     0,     0,
    2255        0,     0,     0,     0,   594,     0,     0,     0,     0,     0,
    2256      594,   350,     0,   362,   362,     0,     0,     0,     0,     0,
    2257        0,     0,     0,     0,   373,     0,     0,     0,     0,   362,
    2258        0,   162,     0,     0,     0,     0,   127,     0,   127,   127,
    2259        0,     0,     0,   127,     0,   127,   127,     0,   362,     0,
    2260        0,     0,     0,     0,     0,     0,     0,     0,   523,    87,
     2435     353,     0,     0,     0,   381,     0,     0,   354,    10,    11,
     2436      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2437      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
     2438       0,  1180,   335,    33,    34,     0,     0,     0,     0,     0,
     2439       0,     0,    37,     0,     0,     0,     0,   413,     0,   413,
     2440       0,   413,     0,     0,     0,     0,   413,     0,     0,     0,
     2441       0,     0,   353,   353,     0,     0,   353,     0,     0,     0,
     2442       0,     0,   615,  1210,   204,    42,     0,   315,  1212,     0,
     2443       0,     0,     0,     0,     0,     0,     0,     0,  1217,     0,
     2444       0,     0,     0,     0,     0,     0,     0,   705,   353,     0,
     2445       0,   353,     0,     0,     0,     0,     0,     0,   353,     0,
     2446     353,     0,  1239,   364,   353,     0,     0,   353,   353,    48,
     2447      49,     0,     0,     0,     0,  1247,     0,     0,     0,  1248,
     2448       0,     0,  1249,   353,     0,     0,     0,     0,     0,     0,
     2449     741,     0,     0,     0,     0,     0,     0,     0,  1258,  1259,
     2450     750,     0,   353,     0,     0,   741,     0,     0,   741,     0,
     2451       0,     0,     0,     0,     0,     0,  1270,     0,   353,     0,
     2452       0,   759,     0,     0,     0,     0,     0,     0,     0,     0,
     2453       0,   353,     0,   353,     0,     0,     0,     0,     0,     0,
     2454     354,     0,   413,     0,     0,   354,   354,   413,     0,     0,
     2455       0,   788,     0,     0,     0,     0,     0,     0,   339,     0,
     2456     364,     0,     0,   750,     0,     0,   354,     0,     0,   353,
     2457     354,     0,     0,     0,     0,     0,     0,     0,   813,     0,
     2458       0,  1316,     0,     0,     0,     0,     0,     0,     0,     0,
    22612459       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2262      162,     0,     0,    87,     0,     0,    79,   362,     0,     8,
    2263        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2264       19,    20,    21,    22,    23,    24,    25,    26,    27,     0,
    2265        0,    28,    29,    30,     0,     0,   350,   597,   350,   127,
    2266        0,    33,   624,     0,     0,   362,     0,     0,     0,     0,
     2460       0,     0,     0,     0,     0,   353,   364,   364,     0,     0,
     2461       0,     0,     0,     0,     0,   353,   353,   126,     0,   353,
     2462     854,   353,   353,     0,     0,     0,     0,   353,   381,     0,
     2463       0,     0,     0,   354,     0,     0,     0,     0,     0,     0,
     2464       0,     0,     0,     0,     0,   413,  1370,     0,     0,   413,
    22672465       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2268        0,     0,     0,     0,     0,   350,     0,     0,     0,    36,
    2269        0,     0,     0,   350,   350,   350,   203,    41,     0,     0,
    2270        0,   362,     0,     0,   350,   350,     0,     0,     0,     0,
    2271        0,   362,   362,     0,     0,   594,    79,     0,   221,     0,
    2272        0,     0,     0,   362,     0,     0,     0,     0,     0,     0,
    2273        0,     0,     0,     0,     0,   127,     0,     0,     0,     0,
    2274        0,    47,    48,     0,   162,   162,     0,     0,     0,     0,
    2275      368,     0,     0,     0,   127,     0,     0,     0,     0,     0,
     2466    1373,     0,  1374,   354,     0,     0,     0,     0,     0,   235,
     2467       0,     0,  1377,     0,  1378,     0,     0,     0,     0,     0,
     2468       0,     0,   354,     0,     0,   245,     0,   246,     0,  1385,
    22762469       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2277        0,   162,     0,     0,     0,     0,     0,     0,     0,     0,
    2278        0,     0,     0,     0,     0,     0,     0,    87,     0,     0,
    2279        0,     0,     0,     0,     0,     0,     0,   220,     0,   710,
    2280        0,     0,     0,     0,     0,     0,   127,     0,     0,     0,
    2281        0,   362,     0,     0,     0,   162,     0,     0,     0,     0,
    2282        0,     0,     0,     0,     0,     0,     0,   523,     0,   523,
    2283        0,   350,   523,     0,   162,   523,     0,     0,     0,     0,
    2284        0,     0,     0,     0,   368,     0,     0,     0,     0,     0,
    2285        0,     0,   362,     0,     0,     0,     0,     0,     0,     0,
    2286      350,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2287        0,     0,     0,     0,     0,     0,     0,     0,     0,    79,
    2288        0,     0,     0,     0,   594,     0,    79,     0,   593,     0,
    2289      593,     0,     0,     0,     0,   162,     0,     0,     0,     0,
    2290        0,     0,   362,   362,     0,   362,   362,   368,     0,     0,
    2291      798,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2292        0,     0,     0,    87,     0,     0,     0,     0,   593,     0,
    2293      593,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2294        0,     0,   597,     0,   207,     0,    79,     0,     0,     0,
    2295        0,     0,   597,   227,     0,   231,     0,   233,     0,     0,
    2296        0,   368,   368,   362,   362,   236,     0,     0,     0,     0,
    2297        0,     0,   127,   127,     0,     0,     0,   368,     0,     0,
     2470       0,     0,     0,     0,     0,     0,     0,  1404,  1406,   741,
     2471       0,     0,     0,     0,     0,   353,     0,     0,     0,   750,
     2472    1414,   937,     0,     0,   940,  1415,     0,   354,  1217,     0,
     2473     947,     0,     0,   364,   355,     0,     0,     0,     0,     0,
     2474       0,     0,     0,     0,  1433,     0,     0,     0,   128,     0,
     2475       0,     0,     0,     0,  1440,     0,   353,  1442,     0,  1444,
     2476    1446,  1448,     0,     0,     0,     0,     0,     0,     0,     0,
     2477       0,   964,   965,   414,   415,     0,     0,     0,   419,     0,
     2478     421,   422,     0,     0,     0,     0,     0,   339,   353,   354,
     2479     354,   353,     0,   354,     0,     0,     0,     0,     0,  1482,
     2480     128,  1484,     0,     0,     0,     0,   353,   353,     0,   353,
     2481     353,  1217,     0,     0,     0,     0,   128,     0,   128,     0,
     2482       0,  1500,     0,     0,   413,   354,     0,     0,   354,     0,
     2483     993,     0,     0,     0,   381,   354,     0,   354,     0,     0,
     2484       0,   354,     0,   268,   354,   354,     0,     0,     0,     0,
     2485       0,     0,     0,     0,   413,   413,     0,     0,     0,     0,
     2486     354,     0,     0,     0,     0,   339,     0,   353,   353,     0,
     2487       0,     0,     0,     0,     0,     0,     0,     0,     0,   354,
     2488       0,     0,     0,     0,   413,     0,     0,     0,     0,     0,
     2489       0,     0,     0,     0,     0,   354,     0,     0,     0,     0,
     2490     315,     0,   128,     0,   128,   128,   339,     0,   354,   128,
     2491     354,   128,   128,   381,     0,     0,     0,   355,   940,     0,
     2492     586,   741,   355,   355,     0,     0,     0,     0,     0,     0,
     2493       0,     0,     0,     0,     0,     0,     0,     0,     0,   630,
     2494     353,  1119,     0,   355,     0,     0,   354,   355,     0,     0,
     2495       0,     0,  1137,     0,     0,     0,     0,     0,     0,     0,
    22982496       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2299        0,     0,     0,     0,     0,     0,   207,     0,   231,   233,
    2300      236,     0,     0,     0,     0,   127,     0,     0,   127,   127,
    2301      523,   127,     0,   127,   127,     0,     0,     0,   127,   127,
    2302        0,     0,     0,     0,     0,   368,     0,   910,     0,     0,
    2303        0,     0,     0,     0,     0,   207,   362,     0,     0,     0,
     2497       0,     0,   381,     0,  1154,   128,     0,     0,     0,     0,
     2498       0,     0,   354,     0,     0,     0,     0,     0,     0,   940,
     2499     940,   671,   354,   354,     0,     0,   354,     0,   354,   354,
     2500       0,     0,     0,     0,   354,     0,     0,     0,     0,     0,
     2501     355,     0,     0,     0,     0,     0,  1185,     0,     0,     0,
     2502       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2503       0,     0,     0,     0,     0,   353,     0,   353,     0,     0,
     2504     355,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2505       0,   128,     0,     0,     0,     0,     0,   276,   277,   355,
     2506     278,     0,     0,     0,   353,     0,     0,     0,     0,   940,
     2507     128,     0,   353,   353,   353,     0,     0,     0,     0,     0,
     2508       0,     0,     0,   353,   353,     0,   279,     0,     0,   280,
     2509     854,     0,   354,   281,     0,     0,   282,   283,   273,   284,
     2510     285,   286,    44,    45,   355,   287,   288,     0,  1250,  1251,
     2511       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2512       0,     0,   128,     0,     0,     0,     0,     0,   508,     0,
     2513     378,     0,     0,   354,     0,     0,    48,    49,   291,   292,
     2514     293,   294,     0,     0,     0,     0,     0,     0,     0,     0,
     2515       0,     0,     0,     0,     0,     0,     0,   786,   787,     0,
     2516       0,     0,     0,     0,     0,   354,   355,   355,   354,     0,
     2517     355,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2518       0,     0,     0,   354,   354,     0,   354,   354,     0,     0,
     2519     819,     0,     0,   822,   823,     0,   826,     0,   828,   829,
     2520       0,     0,   355,   831,   832,   355,     0,     0,     0,     0,
     2521     353,     0,   355,     0,   355,     0,     0,     0,   355,     0,
     2522       0,   355,   355,     0,     0,     0,     0,     0,     0,     0,
     2523       0,     0,     0,     0,     0,     0,     0,   355,     0,   353,
     2524       0,     0,     0,     0,   354,   354,     0,   874,     0,     0,
     2525       0,   878,     0,     0,     0,     0,   355,     0,     0,  1360,
     2526       0,     0,     0,   741,     0,     0,     0,   353,     0,   353,
     2527       0,     0,   355,     0,     0,     0,     0,     0,     0,     0,
     2528       0,     0,     0,     0,     0,   355,     0,   355,   128,   128,
     2529       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2530       0,     0,   353,     0,     0,     0,     0,   353,     0,   353,
     2531       0,     0,     0,     0,     0,     0,     0,   354,     0,     0,
     2532       0,   128,     0,   355,   128,   128,     0,   128,     0,   128,
     2533     128,     0,     0,     0,   128,   128,     0,     0,     0,     0,
     2534       0,     0,     0,     0,     0,   976,     0,     0,     0,     0,
     2535       0,     0,    10,    11,    12,    13,    14,    15,    16,   355,
     2536       0,     0,     0,     0,     0,     0,     0,     0,     0,   355,
     2537     355,     0,     0,   355,     0,   355,   355,     0,   128,     0,
     2538       0,   355,   128,     0,   276,   277,    37,   278,    10,    11,
     2539      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2540      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
     2541    -307,     0,   354,   279,   354,     0,   280,     0,     0,     0,
     2542     281,     0,    37,   282,   283,   273,   284,   285,   286,    44,
     2543      45,     0,   287,   288,     0,     0,     0,     0,     0,     0,
     2544       0,   354,     0,     0,     0,     0,     0,     0,     0,   354,
     2545     354,   354,     0,     0,     0,   289,     0,   378,  -307,     0,
     2546     354,   354,     0,   337,    49,   291,   292,   293,   294,   355,
     2547       0,     0,     0,    10,    11,    12,    13,    14,    15,    16,
     2548      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     2549      27,    28,    29,    30,    31,  -308,     0,     0,   315,     0,
     2550       0,     0,     0,     0,     0,     0,     0,    37,     0,     0,
     2551     355,     0,     0,     0,     0,    10,    11,    12,    13,    14,
     2552      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2553      25,    26,    27,    28,    29,    30,    31,     0,  1110,    32,
     2554      33,    34,   355,  -308,     0,   355,     0,     0,     0,    37,
     2555       0,     0,     0,     0,  1123,     0,     0,  1127,  1130,     0,
     2556     355,   355,     0,   355,   355,     0,     0,     0,     0,     0,
     2557       0,     0,     0,     0,     0,     0,     0,     0,     0,    40,
     2558       0,    41,    42,    43,     0,     0,     0,   354,     0,     0,
     2559       0,     0,    44,    45,    10,    11,    12,    13,    14,    15,
     2560      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2561      26,    27,    28,    29,    30,    31,   354,     0,    46,     0,
     2562      47,   355,   355,     0,     0,     0,    48,    49,    37,     0,
     2563    1189,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2564       0,     0,     0,     0,   354,     0,   354,     0,  1206,  1207,
     2565       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2566       0,     0,     0,     0,     0,     0,     0,     0,     0,   128,
     2567       0,     0,     0,     0,     0,     0,     0,     0,     0,   354,
     2568       0,     0,     0,     0,   354,   128,   354,     0,   128,   128,
     2569       0,     0,     0,     0,   355,     0,     0,     0,     0,     0,
     2570       0,     0,     0,     0,     0,  1127,     0,     0,     0,     0,
     2571       0,     0,     0,     0,     0,     0,     0,     0,     0,     1,
     2572       2,     3,     4,     5,     6,     7,     8,     9,    10,    11,
     2573      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2574      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
     2575       0,     0,    32,    33,    34,    35,     0,     0,     0,    36,
     2576       0,   128,    37,    38,     0,     0,     0,  1291,     0,     0,
     2577       0,     0,     0,     0,   128,     0,     0,     0,     0,   128,
     2578     128,     0,     0,     0,     0,     0,  1301,    39,     0,   355,
     2579       0,   355,    40,     0,    41,    42,    43,     0,     0,     0,
     2580       0,     0,     0,     0,     0,    44,    45,     0,     0,     0,
     2581       0,     0,     0,     0,     0,     0,     0,     0,   355,     0,
     2582       0,     0,     0,     0,     0,     0,   355,   355,   355,     0,
     2583       0,    46,     0,    47,     0,     0,   128,   355,   355,    48,
     2584      49,     0,     0,     0,     0,     1,   203,     3,     4,     5,
     2585       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     2586      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2587      26,    27,    28,    29,    30,    31,     0,     0,    32,    33,
     2588      34,    35,  1368,     0,     0,    36,   276,   277,    37,   278,
     2589       0,     0,     0,     0,     0,     0,     0,     0,   128,     0,
     2590       0,     0,     0,     0,   276,   277,     0,   278,     0,     0,
     2591       0,     0,     0,     0,     0,   279,     0,   128,   280,     0,
     2592      41,    42,   281,     0,     0,   282,   283,   273,   284,   285,
     2593     286,    44,    45,   279,   287,   288,   280,     0,     0,     0,
     2594     281,     0,     0,   282,   283,   273,   284,   285,   286,    44,
     2595      45,     0,   287,   288,     0,     0,     0,   289,     0,   290,
     2596       0,     0,     0,     0,   355,    48,    49,   291,   292,   293,
     2597     294,     0,     0,     0,     0,   513,     0,   378,     0,     0,
     2598    -134,     0,     0,    48,    49,   291,   292,   293,   294,     0,
     2599       0,     0,     0,   355,     0,     0,     0,     0,     0,     0,
     2600       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2601       0,     0,     0,   128,     0,     0,     0,     0,     0,     0,
     2602       0,   355,     0,   355,     1,   203,     3,     4,     5,     6,
     2603       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2604      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     2605      27,    28,    29,    30,    31,     0,   355,    32,    33,    34,
     2606      35,   355,     0,   355,    36,   276,   277,    37,  1002,  1003,
     2607       0,  1004,     0,     0,  1005,  1006,  1007,  1008,  1009,  1010,
     2608    1011,  1012,     0,     0,     0,  1013,     0,     0,     0,  1014,
     2609    1015,     0,  1016,     0,   279,     0,     0,  1017,     0,  1018,
     2610    1019,  1020,     0,     0,   282,   283,   273,   284,   285,   286,
     2611      44,    45,     0,   287,   288,     0,     0,     0,     0,     0,
     2612       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2613       0,     0,     0,     0,     0,     0,   289,     0,   290,     0,
     2614       0,   169,     0,     0,    48,    49,   291,   292,   293,   294,
     2615       0,     0,     0,     0,  1021,     0,     0,     0,     0,  -134,
     2616       1,   203,     3,     4,     5,     6,     7,     8,     9,    10,
     2617      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2618      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
     2619      31,     0,     0,    32,    33,    34,    35,     0,     0,     0,
     2620      36,   276,   277,    37,   278,     0,     0,     0,     0,     0,
    23042621       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    23052622       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2306        0,     0,   127,   710,     0,     0,   127,     0,     0,     0,
    2307        0,     0,     0,     0,     0,     0,     0,   975,     0,     0,
    2308        8,     9,    10,    11,    12,     0,     0,     0,     0,     0,
    2309        0,     0,     0,     0,     0,   207,     0,   231,   233,   236,
    2310        0,    87,     0,     0,     0,     0,     0,     0,     0,     0,
    2311      275,   276,    33,   277,     0,   624,     0,     0,     0,     0,
    2312        0,     0,     0,     0,     0,     0,     0,   207,     0,     0,
    2313        0,   362,   207,   362,     0,     0,     0,     0,     0,   278,
    2314       36,     0,     0,     0,     0,   279,     0,     0,     0,   280,
    2315        0,     0,   281,   282,   272,   283,   284,   285,    43,    44,
    2316      362,   286,   287,     0,     0,     0,     0,     0,   362,   362,
    2317      362,     0,     0,     0,     0,     0,     0,     0,     0,   362,
    2318      362,     0,     0,     0,   288,     0,   377,     0,     0,     0,
    2319        0,    87,   336,    48,   290,   291,   292,   293,     0,     0,
    2320      207,     0,     0,     0,     0,     0,     0,     0,     0,   368,
    2321      275,   276,     0,   277,   523,     0,     0,     0,   154,     0,
    2322      207,     0,     0,     0,     0,     0,   628,     0,   233,     0,
    2323        0,     0,     0,     0,     0,     0,     0,     0,     0,   278,
    2324      236,     0,     0,     0,   162,   279,     0,     0,     0,   280,
    2325      710,     0,   281,   282,   272,   283,   284,   285,    43,    44,
    2326        0,   286,   287,     0,   241,     0,     0,     0,     0,     0,
    2327        0,     0,   221,     0,   246,     0,     0,     0,     0,     0,
    2328      207,     0,   597,     0,   288,     0,   377,     0,     0,     0,
    2329        0,   748,    47,    48,   290,   291,   292,   293,     0,     0,
    2330      207,     0,     0,   368,   368,   207,   362,   207,     0,     0,
     2623     279,     0,     0,   280,     0,    41,    42,   281,     0,     0,
     2624     282,   283,   273,   284,   285,   286,    44,    45,     0,   287,
     2625     288,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    23312626       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2332        0,     0,     0,   207,     0,     0,   207,   207,     0,     0,
    2333        0,     0,     0,   207,     0,   362,     0,     0,     0,     0,
    2334      384,     0,     0,     0,     0,     0,     0,   207,     0,     0,
    2335        0,     0,     0,   127,    87,   207,     0,     0,     0,     0,
    2336        0,    87,   416,   594,     0,   594,     0,     0,     0,   127,
    2337        0,     0,   127,   127,     0,  1133,   430,     0,     8,     9,
    2338       10,    11,    12,     0,     0,   435,     0,   523,     0,     0,
    2339        0,     0,     0,     0,     0,   443,     0,     0,     0,     0,
    2340        0,     0,     0,   594,     0,   594,     0,     0,   275,   276,
    2341       33,   277,     0,     0,   460,     0,     0,     0,     0,   471,
    2342        0,    87,     0,     0,     0,     0,     0,     0,     0,     0,
    2343        0,     0,   479,     0,   710,     0,     0,   278,    36,     0,
    2344      493,     0,   497,   279,     0,   127,     0,   280,     0,     0,
    2345      281,   282,   272,   283,   284,   285,    43,    44,   127,   286,
    2346      287,   524,     0,   127,   127,     0,     0,     0,   207,     0,
    2347      628,   233,   236,     0,     0,     0,     0,     0,     0,     0,
    2348        0,     0,   288,     0,   377,     0,     0,     0,     0,     0,
    2349     1134,    48,   290,   291,   292,   293,     0,     0,     0,     0,
    2350        0,     0,   582,   207,   628,     0,     0,   587,     0,     0,
    2351      523,     0,   207,     0,     0,     0,     0,     0,     0,     0,
    2352      127,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2353        0,   710,     0,     0,     0,     0,     0,     0,     0,     0,
    2354        0,     0,   641,     0,     0,     0,   642,   643,     0,   644,
    2355        0,     0,     0,     0,     0,     0,   655,   656,     0,   657,
    2356      658,     0,   659,     0,   660,     0,     0,     0,     0,     0,
    2357      207,     0,     0,   275,   276,     0,   277,   368,   368,     0,
    2358      207,   582,   127,     0,     0,   207,     0,     0,     0,   676,
    2359        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2360        0,   127,   278,     0,     0,     0,     0,     0,   279,     0,
    2361        0,     0,   280,   687,     0,   281,   282,   272,   283,   284,
    2362      285,    43,    44,     0,   286,   287,     0,     0,     0,     0,
    2363        0,     0,   332,   363,     0,     0,     0,     0,   701,     0,
    2364        0,     0,     0,     0,     0,   705,     0,   288,     0,   377,
    2365      460,     0,   937,     0,     0,    47,    48,   290,   291,   292,
    2366      293,   207,     0,     0,   412,     0,     0,     0,     0,   214,
    2367        0,   412,     0,   207,     0,     0,     0,     0,     0,     0,
    2368        0,     0,   275,   276,     0,   277,     0,     0,     0,     0,
    2369      743,   207,     0,     0,     0,     0,     0,   127,     0,     0,
    2370        0,     0,   754,     0,   368,     0,     0,     0,     0,     0,
    2371        0,   278,     0,     0,     0,   207,     0,   279,     0,   214,
    2372        0,   280,     0,     0,   281,   282,   272,   283,   284,   285,
    2373       43,    44,     0,   286,   287,     0,     0,   412,     0,   779,
    2374        0,   275,   276,     0,   277,     0,     0,     0,   789,     0,
    2375        0,   790,     0,     0,     0,     0,   288,     0,   377,     0,
    2376        0,   523,     0,   523,    47,    48,   290,   291,   292,   293,
    2377      278,     0,     0,   811,     0,     0,   279,     0,     0,     0,
    2378      280,     0,     0,   281,   282,   272,   283,   284,   285,    43,
    2379       44,   207,   286,   287,     0,   412,   373,     0,     0,     0,
    2380        0,   523,     0,   523,   412,   578,     0,   412,   581,     0,
    2381        0,     0,     0,     0,     0,   507,   363,   377,   854,     0,
    2382      614,     0,     0,    47,    48,   290,   291,   292,   293,     0,
    2383        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2384        0,     0,   162,   207,     0,     0,   638,     0,     0,     0,
    2385        0,     0,     0,     0,   207,   889,     0,     0,     0,     0,
    2386        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2387        0,     0,     0,   412,     0,     0,     0,   412,     0,     0,
    2388        0,     0,     0,   241,     0,     0,     0,     0,     0,     0,
    2389      314,     0,     0,     0,     0,     0,     0,     0,   922,   923,
    2390      338,     0,     0,     0,     0,     0,     0,     0,   930,   363,
    2391        0,   380,   380,     0,     0,     0,     0,     0,     0,     0,
    2392        0,     0,   943,     0,     0,     0,     0,   947,     0,     0,
     2627       0,     0,   289,     0,   290,     0,     0,     0,     0,     0,
     2628      48,    49,   291,   292,   293,   294,   203,     3,     4,     5,
     2629       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     2630      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2631      26,    27,    28,    29,    30,    31,     0,     0,   335,    33,
     2632      34,     0,     0,     0,     0,     0,   276,   277,    37,   278,
    23932633       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    23942634       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2395        0,   207,     0,     0,     0,   412,     0,     0,   363,     0,
    2396        0,     1,     2,   202,     4,     5,     6,     7,     8,     9,
     2635       0,     0,     0,     0,     0,   279,     0,     0,   280,     0,
     2636      41,    42,   281,     0,     0,   282,   283,   273,   284,   285,
     2637     286,    44,    45,     0,   287,   288,     0,     0,     0,     0,
     2638       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2639       0,     0,     0,     0,     0,     0,     0,   289,     0,   336,
     2640       0,     0,     0,     0,   749,   337,    49,   291,   292,   293,
     2641     294,   203,     3,     4,     5,     6,     7,     8,     9,    10,
     2642      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2643      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
     2644      31,     0,     0,   335,    33,    34,     0,     0,     0,     0,
     2645       0,   276,   277,    37,   278,     0,     0,     0,     0,     0,
     2646       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2647       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2648     279,     0,     0,   280,     0,    41,    42,   281,     0,     0,
     2649     282,   283,   273,   284,   285,   286,    44,    45,     0,   287,
     2650     288,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2651       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2652       0,     0,   289,     0,   336,     0,     0,     0,     0,   749,
     2653      48,    49,   291,   292,   293,   294,   203,     3,     4,     5,
     2654       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     2655      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2656      26,    27,    28,    29,    30,    31,     0,     0,   335,    33,
     2657      34,     0,     0,     0,     0,     0,   276,   277,    37,   278,
     2658       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2659       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2660       0,     0,     0,     0,     0,   279,     0,     0,   280,     0,
     2661      41,    42,   281,     0,     0,   282,   283,   273,   284,   285,
     2662     286,    44,    45,     0,   287,   288,     0,     0,     0,     0,
     2663       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2664       0,     0,     0,     0,     0,     0,     0,   289,     0,   336,
     2665       0,     0,     0,     0,     0,   337,    49,   291,   292,   293,
     2666     294,   203,     3,     4,     5,     6,     7,     8,     9,    10,
     2667      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2668      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
     2669      31,     0,     0,   335,    33,    34,     0,     0,     0,     0,
     2670       0,   276,   277,    37,   278,     0,     0,     0,     0,     0,
     2671       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2672       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2673     279,     0,     0,   280,     0,   204,    42,   281,     0,     0,
     2674     282,   283,   273,   284,   285,   286,    44,    45,     0,   287,
     2675     288,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2676       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2677       0,     0,   289,     0,   961,     0,     0,     0,     0,     0,
     2678     962,    49,   291,   292,   293,   294,   203,     3,     4,     5,
     2679       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     2680      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2681      26,    27,    28,    29,    30,    31,     0,     0,   335,    33,
     2682      34,     0,     0,     0,     0,     0,   276,   277,    37,   278,
     2683       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2684       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2685       0,     0,     0,     0,     0,   279,     0,     0,   280,     0,
     2686     204,    42,   281,     0,     0,   282,   283,   273,   284,   285,
     2687     286,    44,    45,  1134,   287,   288,     0,     0,     0,     0,
     2688      10,    11,    12,    13,    14,    15,    16,     0,     0,     0,
     2689       0,   276,   277,     0,   278,     0,     0,   289,     0,   378,
     2690       0,     0,     0,     0,     0,    48,    49,   291,   292,   293,
     2691     294,     0,   276,   277,    37,   278,     0,     0,     0,     0,
     2692     279,     0,     0,   646,     0,   139,   140,   281,     0,     0,
     2693     282,   283,   273,   284,   285,   286,    44,    45,     0,   287,
     2694     288,   279,     0,     0,   280,     0,     0,     0,   281,     0,
     2695       0,   282,   283,   273,   284,   285,   286,    44,    45,     0,
     2696     287,   288,   289,     0,   647,     0,   648,   379,     0,     0,
     2697      48,    49,   291,   292,   293,   294,     0,     0,     0,     0,
     2698       0,     0,     0,   289,     0,   378,     0,     0,     0,     0,
     2699       0,  1135,    49,   291,   292,   293,   294,     1,     2,     3,
     2700       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     2701      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2702      24,    25,    26,    27,    28,    29,    30,    31,     0,     0,
     2703      32,    33,    34,    35,     0,     0,     0,    36,     0,     0,
     2704      37,    38,     0,     0,     0,     0,     0,     0,     0,     0,
     2705       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2706       0,     0,     0,     0,     0,    39,     0,     0,     0,     0,
     2707      40,     0,    41,    42,    43,     0,     0,     0,     0,     0,
     2708       0,     0,     0,    44,    45,     0,     0,     0,     0,     0,
     2709       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2710       0,     0,     0,     0,     0,     0,     0,     0,     0,    46,
     2711       0,    47,     0,     0,     0,  -546,     0,    48,    49,   202,
     2712     203,     3,     4,     5,     6,     7,     8,     9,    10,    11,
     2713      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2714      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
     2715       0,     0,    32,    33,    34,     0,     0,     0,     0,     0,
     2716       0,     0,    37,    10,    11,    12,    13,    14,    15,    16,
     2717      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     2718      27,    28,    29,    30,    31,     0,     0,    32,    33,    34,
     2719       0,     0,    40,     0,   204,    42,    43,    37,     0,     0,
     2720       0,     0,     0,     0,     0,    44,    45,     0,     0,     0,
     2721       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2722       0,     0,     0,     0,     0,     0,     0,     0,     0,    41,
     2723      42,    46,     0,   205,     0,     0,     0,     0,     0,    48,
     2724      49,     1,   203,     3,     4,     5,     6,     7,     8,     9,
    23972725      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2398       20,    21,    22,    23,    24,    25,    26,    27,  -307,   980,
    2399       28,    29,    30,    31,     0,     0,   981,    32,     0,   475,
    2400       33,     0,     0,   363,     0,     0,     0,     0,     0,     0,
    2401        0,     0,   983,     0,   984,     0,     0,     0,     0,     0,
    2402        0,     0,     0,     0,     0,     0,     0,   994,    36,     0,
    2403       37,     0,    38,   998,     0,    40,    41,     0,     0,  -307,
    2404        0,     0,     0,     0,  1041,     0,   412,   412,  1042,     0,
     2726      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
     2727      30,    31,  -307,     0,    32,    33,    34,    35,     0,     0,
     2728       0,    36,     0,     0,    37,     0,     0,     0,     0,     0,
    24052729       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2406        0,     0,     0,     0,     0,   793,   363,     0,     0,     0,
    2407        0,     0,     0,     0,    46,     0,   207,     0,     0,   614,
    2408       47,    48,   614,   614,     0,     0,     0,     0,     0,   614,
    2409        0,     0,     0,     0,     0,     0,     0,     0,     0,   832,
    2410        0,   363,     0,     0,     0,     0,     0,     0,     0,     0,
    2411        0,   363,     0,     0,     0,     0,     0,     0,     0,     0,
    2412      363,   363,   275,   276,   380,   277,     0,     0,     0,     0,
    2413        0,     0,  1114,     0,     0,     0,   363,     0,     0,     0,
    2414      412,   875,     0,     0,   412,   879,     0,     0,     0,     0,
    2415        0,   278,     0,   882,     0,     0,     0,   279,     0,     0,
    2416        0,   280,     0,   352,   281,   282,   272,   283,   284,   285,
    2417       43,    44,     0,   286,   287,     0,     0,     0,     0,     0,
    2418        0,     0,     0,     0,   363,   614,     0,     0,     0,     0,
    2419        0,     0,     0,     0,     0,     0,   512,   314,   377,  1179,
    2420        0,     0,     0,     0,    47,    48,   290,   291,   292,   293,
    2421        0,     0,     0,     0,     0,     0,     0,   704,     0,     0,
    2422        0,     0,   363,     0,     0,     0,     0,   207,     0,     0,
    24232730       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2424        0,  1209,     0,     0,     0,     0,  1211,     0,     0,     0,
    2425        0,     0,     0,     0,     0,     0,  1216,     0,     0,     0,
    2426      740,     0,   412,     0,     0,     0,     0,     0,     0,     0,
    2427      749,     0,     0,     0,     0,   740,     0,   207,   740,   614,
    2428     1238,   614,     0,     0,     0,     0,     0,     0,     0,     0,
    2429        0,   758,   614,  1246,     0,     0,     0,  1247,     0,     0,
    2430     1248,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2431        0,     0,     0,     0,     0,     0,  1257,  1258,     0,     0,
    2432        0,   787,     0,     0,     0,     0,     0,     0,   338,     0,
    2433        0,     0,     0,   749,  1269,     0,     0,     0,     0,     0,
    2434        0,     0,     0,     0,     0,     0,   352,     0,   812,     0,
    2435        0,   352,   352,     0,   207,     0,     0,     0,     0,     0,
    2436        0,     0,     0,     0,     0,     0,     0,     0,   363,     0,
    2437        0,     0,   352,     0,     0,   412,   352,     0,     0,     0,
    2438        0,     0,     0,     0,     0,     0,     0,   614,   614,     0,
    2439      853,     0,     0,     0,     0,     0,     0,     0,   380,  1315,
    2440        0,     0,   353,     0,     0,     0,     0,     0,     0,   363,
    2441        0,     0,     0,   207,     0,     0,     0,     0,     0,     0,
    2442        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2443        0,   412,  1111,     0,     0,     0,     0,     0,     0,   352,
    2444        0,   363,     0,     0,     0,     0,     0,   412,  1124,     0,
    2445      614,   614,  1131,     0,     0,     0,     0,     0,     0,     0,
    2446        0,     0,   363,   363,     0,     0,     0,     0,     0,   352,
    2447        0,     0,     0,     0,     0,     0,     0,     0,  1372,   740,
    2448     1373,     0,     0,     0,     0,     0,     0,     0,   352,   749,
    2449     1376,   936,  1377,     0,   939,     0,     0,     0,     0,     0,
    2450      946,     0,     0,     0,     0,     0,     0,  1384,     0,     0,
    2451        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2452        0,     0,     0,     0,     0,  1403,  1405,   412,     0,   412,
    2453        0,   412,     0,   352,     0,     0,   412,     0,  1413,     0,
    2454        0,   963,   964,  1414,     0,     0,  1216,     0,     0,     0,
    2455        0,     0,   614,     0,     0,     0,     0,   338,     0,     0,
    2456        0,     0,  1432,     0,     0,     0,     0,     0,     0,     0,
    2457        0,     0,  1439,     0,     0,  1441,     0,  1443,  1445,  1447,
    2458        0,     0,     0,     0,     0,   353,     0,     0,     0,     0,
    2459      353,   353,     0,   363,     0,   352,   352,     0,     0,   352,
    2460      992,     0,     0,     0,   380,     0,     0,     0,     0,     0,
    2461        0,   353,     0,   275,   276,   353,   277,  1481,     0,  1483,
    2462        0,     0,     0,     0,     0,     0,     0,     0,     0,  1216,
    2463        0,   352,     0,     0,   352,   338,     0,     0,     0,  1499,
    2464        0,   352,   278,   352,     0,     0,     0,   352,   279,     0,
    2465      352,   352,   280,     0,     0,   281,   282,   272,   283,   284,
    2466      285,    43,    44,     0,   286,   287,   352,     0,     0,     0,
    2467      314,     0,   412,     0,     0,     0,   338,   412,   353,     0,
    2468        0,     0,     0,   380,     0,   352,     0,   515,   939,   377,
    2469      363,   740,     0,     0,     0,    47,    48,   290,   291,   292,
    2470      293,   352,     0,     0,     0,     0,     0,     0,   353,     0,
    2471        0,  1118,     0,     0,   352,     0,   352,     0,     0,     0,
    2472        0,     0,  1136,     0,     0,     0,     0,   353,     0,     0,
    2473        0,     0,     0,     0,     0,     0,   363,   363,     0,     0,
    2474        0,     0,   380,     0,  1153,     0,     0,     0,     0,     0,
    2475        0,     0,   352,     0,     0,     0,     0,     0,     0,   939,
    2476      939,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2477      125,     0,   353,     0,     0,   412,  1369,     0,     0,   412,
    2478        0,     0,     0,     0,     0,     0,  1184,     0,   352,     0,
    2479        0,     0,     0,     0,   354,     0,     0,     0,   352,   352,
    2480        0,     0,   352,     0,   352,   352,     0,     0,     0,     0,
    2481      352,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2482        0,     0,     0,     0,     0,   234,     0,     0,     0,     0,
    2483        0,     0,     0,     0,   353,   353,     0,     0,   353,   939,
    2484        0,   244,     0,   245,     0,     0,     0,     0,     0,     0,
    2485        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2486      853,     0,     0,   363,     0,     0,     0,     0,     0,     0,
    2487      353,     0,     0,   353,   275,   276,     0,   277,  1249,  1250,
    2488      353,     0,   353,     0,     0,     0,   353,     0,     0,   353,
    2489      353,     0,     0,     0,     0,     0,     0,     0,   352,     0,
    2490        0,     0,     0,   278,     0,   353,     0,     0,     0,   279,
    2491        0,     0,     0,   280,     0,     0,   281,   282,   272,   283,
    2492      284,   285,    43,    44,   353,   286,   287,     0,     0,   413,
    2493      414,     0,     0,     0,   418,     0,   420,   421,     0,   352,
    2494      353,     0,     0,     0,     0,     0,     0,     0,   288,     0,
    2495      377,     0,     0,   353,   412,   353,   703,    48,   290,   291,
    2496      292,   293,     0,     0,     0,     0,     0,     0,     0,     0,
    2497        0,   352,     0,     0,   352,     0,     0,   354,     0,     0,
    2498        0,     0,   354,   354,   412,   412,     0,     0,     0,   352,
    2499      352,   353,   352,   352,     0,     0,     0,     0,     0,     0,
    2500        0,     0,     0,   354,     0,     0,     0,   354,     0,     0,
    2501        0,     0,     0,     0,   412,     0,     0,     0,     0,     0,
    2502        0,     0,     0,     0,     0,     0,     0,   353,     0,  1359,
    2503        0,     0,     0,   740,     0,     0,     0,   353,   353,     0,
    2504        0,   353,     0,   353,   353,     0,     0,     0,     0,   353,
    2505      352,   352,     0,     0,     0,     0,     0,     0,     0,   275,
    2506      276,     0,   277,     0,     0,     0,     0,     0,     0,     0,
    2507      354,     0,     0,     0,     0,     0,   585,     0,     0,     0,
    2508        0,     0,     0,     0,     0,     0,     0,     0,   278,     0,
    2509        0,     0,     0,     0,   279,   629,     0,     0,   280,     0,
    2510      354,   281,   282,   272,   283,   284,   285,    43,    44,     0,
    2511      286,   287,     0,     0,     0,     0,     0,     0,     0,   354,
    2512        0,     0,     0,   352,     0,     0,     0,     0,     0,     0,
    2513        0,     0,     0,   288,     0,   377,     0,   353,     0,     0,
    2514        0,   336,    48,   290,   291,   292,   293,   670,     0,     0,
    2515        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2516        0,     0,     0,     0,   354,     0,     0,     0,     0,     0,
    2517        0,     0,     0,     0,     0,     0,     0,     0,   353,     0,
    2518        0,     0,     8,     9,    10,    11,    12,    13,    14,    15,
    2519       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2520       26,    27,     0,     0,    28,    29,    30,     0,     0,     0,
    2521      353,     0,     0,   353,    33,   894,     0,     0,   352,     0,
    2522      352,     0,     0,     0,     0,     0,   354,   354,   353,   353,
    2523      354,   353,   353,     0,     0,     0,     0,     0,     0,     0,
    2524        0,     0,    36,     0,     0,     0,     0,   352,     0,    40,
    2525       41,     0,     0,     0,     0,   352,   352,   352,     0,     0,
    2526        0,     0,   354,     0,     0,   354,   352,   352,   314,     0,
    2527        0,     0,   354,     0,   354,     0,     0,     0,   354,     0,
    2528        0,   354,   354,     0,     0,     0,     0,     0,   736,   353,
    2529      353,     0,   895,     0,    47,    48,     0,   354,     0,     0,
    2530        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2531        0,     0,     0,   785,   786,     0,   354,     0,     0,     0,
    2532        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2533        0,     0,   354,     0,     0,     0,     0,     0,     0,     0,
    2534        0,     0,     0,     0,     0,   354,   818,   354,     0,   821,
    2535      822,     0,   825,     0,   827,   828,     0,     0,     0,   830,
    2536      831,     0,   353,     0,     0,     0,     0,     0,     0,     0,
    2537        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2538        0,     0,     0,   354,     0,     0,     0,     0,     0,     0,
    2539        0,     0,     0,   352,     0,     0,     0,     0,     0,     0,
    2540        0,     0,     0,   873,     0,     0,     0,   877,     0,     0,
    2541        0,     0,     0,     0,     0,     0,     0,     0,     0,   354,
    2542        0,     0,   352,     0,     0,     0,     0,     0,     0,   354,
    2543      354,     0,     0,   354,     0,   354,   354,     0,     0,     0,
    2544        0,   354,     0,     0,     0,     0,     0,     0,     0,     0,
    2545      352,     0,   352,     0,     0,     0,     0,   353,     0,   353,
    2546        0,     0,     0,     0,     0,     8,     9,    10,    11,    12,
    2547       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2548       23,    24,    25,    26,    27,   352,   353,    28,    29,    30,
    2549      352,     0,   352,     0,   353,   353,   353,    33,     0,     0,
    2550        0,     0,     0,     0,     0,   353,   353,     0,     0,     0,
    2551        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2552        0,     0,     0,     0,     0,    36,     0,     0,     0,   354,
    2553        0,     0,    40,    41,     0,     0,     0,     0,     0,     0,
    2554     -541,     0,     0,     1,     2,     3,     4,     5,     6,     7,
     2731       0,     0,     0,     0,     0,     0,    41,    42,     0,     0,
     2732    -307,     0,     0,     1,   203,     3,     4,     5,     6,     7,
    25552733       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    25562734      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    2557      354,   247,    28,    29,    30,    31,     0,    47,    48,    32,
    2558        0,     0,    33,    34,     0,     0,     0,     0,     0,     0,
     2735      28,    29,    30,    31,     0,    47,    32,    33,    34,    35,
     2736       0,    48,    49,    36,     0,     0,    37,     0,     0,     0,
    25592737       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2560        0,     0,   354,     0,     0,   354,     0,    35,     0,     0,
    2561       36,     0,    37,     0,    38,    39,     0,    40,    41,    42,
    2562      354,   354,     0,   354,   354,     0,     0,     0,    43,    44,
    2563        0,     0,   353,     8,     9,    10,    11,    12,    13,    14,
     2738       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2739       0,     0,     0,     0,     0,     0,     0,     0,    41,    42,
     2740     203,     3,     4,     5,     6,     7,     8,     9,    10,    11,
     2741      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2742      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
     2743       0,     0,    32,    33,    34,     0,     0,    47,     0,     0,
     2744       0,     0,    37,    48,    49,     0,     0,     0,     0,     0,
     2745       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2746       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2747       0,     0,    40,     0,   204,    42,    43,     0,     0,     0,
     2748       0,     0,     0,     0,     0,    44,    45,     0,     0,     0,
     2749       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2750       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2751       0,    46,     0,   205,     0,     0,     0,     0,     0,    48,
     2752      49,   203,     3,     4,     5,     6,     7,     8,     9,    10,
     2753      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2754      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
     2755      31,     0,     0,   335,    33,    34,     0,     0,     0,     0,
     2756       0,     0,     0,    37,    10,    11,    12,    13,    14,    15,
     2757      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2758      26,    27,    28,    29,    30,    31,     0,     0,    32,    33,
     2759      34,   483,   484,   485,   486,    41,    42,     0,    37,     0,
     2760       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2761       0,     0,     0,     0,     0,     0,     0,     0,     0,  1337,
     2762       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2763      41,    42,     0,     0,   684,     0,     0,     0,     0,     0,
     2764      48,    49,   203,     3,     4,     5,     6,     7,     8,     9,
     2765      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2766      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
     2767      30,    31,     0,     0,   335,    33,    34,     0,     0,     0,
     2768       0,     0,     0,     0,    37,    10,    11,    12,    13,    14,
    25642769      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2565       25,    26,    27,  -307,    45,     0,    46,     0,     0,     0,
    2566        0,   353,    47,    48,     0,    33,     0,     0,     0,     0,
     2770      25,    26,    27,    28,    29,    30,    31,     0,     0,   335,
     2771      33,    34,     0,     0,     0,     0,    41,    42,     0,    37,
    25672772       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2568        0,   354,   354,     0,     0,     0,     0,     0,     0,   353,
    2569        0,   353,     0,    36,  1109,     0,     0,     0,     0,     0,
    2570        0,     0,     0,     0,  -307,     0,     0,     0,     0,     0,
    2571     1122,     0,     0,  1126,  1129,     0,     0,     0,     0,     0,
    2572        0,     0,     0,     0,   353,     0,     0,     0,     0,   353,
    2573        0,   353,     0,     8,     9,    10,    11,    12,    13,    14,
    2574       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2575       25,    26,    27,     0,   354,   334,    29,    30,     0,     0,
    2576        0,     0,     0,     0,     0,    33,     0,     0,     0,     0,
    25772773       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2578        0,     0,     0,     0,     0,     0,  1188,     0,     0,     0,
    2579        0,     0,     0,    36,     0,     0,     0,     0,     0,     0,
    2580      203,    41,     0,     0,  1205,  1206,     0,     0,     1,     2,
     2774    1339,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2775       0,    41,    42,     0,     0,   684,     0,     0,     0,     0,
     2776       0,    48,    49,   203,     3,     4,     5,     6,     7,     8,
     2777       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2778      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
     2779      29,    30,    31,     0,     0,   335,    33,    34,     0,     0,
     2780       0,     0,     0,     0,     0,    37,     0,     0,     0,     0,
     2781       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2782       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2783       0,     0,     0,     0,     0,     0,     0,   204,    42,   203,
    25812784       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    25822785      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2583       23,    24,    25,    26,    27,     0,     0,    28,    29,    30,
    2584       31,     0,     0,     0,    32,    47,    48,    33,    34,   354,
    2585        0,   354,     0,     0,     0,     0,     0,     0,     0,     0,
    2586        0,  1126,     0,     0,     0,     0,     0,     0,     0,     0,
    2587        0,     0,    35,     0,     0,    36,     0,    37,   354,    38,
    2588       39,     0,    40,    41,    42,     0,   354,   354,   354,     0,
    2589        0,     0,     0,    43,    44,     0,     0,   354,   354,     0,
     2786      23,    24,    25,    26,    27,    28,    29,    30,    31,     0,
     2787       0,   335,    33,    34,     0,     0,   261,     0,     0,     0,
     2788       0,    37,    48,    49,     0,     0,     0,     0,     0,     0,
    25902789       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2591        0,     0,     0,     0,     0,     0,     0,     0,     0,    45,
    2592        0,    46,     0,  1290,     0,  -545,     0,    47,    48,     0,
    25932790       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2594        0,     0,  1300,     0,     0,     0,     1,     2,   202,     4,
     2791       0,     0,     0,    41,    42,   203,     3,     4,     5,     6,
     2792       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2793      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     2794      27,    28,    29,    30,    31,     0,     0,    32,    33,    34,
     2795       0,     0,   684,     0,     0,     0,     0,    37,    48,    49,
     2796       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2797       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2798       0,     0,     0,     0,     0,     0,     0,     0,     0,   204,
     2799      42,     0,     0,     0,     0,     0,   464,   203,     3,     4,
    25952800       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    25962801      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2597       25,    26,    27,     0,     0,    28,    29,    30,    31,     0,
    2598        0,     0,    32,   275,   276,    33,  1001,  1002,     0,  1003,
    2599        0,     0,  1004,  1005,  1006,  1007,  1008,  1009,  1010,  1011,
    2600        0,     0,     0,  1012,     0,     0,     0,  1013,  1014,     0,
    2601     1015,     0,   278,    36,     0,    37,     0,    38,  1016,     0,
    2602     1017,  1018,  1019,     0,   354,   281,   282,   272,   283,   284,
    2603      285,    43,    44,     0,   286,   287,     0,     0,  1367,     0,
     2802      25,    26,    27,    28,    29,    30,    31,     0,   205,    32,
     2803      33,    34,     0,     0,    48,    49,     0,     0,     0,    37,
     2804       0,     0,     0,    10,    11,    12,    13,    14,    15,    16,
     2805      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     2806      27,    28,    29,    30,    31,     0,     0,    32,    33,    34,
     2807       0,    41,    42,     0,     0,   276,   277,    37,   278,     0,
    26042808       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2605        0,     0,     0,   354,     0,     0,     0,   288,     0,   289,
    2606        0,     0,   168,     0,     0,    47,    48,   290,   291,   292,
    2607      293,     0,     0,     0,     0,  1020,     0,     0,     0,     0,
    2608     -134,   354,     0,   354,     0,     0,     0,     0,     1,     2,
    2609      202,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     2809       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2810       0,     0,     0,     0,   279,     0,     0,   280,     0,    41,
     2811      42,   281,     0,    -3,   282,   283,   273,   284,   285,   286,
     2812      44,    45,     0,   287,   288,     0,     0,     0,     0,     0,
     2813       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2814       0,     0,     0,     0,     0,     0,   289,     0,   519,     0,
     2815       0,   169,     0,     0,    48,    49,   291,   292,   293,   294,
     2816      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2817      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
     2818      30,    31,     0,     0,    32,    33,    34,     0,     0,     0,
     2819       0,     0,   276,   277,    37,   278,     0,     0,     0,     0,
     2820       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2821       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2822       0,   279,     0,     0,   280,     0,    41,    42,   281,     0,
     2823       0,   282,   283,   273,   284,   285,   286,    44,    45,     0,
     2824     287,   288,     0,     0,     0,     0,     0,     0,     0,     0,
     2825       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2826       0,     0,     0,   289,   -40,   290,     0,     0,     0,     0,
     2827       0,    48,    49,   291,   292,   293,   294,    10,    11,    12,
    26102828      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2611       23,    24,    25,    26,    27,     0,   354,    28,    29,    30,
    2612       31,   354,     0,   354,    32,   275,   276,    33,   277,     8,
     2829      23,    24,    25,    26,    27,    28,    29,    30,    31,     0,
     2830       0,    32,    33,    34,     0,     0,     0,     0,     0,   276,
     2831     277,    37,   278,     0,     0,     0,     0,     0,     0,     0,
     2832       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2833       0,     0,     0,     0,     0,     0,     0,     0,   279,     0,
     2834       0,   280,     0,    41,    42,   281,     0,     0,   282,   283,
     2835     273,   284,   285,   286,    44,    45,     0,   287,   288,     0,
     2836       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2837       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2838     289,     0,   290,     0,     0,     0,     0,     0,    48,    49,
     2839     291,   292,   293,   294,    10,    11,    12,    13,    14,    15,
     2840      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2841      26,    27,    28,    29,    30,    31,     0,     0,   335,    33,
     2842      34,     0,     0,     0,     0,     0,   276,   277,    37,   278,
     2843       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2844       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2845       0,     0,     0,     0,     0,   279,     0,     0,   280,     0,
     2846      41,    42,   281,     0,     0,   282,   283,   273,   284,   285,
     2847     286,    44,    45,     0,   287,   288,     0,     0,     0,     0,
     2848       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2849       0,     0,     0,     0,     0,     0,     0,   289,     0,   336,
     2850       0,     0,     0,     0,     0,    48,    49,   291,   292,   293,
     2851     294,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2852      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
     2853      29,    30,    31,     0,     0,   335,    33,    34,     0,     0,
     2854       0,     0,     0,   276,   277,    37,   278,     0,     0,     0,
     2855       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2856       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2857       0,     0,   279,     0,     0,   280,     0,    41,    42,   281,
     2858       0,     0,   282,   283,   273,   284,   285,   286,    44,    45,
     2859       0,   287,   288,     0,     0,     0,     0,     0,     0,     0,
     2860       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2861       0,     0,     0,     0,   289,     0,   378,     0,     0,     0,
     2862       0,     0,    48,    49,   291,   292,   293,   294,   203,     3,
     2863       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     2864      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2865      24,    25,    26,    27,    28,    29,    30,    31,     0,     0,
     2866     335,    33,    34,     0,     0,     0,     0,     0,     0,     0,
     2867      37,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2868      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
     2869      29,    30,    31,     0,     0,    32,    33,    34,     0,     0,
     2870       0,     0,    41,    42,     0,    37,     0,     0,     0,     0,
     2871       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2872       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2873       0,     0,     0,     0,     0,    40,     0,   204,    42,    43,
     2874    -440,     0,     0,     0,     0,     0,     0,     0,    44,    45,
     2875       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2876       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2877       0,     0,     0,     0,    46,     0,   261,     0,     0,     0,
     2878       0,     0,    48,    49,    10,    11,    12,    13,    14,    15,
     2879      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2880      26,    27,    28,    29,    30,    31,     0,     0,    32,    33,
     2881      34,     0,     0,     0,     0,     0,     0,     0,    37,    10,
     2882      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2883      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
     2884      31,     0,     0,    32,    33,    34,     0,     0,   112,     0,
     2885      41,    42,     0,    37,   895,     0,     0,     0,     0,     0,
     2886       0,    44,    45,     0,     0,     0,     0,     0,     0,     0,
     2887       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2888       0,     0,     0,     0,     0,    41,    42,     0,     0,    47,
     2889       0,     0,     0,     0,     0,    48,    49,     0,     0,     0,
     2890       0,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2891      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
     2892      29,    30,    31,     0,   737,    32,    33,    34,   896,     0,
     2893      48,    49,     0,     0,     0,    37,   895,    10,    11,    12,
     2894      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2895      23,    24,    25,    26,    27,    28,    29,    30,    31,     0,
     2896       0,    32,    33,    34,     0,     0,     0,    41,    42,     0,
     2897       0,    37,   895,    10,    11,    12,    13,    14,    15,    16,
     2898      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     2899      27,    28,    29,    30,    31,     0,     0,    32,    33,    34,
     2900       0,     0,     0,    41,    42,     0,   737,    37,     0,     0,
     2901    1209,     0,    48,    49,     0,     0,     0,     0,     0,     0,
     2902       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2903       0,     0,     0,     0,     0,     0,     0,     0,     0,    41,
     2904      42,     0,   737,     0,     0,     0,  1295,     0,    48,    49,
     2905       0,     0,     0,     0,     0,    10,    11,    12,    13,    14,
     2906      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2907      25,    26,    27,    28,    29,    30,    31,     0,    47,    32,
     2908      33,    34,     0,     0,    48,    49,     0,     0,     0,    37,
     2909      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2910      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
     2911      30,    31,     0,     0,    32,    33,    34,     0,     0,     0,
     2912       0,   204,    42,     0,    37,    10,    11,    12,    13,    14,
     2913      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2914      25,    26,    27,    28,    29,    30,    31,     0,     0,   335,
     2915      33,    34,     0,     0,     0,     0,    41,    42,     0,    37,
     2916     261,     0,     0,     0,     0,     0,    48,    49,     0,     0,
     2917       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2918       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2919       0,    41,    42,     0,     0,   331,     0,     0,     0,     0,
     2920       0,    48,    49,     0,     0,     0,     0,    10,    11,    12,
     2921      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2922      23,    24,    25,    26,    27,    28,    29,    30,    31,     0,
     2923     248,   335,    33,    34,     0,     0,    48,    49,     0,     0,
     2924       0,    37,    10,    11,    12,    13,    14,    15,    16,    17,
     2925      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     2926      28,    29,    30,    31,     0,     0,    32,    33,    34,     0,
     2927       0,     0,     0,    41,    42,     0,    37,    10,    11,    12,
     2928      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2929      23,    24,    25,    26,    27,    28,    29,    30,    31,     0,
     2930       0,   335,    33,    34,     0,     0,     0,     0,    41,    42,
     2931       0,    37,   331,     0,     0,     0,     0,     0,    48,    49,
     2932       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2933       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2934       0,     0,     0,   204,    42,     0,     0,   737,     0,     0,
     2935       0,     0,     0,    48,    49,     0,     0,     0,     0,    10,
     2936      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2937      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
     2938      31,     0,   261,   335,    33,    34,     0,     0,    48,    49,
     2939       0,     0,     0,    37,    10,    11,    12,    13,    14,    15,
     2940      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2941      26,    27,    28,    29,    30,    31,     0,     0,   335,    33,
     2942      34,     0,     0,     0,     0,    41,    42,     0,    37,    10,
     2943      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2944      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
     2945      31,     0,     0,    32,    33,    34,     0,     0,     0,     0,
     2946      41,    42,     0,    37,   684,     0,     0,     0,     0,     0,
     2947      48,    49,     0,     0,     0,     0,     0,     0,     0,     0,
     2948       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2949       0,     0,     0,     0,     0,   204,    42,     0,     0,   737,
     2950       0,     0,     0,     0,     0,    48,    49,   203,     3,     4,
     2951       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     2952      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2953      25,    26,    27,    28,    29,    30,    31,     0,     0,   335,
     2954      33,    34,     0,     0,   276,   277,     0,   278,  1003,    37,
     2955    1004,     0,     0,  1005,  1006,  1007,  1008,  1009,  1010,  1011,
     2956    1012,     0,     0,  1530,  1013,     0,     0,     0,  1014,  1015,
     2957       0,  1016,     0,   279,     0,     0,  1017,     0,   172,   173,
     2958    1020,    41,    42,   282,   283,   273,   284,   285,   286,    44,
     2959      45,     0,   287,   288,     0,     0,     0,     0,     0,     0,
     2960       0,     0,     0,     0,     0,  1302,     0,     0,     0,     0,
     2961       0,     0,     0,     0,     0,   289,     0,   378,     0,     0,
     2962     169,     0,     0,    48,    49,   291,   292,   293,   294,     0,
     2963       0,   276,   277,  1021,   278,  1003,     0,  1004,  -134,     0,
     2964    1005,  1006,  1007,  1008,  1009,  1010,  1011,  1012,     0,     0,
     2965       0,  1013,     0,     0,     0,  1014,  1015,     0,  1016,     0,
     2966     279,     0,     0,  1017,     0,   172,   173,  1020,     0,     0,
     2967     282,   283,   273,   284,   285,   286,    44,    45,     0,   287,
     2968     288,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2969       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2970       0,     0,   289,     0,   378,     0,     0,   169,     0,     0,
     2971      48,    49,   291,   292,   293,   294,     0,     0,     0,     0,
     2972    1021,     0,     0,   276,   277,  -134,   278,  1003,     0,  1004,
     2973    1389,  1390,  1005,  1006,  1007,  1008,  1009,  1010,  1011,  1012,
     2974       0,     0,  1530,  1013,     0,     0,     0,  1014,  1015,     0,
     2975    1016,     0,   279,     0,     0,  1017,     0,   172,   173,  1020,
     2976       0,     0,   282,   283,   273,   284,   285,   286,    44,    45,
     2977       0,   287,   288,     0,     0,     0,     0,     0,     0,     0,
     2978       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2979       0,     0,     0,     0,   289,     0,   378,     0,     0,   169,
     2980       0,     0,    48,    49,   291,   292,   293,   294,     0,     0,
     2981     276,   277,  1021,   278,  1003,     0,  1004,  1389,  1390,  1005,
     2982    1006,  1007,  1008,  1009,  1010,  1011,  1012,     0,     0,     0,
     2983    1013,     0,     0,     0,  1014,  1015,     0,  1016,     0,   279,
     2984       0,     0,  1017,     0,   172,   173,  1020,     0,     0,   282,
     2985     283,   273,   284,   285,   286,    44,    45,     0,   287,   288,
     2986       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2987       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2988       0,   289,     0,   378,     0,     0,   169,     0,     0,    48,
     2989      49,   291,   292,   293,   294,     0,     0,   276,   277,  1021,
     2990     278,  1003,     0,  1004,     0,     0,  1005,  1006,  1007,  1008,
     2991    1009,  1010,  1011,  1012,     0,     0,     0,  1013,     0,     0,
     2992       0,  1014,  1015,     0,  1016,     0,   279,     0,     0,  1017,
     2993       0,   172,   173,  1020,     0,     0,   282,   283,   273,   284,
     2994     285,   286,    44,    45,     0,   287,   288,     0,     0,     0,
     2995       0,     0,     0,   276,   277,     0,   278,     0,     0,     0,
     2996       0,     0,     0,     0,     0,     0,     0,     0,   289,     0,
     2997     378,   276,   277,   169,   278,     0,    48,    49,   291,   292,
     2998     293,   294,   279,     0,     0,   280,  1021,     0,     0,   281,
     2999       0,     0,   282,   283,   273,   284,   285,   286,    44,    45,
     3000     279,   287,   288,   280,     0,     0,     0,   281,     0,     0,
     3001     282,   283,   273,   284,   285,   286,    44,    45,     0,   287,
     3002     288,     0,     0,     0,   516,     0,   378,   276,   277,     0,
     3003     278,     0,    48,    49,   291,   292,   293,   294,     0,     0,
     3004       0,     0,   289,     0,   378,     0,     0,     0,     0,     0,
     3005     704,    49,   291,   292,   293,   294,   279,     0,     0,   280,
     3006       0,     0,     0,   281,     0,     0,   282,   283,   273,   284,
     3007     285,   286,    44,    45,     0,   287,   288,     0,     0,     0,
     3008       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     3009       0,     0,     0,     0,     0,     0,     0,     0,   289,     0,
     3010     378,     0,     0,     0,     0,     0,   337,    49,   291,   292,
     3011     293,   294,   202,   203,     3,     4,     5,     6,     7,     8,
    26133012       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2614       19,    20,    21,    22,    23,    24,    25,    26,    27,  -308,
    2615        0,     0,     0,     0,   278,    36,     0,    37,     0,    38,
    2616      279,    33,    40,    41,   280,     0,     0,   281,   282,   272,
    2617      283,   284,   285,    43,    44,     0,   286,   287,     0,     0,
    2618        0,     0,     0,     0,     0,     0,     0,     0,     0,    36,
    2619        0,     0,     0,     0,     0,     0,     0,     0,     0,   288,
    2620     -308,   289,     0,     0,     0,     0,     0,    47,    48,   290,
    2621      291,   292,   293,     0,     0,     0,     0,     0,     0,     0,
    2622        0,     0,  -134,     1,     2,   202,     4,     5,     6,     7,
     3013      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
     3014      29,    30,    31,     0,     0,    32,    33,    34,     0,     0,
     3015       0,     0,     0,     0,     0,    37,   464,   203,     3,     4,
     3016       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     3017      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3018      25,    26,    27,    28,    29,    30,    31,   204,    42,    32,
     3019      33,    34,     0,     0,     0,     0,     0,     0,     0,    37,
     3020       0,   203,     3,     4,     5,     6,     7,     8,     9,    10,
     3021      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3022      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
     3023      31,    41,    42,   335,    33,    34,     0,     0,     0,     0,
     3024       0,     0,     0,    37,     0,   203,     3,     4,     5,     6,
     3025       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     3026      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3027      27,    28,    29,    30,    31,   204,    42,    32,    33,    34,
     3028       0,     0,     0,     0,     0,     0,     0,    37,     0,     0,
     3029       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     3030       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     3031       0,     0,     0,     0,     0,     0,     0,     0,     0,   204,
     3032      42
     3033};
     3034
     3035#define yypact_value_is_default(yystate) \
     3036  ((yystate) == (-1376))
     3037
     3038#define yytable_value_is_error(yytable_value) \
     3039  YYID (0)
     3040
     3041static const yytype_int16 yycheck[] =
     3042{
     3043       0,     1,     0,    46,     0,   181,    46,   201,     1,    46,
     3044     343,  1051,  1051,   181,   480,   452,   181,   118,   181,   216,
     3045       1,   533,   342,   181,   342,   569,   181,   652,   181,   166,
     3046     167,   984,   985,   866,   247,    35,    36,   601,    38,  1053,
     3047      38,     0,    38,  1051,   184,   604,    46,   494,     1,   623,
     3048     515,   498,    52,   985,    52,   417,    38,   866,  1312,    59,
     3049      46,   604,   601,    46,    64,  1389,    64,    67,   601,    67,
     3050      70,  1270,    70,    58,   436,   605,  1011,   901,    91,    38,
     3051     256,   611,   444,    70,   107,    46,    46,   144,   256,    70,
     3052     182,   256,   601,   256,   601,    46,   182,   198,   256,    52,
     3053     115,   256,    46,   256,   601,    85,   119,    46,   108,   643,
     3054     289,   111,   252,   253,   601,  1444,   364,    85,   118,   338,
     3055     368,   136,    34,    52,   658,   344,   126,  1502,   723,   118,
     3056     115,   154,   115,    71,   117,     0,     1,   117,   181,   115,
     3057    1464,   181,    59,   338,   181,   364,   146,   120,   146,   368,
     3058     948,   138,     0,  1482,   107,  1484,   117,   102,   158,  1534,
     3059     158,  1415,   115,   289,  1502,   257,   115,   487,   117,  1002,
     3060      82,   257,   706,    38,  1014,  1015,   115,   115,   117,  1098,
     3061     115,   181,   182,   128,   182,  1199,   115,   115,     0,  1527,
     3062      38,   108,   145,  1002,   111,   181,  1534,   995,   198,   425,
     3063     426,   154,    51,    52,   417,    70,   206,   714,   206,     0,
     3064       1,   101,   409,   256,     0,   215,   256,   714,   218,   256,
     3065     218,   181,   734,   436,  1048,   225,    38,   714,    51,    52,
     3066     181,   444,   115,   116,  1433,   235,   489,   801,   238,   115,
     3067     784,  1440,   242,   243,   242,   135,   242,    38,   122,   202,
     3068     243,   113,    38,   206,  1094,   814,   256,   257,   591,   257,
     3069     242,   137,   801,   263,   138,     0,   266,     3,   801,    46,
     3070     496,   814,   121,   803,  1393,   137,    67,   206,   744,    70,
     3071    1212,   102,   225,   242,    70,   480,   604,    46,   247,   515,
     3072      46,   115,   801,   626,   801,   238,   921,   120,   215,   425,
     3073     426,  1500,   635,    38,   801,  1258,  1259,   128,   122,   262,
     3074     333,   403,   265,  1232,   801,  1234,  1235,   403,   556,   557,
     3075     558,   559,   423,   323,   138,   323,   688,  1259,   429,   508,
     3076       3,   510,    67,   262,   513,  1270,   289,   516,   115,   587,
     3077     117,   341,   342,    51,    52,   909,   263,  1180,   301,   122,
     3078     576,   910,   122,   606,   116,     0,   115,   610,   117,   115,
     3079     693,   117,     0,   616,   155,   365,   136,   116,   587,   369,
     3080     909,  1180,   301,   122,   136,   708,   909,   242,  1497,   379,
     3081     333,   122,   508,  1502,   637,     0,   478,   513,   641,   963,
     3082     516,   639,   478,    38,   242,   137,   116,   138,  1485,   247,
     3083     115,    46,  1489,   403,   623,   403,   116,    52,  1527,   115,
     3084     278,   117,   120,  1348,   633,  1534,   136,   123,   124,    64,
     3085     639,   115,    67,   423,   341,    70,   136,   218,   623,   429,
     3086     242,   137,  1385,   301,   302,   247,   115,  1270,   633,   122,
     3087     122,   567,   972,   973,   134,    52,   115,   137,   365,   115,
     3088      46,   242,   369,  1385,   136,   138,   242,  1052,   417,     0,
     3089       1,   247,  1476,   796,   464,   931,  1506,  1506,  1093,   469,
     3090     338,   464,   425,   426,   115,   688,   923,   436,   478,   338,
     3091     478,   946,   482,   218,   482,   444,   482,   487,   925,   702,
     3092     490,   115,    67,  1507,   814,   495,   814,    38,  1506,   452,
     3093     122,   146,  1437,    46,  1439,   364,    85,   242,   115,   368,
     3094       0,   464,   380,   158,   136,  1074,   653,    76,  1316,   115,
     3095      46,   117,  1536,   482,   480,   116,    67,   527,   116,    70,
     3096      89,    90,   532,   117,   527,   119,   181,   182,   145,   532,
     3097    1057,   494,  1059,   496,   119,   498,   794,   116,    38,   744,
     3098      46,    46,   136,  1148,  1149,   508,   115,   510,   117,   660,
     3099     513,   206,   515,   516,   116,   122,  1501,    46,    46,   417,
     3100     671,   115,   115,   218,   117,   794,    57,   122,   797,  1377,
     3101    1378,   138,   122,   158,   837,   116,   586,    12,   436,   115,
     3102     122,   117,   116,   138,   914,   115,   444,   242,   138,   206,
     3103    1433,   601,   125,   126,   604,   417,   138,  1440,   343,  1467,
     3104     122,   256,   642,   643,   121,  1473,   673,   482,    99,   115,
     3105     115,   117,   117,   576,   436,   625,   138,   115,   658,   588,
     3106     630,   417,   444,   966,   482,   122,   115,   115,   117,   117,
     3107     431,  1499,    71,   218,   644,   115,  1504,   117,   648,  1115,
     3108     436,    76,   115,    78,    79,   262,   853,   657,   444,   659,
     3109     660,   661,   915,    96,    97,   118,   659,  1500,   661,   122,
     3110     482,   671,   122,   122,   122,   250,   706,   218,   323,   122,
     3111     255,   549,   550,   551,   115,   471,   642,   643,   138,   138,
     3112     138,   482,    94,    95,   301,   138,   482,   342,   131,   132,
     3113     700,   242,   658,   115,   138,   117,    76,   700,   625,   190,
     3114      80,   123,   124,   120,   714,   715,   138,   122,   116,    89,
     3115      90,   721,   859,   138,   122,   725,   118,   644,   587,   688,
     3116     122,   338,   213,   138,   525,   470,   931,   120,   691,   116,
     3117     657,   881,   223,   702,   963,   115,  1212,   482,    85,   116,
     3118     706,   115,   242,   123,   124,   122,    76,   247,   403,    76,
     3119      80,   116,   691,    80,   623,   718,   115,   122,   963,    89,
     3120      90,   123,    89,    90,   633,   116,  1288,   129,   130,    76,
     3121     639,   122,   976,    71,    59,   124,    74,   133,   744,    77,
     3122     134,    79,    89,    90,  1389,   115,    76,   588,   115,    87,
     3123     117,   801,    76,   123,   124,   897,   123,   124,   289,    89,
     3124      90,   897,   118,   118,   814,    89,    90,   122,   425,   426,
     3125     117,    76,   100,    78,    79,    76,   116,    78,    79,    80,
     3126      98,    99,   122,   108,    89,    90,   111,   482,    89,    90,
     3127     688,   117,   487,   117,   116,   452,   138,  1044,   118,   118,
     3128     122,   642,   643,   122,   702,   430,  1451,   116,   116,   859,
     3129     997,   115,   117,   122,   122,   865,   866,   658,  1463,  1464,
     3130     866,   121,   122,    87,   116,  1051,   688,    91,    92,    93,
     3131     748,   118,   116,  1051,   116,   122,  1051,   138,  1051,   496,
     3132     702,   626,  1487,  1051,   116,   470,  1051,   897,  1051,   116,
     3133     900,   115,   688,   117,   116,   119,   120,   866,   515,    76,
     3134     122,    78,    79,   116,   914,   706,   702,   115,   118,   117,
     3135    1115,   209,    89,    90,   116,   123,   124,   417,   116,   120,
     3136     122,   890,   932,   117,   122,   794,   116,   117,   938,   932,
     3137     215,   482,   895,   924,   944,   120,   436,   137,   948,    65,
     3138      66,   944,   122,   120,   444,   948,   601,  1049,   693,   604,
     3139     441,  1053,   120,  1049,  1559,   137,   895,  1053,   703,   576,
     3140     923,   924,   925,   708,   115,   931,    76,   155,    78,    79,
     3141      80,   116,   138,  1084,    76,   466,   116,   122,   263,    89,
     3142      90,    83,   482,   116,    86,   995,    88,    89,    90,   122,
     3143     136,   866,   995,   121,   122,  1005,  1002,   116,  1008,  1009,
     3144    1010,    76,   118,    78,    79,   116,   623,  1212,   866,    51,
     3145      52,   122,   118,   116,    89,    90,   633,   508,   984,   122,
     3146     118,   116,   513,  1159,  1160,   516,  1162,   122,   138,  1039,
     3147     116,   116,  1168,  1002,   122,  1171,   122,   122,    35,  1049,
     3148     115,  1051,   136,  1053,   866,   120,   136,   345,   346,   924,
     3149     348,   796,   350,  1099,  1100,  1065,   341,   552,   553,   714,
     3150     715,   115,   116,   117,   362,   866,   115,   116,   117,   116,
     3151     866,   115,   116,   117,  1084,   116,  1523,   115,   116,   117,
     3152     365,  1008,  1009,  1010,   369,   963,   120,    87,  1098,   890,
     3153     116,    91,    92,    93,   963,  1098,   121,  1199,   121,    76,
     3154     121,    78,    79,  1199,   122,  1068,    65,    66,    67,   115,
     3155      52,   116,    89,    90,   116,   115,   120,   117,   703,   119,
     3156     120,   866,    64,   924,  1002,    67,   122,  1002,    70,  1068,
     3157     554,   555,   560,   561,  1477,   116,   116,   116,   115,   122,
     3158     116,   116,   440,   120,  1002,  1155,   801,   116,   116,  1115,
     3159       4,     5,     6,     7,     8,     9,    10,    11,   116,   814,
     3160     116,   116,    12,    13,    14,    15,    16,    17,    18,   116,
     3161    1180,     0,     1,    76,  1180,    78,    79,    80,   116,    76,
     3162    1002,    78,    79,   984,   985,   676,    89,    90,   688,  1199,
     3163     116,   116,    89,    90,   685,   116,    46,   116,   689,  1301,
     3164      35,  1002,   702,   121,   146,  1301,  1002,   137,  1344,    38,
     3165     116,  1180,   115,  1442,   116,  1444,   158,    46,   122,   118,
     3166    1287,   966,  1232,    52,  1234,  1235,  1217,   118,  1191,  1232,
     3167     116,  1234,  1235,   116,   122,    64,   120,   116,    67,   116,
     3168     182,    70,   897,   431,   122,    12,    13,    14,    15,    16,
     3169      17,    18,  1191,  1482,  1217,  1484,   122,  1002,    76,   914,
     3170      78,    79,    80,  1374,   206,   115,   115,   117,   116,   115,
     3171     115,    89,    90,   123,   124,   115,   218,   115,   107,    46,
     3172      13,  1291,   138,   136,   138,   136,   115,   134,   122,   118,
     3173     119,  1301,  1258,   136,  1361,   121,    76,   115,    78,    79,
     3174      80,  1270,   116,   136,   116,  1180,  1316,   116,   925,    89,
     3175      90,   136,   120,  1316,   121,   866,   145,   146,   121,   116,
     3176    1506,  1312,  1180,   118,   122,   154,   155,   118,  1506,   158,
     3177     116,  1506,  1342,  1506,   116,  1345,    54,   525,  1506,   116,
     3178     625,  1506,  1217,  1506,   118,  1412,   963,   118,   115,  1312,
     3179     117,   116,   181,   182,   118,   118,   123,   124,  1180,   644,
     3180    1351,   118,   118,  1373,  1374,  1476,   866,  1377,  1378,   198,
     3181     138,   121,   657,   924,  1377,  1378,   138,   206,   138,  1180,
     3182     138,   323,   116,  1393,  1180,   138,   116,   116,  1398,   218,
     3183      76,   116,    78,    79,  1049,  1270,  1051,   461,  1053,   121,
     3184     588,   892,   121,    89,    90,  1507,    76,   118,    78,    79,
     3185      80,  1507,  1270,   242,    87,   118,  1217,  1427,  1485,    89,
     3186      90,   250,  1489,  1490,  1415,   118,   255,   256,   257,   118,
     3187     118,   118,   116,   262,  1536,  1180,   116,  1312,   115,   118,
     3188    1536,   115,    67,   115,   115,   120,  1373,   116,  1270,   116,
     3189    1517,  1002,  1415,  1506,   642,   643,  1506,  1258,  1259,  1506,
     3190     289,   403,    36,   118,  1433,   118,  1476,   116,  1478,  1270,
     3191     658,  1440,   301,  1540,  1270,  1478,  1351,  1544,   866,     4,
     3192       5,     6,     7,     8,     9,    10,    11,  1497,   317,   118,
     3193     116,   102,  1502,   102,   323,   115,  1506,  1507,   115,  1507,
     3194     138,  1568,  1002,  1442,   333,  1444,   121,    49,   116,   338,
     3195     116,  1312,   116,   342,   343,  1525,   116,  1527,   706,   122,
     3196     136,  1531,  1013,   116,  1534,  1270,  1536,   116,  1536,   102,
     3197     102,  1500,   118,   138,   116,   364,   138,  1547,   136,   368,
     3198    1415,  1551,   138,  1482,  1199,  1484,   138,   138,   116,  1350,
     3199    1351,   136,   126,   115,   186,  1351,   122,   121,  1433,  1569,
     3200    1523,   193,   118,    67,   118,  1440,  1569,   138,   118,   138,
     3201    1580,   116,    76,   121,   403,  1433,   115,  1580,     3,   116,
     3202     121,   866,  1440,   116,  1385,   136,   116,    12,    13,    14,
     3203      15,    16,    17,    18,   423,   138,   425,   426,   116,  1400,
     3204     429,   116,   431,   115,   138,  1350,   116,   138,  1021,   138,
     3205     562,  1433,   563,   677,  1415,   119,   564,  1005,  1440,   565,
     3206     943,    46,   566,   452,  1180,  1500,  1464,   259,    55,  1180,
     3207      57,  1353,  1433,    60,    61,    62,  1551,  1433,  1280,  1440,
     3208     469,  1490,  1500,  1544,  1440,  1440,  1301,  1039,  1049,   478,
     3209      77,   480,   723,   482,   158,  1400,   895,  1301,   487,  1059,
     3210     725,   235,     3,    90,    91,   938,  1217,   496,   917,    67,
     3211     859,    12,    13,    14,    15,    16,    17,    18,  1500,   508,
     3212    1180,   510,   654,   718,   513,   317,   515,   516,  1433,  1217,
     3213     916,    -1,   266,   482,   326,  1440,   525,   329,   568,  1500,
     3214     733,   568,   890,   568,  1500,    46,    -1,   778,    -1,    -1,
     3215      -1,    -1,    -1,    -1,   218,    -1,   780,    -1,    -1,  1270,
     3216    1005,   119,    -1,  1008,  1009,  1010,   790,   791,    -1,    -1,
     3217      76,    -1,    78,    79,    80,    -1,    -1,    -1,   802,   568,
     3218     569,    -1,    -1,    89,    90,   677,   250,   576,    -1,    -1,
     3219      -1,   255,    -1,    -1,    -1,  1500,   183,    -1,   587,   588,
     3220     158,  1312,   591,   395,    -1,  1350,    -1,   399,    -1,   115,
     3221    1270,   117,   601,    -1,    -1,   604,    -1,   123,   124,    -1,
     3222      -1,    -1,    -1,    -1,   855,    -1,    -1,    -1,  1279,    -1,
     3223      -1,   137,  1180,    -1,   623,    -1,   984,   985,    -1,  1350,
     3224    1351,    -1,    -1,    -1,   633,   379,   635,    -1,    -1,    -1,
     3225     639,    -1,    -1,   642,   643,  1400,    -1,    -1,    -1,    -1,
     3226     218,    76,    -1,    78,    79,    80,    -1,    -1,    -1,   658,
     3227      -1,   660,    -1,    -1,    89,    90,    -1,   235,    -1,   343,
     3228      -1,    -1,   671,    -1,    -1,   477,    -1,    -1,   780,  1400,
     3229      -1,  1506,   250,    -1,    -1,    -1,    -1,   255,   790,   791,
     3230     115,    -1,   691,    -1,  1415,    -1,    -1,    -1,   123,   124,
     3231     802,    -1,    -1,    -1,    -1,    -1,    -1,   706,   707,   708,
     3232     951,    -1,  1433,    -1,    -1,   714,   715,    -1,    76,  1440,
     3233      78,    79,    80,    -1,    -1,  1180,    -1,    -1,    -1,    -1,
     3234      -1,    89,    90,  1291,    -1,    -1,  1523,    -1,    -1,    -1,
     3235     337,    -1,   339,    -1,    -1,   744,   490,   981,   982,    -1,
     3236      -1,   495,    -1,    -1,    -1,    -1,   430,    -1,   999,   356,
     3237     357,    -1,    -1,  1433,    76,   123,   568,   569,    -1,    -1,
     3238    1440,    83,   446,    -1,    86,   343,    88,    89,    90,  1500,
     3239    1441,    -1,  1443,    -1,  1342,   784,    76,  1345,    78,    79,
     3240      80,    -1,    -1,    -1,    -1,   794,   470,   796,    -1,    89,
     3241      90,    -1,   801,    -1,    -1,   117,    -1,    -1,  1042,  1043,
     3242      76,  1052,    78,    79,    80,   814,    -1,    -1,    -1,    -1,
     3243    1481,    -1,  1483,    89,    90,   115,    -1,   117,    -1,    -1,
     3244    1500,    76,    -1,   123,   124,  1393,  1291,    -1,    83,    -1,
     3245    1398,    86,   586,    88,    89,    90,   136,    -1,    -1,   115,
     3246      -1,   117,  1210,    -1,    -1,    -1,    -1,   123,   124,    -1,
     3247     662,    -1,   430,    -1,   666,    -1,    -1,   866,    -1,  1427,
     3248      -1,    76,   117,    -1,  1535,    -1,  1537,    -1,    83,   981,
     3249     982,    86,    -1,    88,    89,    90,   630,  1342,    -1,    -1,
     3250    1345,   890,    -1,    -1,  1555,  1556,   895,    -1,   897,    -1,
     3251    1258,  1259,   470,    -1,   648,    -1,    -1,  1148,  1149,    -1,
     3252     909,   910,   117,    -1,    -1,   914,    -1,   591,  1373,    -1,
     3253      -1,    -1,    -1,    -1,    -1,   924,   925,    -1,    -1,    -1,
     3254      -1,    76,   931,    78,    79,    80,    -1,    -1,  1393,    -1,
     3255    1042,  1043,    -1,  1398,    89,    90,    -1,    -1,    -1,    -1,
     3256      -1,    -1,   626,    -1,    12,    13,    14,    15,    16,    17,
     3257      18,   635,    -1,    -1,   963,    -1,    -1,  1525,    -1,    -1,
     3258     115,    -1,  1427,  1531,    -1,    -1,  1210,   721,   123,   124,
     3259      -1,   725,   784,    -1,    -1,   984,   985,    -1,    46,  1547,
     3260      -1,    -1,    -1,  1551,    -1,    -1,    76,    -1,    78,    79,
     3261      80,    -1,    -1,  1002,    -1,  1239,    -1,    -1,    -1,    89,
     3262      90,    -1,    -1,  1247,  1248,  1249,    -1,    -1,    76,   693,
     3263      78,    79,    80,   591,    -1,    -1,    -1,  1385,    -1,   703,
     3264      -1,    89,    90,    -1,   708,   115,    -1,   117,    -1,    -1,
     3265      -1,    -1,  1497,   123,   124,    -1,    -1,  1502,    -1,    -1,
     3266    1049,    -1,  1051,    -1,  1053,    -1,    -1,   115,   626,   117,
     3267      -1,    -1,   630,    -1,    -1,   123,   124,   635,    -1,  1068,
     3268    1525,    -1,  1527,    -1,    -1,  1074,  1531,    -1,    -1,  1534,
     3269      -1,    -1,    -1,    -1,    -1,  1084,    -1,    -1,    -1,    -1,
     3270      -1,    -1,  1547,    -1,    -1,    -1,  1551,   694,    -1,   696,
     3271      -1,    -1,    -1,    -1,    -1,    -1,    -1,   704,   705,    -1,
     3272      -1,    -1,   709,    -1,    -1,   859,  1115,    -1,    -1,    -1,
     3273      -1,   865,   796,    -1,    -1,   693,    -1,    -1,    -1,   726,
     3274      -1,    -1,    -1,    -1,   731,   703,    -1,  1239,    -1,    -1,
     3275     708,    -1,    -1,    -1,    -1,  1247,  1248,  1249,  1389,    -1,
     3276       3,   953,    -1,   750,    -1,    -1,   900,    -1,    -1,    12,
     3277      13,    14,    15,    16,    17,    18,    -1,   969,    -1,    -1,
     3278      12,    13,    14,    15,    16,    17,    18,    -1,    -1,    -1,
     3279    1414,  1180,     4,     5,     6,     7,     8,     9,    10,    11,
     3280      -1,    -1,  1191,    46,   938,    -1,    -1,    -1,    -1,    -1,
     3281    1199,    -1,    -1,    -1,    46,    -1,    -1,    -1,    -1,    -1,
     3282    1451,    -1,    -1,  1212,    -1,    -1,    -1,    39,  1217,    -1,
     3283      -1,    -1,  1463,  1464,    -1,    -1,    -1,    -1,   796,    -1,
     3284      -1,    -1,    -1,    -1,    76,    -1,    78,    79,    80,    -1,
     3285      -1,    -1,    -1,    -1,    -1,    -1,  1487,    89,    90,    -1,
     3286      -1,   848,    -1,   850,   851,   852,  1058,    -1,    -1,  1258,
     3287    1259,    -1,    12,    13,    14,    15,    16,    17,    18,    -1,
     3288      -1,  1270,   869,   115,    -1,   117,    -1,    -1,    -1,    -1,
     3289      -1,   123,   124,    -1,    -1,    -1,    -1,    -1,   885,    -1,
     3290      -1,    -1,   966,    -1,    -1,  1039,    46,    -1,    -1,    -1,
     3291      -1,    -1,  1301,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3292      -1,   908,  1414,  1312,    -1,    -1,    -1,    -1,  1559,    -1,
     3293      -1,  1065,   103,   104,   105,   106,   107,   108,   109,   110,
     3294     111,   112,   113,    -1,    -1,    12,    13,    14,    15,    16,
     3295      17,    18,    -1,    -1,    -1,   942,    -1,    -1,    -1,    -1,
     3296     947,  1350,  1351,    -1,    -1,   952,   137,    -1,    -1,    -1,
     3297     957,   958,    -1,    -1,    -1,   962,    -1,   964,   965,    46,
     3298      -1,   968,    -1,    -1,    -1,  1374,    -1,    -1,    44,    45,
     3299     977,    47,    -1,    -1,    -1,    -1,  1385,    -1,    -1,    -1,
     3300      -1,    -1,  1194,    -1,    -1,    -1,   993,   994,   966,    76,
     3301      -1,  1400,    -1,    80,     0,     1,    -1,    73,    -1,    -1,
     3302      76,  1155,    89,    90,    80,    -1,  1415,    83,    84,    85,
     3303      86,    87,    88,    89,    90,    -1,    92,    93,  1025,    -1,
     3304      -1,  1028,    -1,    -1,  1433,    -1,    -1,    -1,   115,    -1,
     3305      -1,  1440,    38,  1442,    -1,  1444,   123,   124,    -1,   115,
     3306      -1,   117,    -1,    -1,    -1,    -1,    52,   123,   124,   125,
     3307     126,   127,   128,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3308     136,    -1,    -1,    -1,    70,    -1,    -1,  1476,  1477,    -1,
     3309      -1,    -1,    -1,  1482,  1081,  1484,    -1,    -1,    -1,    -1,
     3310    1087,  1088,    -1,    -1,    -1,  1297,    -1,    -1,    -1,  1096,
     3311      -1,  1500,    -1,    -1,  1101,    -1,    -1,  1506,  1507,  1106,
     3312      -1,   107,    -1,    -1,    12,    13,    14,    15,    16,    17,
     3313      18,    -1,  1119,    -1,  1523,    -1,    -1,    -1,    -1,    -1,
     3314      12,    13,    14,    15,    16,    17,    18,  1536,  1135,    -1,
     3315    1137,  1138,  1139,  1140,    -1,    -1,    -1,    -1,    46,    -1,
     3316     146,    -1,    -1,    -1,    -1,  1152,    -1,  1154,   154,   155,
     3317      -1,    -1,    -1,    -1,    46,    -1,    -1,    -1,    -1,    -1,
     3318      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    76,    -1,
     3319      78,    79,    80,    -1,    -1,    -1,   182,    -1,    -1,  1186,
     3320    1187,    89,    90,    -1,    76,    -1,    78,    79,    80,    -1,
     3321      -1,    -1,   198,    -1,    -1,   201,   202,    89,    90,    -1,
     3322     206,    -1,    -1,    -1,    -1,    -1,    -1,   115,    -1,   117,
     3323      -1,    -1,    -1,    -1,    -1,   123,   124,    -1,    -1,    -1,
     3324      -1,   227,    -1,   115,    -1,   231,    -1,   233,    -1,    -1,
     3325     236,   123,   124,     0,    -1,    -1,   242,    -1,    -1,    -1,
     3326      -1,   247,    -1,  1250,  1251,    -1,    -1,    -1,    -1,    -1,
     3327      -1,   257,    -1,  1260,    -1,    -1,    -1,    -1,    -1,   265,
     3328      -1,    -1,    -1,    -1,    -1,    -1,  1350,    -1,    -1,    -1,
     3329      -1,    38,     4,     5,     6,     7,     8,     9,    10,    11,
     3330      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3331      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
     3332      32,    33,    -1,    70,    36,    37,    38,    -1,    -1,    -1,
     3333      -1,    -1,    -1,    -1,    46,    -1,  1400,  1324,    -1,  1326,
     3334    1327,  1328,    -1,    -1,    -1,    -1,    -1,   333,    -1,    -1,
     3335      -1,  1338,   338,    -1,    -1,    -1,    -1,    -1,   344,  1346,
     3336      -1,    -1,  1349,    -1,    -1,    -1,    78,    79,    -1,    -1,
     3337      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   364,    -1,
     3338      -1,    -1,   368,    -1,    -1,    -1,    -1,    -1,    -1,  1376,
     3339      -1,    -1,  1350,    -1,    -1,    12,    13,    14,    15,    16,
     3340      17,    18,    -1,    -1,   116,   117,    -1,    -1,   155,    -1,
     3341      -1,   123,   124,  1477,    -1,    -1,    -1,    -1,    -1,    -1,
     3342      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    46,
     3343      -1,   417,    -1,  1420,  1421,    -1,    -1,    -1,    -1,    -1,
     3344      -1,    -1,  1400,    -1,    -1,   431,  1433,    -1,    -1,    -1,
     3345     436,    -1,    -1,  1440,    -1,    -1,    -1,    -1,   444,    76,
     3346      -1,    78,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,
     3347    1457,    -1,    89,    90,    -1,   461,    -1,    -1,   464,    -1,
     3348     227,    -1,    -1,    -1,    -1,   471,    -1,    -1,  1475,    -1,
     3349      -1,    -1,    -1,  1480,   480,   242,   482,    -1,   115,    -1,
     3350     247,    -1,    -1,    -1,    -1,    -1,   123,   124,   494,    -1,
     3351      -1,    -1,   498,    -1,    -1,    -1,    -1,    -1,    -1,  1477,
     3352      -1,    -1,    -1,    -1,    -1,    -1,  1513,    -1,  1515,    -1,
     3353      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   525,
     3354      -1,    -1,    -1,    -1,     0,    -1,    -1,    12,    13,    14,
     3355      15,    16,    17,    18,    -1,    -1,    -1,    -1,    -1,    -1,
     3356      -1,    -1,    -1,    -1,    -1,    -1,  1553,  1554,    -1,    -1,
     3357      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1566,
     3358    1567,    46,    38,   569,    -1,    -1,    -1,    -1,    -1,    -1,
     3359      -1,   338,    -1,    -1,    -1,    -1,    -1,   344,    -1,    -1,
     3360      -1,   587,   588,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3361      -1,    76,    -1,    -1,    70,    80,    -1,   364,   604,    -1,
     3362      -1,   368,    -1,    -1,    89,    90,    -1,    -1,    -1,    -1,
     3363      -1,    -1,    -1,    -1,    -1,    -1,    -1,   623,    -1,    -1,
     3364      -1,    -1,   628,    -1,    -1,    -1,    -1,   633,    -1,    -1,
     3365     115,    -1,    -1,   639,    -1,    -1,   642,   643,   123,   124,
     3366      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3367     417,    -1,   658,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3368      -1,    -1,    -1,    -1,   431,    -1,    -1,    -1,    -1,   436,
     3369      -1,   677,    -1,    -1,    -1,    -1,    -1,   444,    -1,   155,
     3370      -1,    -1,   688,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3371      -1,    -1,    -1,    -1,   461,    -1,   702,    -1,    -1,    -1,
     3372     706,    -1,    -1,    -1,   471,    -1,    -1,    -1,    -1,   715,
     3373      -1,    -1,   718,   480,    -1,   482,    12,    13,    14,    15,
     3374      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3375      26,    27,    28,    29,    30,    31,    32,    33,   744,    -1,
     3376      36,    37,    38,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3377      46,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   525,    -1,
     3378      -1,    -1,    -1,    -1,    -1,    -1,   242,    -1,    -1,    -1,
     3379      -1,   247,    -1,    -1,   780,    -1,    -1,    -1,    -1,    -1,
     3380      76,    -1,    78,    79,   790,   791,    -1,    -1,   794,    -1,
     3381      -1,   797,    -1,    89,    90,    -1,   802,    -1,    -1,    -1,
     3382      -1,    -1,    -1,    -1,    -1,    -1,   812,    -1,    -1,    -1,
     3383      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3384     587,   588,    -1,    -1,     3,     4,     5,     6,     7,     8,
     3385       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3386      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
     3387      29,    30,    31,    32,    33,    -1,   623,    36,    37,    38,
     3388     866,    -1,   338,    -1,    -1,    -1,   633,    46,   344,    -1,
     3389      -1,    -1,   639,    -1,    -1,   642,   643,    -1,    -1,    -1,
     3390      -1,    -1,    -1,    -1,   890,    -1,    -1,    -1,   364,    -1,
     3391      -1,   658,   368,    -1,    -1,    -1,    -1,    -1,    -1,    78,
     3392      79,    -1,    -1,    -1,   910,    -1,    -1,    -1,    -1,    -1,
     3393     677,    -1,    -1,    -1,    -1,    -1,    -1,   923,   924,    -1,
     3394      -1,   688,    -1,    -1,    -1,   931,    -1,    -1,    -1,    -1,
     3395      -1,    -1,    -1,    -1,    -1,   702,    -1,    -1,   117,   706,
     3396      -1,   417,    -1,    -1,   123,   124,    -1,    -1,    -1,    -1,
     3397      -1,    -1,    -1,    -1,    -1,   431,    -1,   963,    -1,    -1,
     3398     436,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   444,    -1,
     3399     976,    -1,    -1,    -1,    -1,   981,   982,   744,   984,   985,
     3400      -1,    -1,    -1,    -1,    -1,   461,    -1,    -1,    -1,    -1,
     3401      -1,    -1,    -1,    -1,    -1,   471,  1002,    -1,    -1,    -1,
     3402      -1,    -1,    -1,    -1,   480,    -1,   482,    -1,    -1,    -1,
     3403      -1,    -1,    -1,   780,    -1,    -1,    -1,    -1,     0,    -1,
     3404      -1,    -1,    -1,   790,   791,    -1,    -1,   794,    -1,    -1,
     3405     797,    -1,    -1,    -1,    -1,   802,  1042,  1043,    -1,    -1,
     3406      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1053,    -1,   525,
     3407      -1,    -1,    -1,    -1,     0,    -1,    38,     3,     4,     5,
     3408       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     3409      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3410      26,    27,    28,    29,    30,    31,    32,    33,    70,    -1,
     3411      36,    37,    38,    39,    -1,    -1,    -1,    43,    -1,   866,
     3412      46,    47,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1115,
     3413      -1,   587,   588,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3414      -1,    -1,    -1,   890,    -1,    71,    -1,    -1,    -1,    -1,
     3415      76,    -1,    78,    79,    80,    -1,    -1,    -1,    -1,    -1,
     3416      -1,    -1,    -1,    89,    90,    -1,    -1,   623,    -1,    -1,
     3417      -1,    -1,    -1,    -1,    -1,    -1,    -1,   633,    -1,    -1,
     3418      -1,    -1,    -1,   639,   931,    -1,   642,   643,    -1,   115,
     3419      -1,   117,    -1,   155,  1180,    -1,    -1,   123,   124,    -1,
     3420      -1,    -1,   658,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3421      -1,    -1,    -1,    -1,    -1,    -1,   963,    -1,    -1,    -1,
     3422      -1,   677,    -1,    -1,  1210,    -1,  1212,    -1,    -1,    -1,
     3423      -1,  1217,   688,    -1,   981,   982,    -1,   984,   985,    -1,
     3424      -1,    -1,    -1,    -1,    -1,    -1,   702,    -1,    -1,    -1,
     3425     706,    -1,    -1,  1239,    -1,  1002,    -1,    -1,    -1,    -1,
     3426      -1,  1247,  1248,  1249,    -1,    -1,    -1,    -1,    -1,    -1,
     3427      -1,    -1,  1258,  1259,    -1,    -1,    -1,    -1,    -1,    -1,
     3428     242,    -1,    -1,    -1,  1270,   247,    -1,    -1,   744,    -1,
     3429      -1,    -1,    -1,    -1,    -1,  1042,  1043,    12,    13,    14,
     3430      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3431      25,    26,    27,    28,    29,    30,    31,    32,    33,    -1,
     3432      -1,    36,    37,    38,   780,    -1,  1312,    -1,    -1,    -1,
     3433      -1,    46,    -1,    -1,   790,   791,    -1,    -1,   794,    -1,
     3434      -1,   797,    -1,    -1,    -1,    -1,   802,    -1,    -1,    -1,
     3435      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3436      -1,    -1,    -1,    78,    79,  1351,    -1,    -1,  1115,    -1,
     3437      -1,    -1,    -1,    -1,    -1,    -1,   338,    -1,    -1,    -1,
     3438      -1,    -1,   344,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3439      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1385,
     3440      -1,    -1,   364,    -1,    -1,    -1,   368,    -1,   123,   124,
     3441     866,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3442      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1414,  1415,
     3443      -1,    -1,    -1,  1180,   890,    -1,    -1,    -1,    -1,    -1,
     3444      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1433,    -1,    -1,
     3445      -1,    -1,    -1,    -1,  1440,   417,  1442,    -1,  1444,    -1,
     3446      -1,    -1,    -1,  1210,    -1,  1212,    -1,    -1,    -1,   431,
     3447      -1,    -1,    -1,    -1,   436,   931,    -1,    -1,    -1,    -1,
     3448      -1,    -1,   444,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3449      -1,    -1,  1239,    -1,    -1,    -1,  1482,    -1,  1484,   461,
     3450    1247,  1248,  1249,    -1,    -1,    -1,    -1,   963,    -1,   471,
     3451      -1,  1258,  1259,    -1,  1500,    -1,    -1,    -1,   480,    -1,
     3452     482,  1507,    -1,  1270,    -1,   981,   982,    -1,   984,   985,
     3453      -1,    -1,    -1,    -1,    -1,    -1,    52,    -1,    -1,    -1,
     3454      -1,    -1,    -1,    -1,    -1,    -1,  1002,    -1,    -1,    -1,
     3455      -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3456      -1,    -1,    -1,   525,    12,    13,    14,    15,    16,    17,
     3457      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3458      28,    29,    30,    31,    32,    33,  1042,  1043,    36,    37,
     3459      38,    -1,    -1,    -1,   276,    -1,   278,   279,    46,   115,
     3460      -1,    -1,    -1,   119,  1351,   287,   288,    -1,    -1,    -1,
     3461      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   301,
     3462     302,    -1,    -1,    -1,    -1,   587,   588,    -1,    -1,   145,
     3463      78,    79,    -1,    -1,    -1,    -1,    -1,    -1,  1385,   155,
     3464      -1,    -1,   158,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3465      -1,    -1,    -1,    -1,    -1,    -1,   338,    -1,    -1,  1115,
     3466      -1,   623,    -1,    -1,    -1,    -1,    -1,  1414,    -1,   117,
     3467      -1,   633,    -1,    -1,    -1,   123,   124,   639,    -1,    -1,
     3468     642,   643,    -1,    -1,    -1,    -1,  1433,    -1,    -1,    -1,
     3469     206,    -1,    -1,  1440,    -1,  1442,   658,  1444,   380,    -1,
     3470      -1,    -1,   218,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3471      -1,    -1,    -1,    -1,    -1,   677,    -1,    -1,    -1,    -1,
     3472      -1,    -1,    -1,    -1,  1180,    -1,   688,    -1,    -1,    -1,
     3473      -1,    -1,    -1,    -1,    -1,  1482,    -1,  1484,    -1,   255,
     3474     702,    -1,    -1,    -1,   706,    -1,   262,    -1,    -1,    -1,
     3475      -1,    -1,    -1,  1500,  1210,    -1,  1212,    -1,    -1,    -1,
     3476      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3477      -1,    -1,    -1,   289,    -1,    -1,    -1,    -1,    -1,    -1,
     3478      -1,    -1,   744,  1239,    -1,   301,    -1,    -1,    -1,    -1,
     3479      -1,  1247,  1248,  1249,    -1,    67,    -1,    -1,    -1,    -1,
     3480      -1,    -1,  1258,  1259,    76,    -1,    78,    -1,    80,    -1,
     3481      -1,    -1,    -1,    -1,  1270,    -1,    88,    -1,   780,    -1,
     3482      -1,    -1,   338,    -1,    -1,    -1,    -1,   343,   790,   791,
     3483      -1,    -1,   794,    -1,    -1,   797,    -1,    -1,    -1,    -1,
     3484     802,    -1,    -1,    -1,    -1,    -1,    -1,   119,    -1,   121,
     3485     122,   123,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3486      -1,    -1,    -1,    -1,    -1,    -1,    -1,   549,   550,   551,
     3487     552,   553,   554,   555,   556,   557,   558,   559,   560,   561,
     3488     562,   563,   564,   565,   566,    -1,   158,    -1,    -1,    -1,
     3489      -1,    -1,    -1,    -1,    -1,  1351,    -1,    -1,    -1,    -1,
     3490      -1,    -1,    -1,    -1,   866,    -1,    -1,    -1,    -1,   425,
     3491     426,    -1,    -1,    -1,    -1,   431,    -1,    -1,    -1,    -1,
     3492      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   890,  1385,
     3493      -1,    -1,    -1,    -1,    -1,    -1,   452,    -1,    -1,    -1,
     3494      -1,    -1,    -1,    -1,    -1,    -1,   218,    -1,   220,   221,
     3495     222,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1414,    -1,
     3496      -1,    -1,    -1,    -1,   480,    -1,    -1,    -1,    -1,   931,
     3497      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1433,   250,    -1,
     3498     496,    -1,    -1,   255,  1440,    -1,  1442,    -1,  1444,    -1,
     3499      -1,    -1,   508,    -1,   510,    -1,    -1,   513,    -1,   515,
     3500     516,   963,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   525,
     3501      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   981,
     3502     982,    -1,   984,   985,    -1,    -1,  1482,    -1,  1484,    -1,
     3503      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3504    1002,   723,    -1,    -1,  1500,    -1,    -1,    -1,    -1,    -1,
     3505      -1,   323,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3506     576,    -1,    -1,    -1,    -1,    -1,   748,    -1,    -1,    -1,
     3507      -1,   343,   588,    -1,    -1,   591,    -1,   349,    -1,   351,
     3508    1042,  1043,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3509      -1,   363,    -1,    -1,    -1,    -1,   778,    -1,    -1,    -1,
     3510      -1,    -1,    -1,    -1,    -1,    -1,    -1,   623,    -1,    -1,
     3511      -1,    -1,    -1,    -1,    -1,    -1,    -1,   633,    -1,    -1,
     3512      -1,    -1,    -1,    -1,    -1,    -1,   642,   643,    -1,    -1,
     3513      -1,   403,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3514      -1,    -1,   658,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3515      -1,   423,    -1,  1115,    -1,    -1,   428,    -1,   430,    -1,
     3516      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3517      -1,    -1,    -1,    -1,   446,   691,    -1,   449,   450,    -1,
     3518      -1,    -1,    -1,    -1,   456,    -1,    -1,    -1,    -1,    -1,
     3519     706,    -1,   708,    -1,    -1,    -1,    -1,    -1,   470,    -1,
     3520      -1,    -1,    -1,    -1,    -1,    -1,   478,    -1,    -1,    -1,
     3521      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1180,    -1,
     3522      -1,    -1,    44,    45,    -1,    47,    -1,    -1,   744,    -1,
     3523      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3524      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1210,    -1,
     3525    1212,    73,    -1,    -1,    76,    -1,    -1,    -1,    80,    -1,
     3526      -1,    83,    84,    85,    86,    87,    88,    89,    90,   951,
     3527      92,    93,    -1,    -1,    -1,    -1,    -1,  1239,    -1,    -1,
     3528     796,   963,    -1,    -1,    -1,  1247,  1248,  1249,    -1,    -1,
     3529      -1,    -1,    -1,   115,    -1,   117,  1258,  1259,   120,    -1,
     3530      -1,   123,   124,   125,   126,   127,   128,    -1,  1270,    -1,
     3531      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   591,
     3532    1002,   593,   594,   595,    -1,    -1,    -1,    -1,    -1,    -1,
     3533      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3534      47,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3535      -1,    -1,    -1,    -1,   626,   627,    -1,    -1,    -1,    -1,
     3536      -1,    -1,    -1,   635,    -1,    -1,    -1,    -1,    -1,    -1,
     3537    1052,    -1,    -1,    -1,   890,    -1,    -1,    -1,    -1,   895,
     3538      -1,    -1,    -1,    -1,    -1,    -1,    93,    -1,    -1,  1351,
     3539      -1,    -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,    -1,
     3540      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   925,
     3541      -1,    -1,    -1,    -1,    -1,   931,    -1,    -1,    -1,    -1,
     3542      -1,   693,    -1,  1385,    -1,    -1,    -1,    -1,    -1,    -1,
     3543      -1,   703,    -1,    -1,    -1,    -1,   708,    -1,    -1,    -1,
     3544      -1,    -1,   154,   155,    -1,    -1,    -1,   963,    -1,    -1,
     3545      -1,    -1,  1414,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3546      -1,    -1,   169,    -1,    -1,    -1,  1148,  1149,   984,   985,
     3547      -1,  1433,    -1,    -1,   186,    -1,    -1,    -1,  1440,    -1,
     3548    1442,   193,  1444,    -1,   191,    -1,    -1,    -1,    -1,    -1,
     3549      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   205,    -1,
     3550      -1,    -1,    -1,    -1,    -1,    -1,    -1,   214,    -1,    -1,
     3551      -1,    -1,   784,    -1,    -1,    -1,    -1,   224,    -1,    -1,
     3552    1482,    -1,  1484,    -1,   796,    -1,    -1,    -1,    -1,    44,
     3553      45,    -1,    47,    -1,    -1,    -1,   243,    -1,  1500,    -1,
     3554      -1,   248,   814,    -1,    -1,    -1,    -1,   259,    -1,    -1,
     3555      -1,    -1,  1068,    -1,   261,    -1,    -1,    -1,    73,    -1,
     3556      -1,    76,   269,    -1,   271,    80,   838,    -1,    83,    84,
     3557      85,    86,    87,    88,    89,    90,    -1,    92,    93,    -1,
     3558      -1,    -1,    -1,   290,    -1,    -1,    -1,    -1,    -1,    -1,
     3559      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1115,
     3560     115,    -1,   117,    -1,    -1,   317,    -1,   122,   123,   124,
     3561     125,   126,   127,   128,   326,   327,    -1,   329,   330,    -1,
     3562      -1,    -1,    -1,    -1,   331,    -1,   338,    -1,    -1,   336,
     3563     342,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3564      -1,    -1,   914,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3565      -1,    -1,    -1,    -1,    -1,    -1,   368,    -1,    -1,    -1,
     3566      -1,    -1,    -1,    -1,   371,    -1,    -1,    -1,   375,   376,
     3567      -1,   378,    -1,    -1,    -1,  1191,    -1,    -1,   385,   386,
     3568      -1,   388,   389,   395,   391,    -1,   393,   399,    -1,    -1,
     3569      -1,    -1,    -1,    -1,   966,    -1,  1212,    -1,    -1,    -1,
     3570      -1,    -1,    -1,   410,    -1,   977,    -1,  1389,    -1,    -1,
     3571      -1,   418,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   431,
     3572      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3573      -1,    -1,    -1,    -1,    -1,   442,    -1,    -1,    -1,    -1,
     3574      -1,    -1,  1258,  1259,    -1,    -1,    -1,    44,    45,    -1,
     3575      47,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3576     467,    -1,    -1,    -1,    -1,   477,    -1,   474,   480,  1451,
     3577      -1,    -1,   479,    -1,    -1,    -1,    73,    -1,    -1,    76,
     3578      -1,  1463,  1464,    80,    -1,    -1,    83,    84,    85,    86,
     3579      87,    88,    89,    90,    -1,    92,    93,    -1,    -1,    -1,
     3580      -1,    -1,  1074,    -1,    -1,  1487,    -1,    -1,    -1,    -1,
     3581      -1,    -1,   519,   525,    -1,    -1,    -1,    -1,   115,    -1,
     3582     117,    -1,    -1,   120,   531,    -1,   123,   124,   125,   126,
     3583     127,   128,    -1,    -1,  1350,    -1,    -1,    -1,    -1,    -1,
     3584      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3585      -1,    -1,    -1,    -1,    -1,    -1,   568,   569,    -1,    -1,
     3586      -1,   568,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1385,
     3587     577,    -1,    -1,   580,    -1,   587,   588,  1559,    -1,    -1,
     3588      -1,    -1,    -1,    -1,  1400,    -1,    -1,    -1,    -1,   601,
     3589      -1,    -1,   604,   605,    -1,   602,    -1,    -1,    -1,   611,
     3590      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   621,
     3591      -1,   623,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3592     155,   633,    -1,    -1,    -1,    -1,  1442,  1199,  1444,    -1,
     3593     642,   643,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3594     647,    -1,    -1,    -1,    44,    45,   658,    47,    -1,    -1,
     3595     662,   663,    -1,    -1,   666,   667,    -1,    -1,    -1,    -1,
     3596      -1,  1477,    -1,   675,    -1,    -1,  1482,    -1,  1484,    -1,
     3597      -1,    -1,    -1,    73,    -1,    -1,    76,   684,    -1,    -1,
     3598      80,    -1,    -1,    83,    84,    85,    86,    87,    88,    89,
     3599      90,    -1,    92,    93,   706,   707,    -1,    -1,    -1,    -1,
     3600      -1,    -1,    -1,    -1,    -1,   712,    -1,  1523,    -1,    -1,
     3601      -1,    -1,    -1,    -1,    -1,   115,    -1,   117,    -1,    -1,
     3602     727,   728,    -1,   123,   124,   125,   126,   127,   128,    -1,
     3603     737,    -1,   744,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3604      -1,    -1,    -1,    -1,   751,    -1,    -1,    -1,    -1,   756,
     3605      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3606     145,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3607     155,    -1,   784,    -1,    -1,    -1,    -1,    -1,  1350,    -1,
     3608      -1,   166,   167,    -1,    -1,    -1,    -1,    -1,    -1,   801,
     3609      -1,   803,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3610      -1,    -1,   814,   338,    -1,    -1,    -1,    -1,   343,   344,
     3611      -1,   818,    -1,    -1,    -1,    -1,    -1,    -1,   825,    -1,
     3612      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1400,   364,
     3613      -1,    -1,    -1,   368,   841,    -1,   843,    -1,    -1,    -1,
     3614      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   856,
     3615      -1,    -1,    -1,    -1,    -1,   862,    -1,    -1,    -1,    -1,
     3616      -1,    -1,    -1,    -1,    -1,    -1,   873,    -1,    -1,   254,
     3617     877,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   890,    -1,
     3618      -1,    -1,    -1,    -1,    -1,   897,    -1,    -1,    -1,    -1,
     3619      -1,    -1,    -1,    -1,    -1,    -1,   431,   909,   910,    -1,
     3620      -1,    -1,    -1,    -1,    -1,  1477,    -1,    -1,    -1,    -1,
     3621      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   931,
     3622      -1,    -1,    -1,    -1,    -1,    -1,   461,    -1,    -1,    -1,
     3623      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3624      -1,   953,   954,    -1,    -1,   480,    -1,    -1,    -1,    -1,
     3625      -1,   963,    -1,    -1,   961,    -1,    -1,   969,   970,    -1,
     3626     972,   973,   974,    -1,  1536,    -1,    -1,    -1,    -1,    -1,
     3627      -1,    -1,   984,   985,    -1,    -1,    -1,    -1,    -1,    -1,
     3628      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3629     525,    -1,    -1,    -1,   379,    -1,    -1,   155,    12,    13,
     3630      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     3631      24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
     3632      -1,  1028,    36,    37,    38,    -1,    -1,    -1,    -1,    -1,
     3633      -1,    -1,    46,    -1,    -1,    -1,    -1,  1049,    -1,  1051,
     3634      -1,  1053,    -1,    -1,    -1,    -1,  1058,    -1,    -1,    -1,
     3635      -1,    -1,   587,   588,    -1,    -1,   591,    -1,    -1,    -1,
     3636      -1,    -1,  1074,  1070,    78,    79,    -1,   452,  1075,    -1,
     3637      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1085,    -1,
     3638      -1,    -1,    -1,    -1,    -1,    -1,    -1,   472,   623,    -1,
     3639      -1,   626,    -1,    -1,    -1,    -1,    -1,    -1,   633,    -1,
     3640     635,    -1,  1109,  1115,   639,    -1,    -1,   642,   643,   123,
     3641     124,    -1,    -1,    -1,    -1,  1122,    -1,    -1,    -1,  1126,
     3642      -1,    -1,  1129,   658,    -1,    -1,    -1,    -1,    -1,    -1,
     3643     515,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1145,  1146,
     3644     525,    -1,   677,    -1,    -1,   530,    -1,    -1,   533,    -1,
     3645      -1,    -1,    -1,    -1,    -1,    -1,  1163,    -1,   693,    -1,
     3646      -1,   546,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3647      -1,   706,    -1,   708,    -1,    -1,    -1,    -1,    -1,    -1,
     3648     338,    -1,  1194,    -1,    -1,   343,   344,  1199,    -1,    -1,
     3649      -1,   576,    -1,    -1,    -1,    -1,    -1,    -1,   583,    -1,
     3650    1212,    -1,    -1,   588,    -1,    -1,   364,    -1,    -1,   744,
     3651     368,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   603,    -1,
     3652      -1,  1228,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3653      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3654      -1,    -1,    -1,    -1,    -1,   780,  1258,  1259,    -1,    -1,
     3655      -1,    -1,    -1,    -1,    -1,   790,   791,    32,    -1,   794,
     3656     645,   796,   797,    -1,    -1,    -1,    -1,   802,   653,    -1,
     3657      -1,    -1,    -1,   431,    -1,    -1,    -1,    -1,    -1,    -1,
     3658      -1,    -1,    -1,    -1,    -1,  1297,  1298,    -1,    -1,  1301,
     3659      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3660    1307,    -1,  1309,   461,    -1,    -1,    -1,    -1,    -1,    84,
     3661      -1,    -1,  1319,    -1,  1321,    -1,    -1,    -1,    -1,    -1,
     3662      -1,    -1,   480,    -1,    -1,   100,    -1,   102,    -1,  1336,
     3663      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3664      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1354,  1355,   734,
     3665      -1,    -1,    -1,    -1,    -1,   890,    -1,    -1,    -1,   744,
     3666    1367,   746,    -1,    -1,   749,  1372,    -1,   525,  1375,    -1,
     3667     755,    -1,    -1,  1385,   155,    -1,    -1,    -1,    -1,    -1,
     3668      -1,    -1,    -1,    -1,  1391,    -1,    -1,    -1,    32,    -1,
     3669      -1,    -1,    -1,    -1,  1401,    -1,   931,  1404,    -1,  1406,
     3670    1407,  1408,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3671      -1,   796,   797,   188,   189,    -1,    -1,    -1,   193,    -1,
     3672     195,   196,    -1,    -1,    -1,    -1,    -1,   812,   963,   587,
     3673     588,   966,    -1,   591,    -1,    -1,    -1,    -1,    -1,  1446,
     3674      84,  1448,    -1,    -1,    -1,    -1,   981,   982,    -1,   984,
     3675     985,  1458,    -1,    -1,    -1,    -1,   100,    -1,   102,    -1,
     3676      -1,  1468,    -1,    -1,  1476,   623,    -1,    -1,   626,    -1,
     3677     855,    -1,    -1,    -1,   859,   633,    -1,   635,    -1,    -1,
     3678      -1,   639,    -1,   127,   642,   643,    -1,    -1,    -1,    -1,
     3679      -1,    -1,    -1,    -1,  1506,  1507,    -1,    -1,    -1,    -1,
     3680     658,    -1,    -1,    -1,    -1,   890,    -1,  1042,  1043,    -1,
     3681      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   677,
     3682      -1,    -1,    -1,    -1,  1536,    -1,    -1,    -1,    -1,    -1,
     3683      -1,    -1,    -1,    -1,    -1,   693,    -1,    -1,    -1,    -1,
     3684     925,    -1,   186,    -1,   188,   189,   931,    -1,   706,   193,
     3685     708,   195,   196,   938,    -1,    -1,    -1,   338,   943,    -1,
     3686     335,   946,   343,   344,    -1,    -1,    -1,    -1,    -1,    -1,
     3687      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   354,
     3688    1115,   966,    -1,   364,    -1,    -1,   744,   368,    -1,    -1,
     3689      -1,    -1,   977,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3690      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3691      -1,    -1,   997,    -1,   999,   259,    -1,    -1,    -1,    -1,
     3692      -1,    -1,   780,    -1,    -1,    -1,    -1,    -1,    -1,  1014,
     3693    1015,   406,   790,   791,    -1,    -1,   794,    -1,   796,   797,
     3694      -1,    -1,    -1,    -1,   802,    -1,    -1,    -1,    -1,    -1,
     3695     431,    -1,    -1,    -1,    -1,    -1,  1041,    -1,    -1,    -1,
     3696      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3697      -1,    -1,    -1,    -1,    -1,  1210,    -1,  1212,    -1,    -1,
     3698     461,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3699      -1,   335,    -1,    -1,    -1,    -1,    -1,    44,    45,   480,
     3700      47,    -1,    -1,    -1,  1239,    -1,    -1,    -1,    -1,  1094,
     3701     354,    -1,  1247,  1248,  1249,    -1,    -1,    -1,    -1,    -1,
     3702      -1,    -1,    -1,  1258,  1259,    -1,    73,    -1,    -1,    76,
     3703    1115,    -1,   890,    80,    -1,    -1,    83,    84,    85,    86,
     3704      87,    88,    89,    90,   525,    92,    93,    -1,  1133,  1134,
     3705      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3706      -1,    -1,   406,    -1,    -1,    -1,    -1,    -1,   115,    -1,
     3707     117,    -1,    -1,   931,    -1,    -1,   123,   124,   125,   126,
     3708     127,   128,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3709      -1,    -1,    -1,    -1,    -1,    -1,    -1,   572,   573,    -1,
     3710      -1,    -1,    -1,    -1,    -1,   963,   587,   588,   966,    -1,
     3711     591,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3712      -1,    -1,    -1,   981,   982,    -1,   984,   985,    -1,    -1,
     3713     605,    -1,    -1,   608,   609,    -1,   611,    -1,   613,   614,
     3714      -1,    -1,   623,   618,   619,   626,    -1,    -1,    -1,    -1,
     3715    1385,    -1,   633,    -1,   635,    -1,    -1,    -1,   639,    -1,
     3716      -1,   642,   643,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3717      -1,    -1,    -1,    -1,    -1,    -1,    -1,   658,    -1,  1414,
     3718      -1,    -1,    -1,    -1,  1042,  1043,    -1,   662,    -1,    -1,
     3719      -1,   666,    -1,    -1,    -1,    -1,   677,    -1,    -1,  1284,
     3720      -1,    -1,    -1,  1288,    -1,    -1,    -1,  1442,    -1,  1444,
     3721      -1,    -1,   693,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3722      -1,    -1,    -1,    -1,    -1,   706,    -1,   708,   572,   573,
     3723      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3724      -1,    -1,  1477,    -1,    -1,    -1,    -1,  1482,    -1,  1484,
     3725      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1115,    -1,    -1,
     3726      -1,   605,    -1,   744,   608,   609,    -1,   611,    -1,   613,
     3727     614,    -1,    -1,    -1,   618,   619,    -1,    -1,    -1,    -1,
     3728      -1,    -1,    -1,    -1,    -1,     5,    -1,    -1,    -1,    -1,
     3729      -1,    -1,    12,    13,    14,    15,    16,    17,    18,   780,
     3730      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   790,
     3731     791,    -1,    -1,   794,    -1,   796,   797,    -1,   662,    -1,
     3732      -1,   802,   666,    -1,    44,    45,    46,    47,    12,    13,
     3733      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     3734      24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
     3735      34,    -1,  1210,    73,  1212,    -1,    76,    -1,    -1,    -1,
     3736      80,    -1,    46,    83,    84,    85,    86,    87,    88,    89,
     3737      90,    -1,    92,    93,    -1,    -1,    -1,    -1,    -1,    -1,
     3738      -1,  1239,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1247,
     3739    1248,  1249,    -1,    -1,    -1,   115,    -1,   117,    82,    -1,
     3740    1258,  1259,    -1,   123,   124,   125,   126,   127,   128,   890,
     3741      -1,    -1,    -1,    12,    13,    14,    15,    16,    17,    18,
     3742      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
     3743      29,    30,    31,    32,    33,    34,    -1,    -1,  1523,    -1,
     3744      -1,    -1,    -1,    -1,    -1,    -1,    -1,    46,    -1,    -1,
     3745     931,    -1,    -1,    -1,    -1,    12,    13,    14,    15,    16,
     3746      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3747      27,    28,    29,    30,    31,    32,    33,    -1,   953,    36,
     3748      37,    38,   963,    82,    -1,   966,    -1,    -1,    -1,    46,
     3749      -1,    -1,    -1,    -1,   969,    -1,    -1,   972,   973,    -1,
     3750     981,   982,    -1,   984,   985,    -1,    -1,    -1,    -1,    -1,
     3751      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    76,
     3752      -1,    78,    79,    80,    -1,    -1,    -1,  1385,    -1,    -1,
     3753      -1,    -1,    89,    90,    12,    13,    14,    15,    16,    17,
     3754      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3755      28,    29,    30,    31,    32,    33,  1414,    -1,   115,    -1,
     3756     117,  1042,  1043,    -1,    -1,    -1,   123,   124,    46,    -1,
     3757    1045,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3758      -1,    -1,    -1,    -1,  1442,    -1,  1444,    -1,  1063,  1064,
     3759      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3760      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   953,
     3761      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1477,
     3762      -1,    -1,    -1,    -1,  1482,   969,  1484,    -1,   972,   973,
     3763      -1,    -1,    -1,    -1,  1115,    -1,    -1,    -1,    -1,    -1,
     3764      -1,    -1,    -1,    -1,    -1,  1120,    -1,    -1,    -1,    -1,
     3765      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     3,
     3766       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     3767      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     3768      24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
     3769      -1,    -1,    36,    37,    38,    39,    -1,    -1,    -1,    43,
     3770      -1,  1045,    46,    47,    -1,    -1,    -1,  1182,    -1,    -1,
     3771      -1,    -1,    -1,    -1,  1058,    -1,    -1,    -1,    -1,  1063,
     3772    1064,    -1,    -1,    -1,    -1,    -1,  1201,    71,    -1,  1210,
     3773      -1,  1212,    76,    -1,    78,    79,    80,    -1,    -1,    -1,
     3774      -1,    -1,    -1,    -1,    -1,    89,    90,    -1,    -1,    -1,
     3775      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1239,    -1,
     3776      -1,    -1,    -1,    -1,    -1,    -1,  1247,  1248,  1249,    -1,
     3777      -1,   115,    -1,   117,    -1,    -1,  1120,  1258,  1259,   123,
     3778     124,    -1,    -1,    -1,    -1,     3,     4,     5,     6,     7,
    26233779       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    26243780      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    2625        0,     0,    28,    29,    30,    31,     0,     0,     0,    32,
    2626      275,   276,    33,   277,     8,     9,    10,    11,    12,    13,
    2627       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2628       24,    25,    26,    27,     0,     0,    28,    29,    30,   278,
    2629       36,     0,    37,     0,    38,   279,    33,    40,    41,   280,
    2630        0,     0,   281,   282,   272,   283,   284,   285,    43,    44,
    2631        0,   286,   287,     0,     0,     0,     0,     0,     0,     0,
    2632        0,     0,     0,     0,    36,     0,     0,     0,     0,     0,
    2633        0,    40,    41,     0,   288,     0,   289,     0,     0,     0,
    2634        0,     0,    47,    48,   290,   291,   292,   293,     2,   202,
     3781      28,    29,    30,    31,    32,    33,    -1,    -1,    36,    37,
     3782      38,    39,  1297,    -1,    -1,    43,    44,    45,    46,    47,
     3783      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1182,    -1,
     3784      -1,    -1,    -1,    -1,    44,    45,    -1,    47,    -1,    -1,
     3785      -1,    -1,    -1,    -1,    -1,    73,    -1,  1201,    76,    -1,
     3786      78,    79,    80,    -1,    -1,    83,    84,    85,    86,    87,
     3787      88,    89,    90,    73,    92,    93,    76,    -1,    -1,    -1,
     3788      80,    -1,    -1,    83,    84,    85,    86,    87,    88,    89,
     3789      90,    -1,    92,    93,    -1,    -1,    -1,   115,    -1,   117,
     3790      -1,    -1,    -1,    -1,  1385,   123,   124,   125,   126,   127,
     3791     128,    -1,    -1,    -1,    -1,   115,    -1,   117,    -1,    -1,
     3792     138,    -1,    -1,   123,   124,   125,   126,   127,   128,    -1,
     3793      -1,    -1,    -1,  1414,    -1,    -1,    -1,    -1,    -1,    -1,
     3794      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3795      -1,    -1,    -1,  1297,    -1,    -1,    -1,    -1,    -1,    -1,
     3796      -1,  1442,    -1,  1444,     3,     4,     5,     6,     7,     8,
     3797       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3798      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
     3799      29,    30,    31,    32,    33,    -1,  1477,    36,    37,    38,
     3800      39,  1482,    -1,  1484,    43,    44,    45,    46,    47,    48,
     3801      -1,    50,    -1,    -1,    53,    54,    55,    56,    57,    58,
     3802      59,    60,    -1,    -1,    -1,    64,    -1,    -1,    -1,    68,
     3803      69,    -1,    71,    -1,    73,    -1,    -1,    76,    -1,    78,
     3804      79,    80,    -1,    -1,    83,    84,    85,    86,    87,    88,
     3805      89,    90,    -1,    92,    93,    -1,    -1,    -1,    -1,    -1,
     3806      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3807      -1,    -1,    -1,    -1,    -1,    -1,   115,    -1,   117,    -1,
     3808      -1,   120,    -1,    -1,   123,   124,   125,   126,   127,   128,
     3809      -1,    -1,    -1,    -1,   133,    -1,    -1,    -1,    -1,   138,
     3810       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     3811      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3812      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
     3813      33,    -1,    -1,    36,    37,    38,    39,    -1,    -1,    -1,
     3814      43,    44,    45,    46,    47,    -1,    -1,    -1,    -1,    -1,
     3815      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3816      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3817      73,    -1,    -1,    76,    -1,    78,    79,    80,    -1,    -1,
     3818      83,    84,    85,    86,    87,    88,    89,    90,    -1,    92,
     3819      93,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3820      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3821      -1,    -1,   115,    -1,   117,    -1,    -1,    -1,    -1,    -1,
     3822     123,   124,   125,   126,   127,   128,     4,     5,     6,     7,
     3823       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     3824      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3825      28,    29,    30,    31,    32,    33,    -1,    -1,    36,    37,
     3826      38,    -1,    -1,    -1,    -1,    -1,    44,    45,    46,    47,
     3827      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3828      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3829      -1,    -1,    -1,    -1,    -1,    73,    -1,    -1,    76,    -1,
     3830      78,    79,    80,    -1,    -1,    83,    84,    85,    86,    87,
     3831      88,    89,    90,    -1,    92,    93,    -1,    -1,    -1,    -1,
     3832      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3833      -1,    -1,    -1,    -1,    -1,    -1,    -1,   115,    -1,   117,
     3834      -1,    -1,    -1,    -1,   122,   123,   124,   125,   126,   127,
     3835     128,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     3836      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3837      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
     3838      33,    -1,    -1,    36,    37,    38,    -1,    -1,    -1,    -1,
     3839      -1,    44,    45,    46,    47,    -1,    -1,    -1,    -1,    -1,
     3840      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3841      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3842      73,    -1,    -1,    76,    -1,    78,    79,    80,    -1,    -1,
     3843      83,    84,    85,    86,    87,    88,    89,    90,    -1,    92,
     3844      93,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3845      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3846      -1,    -1,   115,    -1,   117,    -1,    -1,    -1,    -1,   122,
     3847     123,   124,   125,   126,   127,   128,     4,     5,     6,     7,
     3848       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     3849      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3850      28,    29,    30,    31,    32,    33,    -1,    -1,    36,    37,
     3851      38,    -1,    -1,    -1,    -1,    -1,    44,    45,    46,    47,
     3852      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3853      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3854      -1,    -1,    -1,    -1,    -1,    73,    -1,    -1,    76,    -1,
     3855      78,    79,    80,    -1,    -1,    83,    84,    85,    86,    87,
     3856      88,    89,    90,    -1,    92,    93,    -1,    -1,    -1,    -1,
     3857      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3858      -1,    -1,    -1,    -1,    -1,    -1,    -1,   115,    -1,   117,
     3859      -1,    -1,    -1,    -1,    -1,   123,   124,   125,   126,   127,
     3860     128,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     3861      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3862      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
     3863      33,    -1,    -1,    36,    37,    38,    -1,    -1,    -1,    -1,
     3864      -1,    44,    45,    46,    47,    -1,    -1,    -1,    -1,    -1,
     3865      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3866      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3867      73,    -1,    -1,    76,    -1,    78,    79,    80,    -1,    -1,
     3868      83,    84,    85,    86,    87,    88,    89,    90,    -1,    92,
     3869      93,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3870      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3871      -1,    -1,   115,    -1,   117,    -1,    -1,    -1,    -1,    -1,
     3872     123,   124,   125,   126,   127,   128,     4,     5,     6,     7,
     3873       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     3874      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3875      28,    29,    30,    31,    32,    33,    -1,    -1,    36,    37,
     3876      38,    -1,    -1,    -1,    -1,    -1,    44,    45,    46,    47,
     3877      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3878      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3879      -1,    -1,    -1,    -1,    -1,    73,    -1,    -1,    76,    -1,
     3880      78,    79,    80,    -1,    -1,    83,    84,    85,    86,    87,
     3881      88,    89,    90,     5,    92,    93,    -1,    -1,    -1,    -1,
     3882      12,    13,    14,    15,    16,    17,    18,    -1,    -1,    -1,
     3883      -1,    44,    45,    -1,    47,    -1,    -1,   115,    -1,   117,
     3884      -1,    -1,    -1,    -1,    -1,   123,   124,   125,   126,   127,
     3885     128,    -1,    44,    45,    46,    47,    -1,    -1,    -1,    -1,
     3886      73,    -1,    -1,    76,    -1,    78,    79,    80,    -1,    -1,
     3887      83,    84,    85,    86,    87,    88,    89,    90,    -1,    92,
     3888      93,    73,    -1,    -1,    76,    -1,    -1,    -1,    80,    -1,
     3889      -1,    83,    84,    85,    86,    87,    88,    89,    90,    -1,
     3890      92,    93,   115,    -1,   117,    -1,   119,   120,    -1,    -1,
     3891     123,   124,   125,   126,   127,   128,    -1,    -1,    -1,    -1,
     3892      -1,    -1,    -1,   115,    -1,   117,    -1,    -1,    -1,    -1,
     3893      -1,   123,   124,   125,   126,   127,   128,     3,     4,     5,
     3894       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     3895      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3896      26,    27,    28,    29,    30,    31,    32,    33,    -1,    -1,
     3897      36,    37,    38,    39,    -1,    -1,    -1,    43,    -1,    -1,
     3898      46,    47,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3899      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3900      -1,    -1,    -1,    -1,    -1,    71,    -1,    -1,    -1,    -1,
     3901      76,    -1,    78,    79,    80,    -1,    -1,    -1,    -1,    -1,
     3902      -1,    -1,    -1,    89,    90,    -1,    -1,    -1,    -1,    -1,
     3903      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3904      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   115,
     3905      -1,   117,    -1,    -1,    -1,   121,    -1,   123,   124,     3,
    26353906       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    26363907      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2637       24,    25,    26,    27,     0,     0,   334,    29,    30,     0,
    2638        0,     0,     0,     0,   275,   276,    33,   277,     8,     9,
     3908      24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
     3909      -1,    -1,    36,    37,    38,    -1,    -1,    -1,    -1,    -1,
     3910      -1,    -1,    46,    12,    13,    14,    15,    16,    17,    18,
     3911      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
     3912      29,    30,    31,    32,    33,    -1,    -1,    36,    37,    38,
     3913      -1,    -1,    76,    -1,    78,    79,    80,    46,    -1,    -1,
     3914      -1,    -1,    -1,    -1,    -1,    89,    90,    -1,    -1,    -1,
     3915      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3916      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    78,
     3917      79,   115,    -1,   117,    -1,    -1,    -1,    -1,    -1,   123,
     3918     124,     3,     4,     5,     6,     7,     8,     9,    10,    11,
     3919      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3920      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
     3921      32,    33,    34,    -1,    36,    37,    38,    39,    -1,    -1,
     3922      -1,    43,    -1,    -1,    46,    -1,    -1,    -1,    -1,    -1,
     3923      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3924      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3925      -1,    -1,    -1,    -1,    -1,    -1,    78,    79,    -1,    -1,
     3926      82,    -1,    -1,     3,     4,     5,     6,     7,     8,     9,
    26393927      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2640       20,    21,    22,    23,    24,    25,    26,    27,     0,     0,
    2641      334,    29,    30,   278,    36,     0,    37,     0,    38,   279,
    2642       33,    40,    41,   280,     0,     0,   281,   282,   272,   283,
    2643      284,   285,    43,    44,     0,   286,   287,     0,     0,     0,
    2644        0,     0,     0,     0,     0,     0,     0,     0,    36,     0,
    2645        0,     0,     0,     0,     0,    40,    41,     0,   288,     0,
    2646      335,     0,     0,     0,     0,   748,   336,    48,   290,   291,
    2647      292,   293,     2,   202,     4,     5,     6,     7,     8,     9,
    2648       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2649       20,    21,    22,    23,    24,    25,    26,    27,     0,     0,
    2650      334,    29,    30,     0,     0,     0,     0,     0,   275,   276,
    2651       33,   277,     8,     9,    10,    11,    12,    13,    14,    15,
    2652       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2653       26,    27,     0,     0,    28,    29,    30,   278,    36,     0,
    2654       37,     0,    38,   279,    33,    40,    41,   280,     0,     0,
    2655      281,   282,   272,   283,   284,   285,    43,    44,     0,   286,
    2656      287,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2657        0,     0,    36,     0,     0,     0,     0,     0,     0,   203,
    2658       41,     0,   288,     0,   335,     0,     0,     0,     0,   748,
    2659       47,    48,   290,   291,   292,   293,     2,   202,     4,     5,
     3928      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
     3929      30,    31,    32,    33,    -1,   117,    36,    37,    38,    39,
     3930      -1,   123,   124,    43,    -1,    -1,    46,    -1,    -1,    -1,
     3931      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3932      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3933      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    78,    79,
     3934       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     3935      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     3936      24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
     3937      -1,    -1,    36,    37,    38,    -1,    -1,   117,    -1,    -1,
     3938      -1,    -1,    46,   123,   124,    -1,    -1,    -1,    -1,    -1,
     3939      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3940      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3941      -1,    -1,    76,    -1,    78,    79,    80,    -1,    -1,    -1,
     3942      -1,    -1,    -1,    -1,    -1,    89,    90,    -1,    -1,    -1,
     3943      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3944      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3945      -1,   115,    -1,   117,    -1,    -1,    -1,    -1,    -1,   123,
     3946     124,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     3947      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3948      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
     3949      33,    -1,    -1,    36,    37,    38,    -1,    -1,    -1,    -1,
     3950      -1,    -1,    -1,    46,    12,    13,    14,    15,    16,    17,
     3951      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3952      28,    29,    30,    31,    32,    33,    -1,    -1,    36,    37,
     3953      38,    39,    40,    41,    42,    78,    79,    -1,    46,    -1,
     3954      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3955      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   102,
     3956      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3957      78,    79,    -1,    -1,   117,    -1,    -1,    -1,    -1,    -1,
     3958     123,   124,     4,     5,     6,     7,     8,     9,    10,    11,
     3959      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3960      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
     3961      32,    33,    -1,    -1,    36,    37,    38,    -1,    -1,    -1,
     3962      -1,    -1,    -1,    -1,    46,    12,    13,    14,    15,    16,
     3963      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3964      27,    28,    29,    30,    31,    32,    33,    -1,    -1,    36,
     3965      37,    38,    -1,    -1,    -1,    -1,    78,    79,    -1,    46,
     3966      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3967      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3968     102,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3969      -1,    78,    79,    -1,    -1,   117,    -1,    -1,    -1,    -1,
     3970      -1,   123,   124,     4,     5,     6,     7,     8,     9,    10,
     3971      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3972      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
     3973      31,    32,    33,    -1,    -1,    36,    37,    38,    -1,    -1,
     3974      -1,    -1,    -1,    -1,    -1,    46,    -1,    -1,    -1,    -1,
     3975      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3976      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3977      -1,    -1,    -1,    -1,    -1,    -1,    -1,    78,    79,     4,
     3978       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     3979      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3980      25,    26,    27,    28,    29,    30,    31,    32,    33,    -1,
     3981      -1,    36,    37,    38,    -1,    -1,   117,    -1,    -1,    -1,
     3982      -1,    46,   123,   124,    -1,    -1,    -1,    -1,    -1,    -1,
     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,    -1,    78,    79,     4,     5,     6,     7,     8,
     3986       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3987      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
     3988      29,    30,    31,    32,    33,    -1,    -1,    36,    37,    38,
     3989      -1,    -1,   117,    -1,    -1,    -1,    -1,    46,   123,   124,
     3990      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3991      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3992      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    78,
     3993      79,    -1,    -1,    -1,    -1,    -1,     3,     4,     5,     6,
     3994       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     3995      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3996      27,    28,    29,    30,    31,    32,    33,    -1,   117,    36,
     3997      37,    38,    -1,    -1,   123,   124,    -1,    -1,    -1,    46,
     3998      -1,    -1,    -1,    12,    13,    14,    15,    16,    17,    18,
     3999      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
     4000      29,    30,    31,    32,    33,    -1,    -1,    36,    37,    38,
     4001      -1,    78,    79,    -1,    -1,    44,    45,    46,    47,    -1,
     4002      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4003      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4004      -1,    -1,    -1,    -1,    73,    -1,    -1,    76,    -1,    78,
     4005      79,    80,    -1,   120,    83,    84,    85,    86,    87,    88,
     4006      89,    90,    -1,    92,    93,    -1,    -1,    -1,    -1,    -1,
     4007      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4008      -1,    -1,    -1,    -1,    -1,    -1,   115,    -1,   117,    -1,
     4009      -1,   120,    -1,    -1,   123,   124,   125,   126,   127,   128,
     4010      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     4011      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
     4012      32,    33,    -1,    -1,    36,    37,    38,    -1,    -1,    -1,
     4013      -1,    -1,    44,    45,    46,    47,    -1,    -1,    -1,    -1,
     4014      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4015      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4016      -1,    73,    -1,    -1,    76,    -1,    78,    79,    80,    -1,
     4017      -1,    83,    84,    85,    86,    87,    88,    89,    90,    -1,
     4018      92,    93,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4019      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4020      -1,    -1,    -1,   115,   116,   117,    -1,    -1,    -1,    -1,
     4021      -1,   123,   124,   125,   126,   127,   128,    12,    13,    14,
     4022      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     4023      25,    26,    27,    28,    29,    30,    31,    32,    33,    -1,
     4024      -1,    36,    37,    38,    -1,    -1,    -1,    -1,    -1,    44,
     4025      45,    46,    47,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4026      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4027      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    -1,
     4028      -1,    76,    -1,    78,    79,    80,    -1,    -1,    83,    84,
     4029      85,    86,    87,    88,    89,    90,    -1,    92,    93,    -1,
     4030      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4031      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4032     115,    -1,   117,    -1,    -1,    -1,    -1,    -1,   123,   124,
     4033     125,   126,   127,   128,    12,    13,    14,    15,    16,    17,
     4034      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     4035      28,    29,    30,    31,    32,    33,    -1,    -1,    36,    37,
     4036      38,    -1,    -1,    -1,    -1,    -1,    44,    45,    46,    47,
     4037      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4038      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4039      -1,    -1,    -1,    -1,    -1,    73,    -1,    -1,    76,    -1,
     4040      78,    79,    80,    -1,    -1,    83,    84,    85,    86,    87,
     4041      88,    89,    90,    -1,    92,    93,    -1,    -1,    -1,    -1,
     4042      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4043      -1,    -1,    -1,    -1,    -1,    -1,    -1,   115,    -1,   117,
     4044      -1,    -1,    -1,    -1,    -1,   123,   124,   125,   126,   127,
     4045     128,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     4046      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
     4047      31,    32,    33,    -1,    -1,    36,    37,    38,    -1,    -1,
     4048      -1,    -1,    -1,    44,    45,    46,    47,    -1,    -1,    -1,
     4049      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4050      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4051      -1,    -1,    73,    -1,    -1,    76,    -1,    78,    79,    80,
     4052      -1,    -1,    83,    84,    85,    86,    87,    88,    89,    90,
     4053      -1,    92,    93,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4054      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4055      -1,    -1,    -1,    -1,   115,    -1,   117,    -1,    -1,    -1,
     4056      -1,    -1,   123,   124,   125,   126,   127,   128,     4,     5,
    26604057       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    26614058      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2662       26,    27,     0,     0,   334,    29,    30,     0,     0,     0,
    2663        0,     0,   275,   276,    33,   277,     0,     0,     0,     0,
    2664        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2665        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2666        0,   278,    36,     0,    37,     0,    38,   279,     0,    40,
    2667       41,   280,     0,     0,   281,   282,   272,   283,   284,   285,
    2668       43,    44,     0,   286,   287,     0,     0,     0,     0,     0,
    2669        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2670        0,     0,     0,     0,     0,     0,   288,     0,   335,     0,
    2671        0,     0,     0,     0,   336,    48,   290,   291,   292,   293,
    2672        2,   202,     4,     5,     6,     7,     8,     9,    10,    11,
     4059      26,    27,    28,    29,    30,    31,    32,    33,    -1,    -1,
     4060      36,    37,    38,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4061      46,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     4062      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
     4063      31,    32,    33,    -1,    -1,    36,    37,    38,    -1,    -1,
     4064      -1,    -1,    78,    79,    -1,    46,    -1,    -1,    -1,    -1,
     4065      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4066      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4067      -1,    -1,    -1,    -1,    -1,    76,    -1,    78,    79,    80,
     4068     116,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    89,    90,
     4069      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4070      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4071      -1,    -1,    -1,    -1,   115,    -1,   117,    -1,    -1,    -1,
     4072      -1,    -1,   123,   124,    12,    13,    14,    15,    16,    17,
     4073      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     4074      28,    29,    30,    31,    32,    33,    -1,    -1,    36,    37,
     4075      38,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    46,    12,
     4076      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     4077      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
     4078      33,    -1,    -1,    36,    37,    38,    -1,    -1,    76,    -1,
     4079      78,    79,    -1,    46,    47,    -1,    -1,    -1,    -1,    -1,
     4080      -1,    89,    90,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4081      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4082      -1,    -1,    -1,    -1,    -1,    78,    79,    -1,    -1,   117,
     4083      -1,    -1,    -1,    -1,    -1,   123,   124,    -1,    -1,    -1,
     4084      -1,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     4085      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
     4086      31,    32,    33,    -1,   117,    36,    37,    38,   121,    -1,
     4087     123,   124,    -1,    -1,    -1,    46,    47,    12,    13,    14,
     4088      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     4089      25,    26,    27,    28,    29,    30,    31,    32,    33,    -1,
     4090      -1,    36,    37,    38,    -1,    -1,    -1,    78,    79,    -1,
     4091      -1,    46,    47,    12,    13,    14,    15,    16,    17,    18,
     4092      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
     4093      29,    30,    31,    32,    33,    -1,    -1,    36,    37,    38,
     4094      -1,    -1,    -1,    78,    79,    -1,   117,    46,    -1,    -1,
     4095     121,    -1,   123,   124,    -1,    -1,    -1,    -1,    -1,    -1,
     4096      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4097      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    78,
     4098      79,    -1,   117,    -1,    -1,    -1,   121,    -1,   123,   124,
     4099      -1,    -1,    -1,    -1,    -1,    12,    13,    14,    15,    16,
     4100      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     4101      27,    28,    29,    30,    31,    32,    33,    -1,   117,    36,
     4102      37,    38,    -1,    -1,   123,   124,    -1,    -1,    -1,    46,
    26734103      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2674       22,    23,    24,    25,    26,    27,     0,     0,   334,    29,
    2675       30,     0,     0,     0,     0,     0,   275,   276,    33,   277,
    2676        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2677        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2678        0,     0,     0,     0,     0,   278,    36,     0,    37,     0,
    2679       38,   279,     0,   203,    41,   280,     0,     0,   281,   282,
    2680      272,   283,   284,   285,    43,    44,     0,   286,   287,     0,
    2681        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2682        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2683      288,     0,   960,     0,     0,     0,     0,     0,   961,    48,
    2684      290,   291,   292,   293,     2,   202,     4,     5,     6,     7,
    2685        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     4104      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
     4105      32,    33,    -1,    -1,    36,    37,    38,    -1,    -1,    -1,
     4106      -1,    78,    79,    -1,    46,    12,    13,    14,    15,    16,
     4107      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     4108      27,    28,    29,    30,    31,    32,    33,    -1,    -1,    36,
     4109      37,    38,    -1,    -1,    -1,    -1,    78,    79,    -1,    46,
     4110     117,    -1,    -1,    -1,    -1,    -1,   123,   124,    -1,    -1,
     4111      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4112      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4113      -1,    78,    79,    -1,    -1,   117,    -1,    -1,    -1,    -1,
     4114      -1,   123,   124,    -1,    -1,    -1,    -1,    12,    13,    14,
     4115      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     4116      25,    26,    27,    28,    29,    30,    31,    32,    33,    -1,
     4117     117,    36,    37,    38,    -1,    -1,   123,   124,    -1,    -1,
     4118      -1,    46,    12,    13,    14,    15,    16,    17,    18,    19,
     4119      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
     4120      30,    31,    32,    33,    -1,    -1,    36,    37,    38,    -1,
     4121      -1,    -1,    -1,    78,    79,    -1,    46,    12,    13,    14,
     4122      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     4123      25,    26,    27,    28,    29,    30,    31,    32,    33,    -1,
     4124      -1,    36,    37,    38,    -1,    -1,    -1,    -1,    78,    79,
     4125      -1,    46,   117,    -1,    -1,    -1,    -1,    -1,   123,   124,
     4126      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4127      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4128      -1,    -1,    -1,    78,    79,    -1,    -1,   117,    -1,    -1,
     4129      -1,    -1,    -1,   123,   124,    -1,    -1,    -1,    -1,    12,
     4130      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     4131      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
     4132      33,    -1,   117,    36,    37,    38,    -1,    -1,   123,   124,
     4133      -1,    -1,    -1,    46,    12,    13,    14,    15,    16,    17,
    26864134      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    2687        0,     0,   334,    29,    30,     0,     0,     0,     0,     0,
    2688      275,   276,    33,   277,     0,     0,     0,     0,     0,     0,
    2689        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2690        0,     0,     0,     0,     0,     0,     0,     0,     0,   278,
    2691       36,     0,    37,     0,    38,   279,     0,   203,    41,   280,
    2692        0,     0,   281,   282,   272,   283,   284,   285,    43,    44,
    2693        0,   286,   287,     0,     0,     0,     0,     0,     0,     0,
    2694        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2695        0,     0,     0,     0,   288,     0,   377,     0,     0,     0,
    2696        0,     0,    47,    48,   290,   291,   292,   293,     1,     2,
    2697        3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     4135      28,    29,    30,    31,    32,    33,    -1,    -1,    36,    37,
     4136      38,    -1,    -1,    -1,    -1,    78,    79,    -1,    46,    12,
    26984137      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2699       23,    24,    25,    26,    27,     0,     0,    28,    29,    30,
    2700       31,     0,     0,     0,    32,     0,     0,    33,    34,     0,
    2701        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2702        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2703        0,     0,    35,     0,     0,    36,     0,    37,     0,    38,
    2704       39,     0,    40,    41,    42,     0,     0,     0,     0,     0,
    2705        0,     0,     0,    43,    44,     0,     0,     0,     0,     0,
    2706        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2707        0,     0,     0,     0,     0,     0,     0,     0,     0,    45,
    2708        0,    46,     0,     0,     0,     0,     0,    47,    48,   201,
    2709        2,   202,     4,     5,     6,     7,     8,     9,    10,    11,
    2710       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2711       22,    23,    24,    25,    26,    27,     0,     0,    28,    29,
    2712       30,     0,     0,     0,     0,     0,     0,     0,    33,     0,
    2713        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2714        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2715        0,     0,     0,     0,     0,     0,    36,     0,    37,     0,
    2716       38,    39,     0,   203,    41,    42,     0,     0,     0,     0,
    2717        0,     0,     0,     0,    43,    44,     0,     0,     0,     0,
    2718        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2719        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2720       45,     0,   204,     0,     0,     0,     0,     0,    47,    48,
    2721        1,     2,   202,     4,     5,     6,     7,     8,     9,    10,
    2722       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2723       21,    22,    23,    24,    25,    26,    27,     0,     0,    28,
    2724       29,    30,    31,     0,     0,     0,    32,     0,     0,    33,
    2725        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2726        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2727        0,     0,     0,     0,     0,     0,     0,    36,     0,    37,
    2728        0,    38,     0,     0,    40,    41,   201,     2,   202,     4,
    2729        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    2730       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2731       25,    26,    27,     0,     0,    28,    29,    30,     0,     0,
    2732        0,     0,     0,    46,     0,    33,     0,     0,     0,    47,
    2733       48,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2734        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2735        0,     0,     0,    36,     0,    37,     0,    38,     0,     0,
    2736      203,    41,     2,   202,     4,     5,     6,     7,     8,     9,
    2737       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2738       20,    21,    22,    23,    24,    25,    26,    27,     0,     0,
    2739       28,    29,    30,     0,     0,     0,     0,     0,     0,   204,
    2740       33,     0,     0,     0,     0,    47,    48,     0,     0,     0,
    2741        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2742        0,     0,     0,     0,     0,     0,     0,     0,    36,     0,
    2743       37,     0,    38,    39,     0,   203,    41,    42,     0,     0,
    2744        0,     0,     0,     0,     0,     0,    43,    44,     0,     0,
    2745        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2746        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2747        0,     0,    45,     0,   204,     0,     0,     0,     0,     0,
    2748       47,    48,     2,   202,     4,     5,     6,     7,     8,     9,
    2749       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2750       20,    21,    22,    23,    24,    25,    26,    27,     0,     0,
    2751      334,    29,    30,     0,     0,     0,     0,     0,     0,     0,
    2752       33,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2753        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2754        0,     0,     0,     0,     0,     0,     0,     0,    36,     0,
    2755       37,     0,    38,     0,     0,    40,    41,     2,   202,     4,
    2756        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    2757       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2758       25,    26,    27,     0,     0,   334,    29,    30,     0,     0,
    2759        0,     0,     0,  -426,   683,    33,     0,     0,     0,     0,
    2760       47,    48,     0,     0,     0,     0,     0,     0,     0,     0,
    2761        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2762        0,     0,     0,    36,     0,    37,     0,    38,     0,     0,
    2763       40,    41,     0,     0,     0,     0,     0,     0,     0,     0,
    2764        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2765        0,     0,     0,     0,  1336,     0,     0,     0,     0,     0,
    2766        0,     0,     0,     0,     0,     0,     0,     0,     0,   683,
    2767        0,     0,     0,     0,     0,    47,    48,     2,   202,     4,
    2768        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    2769       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2770       25,    26,    27,     0,     0,   334,    29,    30,     0,     0,
    2771        0,     0,     0,     0,     0,    33,     0,     8,     9,    10,
    2772       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2773       21,    22,    23,    24,    25,    26,    27,     0,     0,    28,
    2774       29,    30,     0,    36,     0,    37,     0,    38,     0,    33,
    2775       40,    41,     0,     0,     0,     0,     0,     0,     0,     0,
    2776        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2777        0,     0,     0,     0,  1338,     0,     0,    36,     0,     0,
    2778        0,     0,     0,     0,    40,    41,     0,     0,     0,   683,
    2779        0,     0,     0,     0,     0,    47,    48,     2,   202,     4,
    2780        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    2781       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2782       25,    26,    27,    46,     0,   334,    29,    30,     0,    47,
    2783       48,     0,     0,     0,     0,    33,     0,     0,     0,     0,
    2784        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2785        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2786        0,     0,     0,    36,     0,    37,     0,    38,     0,     0,
    2787      203,    41,     2,   202,     4,     5,     6,     7,     8,     9,
    2788       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2789       20,    21,    22,    23,    24,    25,    26,    27,     0,     0,
    2790      334,    29,    30,     0,     0,     0,     0,     0,     0,   260,
    2791       33,     0,     0,     0,     0,    47,    48,     0,     0,     0,
    2792        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2793        0,     0,     0,     0,     0,     0,     0,     0,    36,     0,
    2794       37,     0,    38,     0,     0,    40,    41,     2,   202,     4,
    2795        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    2796       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2797       25,    26,    27,     0,     0,    28,    29,    30,     0,     0,
    2798        0,     0,     0,     0,   683,    33,     0,     0,     0,     0,
    2799       47,    48,     0,     0,     0,     0,     0,     0,     0,     0,
    2800        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2801        0,     0,     0,    36,     0,    37,     0,    38,     0,     0,
    2802      203,    41,     8,     9,    10,    11,    12,    13,    14,    15,
    2803       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2804       26,    27,     0,     0,    28,    29,    30,     0,     0,     0,
    2805        0,     0,   275,   276,    33,   277,     0,     0,     0,   204,
    2806        0,     0,     0,     0,     0,    47,    48,     0,     0,     0,
    2807        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2808        0,   278,    36,     0,     0,     0,     0,   279,     0,    40,
    2809       41,   280,     0,     0,   281,   282,   272,   283,   284,   285,
    2810       43,    44,     0,   286,   287,     0,     0,     0,     0,     0,
    2811        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2812        0,     0,     0,     0,     0,     0,   288,     0,   518,     0,
    2813        0,   168,     0,     0,    47,    48,   290,   291,   292,   293,
    2814        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2815       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    2816        0,     0,    28,    29,    30,     0,     0,     0,     0,     0,
    2817      275,   276,    33,   277,     0,     0,     0,     0,     0,     0,
    2818        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2819        0,     0,     0,     0,     0,     0,     0,     0,     0,   278,
    2820       36,     0,     0,     0,     0,   279,     0,    40,    41,   280,
    2821        0,     0,   281,   282,   272,   283,   284,   285,    43,    44,
    2822        0,   286,   287,     0,     0,     0,     0,     0,     0,     0,
    2823        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2824        0,     0,     0,     0,   288,   -40,   289,     0,     0,     0,
    2825        0,     0,    47,    48,   290,   291,   292,   293,     8,     9,
    2826       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2827       20,    21,    22,    23,    24,    25,    26,    27,     0,     0,
    2828       28,    29,    30,     0,     0,     0,     0,     0,   275,   276,
    2829       33,   277,     0,     0,     0,     0,     0,     0,     0,     0,
    2830        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2831        0,     0,     0,     0,     0,     0,     0,   278,    36,     0,
    2832        0,     0,     0,   279,     0,    40,    41,   280,     0,     0,
    2833      281,   282,   272,   283,   284,   285,    43,    44,     0,   286,
    2834      287,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2835        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2836        0,     0,   288,     0,   289,     0,     0,     0,     0,     0,
    2837       47,    48,   290,   291,   292,   293,     8,     9,    10,    11,
    2838       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2839       22,    23,    24,    25,    26,    27,     0,     0,   334,    29,
    2840       30,     0,     0,     0,     0,     0,   275,   276,    33,   277,
    2841        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2842        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2843        0,     0,     0,     0,     0,   278,    36,     0,     0,     0,
    2844        0,   279,     0,    40,    41,   280,     0,     0,   281,   282,
    2845      272,   283,   284,   285,    43,    44,     0,   286,   287,     0,
    2846        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2847        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2848      288,     0,   335,     0,     0,     0,     0,     0,    47,    48,
    2849      290,   291,   292,   293,     8,     9,    10,    11,    12,    13,
    2850       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2851       24,    25,    26,    27,     0,     0,   334,    29,    30,     0,
    2852        0,     0,     0,     0,   275,   276,    33,   277,     0,     0,
    2853        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2854        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2855        0,     0,     0,   278,    36,     0,     0,     0,     0,   279,
    2856        0,    40,    41,   280,     0,     0,   281,   282,   272,   283,
    2857      284,   285,    43,    44,     0,   286,   287,     0,     0,     0,
    2858        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2859        0,     0,     0,     0,     0,     0,     0,     0,   288,     0,
    2860      377,     0,     0,     0,     0,     0,    47,    48,   290,   291,
    2861      292,   293,   463,     2,   202,     4,     5,     6,     7,     8,
    2862        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2863       19,    20,    21,    22,    23,    24,    25,    26,    27,     0,
    2864        0,    28,    29,    30,     0,     0,     0,     0,     0,     0,
    2865        0,    33,     8,     9,    10,    11,    12,    13,    14,    15,
    2866       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2867       26,    27,     0,     0,    28,    29,    30,     0,     0,    36,
    2868        0,    37,     0,    38,    33,     0,    40,    41,     0,     0,
    2869        0,     0,     8,     9,    10,    11,    12,    13,    14,    15,
    2870       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2871       26,    27,    36,     0,    28,    29,    30,    39,     0,    40,
    2872       41,    42,     0,     0,    33,     0,     0,     0,    -3,     0,
    2873       43,    44,     0,     0,     0,     0,     0,     0,     0,     0,
    2874        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2875        0,     0,    36,     0,     0,     0,    45,    39,    46,   203,
    2876       41,    42,     0,     0,    47,    48,     0,     0,     0,     0,
    2877       43,    44,     0,     0,     0,     0,     0,     0,     0,     0,
    2878        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2879        0,     0,     0,     0,     0,     0,    45,     0,   260,     0,
    2880        0,     0,     0,     0,    47,    48,     8,     9,    10,    11,
    2881       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2882       22,    23,    24,    25,    26,    27,     0,     0,    28,    29,
    2883       30,     0,     0,     0,     0,     0,     0,     0,    33,     0,
    2884        0,     0,     0,     0,     0,     0,     8,     9,    10,    11,
    2885       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2886       22,    23,    24,    25,    26,    27,    36,     0,    28,    29,
    2887       30,   111,     0,    40,    41,     0,     0,     0,    33,   894,
    2888        0,     0,     0,     0,    43,    44,     0,     0,     0,     0,
    2889        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2890        0,     0,     0,     0,     0,     0,    36,     0,     0,     0,
    2891        0,     0,    46,    40,    41,     0,     0,     0,    47,    48,
    2892        0,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2893       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    2894       27,     0,     0,    28,    29,    30,     0,     0,     0,     0,
    2895        0,     0,   736,    33,   894,     0,  1208,     0,    47,    48,
    2896        0,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2897       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    2898       27,    36,     0,    28,    29,    30,     0,     0,    40,    41,
    2899        0,     0,     0,    33,     8,     9,    10,    11,    12,    13,
    2900       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2901       24,    25,    26,    27,     0,     0,    28,    29,    30,     0,
    2902        0,    36,     0,     0,     0,     0,    33,   736,   203,    41,
    2903        0,  1294,     0,    47,    48,     0,     0,     0,     0,     0,
    2904        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2905        0,     0,     0,     0,    36,     0,     0,     0,     0,     0,
    2906        0,    40,    41,     0,     0,     0,     0,   260,     0,     0,
    2907        0,     0,     0,    47,    48,     0,     0,     0,     0,     8,
    2908        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2909       19,    20,    21,    22,    23,    24,    25,    26,    27,     0,
    2910      330,   334,    29,    30,     0,     0,    47,    48,     0,     0,
    2911        0,    33,     8,     9,    10,    11,    12,    13,    14,    15,
    2912       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2913       26,    27,     0,     0,   334,    29,    30,     0,     0,    36,
    2914        0,     0,     0,     0,    33,     0,    40,    41,     0,     0,
    2915        0,     0,     8,     9,    10,    11,    12,    13,    14,    15,
    2916       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    2917       26,    27,    36,     0,    28,    29,    30,     0,     0,    40,
    2918       41,     0,     0,     0,    33,   247,     0,     0,     0,     0,
    2919        0,    47,    48,     0,     0,     0,     0,     0,     0,     0,
    2920        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2921        0,     0,    36,     0,     0,     0,     0,     0,   330,    40,
    2922       41,     0,     0,     0,    47,    48,     0,     8,     9,    10,
    2923       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2924       21,    22,    23,    24,    25,    26,    27,     0,     0,   334,
    2925       29,    30,     0,     0,     0,     0,     0,     0,   736,    33,
    2926        0,     0,     0,     0,    47,    48,     0,     8,     9,    10,
    2927       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2928       21,    22,    23,    24,    25,    26,    27,    36,     0,   334,
    2929       29,    30,     0,     0,   203,    41,     0,     0,     0,    33,
    2930        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2931       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    2932        0,     0,   334,    29,    30,     0,     0,    36,     0,     0,
    2933        0,     0,    33,   260,    40,    41,     0,     0,     0,    47,
    2934       48,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2935        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2936       36,     0,     0,     0,     0,     0,     0,    40,    41,     0,
    2937        0,     0,     0,   683,     0,     0,     0,     0,     0,    47,
    2938       48,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2939        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2940        0,     0,     0,     0,     0,     0,   736,     0,     0,     0,
    2941        0,     0,    47,    48,     2,   202,     4,     5,     6,     7,
    2942        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2943       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    2944        0,     0,   334,    29,    30,     0,     0,     0,     0,     0,
    2945        0,     0,    33,     0,   275,   276,     0,   277,  1002,     0,
    2946     1003,     0,     0,  1004,  1005,  1006,  1007,  1008,  1009,  1010,
    2947     1011,     0,     0,  1529,  1012,     0,     0,     0,  1013,  1014,
    2948       36,  1015,    37,   278,    38,     0,     0,    40,    41,  1016,
    2949        0,   171,   172,  1019,     0,     0,   281,   282,   272,   283,
    2950      284,   285,    43,    44,     0,   286,   287,     0,     0,     0,
    2951        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2952        0,     0,     0,     0,     0,  -439,     0,     0,   288,     0,
    2953      377,     0,     0,   168,     0,     0,    47,    48,   290,   291,
    2954      292,   293,     0,     0,   275,   276,  1020,   277,  1002,     0,
    2955     1003,  -134,     0,  1004,  1005,  1006,  1007,  1008,  1009,  1010,
    2956     1011,     0,     0,     0,  1012,     0,     0,     0,  1013,  1014,
    2957        0,  1015,     0,   278,     0,     0,     0,     0,     0,  1016,
    2958        0,   171,   172,  1019,     0,     0,   281,   282,   272,   283,
    2959      284,   285,    43,    44,     0,   286,   287,     0,     0,     0,
    2960        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2961        0,     0,     0,     0,     0,     0,     0,     0,   288,     0,
    2962      377,     0,     0,   168,     0,     0,    47,    48,   290,   291,
    2963      292,   293,     0,     0,     0,     0,  1020,     0,     0,     0,
    2964        0,  -134,     2,   202,     4,     5,     6,     7,     8,     9,
    2965       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2966       20,    21,    22,    23,    24,    25,    26,    27,     0,     0,
    2967      334,    29,    30,     0,     0,     0,     0,     0,     0,     0,
    2968       33,     0,   275,   276,     0,   277,  1002,     0,  1003,  1388,
    2969     1389,  1004,  1005,  1006,  1007,  1008,  1009,  1010,  1011,     0,
    2970        0,  1529,  1012,     0,     0,     0,  1013,  1014,    36,  1015,
    2971       37,   278,    38,     0,     0,    40,    41,  1016,     0,   171,
    2972      172,  1019,     0,     0,   281,   282,   272,   283,   284,   285,
    2973       43,    44,     0,   286,   287,     0,     0,     0,     0,  1301,
    2974        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2975        0,     0,     0,     0,     0,     0,   288,     0,   377,     0,
    2976        0,   168,     0,     0,    47,    48,   290,   291,   292,   293,
    2977        0,     0,   275,   276,  1020,   277,  1002,     0,  1003,  1388,
    2978     1389,  1004,  1005,  1006,  1007,  1008,  1009,  1010,  1011,     0,
    2979        0,     0,  1012,     0,     0,     0,  1013,  1014,     0,  1015,
    2980        0,   278,     0,     0,     0,     0,     0,  1016,     0,   171,
    2981      172,  1019,     0,     0,   281,   282,   272,   283,   284,   285,
    2982       43,    44,     0,   286,   287,     0,     0,     0,     0,     0,
    2983        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2984        0,     0,     0,     0,     0,     0,   288,     0,   377,     0,
    2985        0,   168,     0,     0,    47,    48,   290,   291,   292,   293,
    2986        0,     0,   275,   276,  1020,   277,  1002,     0,  1003,     0,
    2987        0,  1004,  1005,  1006,  1007,  1008,  1009,  1010,  1011,     0,
    2988        0,     0,  1012,     0,     0,     0,  1013,  1014,     0,  1015,
    2989        0,   278,     0,     0,     0,     0,     0,  1016,     0,   171,
    2990      172,  1019,     0,     0,   281,   282,   272,   283,   284,   285,
    2991       43,    44,     0,   286,   287,     0,     0,     0,     0,     0,
    2992        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2993        0,     0,     0,     0,     0,     0,   288,     0,   377,     0,
    2994        0,   168,     0,     0,    47,    48,   290,   291,   292,   293,
    2995        0,     0,     0,     0,  1020,     8,     9,    10,    11,    12,
    2996       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2997       23,    24,    25,    26,    27,     0,     0,    28,    29,    30,
    2998        0,     0,     0,     0,     0,     0,     0,    33,   201,     2,
    2999      202,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    3000       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3001       23,    24,    25,    26,    27,    36,     0,    28,    29,    30,
    3002      111,     0,    40,    41,     0,     0,     0,    33,     0,     0,
    3003        0,     0,     0,    43,    44,     0,     0,     0,     0,     0,
    3004        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    3005        0,     0,     0,     0,     0,    36,     0,    37,     0,    38,
    3006        0,     0,   203,    41,   463,     2,   202,     4,     5,     6,
     4138      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
     4139      33,    -1,    -1,    36,    37,    38,    -1,    -1,    -1,    -1,
     4140      78,    79,    -1,    46,   117,    -1,    -1,    -1,    -1,    -1,
     4141     123,   124,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4142      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4143      -1,    -1,    -1,    -1,    -1,    78,    79,    -1,    -1,   117,
     4144      -1,    -1,    -1,    -1,    -1,   123,   124,     4,     5,     6,
    30074145       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    30084146      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3009       27,     0,     0,    28,    29,    30,     0,     0,     0,     0,
    3010        0,     0,     0,    33,     0,     0,     0,     0,     0,     0,
    3011        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    3012        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    3013        0,    36,     0,    37,     0,    38,     0,     0,    40,    41,
    3014        2,   202,     4,     5,     6,     7,     8,     9,    10,    11,
    3015       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3016       22,    23,    24,    25,    26,    27,     0,     0,   334,    29,
    3017       30,     0,     0,     0,     0,     0,     0,     0,    33,     0,
    3018        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    3019        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    3020        0,     0,     0,     0,     0,     0,    36,     0,    37,     0,
    3021       38,     0,     0,   203,    41,     2,   202,     4,     5,     6,
     4147      27,    28,    29,    30,    31,    32,    33,    -1,    -1,    36,
     4148      37,    38,    -1,    -1,    44,    45,    -1,    47,    48,    46,
     4149      50,    -1,    -1,    53,    54,    55,    56,    57,    58,    59,
     4150      60,    -1,    -1,    63,    64,    -1,    -1,    -1,    68,    69,
     4151      -1,    71,    -1,    73,    -1,    -1,    76,    -1,    78,    79,
     4152      80,    78,    79,    83,    84,    85,    86,    87,    88,    89,
     4153      90,    -1,    92,    93,    -1,    -1,    -1,    -1,    -1,    -1,
     4154      -1,    -1,    -1,    -1,    -1,   102,    -1,    -1,    -1,    -1,
     4155      -1,    -1,    -1,    -1,    -1,   115,    -1,   117,    -1,    -1,
     4156     120,    -1,    -1,   123,   124,   125,   126,   127,   128,    -1,
     4157      -1,    44,    45,   133,    47,    48,    -1,    50,   138,    -1,
     4158      53,    54,    55,    56,    57,    58,    59,    60,    -1,    -1,
     4159      -1,    64,    -1,    -1,    -1,    68,    69,    -1,    71,    -1,
     4160      73,    -1,    -1,    76,    -1,    78,    79,    80,    -1,    -1,
     4161      83,    84,    85,    86,    87,    88,    89,    90,    -1,    92,
     4162      93,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4163      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4164      -1,    -1,   115,    -1,   117,    -1,    -1,   120,    -1,    -1,
     4165     123,   124,   125,   126,   127,   128,    -1,    -1,    -1,    -1,
     4166     133,    -1,    -1,    44,    45,   138,    47,    48,    -1,    50,
     4167      51,    52,    53,    54,    55,    56,    57,    58,    59,    60,
     4168      -1,    -1,    63,    64,    -1,    -1,    -1,    68,    69,    -1,
     4169      71,    -1,    73,    -1,    -1,    76,    -1,    78,    79,    80,
     4170      -1,    -1,    83,    84,    85,    86,    87,    88,    89,    90,
     4171      -1,    92,    93,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4172      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4173      -1,    -1,    -1,    -1,   115,    -1,   117,    -1,    -1,   120,
     4174      -1,    -1,   123,   124,   125,   126,   127,   128,    -1,    -1,
     4175      44,    45,   133,    47,    48,    -1,    50,    51,    52,    53,
     4176      54,    55,    56,    57,    58,    59,    60,    -1,    -1,    -1,
     4177      64,    -1,    -1,    -1,    68,    69,    -1,    71,    -1,    73,
     4178      -1,    -1,    76,    -1,    78,    79,    80,    -1,    -1,    83,
     4179      84,    85,    86,    87,    88,    89,    90,    -1,    92,    93,
     4180      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4181      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4182      -1,   115,    -1,   117,    -1,    -1,   120,    -1,    -1,   123,
     4183     124,   125,   126,   127,   128,    -1,    -1,    44,    45,   133,
     4184      47,    48,    -1,    50,    -1,    -1,    53,    54,    55,    56,
     4185      57,    58,    59,    60,    -1,    -1,    -1,    64,    -1,    -1,
     4186      -1,    68,    69,    -1,    71,    -1,    73,    -1,    -1,    76,
     4187      -1,    78,    79,    80,    -1,    -1,    83,    84,    85,    86,
     4188      87,    88,    89,    90,    -1,    92,    93,    -1,    -1,    -1,
     4189      -1,    -1,    -1,    44,    45,    -1,    47,    -1,    -1,    -1,
     4190      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   115,    -1,
     4191     117,    44,    45,   120,    47,    -1,   123,   124,   125,   126,
     4192     127,   128,    73,    -1,    -1,    76,   133,    -1,    -1,    80,
     4193      -1,    -1,    83,    84,    85,    86,    87,    88,    89,    90,
     4194      73,    92,    93,    76,    -1,    -1,    -1,    80,    -1,    -1,
     4195      83,    84,    85,    86,    87,    88,    89,    90,    -1,    92,
     4196      93,    -1,    -1,    -1,   115,    -1,   117,    44,    45,    -1,
     4197      47,    -1,   123,   124,   125,   126,   127,   128,    -1,    -1,
     4198      -1,    -1,   115,    -1,   117,    -1,    -1,    -1,    -1,    -1,
     4199     123,   124,   125,   126,   127,   128,    73,    -1,    -1,    76,
     4200      -1,    -1,    -1,    80,    -1,    -1,    83,    84,    85,    86,
     4201      87,    88,    89,    90,    -1,    92,    93,    -1,    -1,    -1,
     4202      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4203      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   115,    -1,
     4204     117,    -1,    -1,    -1,    -1,    -1,   123,   124,   125,   126,
     4205     127,   128,     3,     4,     5,     6,     7,     8,     9,    10,
     4206      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     4207      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
     4208      31,    32,    33,    -1,    -1,    36,    37,    38,    -1,    -1,
     4209      -1,    -1,    -1,    -1,    -1,    46,     3,     4,     5,     6,
    30224210       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    30234211      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3024       27,     0,     0,    28,    29,    30,     0,     0,     0,     0,
    3025        0,     0,     0,    33,     0,     0,     0,     0,     0,     0,
    3026        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    3027        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    3028        0,    36,     0,    37,     0,    38,     0,     0,   203,    41,
    3029        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    3030       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3031        0,     0,    28,    29,    30,   482,   483,   484,   485,     0,
    3032        0,     0,    33,     0,     0,     0,     0,     0,     0,     0,
    3033        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    3034        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    3035       36,     0,     0,     0,     0,     0,     0,    40,    41
    3036 };
    3037 
    3038 #define yypact_value_is_default(yystate) \
    3039   ((yystate) == (-1346))
    3040 
    3041 #define yytable_value_is_error(yytable_value) \
    3042   YYID (0)
    3043 
    3044 static const yytype_int16 yycheck[] =
    3045 {
    3046        0,     1,     0,    45,   180,    45,     1,   180,     1,   200,
    3047      117,   180,    51,    45,   180,   451,   603,   180,     0,   651,
    3048      180,  1050,   180,   341,   532,   722,   603,   479,   900,   165,
    3049      166,    31,    32,   183,    34,   215,    34,   341,  1010,     0,
    3050       34,   622,   865,  1388,   600,    45,  1050,  1050,     1,  1311,
    3051     1097,    51,    34,    51,   514,    45,   983,   984,    58,   568,
    3052      600,   106,   865,    63,    66,    63,    66,    45,    66,    69,
    3053     1392,    69,   600,    34,    69,   114,   493,     0,     1,   255,
    3054      497,    66,   255,    67,    42,   337,   255,   416,   479,   255,
    3055      197,   154,   255,   600,    45,   255,    42,   255,    51,    47,
    3056       48,   251,   252,   600,    30,   144,   435,   107,   153,    54,
    3057      110,    34,   600,    90,   443,   342,   246,   117,  1463,   363,
    3058      600,   984,    42,   367,   337,   125,   100,  1052,   424,   425,
    3059      114,     0,  1269,   118,    42,   137,   604,  1056,   180,  1058,
    3060      180,   118,   610,    47,    48,   145,    69,   145,   180,    84,
    3061      363,   224,  1414,   106,   367,    81,   114,   157,   116,   157,
    3062      134,   114,   101,   181,   237,    34,   205,    56,   486,   114,
    3063      116,   119,   157,   713,  1496,  1047,   114,   101,  1001,  1501,
    3064      180,   181,    42,   181,  1231,   713,  1233,  1234,   127,   288,
    3065      180,   144,   133,   114,   114,   136,   116,   197,  1001,   495,
    3066      153,     0,   180,   127,  1526,   205,   114,   205,   116,    98,
    3067       42,  1533,     0,   255,   214,   255,   120,   217,   514,   217,
    3068       51,   114,   261,   255,   224,   733,   813,   479,   408,   180,
    3069      112,   181,   217,   713,   234,    34,   813,   237,   256,  1013,
    3070     1014,   241,   242,   241,   800,   947,    34,   241,   201,   242,
    3071      641,   642,   205,    42,   136,   255,   256,    45,   256,   241,
    3072      800,   300,   262,    51,   249,   265,   657,   114,   115,   254,
    3073        0,     1,   800,  1198,   783,    63,     0,    42,    66,   575,
    3074      241,    69,   114,   114,   116,   246,   416,   332,   920,    47,
    3075       48,   743,   994,   800,    84,  1432,   114,  1269,   337,   603,
    3076      189,   114,  1439,   800,    34,   435,   256,   114,   261,   117,
    3077       34,   264,   800,   443,   705,   422,    42,   135,   241,  1093,
    3078      800,   428,   322,   212,   322,   114,   116,   116,   642,   136,
    3079     1257,  1258,   909,   222,   802,   288,    66,   121,   115,    69,
    3080      340,   341,   586,   657,   121,    69,   119,   300,  1211,   114,
    3081     1501,   116,   743,   137,  1051,     0,  1179,   145,   687,    42,
    3082       42,   119,  1499,   590,   364,     3,    42,   430,   368,   157,
    3083      622,  1501,   241,   586,   205,  1347,  1179,   246,   378,   332,
    3084      632,   962,  1533,   117,   402,   424,   425,   121,   114,    34,
    3085      116,   705,   180,   181,   638,  1258,  1526,  1443,   625,   288,
    3086      143,   908,   402,  1533,   402,     0,   115,   634,   507,   622,
    3087      509,   908,   451,   512,   124,   125,   515,   205,    42,   632,
    3088      908,    66,   422,   115,   154,   638,   135,     3,   428,   217,
    3089      261,   114,   114,   116,   116,  1481,   121,  1483,   114,    34,
    3090      116,   460,   241,   135,   429,   722,  1269,   246,   121,     0,
    3091     1147,  1148,   402,   241,   114,   416,   495,  1384,    42,   477,
    3092     1092,   524,   135,   463,  1436,   692,  1438,   255,   468,   300,
    3093      463,   424,   425,   115,   435,   514,  1505,   477,   930,   477,
    3094      707,   481,   443,   481,   469,   945,   486,   217,   924,   489,
    3095      114,   743,   116,   135,   494,   813,  1073,     0,   451,   481,
    3096      777,  1505,  1505,   971,   972,   922,   116,   122,   118,   813,
    3097      463,   241,   115,   128,   129,   136,   652,   241,   121,    10,
    3098      481,  1384,   246,  1466,   587,   135,   526,   477,  1500,  1472,
    3099      114,   531,   116,   526,   322,   115,   575,   115,   531,   930,
    3100      493,   121,   495,   121,   497,   114,   114,   416,   116,   793,
    3101     1475,   440,   659,   341,   507,  1498,   509,   687,   481,   512,
    3102     1503,   514,   515,   670,     0,     1,   435,   115,   795,    97,
    3103       98,   701,   217,   121,   443,   121,   465,   854,   641,   642,
    3104      793,  1506,   114,   622,    75,   585,    77,    78,   121,   641,
    3105      642,   137,   983,   632,   657,   913,   241,   121,    34,   121,
    3106      600,   115,   115,   603,   137,   657,    84,    75,   121,  1432,
    3107     1535,   135,   481,  1315,   402,   137,  1439,   416,   507,   114,
    3108       88,    89,   575,   512,   624,    75,   515,    77,    78,   629,
    3109       66,   114,   114,    69,   116,   488,   435,    51,    88,    89,
    3110      122,   123,   705,   643,   443,   277,   241,   647,   116,    63,
    3111      114,   246,    66,   705,   136,    69,   656,   676,   658,   659,
    3112      660,   121,  1114,   121,   121,   658,   116,   660,   300,   301,
    3113      670,   115,   852,   950,  1376,  1377,  1499,   137,   930,   137,
    3114      137,    75,   481,   114,    10,    11,    12,    13,    14,   121,
    3115      114,  1388,   416,   481,    88,    89,   121,   342,   486,   699,
    3116      430,   114,   337,   135,   115,   337,   699,   115,   343,   121,
    3117      962,   435,   137,   713,   714,   115,    42,   702,   587,   443,
    3118      720,   998,   858,  1114,   724,   137,   687,   115,   363,   121,
    3119      880,   145,   367,    95,    96,   115,   120,   690,   965,   121,
    3120      701,   121,   121,   157,    70,   137,   470,   379,   115,   962,
    3121      114,   481,   605,  1450,   121,   137,   609,   481,   137,  1211,
    3122      779,   121,   615,    75,   717,  1462,  1463,   181,   130,   131,
    3123      789,   790,   115,   114,  1051,   116,    88,    89,   121,  1287,
    3124       67,   217,   801,   636,   975,   121,   675,   640,   114,  1486,
    3125      116,   205,   115,   114,   524,   684,   122,   123,   121,   688,
    3126      800,   137,   114,   217,   116,   241,   114,    10,    11,    12,
    3127       13,    14,   600,   813,    70,   603,   119,    73,   687,   121,
    3128       76,   416,    78,   115,   469,   115,   889,   115,   137,   121,
    3129       86,   121,   701,   121,     3,   137,   481,   137,    75,    42,
    3130      435,    10,    11,    12,    13,    14,   117,   114,   443,   116,
    3131      121,    88,    89,   288,   137,   122,   123,   587,   858,   690,
    3132      996,  1558,  1114,  1043,   864,   865,  1257,    70,   117,   115,
    3133     1147,  1148,   121,    42,  1050,   121,   115,  1050,   896,   116,
    3134      115,  1050,   121,   865,  1050,   924,   481,  1050,   687,   114,
    3135     1050,   116,  1050,    75,    93,    94,   896,   122,   123,   899,
    3136       82,    70,   701,    85,   865,    87,    88,    89,   322,   115,
    3137      117,   641,   642,   913,   121,   121,   548,   549,   550,   119,
    3138      983,   984,    84,   962,   115,   713,   714,   657,   923,   672,
    3139      121,   931,   117,   114,   116,   114,   121,   937,   931,   115,
    3140     1484,   894,   865,   943,  1488,   121,   896,   947,   120,   121,
    3141      943,   586,   208,    75,   947,    77,    78,    79,   115,  1211,
    3142      123,   980,   981,   687,   121,   132,    88,    89,   133,   922,
    3143      923,   924,    75,   115,   116,   705,  1083,   701,    99,    82,
    3144      625,   116,    85,   836,    87,    88,    89,   622,   402,   424,
    3145      425,   117,   114,   117,   994,   115,   865,   632,    61,    62,
    3146      923,   994,   891,   638,  1004,   120,   121,  1007,  1008,  1009,
    3147       47,    48,   800,   116,    10,    11,    12,    13,    14,  1001,
    3148      889,   115,  1041,  1042,   115,   813,  1098,  1099,    75,   115,
    3149     1048,   115,    79,   115,  1052,   114,   115,   116,  1038,   137,
    3150     1001,    88,    89,   551,   552,   481,    42,   692,  1048,   114,
    3151     1050,   117,  1052,   555,   556,   557,   558,   702,   114,   115,
    3152      116,   914,   707,   894,  1064,   116,   865,   114,    75,   116,
    3153       77,    78,   507,   119,    70,   122,   123,   512,  1001,   119,
    3154      515,    88,    89,  1083,   553,   554,  1522,   136,   344,   345,
    3155      121,   347,   687,   349,   114,   115,   116,  1097,  1048,   114,
    3156      115,   116,  1052,   136,  1097,   361,   701,   114,   896,   119,
    3157      114,  1388,   119,   137,  1067,   747,   559,   560,   114,   117,
    3158      116,   115,   115,  1012,   135,   913,   122,   123,   117,     3,
    3159       75,   566,  1001,   117,    79,   865,    10,    11,    12,    13,
    3160       14,   865,   121,    88,    89,   135,  1209,   135,    31,    75,
    3161      795,    77,    78,    79,  1154,    61,    62,    63,   793,   889,
    3162      115,   796,    88,    89,   115,   119,   115,   120,    42,   114,
    3163      120,   114,   120,  1450,   121,   115,   115,   122,   123,  1179,
    3164     1198,     0,     1,   439,   121,  1462,  1463,   115,   115,   121,
    3165     1209,   115,   115,   923,  1257,  1258,    70,  1179,  1198,   115,
    3166      115,   115,  1001,    75,   115,    77,    78,    79,   115,  1486,
    3167       75,   137,    77,    78,    79,    34,    88,    89,  1179,  1238,
    3168      865,  1216,   115,    88,    89,   115,    45,  1246,  1247,  1248,
    3169      115,  1231,    51,  1233,  1234,   115,  1067,  1190,  1231,   115,
    3170     1233,  1234,   115,   120,    63,   115,    31,    66,  1198,  1476,
    3171       69,   115,   136,   983,   984,    75,  1179,    77,    78,    79,
    3172     1048,   119,  1050,  1216,  1052,   137,  1373,   115,    88,    89,
    3173      865,  1001,    75,   117,    77,    78,    79,  1001,   121,   117,
    3174      115,  1558,  1300,   115,   121,    88,    89,   106,   119,   115,
    3175     1290,    58,   115,  1216,   114,   114,   116,   121,   117,   118,
    3176     1300,   115,   122,   123,    75,   121,    77,    78,  1269,   114,
    3177     1179,    11,   114,   114,   114,  1315,  1311,    88,    89,   122,
    3178      965,  1384,  1315,   114,   135,   144,   145,   962,   135,  1505,
    3179      962,   135,  1505,   121,   153,   154,  1505,   120,   157,  1505,
    3180      107,  1341,  1505,   110,  1344,  1505,  1269,  1505,   119,   115,
    3181     1300,   137,   115,    75,   135,  1350,  1001,   135,  1311,  1190,
    3182       82,   180,   181,    85,  1349,    87,    88,    89,  1475,  1001,
    3183      115,   133,  1372,  1373,   120,   119,  1376,  1377,   197,   120,
    3184     1179,   115,   117,  1376,  1377,   121,   205,   117,  1311,  1278,
    3185      115,   115,  1392,   120,  1413,   115,    32,  1397,   217,    75,
    3186     1269,    77,    78,    79,   117,   117,  1001,    66,   117,   115,
    3187     1198,    50,    88,    89,  1399,   117,    75,    86,    75,  1414,
    3188       77,    78,   241,   117,   117,   115,  1426,  1350,   115,   865,
    3189      249,    88,    89,   137,   137,   254,   255,   256,   114,   137,
    3190      137,   137,   261,     3,   115,   115,   676,   214,   120,  1179,
    3191       10,    11,    12,    13,    14,  1179,   120,   114,   114,   118,
    3192      115,  1414,   119,  1505,   117,  1505,   117,   117,   865,   288,
    3193     1269,  1432,   117,  1505,   117,  1475,   117,  1477,  1439,   117,
    3194      115,   300,    42,  1522,  1477,   114,  1216,   923,  1506,   125,
    3195      114,  1414,    63,   114,   119,   262,  1496,   316,   157,   115,
    3196      115,  1501,   101,   322,   117,  1505,  1506,   117,  1506,  1432,
    3197       70,   115,  1300,   332,   117,   115,  1439,  1535,   337,   101,
    3198      114,   114,   341,   342,  1524,   137,  1526,  1257,  1258,   120,
    3199     1530,   115,   115,  1533,  1179,  1535,   115,  1535,  1499,  1269,
    3200      115,   121,    45,  1286,   363,  1269,  1546,   135,   367,   779,
    3201     1550,  1440,   137,  1442,   115,   101,  1506,   115,   217,   789,
    3202      790,   137,   101,  1432,   137,  1001,   135,   137,  1568,  1522,
    3203     1439,   801,   117,   340,    75,  1568,  1499,   115,    79,  1579,
    3204      137,  1311,   115,   402,  1179,  1535,  1579,    88,    89,    66,
    3205      249,  1480,   135,  1482,   114,   254,   121,   364,   234,   120,
    3206      117,   368,   117,   422,   117,   424,   425,  1004,   137,   428,
    3207     1441,   430,  1443,   114,   137,   115,   114,  1360,   120,  1349,
    3208     1350,   122,   123,   120,  1269,   115,  1350,   115,   135,   265,
    3209     1499,   115,   451,  1432,   115,   115,   114,    54,   137,    56,
    3210     1439,   118,    59,    60,    61,  1534,   137,  1536,   115,   468,
    3211     1481,   137,  1483,   561,  1384,   137,   565,  1020,   477,    76,
    3212      479,   562,   481,   563,   942,  1554,  1555,   486,  1411,  1399,
    3213      564,  1463,    89,    90,  1269,  1179,   495,  1352,  1550,  1279,
    3214      157,  1543,  1439,   342,  1414,  1489,  1038,  1048,   507,   894,
    3215      509,  1300,  1058,   512,   724,   514,   515,   916,   858,   937,
    3216     1499,   653,  1432,   717,  1349,   524,    75,   915,  1432,  1439,
    3217     1216,   481,   567,    82,   732,  1439,    85,  1505,    87,    88,
    3218       89,   567,   567,  1158,  1159,    75,  1161,    77,    78,    79,
    3219       -1,    -1,  1167,    -1,    -1,  1170,    -1,    -1,    88,    89,
    3220      217,  1484,   378,  1179,    -1,  1488,  1489,   116,   567,   568,
    3221      980,   981,    -1,    -1,  1399,    -1,   575,   234,     4,     5,
    3222        6,     7,     8,     9,    -1,   182,    -1,   586,   587,  1499,
    3223      429,   590,   249,  1516,    -1,  1499,    -1,   254,    -1,    -1,
    3224     1216,   600,  1179,    -1,   603,    -1,   445,  1432,    75,    -1,
    3225       77,    78,    79,    -1,  1439,    -1,  1539,    -1,    -1,    -1,
    3226     1543,    88,    89,   622,    -1,    -1,  1441,    -1,  1443,    -1,
    3227      469,  1041,  1042,   632,    -1,   634,    -1,    -1,    75,   638,
    3228       77,    78,   641,   642,  1567,    -1,    72,   114,    74,   116,
    3229       -1,    88,    89,  1269,    -1,   122,   123,  1432,   657,    -1,
    3230      659,    -1,    -1,    -1,  1439,    -1,  1481,    -1,  1483,   136,
    3231       -1,   670,    -1,   489,  1499,    -1,    -1,   624,   494,    75,
    3232       -1,    77,    78,    79,    -1,   342,    -1,    -1,    -1,    -1,
    3233       -1,   690,    88,    89,    -1,  1311,   643,    -1,     4,     5,
    3234        6,     7,     8,     9,    -1,    -1,   705,   706,   707,   656,
    3235       -1,   137,    -1,  1290,   713,   714,    -1,    -1,   114,    -1,
    3236      116,    -1,    58,    -1,  1499,    -1,   122,   123,  1343,    35,
    3237       -1,    -1,    -1,  1349,  1350,   275,    -1,   277,   278,   336,
    3238       -1,   338,    -1,    -1,   743,    -1,   286,   287,    86,    -1,
    3239       -1,   590,    90,    91,    92,    -1,    -1,    -1,   355,   356,
    3240      300,   301,    -1,    -1,  1341,    -1,    72,  1344,    74,   585,
    3241       -1,   107,   429,    -1,   110,    -1,   114,    -1,   116,    -1,
    3242      118,   119,    -1,  1399,   783,    -1,   625,     4,     5,     6,
    3243        7,     8,     9,    -1,   793,   634,   795,   337,  1414,    -1,
    3244       -1,   800,    86,    -1,    -1,    -1,    90,    91,    92,    -1,
    3245       -1,    -1,   469,   629,   813,  1392,  1432,    -1,   185,    -1,
    3246     1397,    -1,    -1,  1439,    -1,   192,    -1,    -1,  1238,    -1,
    3247      114,   647,   116,    -1,   118,   119,  1246,  1247,  1248,   379,
    3248       -1,    -1,    10,    11,    12,    13,    14,    -1,    75,  1426,
    3249       77,    78,    -1,   692,    -1,    72,    -1,    74,    -1,    -1,
    3250       -1,    88,    89,   702,    -1,    -1,   865,    -1,   707,    -1,
    3251       -1,    -1,    -1,    -1,    42,    -1,    -1,    -1,   214,    -1,
    3252       -1,    -1,    -1,  1499,    -1,    -1,    -1,    -1,    -1,    -1,
    3253      889,   258,    -1,    -1,    -1,   894,    -1,   896,    -1,    -1,
    3254       -1,    -1,    70,    -1,   720,    -1,    -1,    75,   724,   908,
    3255      909,    79,    -1,    -1,   913,    -1,    -1,    -1,    -1,    -1,
    3256       88,    89,    -1,    -1,   923,   924,   262,    -1,    -1,    -1,
    3257       -1,   930,    -1,   590,    -1,    -1,    -1,    -1,    -1,    -1,
    3258       -1,    -1,    -1,    -1,    -1,    -1,   114,  1524,    -1,   316,
    3259       -1,    -1,    -1,  1530,   122,   123,   795,    -1,   325,    -1,
    3260       -1,   328,    -1,   962,    -1,    -1,    -1,    -1,   625,  1546,
    3261       -1,    -1,   629,  1550,    -1,    -1,    -1,   634,    -1,    -1,
    3262       -1,    -1,    -1,    -1,   983,   984,    -1,    -1,    -1,    -1,
    3263       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3264       -1,    -1,  1001,  1413,   340,    -1,    -1,    -1,   548,   549,
    3265      550,   551,   552,   553,   554,   555,   556,   557,   558,   559,
    3266      560,   561,   562,   563,   564,   565,    -1,   394,   364,    -1,
    3267       -1,   398,   368,    -1,    -1,   692,    -1,    -1,    -1,    -1,
    3268       -1,    -1,   858,    -1,    -1,   702,    -1,    -1,   864,  1048,
    3269      707,  1050,    -1,  1052,    -1,    -1,    -1,    -1,    -1,    -1,
    3270     1007,  1008,  1009,    -1,    -1,    -1,    -1,    -1,  1067,    -1,
    3271       -1,    -1,    -1,    -1,  1073,    -1,    -1,    -1,    -1,    -1,
    3272       -1,    -1,    -1,   899,  1083,    -1,    -1,    -1,    -1,    -1,
    3273       10,    11,    12,    13,    14,    -1,   693,    -1,   695,    -1,
    3274       75,    -1,    77,    78,    79,    -1,   703,   704,    -1,   476,
    3275       -1,   708,    -1,    88,    89,  1114,    -1,    -1,    -1,    -1,
    3276       -1,   937,    42,    -1,    -1,    -1,   965,    -1,   725,    -1,
    3277       -1,    -1,    -1,   730,    -1,    -1,    -1,    -1,   795,   114,
    3278       75,   116,    77,    78,    79,    -1,    -1,   122,   123,    -1,
    3279       70,     0,   749,    88,    89,    75,    -1,    77,    78,    79,
    3280      135,    -1,    -1,    10,    11,    12,    13,    14,    88,    89,
    3281       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   114,
    3282     1179,    -1,   722,    -1,    -1,    34,    -1,   122,   123,    -1,
    3283       -1,  1190,    -1,    -1,   114,    42,   116,    -1,    -1,  1198,
    3284      567,   568,   122,   123,    -1,    -1,    -1,   747,    -1,    -1,
    3285       -1,    -1,  1211,    -1,    -1,    -1,    -1,  1216,    -1,    -1,
    3286       69,    -1,  1038,    70,    -1,    -1,    -1,    -1,    75,    -1,
    3287       77,    78,    79,    -1,    -1,    -1,    -1,   777,    -1,    -1,
    3288       -1,    88,    89,    75,    -1,    77,    78,    79,  1064,    -1,
    3289      847,    -1,   849,   850,   851,    -1,    88,    89,  1257,  1258,
    3290       -1,    -1,    -1,    -1,    -1,    -1,    -1,   114,    -1,   116,
    3291     1269,   868,    -1,    -1,    -1,   122,   123,    -1,    -1,    -1,
    3292       -1,    -1,   114,    -1,    -1,    -1,    -1,   884,   624,    -1,
    3293      122,   123,    -1,    -1,   661,    -1,    -1,    -1,   665,    -1,
    3294       -1,  1300,    -1,    -1,    -1,   154,    -1,   643,   965,    -1,
    3295      907,    -1,  1311,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3296      656,    -1,    -1,    -1,    10,    11,    12,    13,    14,    -1,
    3297       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1154,    10,
    3298       11,    12,    13,    14,   941,    -1,    -1,    -1,    -1,   946,
    3299     1349,  1350,    -1,    -1,   951,    -1,    42,    -1,    -1,   956,
    3300      957,    -1,    -1,    -1,   961,    -1,   963,   964,    -1,    -1,
    3301      967,    42,    -1,    -1,  1373,    -1,    -1,   226,    -1,   976,
    3302       -1,    -1,    -1,    -1,    70,  1384,    -1,    -1,    -1,    75,
    3303        0,     1,   241,    79,    -1,   992,   993,   246,    -1,    70,
    3304     1399,    -1,    88,    89,    75,    -1,    77,    78,    79,    -1,
    3305      950,    -1,    -1,    -1,    -1,  1414,   783,    88,    89,    -1,
    3306       -1,    -1,   962,    -1,    34,  1372,    -1,  1024,   114,    -1,
    3307     1027,    -1,    -1,  1432,    -1,    -1,   122,   123,    -1,    -1,
    3308     1439,    51,  1441,   114,  1443,   116,    -1,    -1,    -1,    -1,
    3309       -1,   122,   123,    -1,    -1,    -1,    -1,    -1,    -1,    69,
    3310       -1,  1001,    -1,   102,   103,   104,   105,   106,   107,   108,
    3311      109,   110,   111,   112,    -1,    -1,  1475,  1476,    -1,    -1,
    3312       -1,    -1,  1481,  1080,  1483,    -1,    -1,    -1,   337,  1086,
    3313     1087,    -1,    -1,    -1,   343,    -1,   106,   136,  1095,    -1,
    3314     1499,    -1,    -1,  1100,    -1,    -1,  1505,  1506,  1105,    -1,
    3315     1349,  1051,    -1,    -1,   363,    -1,    -1,    -1,   367,    -1,
    3316       -1,  1118,    -1,  1522,    -1,    -1,    -1,    -1,    -1,   865,
    3317       -1,    -1,    -1,    -1,    -1,   145,  1535,  1134,    -1,  1136,
    3318     1137,  1138,  1139,   153,   154,    10,    11,    12,    13,    14,
    3319       -1,    -1,    -1,    -1,  1151,    -1,  1153,    -1,    -1,    -1,
    3320     1399,    -1,    -1,    -1,    -1,    -1,    -1,   416,    -1,    -1,
    3321       -1,   181,    -1,    -1,    -1,    -1,    -1,    42,    -1,    -1,
    3322       -1,   430,    -1,    -1,    -1,   952,   435,   197,  1185,  1186,
    3323      200,   201,    -1,    -1,   443,   205,    -1,    -1,    -1,    -1,
    3324       -1,   968,    -1,    -1,    -1,    70,    -1,  1147,  1148,    -1,
    3325       75,   460,    77,    78,    79,    -1,   226,    -1,    -1,    -1,
    3326      230,   470,   232,    88,    89,   235,    -1,    -1,    -1,    -1,
    3327      479,   241,   481,    -1,    -1,    -1,   246,  1476,    -1,    -1,
    3328       -1,    -1,    -1,    -1,    -1,    -1,   256,    -1,    -1,   114,
    3329       -1,    -1,  1249,  1250,   264,    -1,    -1,   122,   123,    -1,
    3330       -1,    -1,  1259,    -1,    -1,    -1,    -1,    -1,  1004,    -1,
    3331       -1,  1007,  1008,  1009,    -1,   524,    -1,    -1,    -1,    -1,
    3332       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3333     1057,    -1,  1349,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3334       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3335       -1,    -1,    -1,    -1,    -1,    -1,    -1,    10,    11,    12,
    3336       13,    14,   332,    -1,    -1,    -1,  1323,   337,  1325,  1326,
    3337     1327,    -1,    -1,   343,    -1,    -1,    -1,   586,   587,    -1,
    3338     1337,    -1,  1399,    -1,    -1,    -1,    -1,    -1,  1345,    42,
    3339       -1,  1348,    -1,   363,    -1,    -1,    -1,   367,    -1,    -1,
    3340       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3341       -1,    -1,    -1,   622,    -1,    -1,    -1,    70,  1375,    -1,
    3342       -1,    -1,    75,   632,    77,    78,    79,    -1,    -1,   638,
    3343       -1,    -1,   641,   642,    -1,    88,    89,    -1,    -1,    -1,
    3344       -1,    -1,    -1,    -1,    -1,    -1,   416,     0,   657,    -1,
    3345       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1476,
    3346      430,   114,  1419,  1420,    -1,   435,  1193,   676,    -1,   122,
    3347      123,    -1,    -1,   443,    -1,  1432,    -1,    -1,   687,    -1,
    3348       -1,    34,  1439,  1179,    -1,    -1,    -1,    -1,  1388,    -1,
    3349      460,    -1,   701,   463,    -1,    -1,   705,    -1,    -1,  1456,
    3350      470,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   479,
    3351       -1,   481,    -1,    -1,    -1,    -1,    69,  1474,    -1,    -1,
    3352       -1,    -1,  1479,   493,    -1,    -1,    -1,   497,    -1,    -1,
    3353       -1,    -1,    -1,    -1,   743,    -1,    -1,    -1,    -1,    -1,
    3354       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3355     1450,    -1,    -1,    -1,   524,  1512,    -1,  1514,    -1,    -1,
    3356       -1,    -1,  1462,  1463,    -1,    -1,    -1,    -1,    -1,  1296,
    3357      779,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3358      789,   790,    -1,    -1,   793,    -1,  1486,   796,    -1,    -1,
    3359       -1,    -1,   801,    -1,  1290,  1552,  1553,    -1,   568,    -1,
    3360       -1,   154,    -1,    -1,    -1,    -1,    -1,    -1,  1565,  1566,
    3361       -1,    -1,    -1,    -1,    -1,    -1,   586,   587,    -1,    -1,
    3362       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3363       -1,    -1,    -1,   603,    -1,    -1,    -1,    -1,    -1,    -1,
    3364       -1,    -1,    -1,    -1,    -1,  1341,    -1,    -1,  1344,    -1,
    3365       -1,    -1,   622,    -1,    -1,    -1,   865,   627,  1558,    -1,
    3366       -1,    -1,   632,    -1,    -1,    -1,    -1,    -1,   638,    -1,
    3367       -1,   641,   642,    -1,    -1,    -1,  1372,    -1,    -1,    -1,
    3368      889,    -1,    -1,    -1,    -1,    -1,    -1,   657,   241,    -1,
    3369       -1,    -1,    -1,   246,    40,    41,  1392,    43,    -1,    -1,
    3370       -1,  1397,    -1,    -1,    -1,    -1,   676,    -1,    -1,    -1,
    3371       -1,    -1,    -1,    -1,    -1,    -1,    -1,   687,    -1,    -1,
    3372       -1,   930,    -1,    69,    -1,    -1,    -1,    -1,    -1,    75,
    3373     1426,   701,    -1,    79,    -1,   705,    82,    83,    84,    85,
    3374       86,    87,    88,    89,   714,    91,    92,   717,    -1,    -1,
    3375       -1,    -1,    -1,   962,    -1,    -1,    -1,    -1,    -1,    -1,
    3376       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   114,    -1,
    3377      116,   980,   981,   743,   983,   984,   122,   123,   124,   125,
    3378      126,   127,    -1,    -1,   337,    -1,    -1,    -1,    -1,   135,
    3379      343,    -1,  1001,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3380     1496,    -1,    -1,    -1,    -1,  1501,    -1,    -1,    -1,   779,
    3381      363,    -1,    -1,    -1,   367,    -1,    -1,    -1,    -1,   789,
    3382      790,    -1,    -1,   793,    -1,    -1,   796,    -1,  1524,    -1,
    3383     1526,   801,  1041,  1042,  1530,    -1,    -1,  1533,    -1,    -1,
    3384       -1,   811,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3385     1546,    -1,    -1,    -1,  1550,    -1,    -1,    -1,    -1,    -1,
    3386       -1,    -1,    -1,   416,    -1,    -1,    -1,    -1,    -1,    -1,
    3387       -1,    -1,    -1,    -1,    -1,    -1,    -1,   430,    -1,    -1,
    3388       -1,    -1,   435,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3389      443,    -1,    -1,    -1,    -1,   865,    -1,    -1,    40,    41,
    3390       -1,    43,    -1,    -1,    -1,  1114,    -1,   460,    -1,    -1,
    3391       -1,    -1,    -1,    -1,    -1,    -1,    -1,   470,    -1,   889,
    3392       -1,    -1,     0,    -1,    -1,    -1,   479,    69,   481,    -1,
    3393       -1,    -1,    -1,    75,    -1,    77,    78,    79,    -1,   909,
    3394       82,    83,    84,    85,    86,    87,    88,    89,    -1,    91,
    3395       92,    -1,   922,   923,    -1,    -1,    34,    -1,    -1,    -1,
    3396      930,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3397     1179,   524,   114,    -1,   116,    -1,   118,   119,    -1,    -1,
    3398      122,   123,   124,   125,   126,   127,    -1,    -1,    -1,    -1,
    3399       -1,    69,   962,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3400     1209,    -1,  1211,    -1,    -1,   975,    -1,    -1,    -1,    -1,
    3401      980,   981,    -1,   983,   984,    -1,    -1,    -1,    -1,    -1,
    3402       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1238,
    3403       -1,  1001,    -1,   586,   587,    -1,    -1,  1246,  1247,  1248,
    3404       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1257,  1258,
    3405       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3406     1269,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   622,
    3407       -1,  1041,  1042,    -1,    -1,    -1,   154,    -1,    -1,   632,
    3408       -1,    -1,  1052,    -1,    -1,   638,    -1,    -1,   641,   642,
    3409       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3410       -1,    -1,    -1,    -1,   657,    -1,    -1,    -1,    -1,    -1,
    3411       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3412       -1,    -1,    -1,   676,    -1,    -1,    -1,    -1,    -1,    -1,
    3413       -1,    -1,    -1,    -1,   687,    -1,    -1,    -1,    -1,    -1,
    3414       -1,  1350,    -1,    -1,  1114,    -1,    -1,    -1,   701,    -1,
    3415       -1,    -1,   705,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3416       -1,    -1,    -1,   241,    -1,    -1,    -1,    -1,   246,    -1,
    3417       -1,    -1,    -1,    -1,    -1,  1384,    -1,    -1,    -1,    -1,
    3418       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3419      743,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3420       -1,    -1,    -1,    -1,  1413,    -1,    -1,    -1,    -1,  1179,
    3421       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3422       -1,    -1,    -1,  1432,    -1,    -1,   779,    -1,    -1,    -1,
    3423     1439,    -1,  1441,    -1,  1443,    -1,   789,   790,    -1,  1209,
    3424      793,  1211,    -1,   796,    -1,    -1,  1216,    -1,   801,    -1,
    3425       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   337,
    3426       -1,    -1,    -1,    -1,    -1,   343,    -1,    -1,  1238,    -1,
    3427       -1,    -1,  1481,    -1,  1483,    -1,  1246,  1247,  1248,    -1,
    3428       -1,    -1,    -1,    -1,    -1,   363,    -1,  1257,  1258,   367,
    3429     1499,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1269,
    3430       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3431       -1,    -1,   865,    -1,    -1,    10,    11,    12,    13,    14,
    3432       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3433       25,    26,    27,    28,    29,    -1,   889,    -1,   416,    -1,
    3434       -1,  1311,    -1,    -1,    -1,    -1,    -1,    42,    -1,    -1,
    3435       -1,    -1,   430,    -1,    -1,    -1,    -1,   435,    -1,    -1,
    3436       -1,    -1,    -1,    -1,    -1,   443,    -1,    -1,    -1,    -1,
    3437       -1,    51,    -1,    40,    41,    70,    43,   930,    -1,    -1,
    3438     1350,    -1,   460,    -1,    -1,    -1,    66,    -1,    -1,    -1,
    3439       -1,    -1,   470,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3440       -1,   479,    69,   481,    -1,    -1,    -1,    -1,    75,   962,
    3441       -1,    -1,    79,    -1,  1384,    82,    83,    84,    85,    86,
    3442       87,    88,    89,    -1,    91,    92,    -1,   980,   981,    28,
    3443      983,   984,    -1,    -1,   114,    -1,    -1,    -1,   118,    -1,
    3444       -1,    -1,    -1,  1413,  1414,    -1,   524,   114,  1001,   116,
    3445       -1,    -1,   119,    -1,    -1,   122,   123,   124,   125,   126,
    3446      127,    -1,  1432,    -1,   144,    -1,    -1,    -1,    -1,  1439,
    3447       -1,  1441,    -1,  1443,   154,    -1,    -1,   157,    -1,    -1,
    3448       -1,    -1,    -1,    -1,    83,    -1,    -1,    -1,  1041,  1042,
    3449       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3450       99,    -1,   101,    -1,    -1,    -1,    -1,    -1,   586,   587,
    3451       -1,  1481,    -1,  1483,    -1,    -1,    -1,    -1,    -1,    -1,
    3452       -1,    -1,    -1,    -1,    -1,   205,    -1,   126,    -1,  1499,
    3453       -1,    -1,    -1,    -1,    -1,    -1,  1506,   217,    -1,    -1,
    3454       -1,    -1,    -1,    -1,   622,    -1,    -1,    -1,    -1,    -1,
    3455       -1,    -1,    -1,    -1,   632,    -1,    -1,    -1,    -1,    -1,
    3456      638,  1114,    -1,   641,   642,    -1,    -1,    -1,    -1,    -1,
    3457       -1,    -1,    -1,    -1,   254,    -1,    -1,    -1,    -1,   657,
    3458       -1,   261,    -1,    -1,    -1,    -1,   185,    -1,   187,   188,
    3459       -1,    -1,    -1,   192,    -1,   194,   195,    -1,   676,    -1,
    3460       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   288,   687,
    3461       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3462      300,    -1,    -1,   701,    -1,    -1,  1179,   705,    -1,    10,
    3463       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3464       21,    22,    23,    24,    25,    26,    27,    28,    29,    -1,
    3465       -1,    32,    33,    34,    -1,    -1,  1209,   337,  1211,   258,
    3466       -1,    42,   342,    -1,    -1,   743,    -1,    -1,    -1,    -1,
    3467       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3468       -1,    -1,    -1,    -1,    -1,  1238,    -1,    -1,    -1,    70,
    3469       -1,    -1,    -1,  1246,  1247,  1248,    77,    78,    -1,    -1,
    3470       -1,   779,    -1,    -1,  1257,  1258,    -1,    -1,    -1,    -1,
    3471       -1,   789,   790,    -1,    -1,   793,  1269,    -1,   796,    -1,
    3472       -1,    -1,    -1,   801,    -1,    -1,    -1,    -1,    -1,    -1,
    3473       -1,    -1,    -1,    -1,    -1,   334,    -1,    -1,    -1,    -1,
    3474       -1,   122,   123,    -1,   424,   425,    -1,    -1,    -1,    -1,
    3475      430,    -1,    -1,    -1,   353,    -1,    -1,    -1,    -1,    -1,
    3476       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3477       -1,   451,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3478       -1,    -1,    -1,    -1,    -1,    -1,    -1,   865,    -1,    -1,
    3479       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1350,    -1,   479,
    3480       -1,    -1,    -1,    -1,    -1,    -1,   405,    -1,    -1,    -1,
    3481       -1,   889,    -1,    -1,    -1,   495,    -1,    -1,    -1,    -1,
    3482       -1,    -1,    -1,    -1,    -1,    -1,    -1,   507,    -1,   509,
    3483       -1,  1384,   512,    -1,   514,   515,    -1,    -1,    -1,    -1,
    3484       -1,    -1,    -1,    -1,   524,    -1,    -1,    -1,    -1,    -1,
    3485       -1,    -1,   930,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3486     1413,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3487       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1432,
    3488       -1,    -1,    -1,    -1,   962,    -1,  1439,    -1,  1441,    -1,
    3489     1443,    -1,    -1,    -1,    -1,   575,    -1,    -1,    -1,    -1,
    3490       -1,    -1,   980,   981,    -1,   983,   984,   587,    -1,    -1,
    3491      590,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3492       -1,    -1,    -1,  1001,    -1,    -1,    -1,    -1,  1481,    -1,
    3493     1483,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3494       -1,    -1,   622,    -1,    66,    -1,  1499,    -1,    -1,    -1,
    3495       -1,    -1,   632,    75,    -1,    77,    -1,    79,    -1,    -1,
    3496       -1,   641,   642,  1041,  1042,    87,    -1,    -1,    -1,    -1,
    3497       -1,    -1,   571,   572,    -1,    -1,    -1,   657,    -1,    -1,
    3498       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3499       -1,    -1,    -1,    -1,    -1,    -1,   118,    -1,   120,   121,
    3500      122,    -1,    -1,    -1,    -1,   604,    -1,    -1,   607,   608,
    3501      690,   610,    -1,   612,   613,    -1,    -1,    -1,   617,   618,
    3502       -1,    -1,    -1,    -1,    -1,   705,    -1,   707,    -1,    -1,
    3503       -1,    -1,    -1,    -1,    -1,   157,  1114,    -1,    -1,    -1,
     4212      27,    28,    29,    30,    31,    32,    33,    78,    79,    36,
     4213      37,    38,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    46,
     4214      -1,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     4215      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     4216      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
     4217      33,    78,    79,    36,    37,    38,    -1,    -1,    -1,    -1,
     4218      -1,    -1,    -1,    46,    -1,     4,     5,     6,     7,     8,
     4219       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     4220      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
     4221      29,    30,    31,    32,    33,    78,    79,    36,    37,    38,
     4222      -1,    -1,    -1,    -1,    -1,    -1,    -1,    46,    -1,    -1,
    35044223      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    35054224      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3506       -1,    -1,   661,   743,    -1,    -1,   665,    -1,    -1,    -1,
    3507       -1,    -1,    -1,    -1,    -1,    -1,    -1,     7,    -1,    -1,
    3508       10,    11,    12,    13,    14,    -1,    -1,    -1,    -1,    -1,
    3509       -1,    -1,    -1,    -1,    -1,   217,    -1,   219,   220,   221,
    3510       -1,  1179,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3511       40,    41,    42,    43,    -1,   795,    -1,    -1,    -1,    -1,
    3512       -1,    -1,    -1,    -1,    -1,    -1,    -1,   249,    -1,    -1,
    3513       -1,  1209,   254,  1211,    -1,    -1,    -1,    -1,    -1,    69,
    3514       70,    -1,    -1,    -1,    -1,    75,    -1,    -1,    -1,    79,
    3515       -1,    -1,    82,    83,    84,    85,    86,    87,    88,    89,
    3516     1238,    91,    92,    -1,    -1,    -1,    -1,    -1,  1246,  1247,
    3517     1248,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1257,
    3518     1258,    -1,    -1,    -1,   114,    -1,   116,    -1,    -1,    -1,
    3519       -1,  1269,   122,   123,   124,   125,   126,   127,    -1,    -1,
    3520      322,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   889,
    3521       40,    41,    -1,    43,   894,    -1,    -1,    -1,    46,    -1,
    3522      342,    -1,    -1,    -1,    -1,    -1,   348,    -1,   350,    -1,
    3523       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    69,
    3524      362,    -1,    -1,    -1,   924,    75,    -1,    -1,    -1,    79,
    3525      930,    -1,    82,    83,    84,    85,    86,    87,    88,    89,
    3526       -1,    91,    92,    -1,    92,    -1,    -1,    -1,    -1,    -1,
    3527       -1,    -1,  1350,    -1,   102,    -1,    -1,    -1,    -1,    -1,
    3528      402,    -1,   962,    -1,   114,    -1,   116,    -1,    -1,    -1,
    3529       -1,   121,   122,   123,   124,   125,   126,   127,    -1,    -1,
    3530      422,    -1,    -1,   983,   984,   427,  1384,   429,    -1,    -1,
    3531       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3532       -1,    -1,    -1,   445,    -1,    -1,   448,   449,    -1,    -1,
    3533       -1,    -1,    -1,   455,    -1,  1413,    -1,    -1,    -1,    -1,
    3534      168,    -1,    -1,    -1,    -1,    -1,    -1,   469,    -1,    -1,
    3535       -1,    -1,    -1,   952,  1432,   477,    -1,    -1,    -1,    -1,
    3536       -1,  1439,   190,  1441,    -1,  1443,    -1,    -1,    -1,   968,
    3537       -1,    -1,   971,   972,    -1,     7,   204,    -1,    10,    11,
    3538       12,    13,    14,    -1,    -1,   213,    -1,  1067,    -1,    -1,
    3539       -1,    -1,    -1,    -1,    -1,   223,    -1,    -1,    -1,    -1,
    3540       -1,    -1,    -1,  1481,    -1,  1483,    -1,    -1,    40,    41,
    3541       42,    43,    -1,    -1,   242,    -1,    -1,    -1,    -1,   247,
    3542       -1,  1499,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3543       -1,    -1,   260,    -1,  1114,    -1,    -1,    69,    70,    -1,
    3544      268,    -1,   270,    75,    -1,  1044,    -1,    79,    -1,    -1,
    3545       82,    83,    84,    85,    86,    87,    88,    89,  1057,    91,
    3546       92,   289,    -1,  1062,  1063,    -1,    -1,    -1,   590,    -1,
    3547      592,   593,   594,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3548       -1,    -1,   114,    -1,   116,    -1,    -1,    -1,    -1,    -1,
    3549      122,   123,   124,   125,   126,   127,    -1,    -1,    -1,    -1,
    3550       -1,    -1,   330,   625,   626,    -1,    -1,   335,    -1,    -1,
    3551     1190,    -1,   634,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3552     1119,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3553       -1,  1211,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3554       -1,    -1,   370,    -1,    -1,    -1,   374,   375,    -1,   377,
    3555       -1,    -1,    -1,    -1,    -1,    -1,   384,   385,    -1,   387,
    3556      388,    -1,   390,    -1,   392,    -1,    -1,    -1,    -1,    -1,
    3557      692,    -1,    -1,    40,    41,    -1,    43,  1257,  1258,    -1,
    3558      702,   409,  1181,    -1,    -1,   707,    -1,    -1,    -1,   417,
    3559       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3560       -1,  1200,    69,    -1,    -1,    -1,    -1,    -1,    75,    -1,
    3561       -1,    -1,    79,   441,    -1,    82,    83,    84,    85,    86,
    3562       87,    88,    89,    -1,    91,    92,    -1,    -1,    -1,    -1,
    3563       -1,    -1,   153,   154,    -1,    -1,    -1,    -1,   466,    -1,
    3564       -1,    -1,    -1,    -1,    -1,   473,    -1,   114,    -1,   116,
    3565      478,    -1,   119,    -1,    -1,   122,   123,   124,   125,   126,
    3566      127,   783,    -1,    -1,   185,    -1,    -1,    -1,    -1,  1349,
    3567       -1,   192,    -1,   795,    -1,    -1,    -1,    -1,    -1,    -1,
    3568       -1,    -1,    40,    41,    -1,    43,    -1,    -1,    -1,    -1,
    3569      518,   813,    -1,    -1,    -1,    -1,    -1,  1296,    -1,    -1,
    3570       -1,    -1,   530,    -1,  1384,    -1,    -1,    -1,    -1,    -1,
    3571       -1,    69,    -1,    -1,    -1,   837,    -1,    75,    -1,  1399,
    3572       -1,    79,    -1,    -1,    82,    83,    84,    85,    86,    87,
    3573       88,    89,    -1,    91,    92,    -1,    -1,   258,    -1,   567,
    3574       -1,    40,    41,    -1,    43,    -1,    -1,    -1,   576,    -1,
    3575       -1,   579,    -1,    -1,    -1,    -1,   114,    -1,   116,    -1,
    3576       -1,  1441,    -1,  1443,   122,   123,   124,   125,   126,   127,
    3577       69,    -1,    -1,   601,    -1,    -1,    75,    -1,    -1,    -1,
    3578       79,    -1,    -1,    82,    83,    84,    85,    86,    87,    88,
    3579       89,   913,    91,    92,    -1,   316,  1476,    -1,    -1,    -1,
    3580       -1,  1481,    -1,  1483,   325,   326,    -1,   328,   329,    -1,
    3581       -1,    -1,    -1,    -1,    -1,   114,   337,   116,   646,    -1,
    3582      341,    -1,    -1,   122,   123,   124,   125,   126,   127,    -1,
    3583       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3584       -1,    -1,  1522,   965,    -1,    -1,   367,    -1,    -1,    -1,
    3585       -1,    -1,    -1,    -1,   976,   683,    -1,    -1,    -1,    -1,
    3586       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3587       -1,    -1,    -1,   394,    -1,    -1,    -1,   398,    -1,    -1,
    3588       -1,    -1,    -1,   711,    -1,    -1,    -1,    -1,    -1,    -1,
    3589      144,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   726,   727,
    3590      154,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   736,   430,
    3591       -1,   165,   166,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3592       -1,    -1,   750,    -1,    -1,    -1,    -1,   755,    -1,    -1,
    3593       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3594       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3595       -1,  1073,    -1,    -1,    -1,   476,    -1,    -1,   479,    -1,
    3596       -1,     3,     4,     5,     6,     7,     8,     9,    10,    11,
    3597       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3598       22,    23,    24,    25,    26,    27,    28,    29,    30,   817,
    3599       32,    33,    34,    35,    -1,    -1,   824,    39,    -1,   253,
    3600       42,    -1,    -1,   524,    -1,    -1,    -1,    -1,    -1,    -1,
    3601       -1,    -1,   840,    -1,   842,    -1,    -1,    -1,    -1,    -1,
    3602       -1,    -1,    -1,    -1,    -1,    -1,    -1,   855,    70,    -1,
    3603       72,    -1,    74,   861,    -1,    77,    78,    -1,    -1,    81,
    3604       -1,    -1,    -1,    -1,   872,    -1,   567,   568,   876,    -1,
    3605       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3606       -1,    -1,    -1,    -1,    -1,   586,   587,    -1,    -1,    -1,
    3607       -1,    -1,    -1,    -1,   116,    -1,  1198,    -1,    -1,   600,
    3608      122,   123,   603,   604,    -1,    -1,    -1,    -1,    -1,   610,
    3609       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   620,
    3610       -1,   622,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3611       -1,   632,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3612      641,   642,    40,    41,   378,    43,    -1,    -1,    -1,    -1,
    3613       -1,    -1,   960,    -1,    -1,    -1,   657,    -1,    -1,    -1,
    3614      661,   662,    -1,    -1,   665,   666,    -1,    -1,    -1,    -1,
    3615       -1,    69,    -1,   674,    -1,    -1,    -1,    75,    -1,    -1,
    3616       -1,    79,    -1,   154,    82,    83,    84,    85,    86,    87,
    3617       88,    89,    -1,    91,    92,    -1,    -1,    -1,    -1,    -1,
    3618       -1,    -1,    -1,    -1,   705,   706,    -1,    -1,    -1,    -1,
    3619       -1,    -1,    -1,    -1,    -1,    -1,   114,   451,   116,  1027,
    3620       -1,    -1,    -1,    -1,   122,   123,   124,   125,   126,   127,
    3621       -1,    -1,    -1,    -1,    -1,    -1,    -1,   471,    -1,    -1,
    3622       -1,    -1,   743,    -1,    -1,    -1,    -1,  1349,    -1,    -1,
    3623       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3624       -1,  1069,    -1,    -1,    -1,    -1,  1074,    -1,    -1,    -1,
    3625       -1,    -1,    -1,    -1,    -1,    -1,  1084,    -1,    -1,    -1,
    3626      514,    -1,   783,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3627      524,    -1,    -1,    -1,    -1,   529,    -1,  1399,   532,   800,
    3628     1108,   802,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3629       -1,   545,   813,  1121,    -1,    -1,    -1,  1125,    -1,    -1,
    3630     1128,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3631       -1,    -1,    -1,    -1,    -1,    -1,  1144,  1145,    -1,    -1,
    3632       -1,   575,    -1,    -1,    -1,    -1,    -1,    -1,   582,    -1,
    3633       -1,    -1,    -1,   587,  1162,    -1,    -1,    -1,    -1,    -1,
    3634       -1,    -1,    -1,    -1,    -1,    -1,   337,    -1,   602,    -1,
    3635       -1,   342,   343,    -1,  1476,    -1,    -1,    -1,    -1,    -1,
    3636       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   889,    -1,
    3637       -1,    -1,   363,    -1,    -1,   896,   367,    -1,    -1,    -1,
    3638       -1,    -1,    -1,    -1,    -1,    -1,    -1,   908,   909,    -1,
    3639      644,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   652,  1227,
    3640       -1,    -1,   154,    -1,    -1,    -1,    -1,    -1,    -1,   930,
    3641       -1,    -1,    -1,  1535,    -1,    -1,    -1,    -1,    -1,    -1,
    3642       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3643       -1,   952,   953,    -1,    -1,    -1,    -1,    -1,    -1,   430,
    3644       -1,   962,    -1,    -1,    -1,    -1,    -1,   968,   969,    -1,
    3645      971,   972,   973,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3646       -1,    -1,   983,   984,    -1,    -1,    -1,    -1,    -1,   460,
    3647       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1306,   733,
    3648     1308,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   479,   743,
    3649     1318,   745,  1320,    -1,   748,    -1,    -1,    -1,    -1,    -1,
    3650      754,    -1,    -1,    -1,    -1,    -1,    -1,  1335,    -1,    -1,
    3651       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3652       -1,    -1,    -1,    -1,    -1,  1353,  1354,  1048,    -1,  1050,
    3653       -1,  1052,    -1,   524,    -1,    -1,  1057,    -1,  1366,    -1,
    3654       -1,   795,   796,  1371,    -1,    -1,  1374,    -1,    -1,    -1,
    3655       -1,    -1,  1073,    -1,    -1,    -1,    -1,   811,    -1,    -1,
    3656       -1,    -1,  1390,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3657       -1,    -1,  1400,    -1,    -1,  1403,    -1,  1405,  1406,  1407,
    3658       -1,    -1,    -1,    -1,    -1,   337,    -1,    -1,    -1,    -1,
    3659      342,   343,    -1,  1114,    -1,   586,   587,    -1,    -1,   590,
    3660      854,    -1,    -1,    -1,   858,    -1,    -1,    -1,    -1,    -1,
    3661       -1,   363,    -1,    40,    41,   367,    43,  1445,    -1,  1447,
    3662       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1457,
    3663       -1,   622,    -1,    -1,   625,   889,    -1,    -1,    -1,  1467,
    3664       -1,   632,    69,   634,    -1,    -1,    -1,   638,    75,    -1,
    3665      641,   642,    79,    -1,    -1,    82,    83,    84,    85,    86,
    3666       87,    88,    89,    -1,    91,    92,   657,    -1,    -1,    -1,
    3667      924,    -1,  1193,    -1,    -1,    -1,   930,  1198,   430,    -1,
    3668       -1,    -1,    -1,   937,    -1,   676,    -1,   114,   942,   116,
    3669     1211,   945,    -1,    -1,    -1,   122,   123,   124,   125,   126,
    3670      127,   692,    -1,    -1,    -1,    -1,    -1,    -1,   460,    -1,
    3671       -1,   965,    -1,    -1,   705,    -1,   707,    -1,    -1,    -1,
    3672       -1,    -1,   976,    -1,    -1,    -1,    -1,   479,    -1,    -1,
    3673       -1,    -1,    -1,    -1,    -1,    -1,  1257,  1258,    -1,    -1,
    3674       -1,    -1,   996,    -1,   998,    -1,    -1,    -1,    -1,    -1,
    3675       -1,    -1,   743,    -1,    -1,    -1,    -1,    -1,    -1,  1013,
    3676     1014,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3677       28,    -1,   524,    -1,    -1,  1296,  1297,    -1,    -1,  1300,
    3678       -1,    -1,    -1,    -1,    -1,    -1,  1040,    -1,   779,    -1,
    3679       -1,    -1,    -1,    -1,   154,    -1,    -1,    -1,   789,   790,
    3680       -1,    -1,   793,    -1,   795,   796,    -1,    -1,    -1,    -1,
    3681      801,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3682       -1,    -1,    -1,    -1,    -1,    83,    -1,    -1,    -1,    -1,
    3683       -1,    -1,    -1,    -1,   586,   587,    -1,    -1,   590,  1093,
    3684       -1,    99,    -1,   101,    -1,    -1,    -1,    -1,    -1,    -1,
    3685       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3686     1114,    -1,    -1,  1384,    -1,    -1,    -1,    -1,    -1,    -1,
    3687      622,    -1,    -1,   625,    40,    41,    -1,    43,  1132,  1133,
    3688      632,    -1,   634,    -1,    -1,    -1,   638,    -1,    -1,   641,
    3689      642,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   889,    -1,
    3690       -1,    -1,    -1,    69,    -1,   657,    -1,    -1,    -1,    75,
    3691       -1,    -1,    -1,    79,    -1,    -1,    82,    83,    84,    85,
    3692       86,    87,    88,    89,   676,    91,    92,    -1,    -1,   187,
    3693      188,    -1,    -1,    -1,   192,    -1,   194,   195,    -1,   930,
    3694      692,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   114,    -1,
    3695      116,    -1,    -1,   705,  1475,   707,   122,   123,   124,   125,
    3696      126,   127,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3697       -1,   962,    -1,    -1,   965,    -1,    -1,   337,    -1,    -1,
    3698       -1,    -1,   342,   343,  1505,  1506,    -1,    -1,    -1,   980,
    3699      981,   743,   983,   984,    -1,    -1,    -1,    -1,    -1,    -1,
    3700       -1,    -1,    -1,   363,    -1,    -1,    -1,   367,    -1,    -1,
    3701       -1,    -1,    -1,    -1,  1535,    -1,    -1,    -1,    -1,    -1,
    3702       -1,    -1,    -1,    -1,    -1,    -1,    -1,   779,    -1,  1283,
    3703       -1,    -1,    -1,  1287,    -1,    -1,    -1,   789,   790,    -1,
    3704       -1,   793,    -1,   795,   796,    -1,    -1,    -1,    -1,   801,
    3705     1041,  1042,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    40,
    3706       41,    -1,    43,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3707      430,    -1,    -1,    -1,    -1,    -1,   334,    -1,    -1,    -1,
    3708       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,
    3709       -1,    -1,    -1,    -1,    75,   353,    -1,    -1,    79,    -1,
    3710      460,    82,    83,    84,    85,    86,    87,    88,    89,    -1,
    3711       91,    92,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   479,
    3712       -1,    -1,    -1,  1114,    -1,    -1,    -1,    -1,    -1,    -1,
    3713       -1,    -1,    -1,   114,    -1,   116,    -1,   889,    -1,    -1,
    3714       -1,   122,   123,   124,   125,   126,   127,   405,    -1,    -1,
    3715       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3716       -1,    -1,    -1,    -1,   524,    -1,    -1,    -1,    -1,    -1,
    3717       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   930,    -1,
    3718       -1,    -1,    10,    11,    12,    13,    14,    15,    16,    17,
    3719       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3720       28,    29,    -1,    -1,    32,    33,    34,    -1,    -1,    -1,
    3721      962,    -1,    -1,   965,    42,    43,    -1,    -1,  1209,    -1,
    3722     1211,    -1,    -1,    -1,    -1,    -1,   586,   587,   980,   981,
    3723      590,   983,   984,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3724       -1,    -1,    70,    -1,    -1,    -1,    -1,  1238,    -1,    77,
    3725       78,    -1,    -1,    -1,    -1,  1246,  1247,  1248,    -1,    -1,
    3726       -1,    -1,   622,    -1,    -1,   625,  1257,  1258,  1522,    -1,
    3727       -1,    -1,   632,    -1,   634,    -1,    -1,    -1,   638,    -1,
    3728       -1,   641,   642,    -1,    -1,    -1,    -1,    -1,   116,  1041,
    3729     1042,    -1,   120,    -1,   122,   123,    -1,   657,    -1,    -1,
    3730       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3731       -1,    -1,    -1,   571,   572,    -1,   676,    -1,    -1,    -1,
    3732       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3733       -1,    -1,   692,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3734       -1,    -1,    -1,    -1,    -1,   705,   604,   707,    -1,   607,
    3735      608,    -1,   610,    -1,   612,   613,    -1,    -1,    -1,   617,
    3736      618,    -1,  1114,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3737       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3738       -1,    -1,    -1,   743,    -1,    -1,    -1,    -1,    -1,    -1,
    3739       -1,    -1,    -1,  1384,    -1,    -1,    -1,    -1,    -1,    -1,
    3740       -1,    -1,    -1,   661,    -1,    -1,    -1,   665,    -1,    -1,
    3741       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   779,
    3742       -1,    -1,  1413,    -1,    -1,    -1,    -1,    -1,    -1,   789,
    3743      790,    -1,    -1,   793,    -1,   795,   796,    -1,    -1,    -1,
    3744       -1,   801,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3745     1441,    -1,  1443,    -1,    -1,    -1,    -1,  1209,    -1,  1211,
    3746       -1,    -1,    -1,    -1,    -1,    10,    11,    12,    13,    14,
    3747       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3748       25,    26,    27,    28,    29,  1476,  1238,    32,    33,    34,
    3749     1481,    -1,  1483,    -1,  1246,  1247,  1248,    42,    -1,    -1,
    3750       -1,    -1,    -1,    -1,    -1,  1257,  1258,    -1,    -1,    -1,
    3751       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3752       -1,    -1,    -1,    -1,    -1,    70,    -1,    -1,    -1,   889,
    3753       -1,    -1,    77,    78,    -1,    -1,    -1,    -1,    -1,    -1,
    3754        0,    -1,    -1,     3,     4,     5,     6,     7,     8,     9,
    3755       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3756       20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
    3757      930,   116,    32,    33,    34,    35,    -1,   122,   123,    39,
    3758       -1,    -1,    42,    43,    -1,    -1,    -1,    -1,    -1,    -1,
    3759       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3760       -1,    -1,   962,    -1,    -1,   965,    -1,    67,    -1,    -1,
    3761       70,    -1,    72,    -1,    74,    75,    -1,    77,    78,    79,
    3762      980,   981,    -1,   983,   984,    -1,    -1,    -1,    88,    89,
    3763       -1,    -1,  1384,    10,    11,    12,    13,    14,    15,    16,
    3764       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3765       27,    28,    29,    30,   114,    -1,   116,    -1,    -1,    -1,
    3766       -1,  1413,   122,   123,    -1,    42,    -1,    -1,    -1,    -1,
    3767       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3768       -1,  1041,  1042,    -1,    -1,    -1,    -1,    -1,    -1,  1441,
    3769       -1,  1443,    -1,    70,   952,    -1,    -1,    -1,    -1,    -1,
    3770       -1,    -1,    -1,    -1,    81,    -1,    -1,    -1,    -1,    -1,
    3771      968,    -1,    -1,   971,   972,    -1,    -1,    -1,    -1,    -1,
    3772       -1,    -1,    -1,    -1,  1476,    -1,    -1,    -1,    -1,  1481,
    3773       -1,  1483,    -1,    10,    11,    12,    13,    14,    15,    16,
    3774       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3775       27,    28,    29,    -1,  1114,    32,    33,    34,    -1,    -1,
    3776       -1,    -1,    -1,    -1,    -1,    42,    -1,    -1,    -1,    -1,
    3777       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3778       -1,    -1,    -1,    -1,    -1,    -1,  1044,    -1,    -1,    -1,
    3779       -1,    -1,    -1,    70,    -1,    -1,    -1,    -1,    -1,    -1,
    3780       77,    78,    -1,    -1,  1062,  1063,    -1,    -1,     3,     4,
    3781        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    3782       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3783       25,    26,    27,    28,    29,    -1,    -1,    32,    33,    34,
    3784       35,    -1,    -1,    -1,    39,   122,   123,    42,    43,  1209,
    3785       -1,  1211,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3786       -1,  1119,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3787       -1,    -1,    67,    -1,    -1,    70,    -1,    72,  1238,    74,
    3788       75,    -1,    77,    78,    79,    -1,  1246,  1247,  1248,    -1,
    3789       -1,    -1,    -1,    88,    89,    -1,    -1,  1257,  1258,    -1,
    3790       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3791       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   114,
    3792       -1,   116,    -1,  1181,    -1,   120,    -1,   122,   123,    -1,
    3793       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3794       -1,    -1,  1200,    -1,    -1,    -1,     3,     4,     5,     6,
    3795        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    3796       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3797       27,    28,    29,    -1,    -1,    32,    33,    34,    35,    -1,
    3798       -1,    -1,    39,    40,    41,    42,    43,    44,    -1,    46,
    3799       -1,    -1,    49,    50,    51,    52,    53,    54,    55,    56,
    3800       -1,    -1,    -1,    60,    -1,    -1,    -1,    64,    65,    -1,
    3801       67,    -1,    69,    70,    -1,    72,    -1,    74,    75,    -1,
    3802       77,    78,    79,    -1,  1384,    82,    83,    84,    85,    86,
    3803       87,    88,    89,    -1,    91,    92,    -1,    -1,  1296,    -1,
    3804       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3805       -1,    -1,    -1,  1413,    -1,    -1,    -1,   114,    -1,   116,
    3806       -1,    -1,   119,    -1,    -1,   122,   123,   124,   125,   126,
    3807      127,    -1,    -1,    -1,    -1,   132,    -1,    -1,    -1,    -1,
    3808      137,  1441,    -1,  1443,    -1,    -1,    -1,    -1,     3,     4,
    3809        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    3810       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3811       25,    26,    27,    28,    29,    -1,  1476,    32,    33,    34,
    3812       35,  1481,    -1,  1483,    39,    40,    41,    42,    43,    10,
    3813       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3814       21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
    3815       -1,    -1,    -1,    -1,    69,    70,    -1,    72,    -1,    74,
    3816       75,    42,    77,    78,    79,    -1,    -1,    82,    83,    84,
    3817       85,    86,    87,    88,    89,    -1,    91,    92,    -1,    -1,
    3818       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    70,
    3819       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   114,
    3820       81,   116,    -1,    -1,    -1,    -1,    -1,   122,   123,   124,
    3821      125,   126,   127,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3822       -1,    -1,   137,     3,     4,     5,     6,     7,     8,     9,
    3823       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3824       20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
    3825       -1,    -1,    32,    33,    34,    35,    -1,    -1,    -1,    39,
    3826       40,    41,    42,    43,    10,    11,    12,    13,    14,    15,
    3827       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3828       26,    27,    28,    29,    -1,    -1,    32,    33,    34,    69,
    3829       70,    -1,    72,    -1,    74,    75,    42,    77,    78,    79,
    3830       -1,    -1,    82,    83,    84,    85,    86,    87,    88,    89,
    3831       -1,    91,    92,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3832       -1,    -1,    -1,    -1,    70,    -1,    -1,    -1,    -1,    -1,
    3833       -1,    77,    78,    -1,   114,    -1,   116,    -1,    -1,    -1,
    3834       -1,    -1,   122,   123,   124,   125,   126,   127,     4,     5,
    3835        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    3836       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3837       26,    27,    28,    29,    -1,    -1,    32,    33,    34,    -1,
    3838       -1,    -1,    -1,    -1,    40,    41,    42,    43,    10,    11,
    3839       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3840       22,    23,    24,    25,    26,    27,    28,    29,    -1,    -1,
    3841       32,    33,    34,    69,    70,    -1,    72,    -1,    74,    75,
    3842       42,    77,    78,    79,    -1,    -1,    82,    83,    84,    85,
    3843       86,    87,    88,    89,    -1,    91,    92,    -1,    -1,    -1,
    3844       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    70,    -1,
    3845       -1,    -1,    -1,    -1,    -1,    77,    78,    -1,   114,    -1,
    3846      116,    -1,    -1,    -1,    -1,   121,   122,   123,   124,   125,
    3847      126,   127,     4,     5,     6,     7,     8,     9,    10,    11,
    3848       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3849       22,    23,    24,    25,    26,    27,    28,    29,    -1,    -1,
    3850       32,    33,    34,    -1,    -1,    -1,    -1,    -1,    40,    41,
    3851       42,    43,    10,    11,    12,    13,    14,    15,    16,    17,
    3852       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3853       28,    29,    -1,    -1,    32,    33,    34,    69,    70,    -1,
    3854       72,    -1,    74,    75,    42,    77,    78,    79,    -1,    -1,
    3855       82,    83,    84,    85,    86,    87,    88,    89,    -1,    91,
    3856       92,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3857       -1,    -1,    70,    -1,    -1,    -1,    -1,    -1,    -1,    77,
    3858       78,    -1,   114,    -1,   116,    -1,    -1,    -1,    -1,   121,
    3859      122,   123,   124,   125,   126,   127,     4,     5,     6,     7,
    3860        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    3861       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3862       28,    29,    -1,    -1,    32,    33,    34,    -1,    -1,    -1,
    3863       -1,    -1,    40,    41,    42,    43,    -1,    -1,    -1,    -1,
    3864       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3865       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3866       -1,    69,    70,    -1,    72,    -1,    74,    75,    -1,    77,
    3867       78,    79,    -1,    -1,    82,    83,    84,    85,    86,    87,
    3868       88,    89,    -1,    91,    92,    -1,    -1,    -1,    -1,    -1,
    3869       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3870       -1,    -1,    -1,    -1,    -1,    -1,   114,    -1,   116,    -1,
    3871       -1,    -1,    -1,    -1,   122,   123,   124,   125,   126,   127,
    3872        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    3873       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3874       24,    25,    26,    27,    28,    29,    -1,    -1,    32,    33,
    3875       34,    -1,    -1,    -1,    -1,    -1,    40,    41,    42,    43,
    3876       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3877       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3878       -1,    -1,    -1,    -1,    -1,    69,    70,    -1,    72,    -1,
    3879       74,    75,    -1,    77,    78,    79,    -1,    -1,    82,    83,
    3880       84,    85,    86,    87,    88,    89,    -1,    91,    92,    -1,
    3881       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3882       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3883      114,    -1,   116,    -1,    -1,    -1,    -1,    -1,   122,   123,
    3884      124,   125,   126,   127,     4,     5,     6,     7,     8,     9,
    3885       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3886       20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
    3887       -1,    -1,    32,    33,    34,    -1,    -1,    -1,    -1,    -1,
    3888       40,    41,    42,    43,    -1,    -1,    -1,    -1,    -1,    -1,
    3889       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3890       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    69,
    3891       70,    -1,    72,    -1,    74,    75,    -1,    77,    78,    79,
    3892       -1,    -1,    82,    83,    84,    85,    86,    87,    88,    89,
    3893       -1,    91,    92,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3894       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3895       -1,    -1,    -1,    -1,   114,    -1,   116,    -1,    -1,    -1,
    3896       -1,    -1,   122,   123,   124,   125,   126,   127,     3,     4,
    3897        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    3898       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3899       25,    26,    27,    28,    29,    -1,    -1,    32,    33,    34,
    3900       35,    -1,    -1,    -1,    39,    -1,    -1,    42,    43,    -1,
    3901       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3902       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3903       -1,    -1,    67,    -1,    -1,    70,    -1,    72,    -1,    74,
    3904       75,    -1,    77,    78,    79,    -1,    -1,    -1,    -1,    -1,
    3905       -1,    -1,    -1,    88,    89,    -1,    -1,    -1,    -1,    -1,
    3906       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3907       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   114,
    3908       -1,   116,    -1,    -1,    -1,    -1,    -1,   122,   123,     3,
    3909        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    3910       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3911       24,    25,    26,    27,    28,    29,    -1,    -1,    32,    33,
    3912       34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,    -1,
    3913       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3914       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3915       -1,    -1,    -1,    -1,    -1,    -1,    70,    -1,    72,    -1,
    3916       74,    75,    -1,    77,    78,    79,    -1,    -1,    -1,    -1,
    3917       -1,    -1,    -1,    -1,    88,    89,    -1,    -1,    -1,    -1,
    3918       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3919       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3920      114,    -1,   116,    -1,    -1,    -1,    -1,    -1,   122,   123,
    3921        3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    3922       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3923       23,    24,    25,    26,    27,    28,    29,    -1,    -1,    32,
    3924       33,    34,    35,    -1,    -1,    -1,    39,    -1,    -1,    42,
    3925       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3926       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3927       -1,    -1,    -1,    -1,    -1,    -1,    -1,    70,    -1,    72,
    3928       -1,    74,    -1,    -1,    77,    78,     3,     4,     5,     6,
    3929        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    3930       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3931       27,    28,    29,    -1,    -1,    32,    33,    34,    -1,    -1,
    3932       -1,    -1,    -1,   116,    -1,    42,    -1,    -1,    -1,   122,
    3933      123,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3934       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3935       -1,    -1,    -1,    70,    -1,    72,    -1,    74,    -1,    -1,
    3936       77,    78,     4,     5,     6,     7,     8,     9,    10,    11,
    3937       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3938       22,    23,    24,    25,    26,    27,    28,    29,    -1,    -1,
    3939       32,    33,    34,    -1,    -1,    -1,    -1,    -1,    -1,   116,
    3940       42,    -1,    -1,    -1,    -1,   122,   123,    -1,    -1,    -1,
    3941       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3942       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    70,    -1,
    3943       72,    -1,    74,    75,    -1,    77,    78,    79,    -1,    -1,
    3944       -1,    -1,    -1,    -1,    -1,    -1,    88,    89,    -1,    -1,
    3945       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3946       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3947       -1,    -1,   114,    -1,   116,    -1,    -1,    -1,    -1,    -1,
    3948      122,   123,     4,     5,     6,     7,     8,     9,    10,    11,
    3949       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3950       22,    23,    24,    25,    26,    27,    28,    29,    -1,    -1,
    3951       32,    33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3952       42,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3953       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3954       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    70,    -1,
    3955       72,    -1,    74,    -1,    -1,    77,    78,     4,     5,     6,
    3956        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    3957       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3958       27,    28,    29,    -1,    -1,    32,    33,    34,    -1,    -1,
    3959       -1,    -1,    -1,   115,   116,    42,    -1,    -1,    -1,    -1,
    3960      122,   123,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3961       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3962       -1,    -1,    -1,    70,    -1,    72,    -1,    74,    -1,    -1,
    3963       77,    78,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3964       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3965       -1,    -1,    -1,    -1,   101,    -1,    -1,    -1,    -1,    -1,
    3966       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   116,
    3967       -1,    -1,    -1,    -1,    -1,   122,   123,     4,     5,     6,
    3968        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    3969       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3970       27,    28,    29,    -1,    -1,    32,    33,    34,    -1,    -1,
    3971       -1,    -1,    -1,    -1,    -1,    42,    -1,    10,    11,    12,
    3972       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3973       23,    24,    25,    26,    27,    28,    29,    -1,    -1,    32,
    3974       33,    34,    -1,    70,    -1,    72,    -1,    74,    -1,    42,
    3975       77,    78,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3976       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3977       -1,    -1,    -1,    -1,   101,    -1,    -1,    70,    -1,    -1,
    3978       -1,    -1,    -1,    -1,    77,    78,    -1,    -1,    -1,   116,
    3979       -1,    -1,    -1,    -1,    -1,   122,   123,     4,     5,     6,
    3980        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    3981       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3982       27,    28,    29,   116,    -1,    32,    33,    34,    -1,   122,
    3983      123,    -1,    -1,    -1,    -1,    42,    -1,    -1,    -1,    -1,
    3984       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3985       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3986       -1,    -1,    -1,    70,    -1,    72,    -1,    74,    -1,    -1,
    3987       77,    78,     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,    27,    28,    29,    -1,    -1,
    3990       32,    33,    34,    -1,    -1,    -1,    -1,    -1,    -1,   116,
    3991       42,    -1,    -1,    -1,    -1,   122,   123,    -1,    -1,    -1,
    3992       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3993       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    70,    -1,
    3994       72,    -1,    74,    -1,    -1,    77,    78,     4,     5,     6,
    3995        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    3996       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3997       27,    28,    29,    -1,    -1,    32,    33,    34,    -1,    -1,
    3998       -1,    -1,    -1,    -1,   116,    42,    -1,    -1,    -1,    -1,
    3999      122,   123,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4000       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4001       -1,    -1,    -1,    70,    -1,    72,    -1,    74,    -1,    -1,
    4002       77,    78,    10,    11,    12,    13,    14,    15,    16,    17,
    4003       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    4004       28,    29,    -1,    -1,    32,    33,    34,    -1,    -1,    -1,
    4005       -1,    -1,    40,    41,    42,    43,    -1,    -1,    -1,   116,
    4006       -1,    -1,    -1,    -1,    -1,   122,   123,    -1,    -1,    -1,
    4007       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4008       -1,    69,    70,    -1,    -1,    -1,    -1,    75,    -1,    77,
    4009       78,    79,    -1,    -1,    82,    83,    84,    85,    86,    87,
    4010       88,    89,    -1,    91,    92,    -1,    -1,    -1,    -1,    -1,
    4011       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4012       -1,    -1,    -1,    -1,    -1,    -1,   114,    -1,   116,    -1,
    4013       -1,   119,    -1,    -1,   122,   123,   124,   125,   126,   127,
    4014       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    4015       20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
    4016       -1,    -1,    32,    33,    34,    -1,    -1,    -1,    -1,    -1,
    4017       40,    41,    42,    43,    -1,    -1,    -1,    -1,    -1,    -1,
    4018       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4019       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    69,
    4020       70,    -1,    -1,    -1,    -1,    75,    -1,    77,    78,    79,
    4021       -1,    -1,    82,    83,    84,    85,    86,    87,    88,    89,
    4022       -1,    91,    92,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4023       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4024       -1,    -1,    -1,    -1,   114,   115,   116,    -1,    -1,    -1,
    4025       -1,    -1,   122,   123,   124,   125,   126,   127,    10,    11,
    4026       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    4027       22,    23,    24,    25,    26,    27,    28,    29,    -1,    -1,
    4028       32,    33,    34,    -1,    -1,    -1,    -1,    -1,    40,    41,
    4029       42,    43,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4030       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4031       -1,    -1,    -1,    -1,    -1,    -1,    -1,    69,    70,    -1,
    4032       -1,    -1,    -1,    75,    -1,    77,    78,    79,    -1,    -1,
    4033       82,    83,    84,    85,    86,    87,    88,    89,    -1,    91,
    4034       92,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4035       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4036       -1,    -1,   114,    -1,   116,    -1,    -1,    -1,    -1,    -1,
    4037      122,   123,   124,   125,   126,   127,    10,    11,    12,    13,
    4038       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    4039       24,    25,    26,    27,    28,    29,    -1,    -1,    32,    33,
    4040       34,    -1,    -1,    -1,    -1,    -1,    40,    41,    42,    43,
    4041       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4042       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4043       -1,    -1,    -1,    -1,    -1,    69,    70,    -1,    -1,    -1,
    4044       -1,    75,    -1,    77,    78,    79,    -1,    -1,    82,    83,
    4045       84,    85,    86,    87,    88,    89,    -1,    91,    92,    -1,
    4046       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4047       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4048      114,    -1,   116,    -1,    -1,    -1,    -1,    -1,   122,   123,
    4049      124,   125,   126,   127,    10,    11,    12,    13,    14,    15,
    4050       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    4051       26,    27,    28,    29,    -1,    -1,    32,    33,    34,    -1,
    4052       -1,    -1,    -1,    -1,    40,    41,    42,    43,    -1,    -1,
    4053       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4054       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4055       -1,    -1,    -1,    69,    70,    -1,    -1,    -1,    -1,    75,
    4056       -1,    77,    78,    79,    -1,    -1,    82,    83,    84,    85,
    4057       86,    87,    88,    89,    -1,    91,    92,    -1,    -1,    -1,
    4058       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4059       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   114,    -1,
    4060      116,    -1,    -1,    -1,    -1,    -1,   122,   123,   124,   125,
    4061      126,   127,     3,     4,     5,     6,     7,     8,     9,    10,
    4062       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    4063       21,    22,    23,    24,    25,    26,    27,    28,    29,    -1,
    4064       -1,    32,    33,    34,    -1,    -1,    -1,    -1,    -1,    -1,
    4065       -1,    42,    10,    11,    12,    13,    14,    15,    16,    17,
    4066       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    4067       28,    29,    -1,    -1,    32,    33,    34,    -1,    -1,    70,
    4068       -1,    72,    -1,    74,    42,    -1,    77,    78,    -1,    -1,
    4069       -1,    -1,    10,    11,    12,    13,    14,    15,    16,    17,
    4070       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    4071       28,    29,    70,    -1,    32,    33,    34,    75,    -1,    77,
    4072       78,    79,    -1,    -1,    42,    -1,    -1,    -1,   119,    -1,
    4073       88,    89,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4074       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4075       -1,    -1,    70,    -1,    -1,    -1,   114,    75,   116,    77,
    4076       78,    79,    -1,    -1,   122,   123,    -1,    -1,    -1,    -1,
    4077       88,    89,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4078       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4079       -1,    -1,    -1,    -1,    -1,    -1,   114,    -1,   116,    -1,
    4080       -1,    -1,    -1,    -1,   122,   123,    10,    11,    12,    13,
    4081       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    4082       24,    25,    26,    27,    28,    29,    -1,    -1,    32,    33,
    4083       34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,    -1,
    4084       -1,    -1,    -1,    -1,    -1,    -1,    10,    11,    12,    13,
    4085       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    4086       24,    25,    26,    27,    28,    29,    70,    -1,    32,    33,
    4087       34,    75,    -1,    77,    78,    -1,    -1,    -1,    42,    43,
    4088       -1,    -1,    -1,    -1,    88,    89,    -1,    -1,    -1,    -1,
    4089       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4090       -1,    -1,    -1,    -1,    -1,    -1,    70,    -1,    -1,    -1,
    4091       -1,    -1,   116,    77,    78,    -1,    -1,    -1,   122,   123,
    4092       -1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    4093       19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
    4094       29,    -1,    -1,    32,    33,    34,    -1,    -1,    -1,    -1,
    4095       -1,    -1,   116,    42,    43,    -1,   120,    -1,   122,   123,
    4096       -1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    4097       19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
    4098       29,    70,    -1,    32,    33,    34,    -1,    -1,    77,    78,
    4099       -1,    -1,    -1,    42,    10,    11,    12,    13,    14,    15,
    4100       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    4101       26,    27,    28,    29,    -1,    -1,    32,    33,    34,    -1,
    4102       -1,    70,    -1,    -1,    -1,    -1,    42,   116,    77,    78,
    4103       -1,   120,    -1,   122,   123,    -1,    -1,    -1,    -1,    -1,
    4104       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4105       -1,    -1,    -1,    -1,    70,    -1,    -1,    -1,    -1,    -1,
    4106       -1,    77,    78,    -1,    -1,    -1,    -1,   116,    -1,    -1,
    4107       -1,    -1,    -1,   122,   123,    -1,    -1,    -1,    -1,    10,
    4108       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    4109       21,    22,    23,    24,    25,    26,    27,    28,    29,    -1,
    4110      116,    32,    33,    34,    -1,    -1,   122,   123,    -1,    -1,
    4111       -1,    42,    10,    11,    12,    13,    14,    15,    16,    17,
    4112       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    4113       28,    29,    -1,    -1,    32,    33,    34,    -1,    -1,    70,
    4114       -1,    -1,    -1,    -1,    42,    -1,    77,    78,    -1,    -1,
    4115       -1,    -1,    10,    11,    12,    13,    14,    15,    16,    17,
    4116       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    4117       28,    29,    70,    -1,    32,    33,    34,    -1,    -1,    77,
    4118       78,    -1,    -1,    -1,    42,   116,    -1,    -1,    -1,    -1,
    4119       -1,   122,   123,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4120       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4121       -1,    -1,    70,    -1,    -1,    -1,    -1,    -1,   116,    77,
    4122       78,    -1,    -1,    -1,   122,   123,    -1,    10,    11,    12,
    4123       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    4124       23,    24,    25,    26,    27,    28,    29,    -1,    -1,    32,
    4125       33,    34,    -1,    -1,    -1,    -1,    -1,    -1,   116,    42,
    4126       -1,    -1,    -1,    -1,   122,   123,    -1,    10,    11,    12,
    4127       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    4128       23,    24,    25,    26,    27,    28,    29,    70,    -1,    32,
    4129       33,    34,    -1,    -1,    77,    78,    -1,    -1,    -1,    42,
    4130       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    4131       20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
    4132       -1,    -1,    32,    33,    34,    -1,    -1,    70,    -1,    -1,
    4133       -1,    -1,    42,   116,    77,    78,    -1,    -1,    -1,   122,
    4134      123,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4135       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4136       70,    -1,    -1,    -1,    -1,    -1,    -1,    77,    78,    -1,
    4137       -1,    -1,    -1,   116,    -1,    -1,    -1,    -1,    -1,   122,
    4138      123,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4139       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4140       -1,    -1,    -1,    -1,    -1,    -1,   116,    -1,    -1,    -1,
    4141       -1,    -1,   122,   123,     4,     5,     6,     7,     8,     9,
    4142       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    4143       20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
    4144       -1,    -1,    32,    33,    34,    -1,    -1,    -1,    -1,    -1,
    4145       -1,    -1,    42,    -1,    40,    41,    -1,    43,    44,    -1,
    4146       46,    -1,    -1,    49,    50,    51,    52,    53,    54,    55,
    4147       56,    -1,    -1,    59,    60,    -1,    -1,    -1,    64,    65,
    4148       70,    67,    72,    69,    74,    -1,    -1,    77,    78,    75,
    4149       -1,    77,    78,    79,    -1,    -1,    82,    83,    84,    85,
    4150       86,    87,    88,    89,    -1,    91,    92,    -1,    -1,    -1,
    4151       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4152       -1,    -1,    -1,    -1,    -1,   115,    -1,    -1,   114,    -1,
    4153      116,    -1,    -1,   119,    -1,    -1,   122,   123,   124,   125,
    4154      126,   127,    -1,    -1,    40,    41,   132,    43,    44,    -1,
    4155       46,   137,    -1,    49,    50,    51,    52,    53,    54,    55,
    4156       56,    -1,    -1,    -1,    60,    -1,    -1,    -1,    64,    65,
    4157       -1,    67,    -1,    69,    -1,    -1,    -1,    -1,    -1,    75,
    4158       -1,    77,    78,    79,    -1,    -1,    82,    83,    84,    85,
    4159       86,    87,    88,    89,    -1,    91,    92,    -1,    -1,    -1,
    4160       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4161       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   114,    -1,
    4162      116,    -1,    -1,   119,    -1,    -1,   122,   123,   124,   125,
    4163      126,   127,    -1,    -1,    -1,    -1,   132,    -1,    -1,    -1,
    4164       -1,   137,     4,     5,     6,     7,     8,     9,    10,    11,
    4165       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    4166       22,    23,    24,    25,    26,    27,    28,    29,    -1,    -1,
    4167       32,    33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4168       42,    -1,    40,    41,    -1,    43,    44,    -1,    46,    47,
    4169       48,    49,    50,    51,    52,    53,    54,    55,    56,    -1,
    4170       -1,    59,    60,    -1,    -1,    -1,    64,    65,    70,    67,
    4171       72,    69,    74,    -1,    -1,    77,    78,    75,    -1,    77,
    4172       78,    79,    -1,    -1,    82,    83,    84,    85,    86,    87,
    4173       88,    89,    -1,    91,    92,    -1,    -1,    -1,    -1,   101,
    4174       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4175       -1,    -1,    -1,    -1,    -1,    -1,   114,    -1,   116,    -1,
    4176       -1,   119,    -1,    -1,   122,   123,   124,   125,   126,   127,
    4177       -1,    -1,    40,    41,   132,    43,    44,    -1,    46,    47,
    4178       48,    49,    50,    51,    52,    53,    54,    55,    56,    -1,
    4179       -1,    -1,    60,    -1,    -1,    -1,    64,    65,    -1,    67,
    4180       -1,    69,    -1,    -1,    -1,    -1,    -1,    75,    -1,    77,
    4181       78,    79,    -1,    -1,    82,    83,    84,    85,    86,    87,
    4182       88,    89,    -1,    91,    92,    -1,    -1,    -1,    -1,    -1,
    4183       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4184       -1,    -1,    -1,    -1,    -1,    -1,   114,    -1,   116,    -1,
    4185       -1,   119,    -1,    -1,   122,   123,   124,   125,   126,   127,
    4186       -1,    -1,    40,    41,   132,    43,    44,    -1,    46,    -1,
    4187       -1,    49,    50,    51,    52,    53,    54,    55,    56,    -1,
    4188       -1,    -1,    60,    -1,    -1,    -1,    64,    65,    -1,    67,
    4189       -1,    69,    -1,    -1,    -1,    -1,    -1,    75,    -1,    77,
    4190       78,    79,    -1,    -1,    82,    83,    84,    85,    86,    87,
    4191       88,    89,    -1,    91,    92,    -1,    -1,    -1,    -1,    -1,
    4192       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4193       -1,    -1,    -1,    -1,    -1,    -1,   114,    -1,   116,    -1,
    4194       -1,   119,    -1,    -1,   122,   123,   124,   125,   126,   127,
    4195       -1,    -1,    -1,    -1,   132,    10,    11,    12,    13,    14,
    4196       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    4197       25,    26,    27,    28,    29,    -1,    -1,    32,    33,    34,
    4198       -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,     3,     4,
    4199        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    4200       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    4201       25,    26,    27,    28,    29,    70,    -1,    32,    33,    34,
    4202       75,    -1,    77,    78,    -1,    -1,    -1,    42,    -1,    -1,
    4203       -1,    -1,    -1,    88,    89,    -1,    -1,    -1,    -1,    -1,
    4204       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4205       -1,    -1,    -1,    -1,    -1,    70,    -1,    72,    -1,    74,
    4206       -1,    -1,    77,    78,     3,     4,     5,     6,     7,     8,
    4207        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    4208       19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
    4209       29,    -1,    -1,    32,    33,    34,    -1,    -1,    -1,    -1,
    4210       -1,    -1,    -1,    42,    -1,    -1,    -1,    -1,    -1,    -1,
    4211       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4212       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4213       -1,    70,    -1,    72,    -1,    74,    -1,    -1,    77,    78,
    4214        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    4215       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    4216       24,    25,    26,    27,    28,    29,    -1,    -1,    32,    33,
    4217       34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,    -1,
    4218       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4219       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4220       -1,    -1,    -1,    -1,    -1,    -1,    70,    -1,    72,    -1,
    4221       74,    -1,    -1,    77,    78,     4,     5,     6,     7,     8,
    4222        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    4223       19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
    4224       29,    -1,    -1,    32,    33,    34,    -1,    -1,    -1,    -1,
    4225       -1,    -1,    -1,    42,    -1,    -1,    -1,    -1,    -1,    -1,
    4226       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4227       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4228       -1,    70,    -1,    72,    -1,    74,    -1,    -1,    77,    78,
    4229       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    4230       20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
    4231       -1,    -1,    32,    33,    34,    35,    36,    37,    38,    -1,
    4232       -1,    -1,    42,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4233       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4234       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4235       70,    -1,    -1,    -1,    -1,    -1,    -1,    77,    78
     4225      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    78,
     4226      79
    42364227};
    42374228
     
    42424233       0,     3,     4,     5,     6,     7,     8,     9,    10,    11,
    42434234      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    4244       22,    23,    24,    25,    26,    27,    28,    29,    32,    33,
    4245       34,    35,    39,    42,    43,    67,    70,    72,    74,    75,
    4246       77,    78,    79,    88,    89,   114,   116,   122,   123,   142,
    4247      145,   157,   220,   221,   222,   223,   224,   225,   226,   227,
    4248      228,   229,   230,   232,   234,   236,   237,   238,   239,   241,
    4249      242,   243,   244,   245,   246,   247,   249,   250,   253,   254,
    4250      255,   257,   259,   260,   268,   270,   296,   297,   298,   306,
    4251      309,   315,   316,   318,   320,   321,   327,   332,   336,   337,
    4252      338,   339,   340,   341,   342,   343,   363,   380,   381,   382,
    4253      383,    75,   144,   145,   157,   223,   225,   234,   237,   246,
    4254      250,   254,   297,    84,   114,   325,   326,   327,    75,    77,
    4255       78,    79,   143,   144,   286,   287,   307,   308,    77,    78,
    4256      287,   114,   318,   114,   114,   157,   332,   337,   338,   339,
    4257      341,   342,   343,   117,   139,   226,   234,   237,   336,   340,
    4258      379,   380,   383,   384,   140,   112,   136,   290,   119,   140,
    4259      181,    77,    78,   142,   285,   140,   140,   140,    77,    78,
    4260      114,   157,   231,   322,   331,   332,   333,   334,   335,   336,
    4261      340,   344,   345,   346,   347,   348,   354,     3,    30,    81,
    4262      248,     3,     5,    77,   116,   157,   225,   238,   242,   244,
    4263      255,   298,   336,   340,   383,   223,   225,   237,   246,   250,
    4264      254,   297,   336,   340,    35,   243,   243,   238,   244,   140,
    4265      243,   238,   243,   238,   325,   243,   238,   121,   140,   140,
    4266        0,   139,   114,   181,   325,   325,   139,   116,   234,   237,
    4267      381,   285,   285,   136,   237,   114,   157,   322,   332,   336,
    4268      116,   157,   383,   319,   240,   119,   287,   327,   114,   303,
    4269      114,   114,    84,   146,   147,    40,    41,    43,    69,    75,
    4270       79,    82,    83,    85,    86,    87,    91,    92,   114,   116,
    4271      124,   125,   126,   127,   141,   145,   146,   148,   149,   156,
     4235      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
     4236      32,    33,    36,    37,    38,    39,    43,    46,    47,    71,
     4237      76,    78,    79,    80,    89,    90,   115,   117,   123,   124,
     4238     143,   146,   158,   221,   222,   223,   224,   225,   226,   227,
     4239     228,   229,   230,   231,   233,   235,   237,   238,   239,   240,
     4240     242,   243,   244,   245,   246,   247,   248,   250,   251,   254,
     4241     255,   256,   258,   260,   261,   269,   271,   297,   298,   299,
     4242     307,   310,   316,   317,   319,   321,   322,   328,   333,   337,
     4243     338,   339,   340,   341,   342,   343,   344,   364,   381,   382,
     4244     383,   384,    76,   145,   146,   158,   224,   226,   235,   238,
     4245     247,   251,   255,   298,    85,   115,   326,   327,   328,    76,
     4246      78,    79,    80,   144,   145,   287,   288,   308,   309,    78,
     4247      79,   288,   115,   319,   115,   115,   158,   333,   338,   339,
     4248     340,   342,   343,   344,   118,   140,   227,   235,   238,   337,
     4249     341,   380,   381,   384,   385,   141,   113,   137,   291,   120,
     4250     141,   182,    78,    79,   143,   286,   141,   141,   141,    78,
     4251      79,   115,   158,   232,   323,   332,   333,   334,   335,   336,
     4252     337,   341,   345,   346,   347,   348,   349,   355,     3,    34,
     4253      82,   249,     3,     4,    78,   117,   158,   226,   239,   243,
     4254     245,   256,   299,   337,   341,   384,   224,   226,   238,   247,
     4255     251,   255,   298,   337,   341,    39,   244,   244,   239,   245,
     4256     141,   244,   239,   244,   239,   326,   244,   239,   122,   141,
     4257     141,     0,   140,   115,   182,   326,   326,   140,   117,   235,
     4258     238,   382,   286,   286,   137,   238,   115,   158,   323,   333,
     4259     337,   117,   158,   384,   320,   241,   120,   288,   328,   115,
     4260     304,   115,   115,    85,   147,   148,    44,    45,    47,    73,
     4261      76,    80,    83,    84,    86,    87,    88,    92,    93,   115,
     4262     117,   125,   126,   127,   128,   142,   146,   147,   149,   150,
    42724263     157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
    4273      167,   168,   169,   170,   172,   175,   234,   288,   289,   305,
    4274      379,   384,   237,   115,   115,   115,   115,   115,   115,   115,
    4275      116,   234,   363,   381,    32,   116,   122,   157,   172,   225,
    4276      226,   233,   237,   241,   242,   245,   246,   251,   252,   253,
    4277      254,   256,   259,   260,   270,   275,   276,   280,   281,   282,
    4278      283,   296,   297,   363,   375,   376,   377,   378,   383,   384,
    4279      114,   336,   340,   383,   114,   121,   137,   116,   119,   157,
    4280      172,   291,   291,   120,   139,   121,   137,   114,   121,   137,
    4281      121,   137,   121,   137,   332,   333,   334,   335,   345,   346,
    4282      347,   348,   237,   331,   344,   121,   140,    67,   324,   116,
    4283      325,   362,   363,   325,   325,   181,   139,   114,   325,   362,
    4284      325,   325,   237,   322,   114,   114,   236,   237,   234,   237,
    4285      139,   234,   379,   384,   181,   139,   285,   290,   225,   242,
    4286      336,   340,   181,   139,   307,   237,   246,   137,   237,   237,
    4287       78,   114,   119,   287,   298,   237,   307,   137,   137,   318,
    4288      139,   144,   284,     3,   140,   215,   216,   230,   232,   237,
    4289      241,   139,   324,   114,   324,   172,   332,   237,   114,   139,
    4290      285,   119,    35,    36,    37,    38,   234,   299,   300,   302,
    4291      271,   287,   269,   139,   133,   136,   304,   139,    10,    75,
    4292       77,    78,   328,   329,   330,   115,    84,   114,   156,   114,
    4293      156,   159,   114,   156,   114,   114,   156,   156,   116,   172,
    4294      177,   181,   288,   383,   139,    86,    90,    91,    92,   114,
    4295      116,   118,   119,   102,   103,   104,   105,   106,   107,   108,
    4296      109,   110,   111,   112,   136,   174,   159,   159,   122,   128,
    4297      129,   124,   125,    93,    94,    95,    96,   130,   131,    97,
    4298       98,   123,   132,   133,    99,   100,   134,   114,   157,   358,
    4299      359,   360,   361,   362,   115,   121,   114,   362,   363,   114,
    4300      362,   363,   139,   234,   381,   325,   117,   139,   140,   235,
    4301      237,   246,   252,   254,   297,   374,   375,   383,   384,   140,
    4302      114,   116,   136,   157,   332,   349,   350,   351,   352,   353,
    4303      354,   355,   356,   357,   363,   364,   365,   366,   367,   368,
    4304      369,   386,   157,   256,   383,   237,   252,   243,   238,   325,
    4305      140,   140,   157,   235,   237,   376,   285,   235,   363,   376,
    4306      285,   139,   139,   139,   139,    75,   116,   118,   145,   287,
    4307      291,   292,   293,   294,   295,   139,   139,   139,   139,   139,
    4308      139,   115,   115,   115,   115,   115,   115,   115,   331,   344,
    4309      325,   137,   114,   290,   117,   215,   139,   322,   177,   289,
    4310      177,   289,   322,   116,   215,   324,   181,   139,   215,   305,
    4311      261,   258,   237,   277,   278,   279,   282,   283,   115,   121,
    4312      181,   139,   237,   122,   172,   139,   233,   237,   276,   375,
    4313      383,   316,   317,   114,   157,   349,   115,   121,   386,   287,
    4314      121,   385,   136,   272,   119,   299,   114,   119,   287,   289,
    4315      299,   115,   121,   114,   137,   288,   116,   288,   288,   151,
    4316      172,   289,   288,   139,   115,   121,   115,   115,   121,   172,
    4317      116,   144,   150,   151,   139,   116,   144,   150,   172,   159,
    4318      159,   159,   160,   160,   161,   161,   162,   162,   162,   162,
    4319      163,   163,   164,   165,   166,   167,   168,   135,   177,   139,
    4320      359,   360,   361,   237,   358,   325,   325,   172,   289,   139,
    4321      139,   287,   235,   363,   376,   237,   241,   117,   383,   117,
    4322      114,   139,   332,   350,   351,   352,   355,   365,   366,   367,
    4323      117,   139,   172,   237,   349,   353,   364,   114,   325,   368,
    4324      386,   325,   325,   386,   114,   325,   368,   325,   325,   386,
    4325      325,   325,   363,   235,   374,   384,   285,   237,   287,   117,
    4326      121,   117,   121,   386,   235,   376,   386,   273,   274,   275,
    4327      276,   273,   285,   172,   139,   116,   287,   135,   121,   385,
    4328      291,   116,   135,   295,    31,   217,   218,   285,   273,   144,
    4329      322,   144,   114,   325,   362,   363,   114,   325,   362,   363,
    4330      322,   146,   363,   181,   277,   115,   115,   115,   115,   139,
    4331      181,   215,   181,   115,    43,   120,   234,   262,   263,   379,
    4332      119,   140,   140,   144,   230,   140,   140,   273,   114,   157,
    4333      383,   140,   120,   237,   300,   301,   287,   120,   170,   171,
    4334      271,   140,   139,   139,   114,   140,   115,   329,   150,   115,
    4335      139,   121,   115,   115,   115,   115,   172,   119,   159,   172,
    4336      173,   176,   121,   139,   115,   121,   172,   139,   120,   170,
    4337      135,   277,   115,   115,   115,   358,   277,   277,   235,   376,
    4338      116,   122,   157,   172,   172,   237,   355,   277,   115,   115,
    4339      115,   115,   115,   115,   115,     7,   237,   349,   353,   364,
    4340      139,   139,   386,   139,   139,   140,   140,   140,   140,   290,
    4341      170,   171,   172,   323,   139,   291,   293,   120,   139,   219,
    4342      287,    43,    44,    46,    49,    50,    51,    52,    53,    54,
    4343       55,    56,    60,    64,    65,    67,    75,    77,    78,    79,
    4344      132,   145,   177,   178,   179,   180,   181,   182,   183,   185,
    4345      186,   198,   200,   201,   206,   220,   285,   321,    31,   140,
    4346      136,   139,   139,   324,   115,   140,   181,   119,   234,   263,
    4347      114,   135,   157,   264,   265,   267,   331,   332,   344,   362,
    4348      370,   371,   372,   373,   121,   137,   287,   261,   115,   121,
    4349      117,   117,   140,   237,   121,   386,   303,   272,   385,   115,
    4350      299,   223,   225,   234,   311,   312,   313,   314,   305,   115,
    4351      115,   144,   292,   121,   140,   176,    82,    85,    87,   144,
    4352      152,   153,   154,   151,   140,   152,   170,   140,   114,   325,
    4353      362,   363,   140,   140,   139,   140,   140,   140,   172,   115,
    4354      140,   114,   325,   362,   363,   114,   325,   368,   114,   325,
    4355      368,   363,   236,     7,   122,   140,   172,   277,   277,   276,
    4356      280,   280,   281,   115,   121,   121,   115,   101,   127,   140,
    4357      140,   152,   291,   172,   121,   137,   220,   321,   114,   114,
    4358      179,   114,   114,   137,   285,   137,   285,   122,   285,   178,
    4359      114,   181,   173,   173,    11,   207,   149,   137,   140,   139,
    4360      140,   135,   219,   115,   172,   277,   277,   290,   325,   115,
    4361      261,   264,   137,   332,   371,   372,   373,   171,   237,   370,
    4362      121,   137,   266,   267,   266,   325,   325,   287,   120,   139,
    4363      115,   139,   120,   140,   322,   120,   139,   140,   140,   115,
    4364      119,   115,   385,   173,   117,   140,   155,   116,   153,   155,
    4365      155,   121,   140,    90,   118,   117,   140,   115,   139,   115,
    4366      115,   117,   117,   117,   140,   115,   139,   139,   139,   172,
    4367      172,   140,   117,   140,   140,   140,   140,   139,   139,   171,
    4368      171,   117,   117,   140,   287,   177,   177,    50,   177,   139,
    4369      137,   137,   177,   137,   137,   177,    61,    62,    63,   202,
    4370      203,   204,   137,    66,   137,    54,   114,   119,   183,   120,
    4371      325,   137,   140,   140,   120,   137,   115,   115,   115,   370,
    4372      325,   101,   282,   283,   115,   312,   121,   137,   121,   137,
    4373      120,   310,   120,   117,    86,   139,   153,   117,   116,   153,
    4374      116,   153,   117,   277,   117,   277,   277,   277,   140,   140,
    4375      117,   117,   115,   115,   117,   121,   101,   276,   101,   140,
    4376      117,   115,   115,   114,   115,   178,   199,   220,   224,   237,
    4377      241,   137,   115,   114,   114,   181,   204,    61,    62,   172,
    4378      114,   146,   150,   179,   115,   115,   114,   325,   362,   363,
    4379      265,   119,   139,   139,   311,   152,   139,   139,   140,   140,
    4380      140,   140,   117,   117,   139,   140,   117,   179,    47,    48,
    4381      119,   189,   190,   191,   177,   179,   140,   115,   178,   237,
    4382      119,   191,   101,   139,   101,   139,   114,   114,   137,   146,
    4383      115,   135,   120,   139,   139,   285,   322,   120,   140,   152,
    4384      152,   115,   115,   115,   115,   280,    45,   171,   187,   188,
    4385      323,   135,   139,   179,   189,   115,   137,   179,   137,   139,
    4386      115,   139,   115,   139,   101,   139,   101,   139,   135,   137,
    4387      116,   146,   208,   209,   210,   137,   277,   311,   117,   140,
    4388      140,   179,   101,   121,   135,   140,   213,   214,   220,   137,
    4389      178,   178,   213,   181,   205,   235,   237,   379,   181,   205,
    4390      115,   139,   115,   139,   135,   171,   114,   115,   135,   121,
    4391      140,   120,   117,   117,   171,   187,   190,   192,   193,   139,
    4392      137,   190,   194,   195,   140,   114,   157,   322,   370,   144,
    4393      140,   181,   205,   181,   205,   208,   117,   171,   137,   208,
    4394      210,   115,   114,   179,   184,   120,   190,   220,   178,    59,
    4395      184,   197,   120,   190,   115,   237,   115,   140,   140,   135,
    4396      146,   115,   115,   135,   305,   179,   184,   137,   196,   197,
    4397      184,   197,   181,   181,   115,   115,   146,   211,   114,   137,
    4398      211,   115,   196,   140,   140,   181,   181,   121,   135,   171,
    4399      115,   140,   140,   146,   144,   212,   115,   137,   115,   121,
    4400      137,   144
     4264     167,   168,   169,   170,   171,   173,   176,   235,   289,   290,
     4265     306,   380,   385,   238,   116,   116,   116,   116,   116,   116,
     4266     116,   117,   235,   364,   382,    36,   117,   123,   158,   173,
     4267     226,   227,   234,   238,   242,   243,   246,   247,   252,   253,
     4268     254,   255,   257,   260,   261,   271,   276,   277,   281,   282,
     4269     283,   284,   297,   298,   364,   376,   377,   378,   379,   384,
     4270     385,   115,   337,   341,   384,   115,   122,   138,   117,   120,
     4271     158,   173,   292,   292,   121,   140,   122,   138,   115,   122,
     4272     138,   122,   138,   122,   138,   333,   334,   335,   336,   346,
     4273     347,   348,   349,   238,   332,   345,   122,   141,    71,   325,
     4274     117,   326,   363,   364,   326,   326,   182,   140,   115,   326,
     4275     363,   326,   326,   238,   323,   115,   115,   237,   238,   235,
     4276     238,   140,   235,   380,   385,   182,   140,   286,   291,   226,
     4277     243,   337,   341,   182,   140,   308,   238,   247,   138,   238,
     4278     238,    79,   115,   120,   288,   299,   238,   308,   138,   138,
     4279     319,   140,   145,   285,     3,   141,   216,   217,   231,   233,
     4280     238,   242,   140,   325,   115,   325,   173,   333,   238,   115,
     4281     140,   286,   120,    39,    40,    41,    42,   235,   300,   301,
     4282     303,   272,   288,   270,   140,   134,   137,   305,   140,    12,
     4283      76,    78,    79,   329,   330,   331,   116,    85,   115,   157,
     4284     115,   157,   160,   115,   157,   115,   115,   157,   157,   117,
     4285     173,   178,   182,   289,   384,   140,    87,    91,    92,    93,
     4286     115,   117,   119,   120,   103,   104,   105,   106,   107,   108,
     4287     109,   110,   111,   112,   113,   137,   175,   160,   160,   123,
     4288     129,   130,   125,   126,    94,    95,    96,    97,   131,   132,
     4289      98,    99,   124,   133,   134,   100,   101,   135,   115,   158,
     4290     359,   360,   361,   362,   363,   116,   122,   115,   363,   364,
     4291     115,   363,   364,   140,   235,   382,   326,   118,   140,   141,
     4292     236,   238,   247,   253,   255,   298,   375,   376,   384,   385,
     4293     141,   115,   117,   137,   158,   333,   350,   351,   352,   353,
     4294     354,   355,   356,   357,   358,   364,   365,   366,   367,   368,
     4295     369,   370,   387,   158,   257,   384,   238,   253,   244,   239,
     4296     326,   141,   141,   158,   236,   238,   377,   286,   236,   364,
     4297     377,   286,   140,   140,   140,   140,    76,   117,   119,   146,
     4298     288,   292,   293,   294,   295,   296,   140,   140,   140,   140,
     4299     140,   140,   116,   116,   116,   116,   116,   116,   116,   332,
     4300     345,   326,   138,   115,   291,   118,   216,   140,   323,   178,
     4301     290,   178,   290,   323,   117,   216,   325,   182,   140,   216,
     4302     306,   262,   259,   238,   278,   279,   280,   283,   284,   116,
     4303     122,   182,   140,   238,   123,   173,   140,   234,   238,   277,
     4304     376,   384,   317,   318,   115,   158,   350,   116,   122,   387,
     4305     288,   122,   386,   137,   273,   120,   300,   115,   120,   288,
     4306     290,   300,   116,   122,   115,   138,   289,   117,   289,   289,
     4307     152,   173,   290,   289,   140,   116,   122,   116,   116,   122,
     4308     173,   117,   145,   151,   152,   140,   117,   145,   151,   173,
     4309     160,   160,   160,   161,   161,   162,   162,   163,   163,   163,
     4310     163,   164,   164,   165,   166,   167,   168,   169,   136,   178,
     4311     140,   360,   361,   362,   238,   359,   326,   326,   173,   290,
     4312     140,   140,   288,   236,   364,   377,   238,   242,   118,   384,
     4313     118,   115,   140,   333,   351,   352,   353,   356,   366,   367,
     4314     368,   118,   140,   173,   238,   350,   354,   365,   115,   326,
     4315     369,   387,   326,   326,   387,   115,   326,   369,   326,   326,
     4316     387,   326,   326,   364,   236,   375,   385,   286,   238,   288,
     4317     118,   122,   118,   122,   387,   236,   377,   387,   274,   275,
     4318     276,   277,   274,   286,   173,   140,   117,   288,   136,   122,
     4319     386,   292,   117,   136,   296,    35,   218,   219,   286,   274,
     4320     145,   323,   145,   115,   326,   363,   364,   115,   326,   363,
     4321     364,   323,   147,   364,   182,   278,   116,   116,   116,   116,
     4322     140,   182,   216,   182,   116,    47,   121,   235,   263,   264,
     4323     380,   120,   141,   141,   145,   231,   141,   141,   274,   115,
     4324     158,   384,   141,   121,   238,   301,   302,   288,   121,   171,
     4325     172,   272,   141,   140,   140,   115,   141,   116,   330,   151,
     4326     116,   140,   122,   116,   116,   116,   116,   173,   120,   160,
     4327     173,   174,   177,   122,   140,   116,   122,   173,   140,   121,
     4328     171,   136,   278,   116,   116,   116,   359,   278,   278,   236,
     4329     377,   117,   123,   158,   173,   173,   238,   356,   278,   116,
     4330     116,   116,   116,   116,   116,   116,     5,   238,   350,   354,
     4331     365,   140,   140,   387,   140,   140,   141,   141,   141,   141,
     4332     291,   171,   172,   173,   324,   140,   292,   294,   121,   140,
     4333     220,   288,    47,    48,    50,    53,    54,    55,    56,    57,
     4334      58,    59,    60,    64,    68,    69,    71,    76,    78,    79,
     4335      80,   133,   146,   178,   179,   180,   181,   182,   183,   184,
     4336     186,   187,   199,   201,   202,   207,   221,   286,   322,    35,
     4337     141,   137,   140,   140,   325,   116,   141,   182,   120,   235,
     4338     264,   115,   136,   158,   265,   266,   268,   332,   333,   345,
     4339     363,   371,   372,   373,   374,   122,   138,   288,   262,   116,
     4340     122,   118,   118,   141,   238,   122,   387,   304,   273,   386,
     4341     116,   300,   224,   226,   235,   312,   313,   314,   315,   306,
     4342     116,   116,   145,   293,   122,   141,   177,    83,    86,    88,
     4343     145,   153,   154,   155,   152,   141,   153,   171,   141,   115,
     4344     326,   363,   364,   141,   141,   140,   141,   141,   141,   173,
     4345     116,   141,   115,   326,   363,   364,   115,   326,   369,   115,
     4346     326,   369,   364,   237,     5,   123,   141,   173,   278,   278,
     4347     277,   281,   281,   282,   116,   122,   122,   116,   102,   128,
     4348     141,   141,   153,   292,   173,   122,   138,   221,   322,   115,
     4349     115,   180,   115,   115,   138,   286,   138,   286,   123,   286,
     4350     179,   115,   182,   174,   174,    13,   208,   150,   138,   141,
     4351     140,   141,   136,   220,   116,   173,   278,   278,   291,   326,
     4352     116,   262,   265,   138,   333,   372,   373,   374,   172,   238,
     4353     371,   122,   138,   267,   268,   267,   326,   326,   288,   121,
     4354     140,   116,   140,   121,   141,   323,   121,   140,   141,   141,
     4355     116,   120,   116,   386,   174,   118,   141,   156,   117,   154,
     4356     156,   156,   122,   141,    91,   119,   118,   141,   116,   140,
     4357     116,   116,   118,   118,   118,   141,   116,   140,   140,   140,
     4358     173,   173,   141,   118,   141,   141,   141,   141,   140,   140,
     4359     172,   172,   118,   118,   141,   288,   178,   178,    54,   178,
     4360     140,   138,   138,   178,   138,   138,   178,    65,    66,    67,
     4361     203,   204,   205,   138,    70,   138,    58,   115,   120,   184,
     4362     121,   326,   138,   141,   141,   121,   138,   116,   116,   116,
     4363     371,   326,   102,   283,   284,   116,   313,   122,   138,   122,
     4364     138,   121,   311,   121,   118,    87,   140,   154,   118,   117,
     4365     154,   117,   154,   118,   278,   118,   278,   278,   278,   141,
     4366     141,   118,   118,   116,   116,   118,   122,   102,   277,   102,
     4367     141,   118,   116,   116,   115,   116,   179,   200,   221,   225,
     4368     238,   242,   138,   116,   115,   115,   182,   205,    65,    66,
     4369     173,   115,   147,   151,   180,   116,   116,   115,   326,   363,
     4370     364,   266,   120,   140,   140,   312,   153,   140,   140,   141,
     4371     141,   141,   141,   118,   118,   140,   141,   118,   180,    51,
     4372      52,   120,   190,   191,   192,   178,   180,   141,   116,   179,
     4373     238,   120,   192,   102,   140,   102,   140,   115,   115,   138,
     4374     147,   116,   136,   121,   140,   140,   286,   323,   121,   141,
     4375     153,   153,   116,   116,   116,   116,   281,    49,   172,   188,
     4376     189,   324,   136,   140,   180,   190,   116,   138,   180,   138,
     4377     140,   116,   140,   116,   140,   102,   140,   102,   140,   136,
     4378     138,   117,   147,   209,   210,   211,   138,   278,   312,   118,
     4379     141,   141,   180,   102,   122,   136,   141,   214,   215,   221,
     4380     138,   179,   179,   214,   182,   206,   236,   238,   380,   182,
     4381     206,   116,   140,   116,   140,   136,   172,   115,   116,   136,
     4382     122,   141,   121,   118,   118,   172,   188,   191,   193,   194,
     4383     140,   138,   191,   195,   196,   141,   115,   158,   323,   371,
     4384     145,   141,   182,   206,   182,   206,   209,   118,   172,   138,
     4385     209,   211,   116,   115,   180,   185,   121,   191,   221,   179,
     4386      63,   185,   198,   121,   191,   116,   238,   116,   141,   141,
     4387     136,   147,   116,   116,   136,   306,   180,   185,   138,   197,
     4388     198,   185,   198,   182,   182,   116,   116,   147,   212,   115,
     4389     138,   212,   116,   197,   141,   141,   182,   182,   122,   136,
     4390     172,   116,   141,   141,   147,   145,   213,   116,   138,   116,
     4391     122,   138,   145
    44014392};
    44024393
     
    52355226
    52365227/* Line 1806 of yacc.c  */
    5237 #line 326 "parser.yy"
     5228#line 328 "parser.yy"
    52385229    { typedefTable.enterScope(); }
    52395230    break;
     
    52425233
    52435234/* Line 1806 of yacc.c  */
    5244 #line 330 "parser.yy"
     5235#line 332 "parser.yy"
    52455236    { typedefTable.leaveScope(); }
    52465237    break;
     
    52495240
    52505241/* Line 1806 of yacc.c  */
    5251 #line 337 "parser.yy"
     5242#line 339 "parser.yy"
    52525243    { (yyval.en) = new ExpressionNode( build_constantInteger( *(yyvsp[(1) - (1)].tok) ) ); }
    52535244    break;
    52545245
    52555246  case 5:
    5256 
    5257 /* Line 1806 of yacc.c  */
    5258 #line 338 "parser.yy"
    5259     { (yyval.en) = new ExpressionNode( build_constantFloat( *(yyvsp[(1) - (1)].tok) ) ); }
    5260     break;
    5261 
    5262   case 6:
    5263 
    5264 /* Line 1806 of yacc.c  */
    5265 #line 339 "parser.yy"
    5266     { (yyval.en) = new ExpressionNode( build_constantFloat( *(yyvsp[(1) - (1)].tok) ) ); }
    5267     break;
    5268 
    5269   case 7:
    52705247
    52715248/* Line 1806 of yacc.c  */
     
    52745251    break;
    52755252
     5253  case 6:
     5254
     5255/* Line 1806 of yacc.c  */
     5256#line 341 "parser.yy"
     5257    { (yyval.en) = new ExpressionNode( build_constantFloat( *(yyvsp[(1) - (1)].tok) ) ); }
     5258    break;
     5259
     5260  case 7:
     5261
     5262/* Line 1806 of yacc.c  */
     5263#line 342 "parser.yy"
     5264    { (yyval.en) = new ExpressionNode( build_constantFloat( *(yyvsp[(1) - (1)].tok) ) ); }
     5265    break;
     5266
    52765267  case 8:
    52775268
    52785269/* Line 1806 of yacc.c  */
    5279 #line 341 "parser.yy"
     5270#line 343 "parser.yy"
    52805271    { (yyval.en) = new ExpressionNode( build_constantChar( *(yyvsp[(1) - (1)].tok) ) ); }
    52815272    break;
     
    52845275
    52855276/* Line 1806 of yacc.c  */
    5286 #line 366 "parser.yy"
     5277#line 368 "parser.yy"
    52875278    { (yyval.constant) = build_constantStr( *(yyvsp[(1) - (1)].str) ); }
    52885279    break;
     
    52915282
    52925283/* Line 1806 of yacc.c  */
    5293 #line 370 "parser.yy"
     5284#line 372 "parser.yy"
    52945285    { (yyval.str) = (yyvsp[(1) - (1)].tok); }
    52955286    break;
     
    52985289
    52995290/* Line 1806 of yacc.c  */
    5300 #line 372 "parser.yy"
     5291#line 374 "parser.yy"
    53015292    {
    53025293                        appendStr( (yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].tok) );                                            // append 2nd juxtaposed string to 1st
     
    53095300
    53105301/* Line 1806 of yacc.c  */
    5311 #line 383 "parser.yy"
     5302#line 385 "parser.yy"
    53125303    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (1)].tok) ) ); }
    53135304    break;
     
    53165307
    53175308/* Line 1806 of yacc.c  */
    5318 #line 385 "parser.yy"
     5309#line 387 "parser.yy"
    53195310    { (yyval.en) = new ExpressionNode( build_constantZeroOne( *(yyvsp[(1) - (1)].tok) ) ); }
    53205311    break;
     
    53235314
    53245315/* Line 1806 of yacc.c  */
    5325 #line 388 "parser.yy"
     5316#line 390 "parser.yy"
    53265317    { (yyval.en) = (yyvsp[(2) - (3)].en); }
    53275318    break;
     
    53305321
    53315322/* Line 1806 of yacc.c  */
    5332 #line 390 "parser.yy"
     5323#line 392 "parser.yy"
    53335324    { (yyval.en) = new ExpressionNode( build_valexpr( (yyvsp[(2) - (3)].sn) ) ); }
    53345325    break;
     
    53375328
    53385329/* Line 1806 of yacc.c  */
    5339 #line 400 "parser.yy"
     5330#line 402 "parser.yy"
    53405331    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Index, (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en) ) ); }
    53415332    break;
     
    53445335
    53455336/* Line 1806 of yacc.c  */
    5346 #line 402 "parser.yy"
     5337#line 404 "parser.yy"
    53475338    { (yyval.en) = new ExpressionNode( build_func( (yyvsp[(1) - (4)].en), (yyvsp[(3) - (4)].en) ) ); }
    53485339    break;
     
    53515342
    53525343/* Line 1806 of yacc.c  */
    5353 #line 404 "parser.yy"
     5344#line 406 "parser.yy"
    53545345    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(1) - (3)].en), build_varref( (yyvsp[(3) - (3)].tok) ) ) ); }
    53555346    break;
     
    53585349
    53595350/* Line 1806 of yacc.c  */
    5360 #line 406 "parser.yy"
     5351#line 408 "parser.yy"
    53615352    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(1) - (7)].en), build_tuple( (yyvsp[(5) - (7)].en) ) ) ); }
    53625353    break;
     
    53655356
    53665357/* Line 1806 of yacc.c  */
    5367 #line 408 "parser.yy"
     5358#line 410 "parser.yy"
    53685359    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(1) - (2)].en), build_field_name_REALFRACTIONconstant( *(yyvsp[(2) - (2)].tok) ) ) ); }
    53695360    break;
     
    53725363
    53735364/* Line 1806 of yacc.c  */
    5374 #line 410 "parser.yy"
     5365#line 412 "parser.yy"
    53755366    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(1) - (3)].en), build_varref( (yyvsp[(3) - (3)].tok) ) ) ); }
    53765367    break;
     
    53795370
    53805371/* Line 1806 of yacc.c  */
    5381 #line 412 "parser.yy"
     5372#line 414 "parser.yy"
    53825373    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(1) - (7)].en), build_tuple( (yyvsp[(5) - (7)].en) ) ) ); }
    53835374    break;
     
    53865377
    53875378/* Line 1806 of yacc.c  */
    5388 #line 414 "parser.yy"
     5379#line 416 "parser.yy"
    53895380    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::IncrPost, (yyvsp[(1) - (2)].en) ) ); }
    53905381    break;
     
    53935384
    53945385/* Line 1806 of yacc.c  */
    5395 #line 416 "parser.yy"
     5386#line 418 "parser.yy"
    53965387    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::DecrPost, (yyvsp[(1) - (2)].en) ) ); }
    53975388    break;
     
    54005391
    54015392/* Line 1806 of yacc.c  */
    5402 #line 418 "parser.yy"
     5393#line 420 "parser.yy"
    54035394    { (yyval.en) = new ExpressionNode( build_compoundLiteral( (yyvsp[(2) - (7)].decl), new InitializerNode( (yyvsp[(5) - (7)].in), true ) ) ); }
    54045395    break;
     
    54075398
    54085399/* Line 1806 of yacc.c  */
    5409 #line 420 "parser.yy"
     5400#line 422 "parser.yy"
    54105401    {
    54115402                        Token fn;
     
    54185409
    54195410/* Line 1806 of yacc.c  */
    5420 #line 430 "parser.yy"
     5411#line 432 "parser.yy"
    54215412    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) )); }
    54225413    break;
     
    54255416
    54265417/* Line 1806 of yacc.c  */
    5427 #line 435 "parser.yy"
     5418#line 437 "parser.yy"
    54285419    { (yyval.en) = nullptr; }
    54295420    break;
     
    54325423
    54335424/* Line 1806 of yacc.c  */
    5434 #line 441 "parser.yy"
     5425#line 443 "parser.yy"
    54355426    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); }
    54365427    break;
     
    54395430
    54405431/* Line 1806 of yacc.c  */
    5441 #line 447 "parser.yy"
     5432#line 449 "parser.yy"
    54425433    { (yyval.en) = new ExpressionNode( build_fieldSel( new ExpressionNode( build_field_name_REALDECIMALconstant( *(yyvsp[(1) - (2)].tok) ) ), maybeMoveBuild<Expression>( (yyvsp[(2) - (2)].en) ) ) ); }
    54435434    break;
     
    54465437
    54475438/* Line 1806 of yacc.c  */
    5448 #line 449 "parser.yy"
     5439#line 451 "parser.yy"
    54495440    { (yyval.en) = new ExpressionNode( build_fieldSel( new ExpressionNode( build_field_name_REALDECIMALconstant( *(yyvsp[(1) - (6)].tok) ) ), build_tuple( (yyvsp[(4) - (6)].en) ) ) ); }
    54505441    break;
     
    54535444
    54545445/* Line 1806 of yacc.c  */
    5455 #line 451 "parser.yy"
     5446#line 453 "parser.yy"
    54565447    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(1) - (3)].en), maybeMoveBuild<Expression>( (yyvsp[(3) - (3)].en) ) ) ); }
    54575448    break;
     
    54605451
    54615452/* Line 1806 of yacc.c  */
    5462 #line 453 "parser.yy"
     5453#line 455 "parser.yy"
    54635454    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(1) - (7)].en), build_tuple( (yyvsp[(5) - (7)].en) ) ) ); }
    54645455    break;
     
    54675458
    54685459/* Line 1806 of yacc.c  */
    5469 #line 455 "parser.yy"
     5460#line 457 "parser.yy"
    54705461    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(1) - (3)].en), maybeMoveBuild<Expression>( (yyvsp[(3) - (3)].en) ) ) ); }
    54715462    break;
     
    54745465
    54755466/* Line 1806 of yacc.c  */
    5476 #line 457 "parser.yy"
     5467#line 459 "parser.yy"
    54775468    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(1) - (7)].en), build_tuple( (yyvsp[(5) - (7)].en) ) ) ); }
    54785469    break;
     
    54815472
    54825473/* Line 1806 of yacc.c  */
    5483 #line 462 "parser.yy"
     5474#line 464 "parser.yy"
    54845475    { (yyval.en) = new ExpressionNode( build_field_name_fraction_constants( build_constantInteger( *(yyvsp[(1) - (2)].tok) ), (yyvsp[(2) - (2)].en) ) ); }
    54855476    break;
     
    54885479
    54895480/* Line 1806 of yacc.c  */
    5490 #line 464 "parser.yy"
     5481#line 466 "parser.yy"
    54915482    { (yyval.en) = new ExpressionNode( build_field_name_fraction_constants( build_field_name_FLOATINGconstant( *(yyvsp[(1) - (2)].tok) ), (yyvsp[(2) - (2)].en) ) ); }
    54925483    break;
     
    54955486
    54965487/* Line 1806 of yacc.c  */
    5497 #line 466 "parser.yy"
     5488#line 468 "parser.yy"
    54985489    {
    54995490                        if( (*(yyvsp[(1) - (2)].tok)) == "0" || (*(yyvsp[(1) - (2)].tok)) == "1" ) {
     
    55085499
    55095500/* Line 1806 of yacc.c  */
    5510 #line 477 "parser.yy"
     5501#line 479 "parser.yy"
    55115502    { (yyval.en) = nullptr; }
    55125503    break;
     
    55155506
    55165507/* Line 1806 of yacc.c  */
    5517 #line 479 "parser.yy"
     5508#line 481 "parser.yy"
    55185509    {
    55195510                        Expression * constant = build_field_name_REALFRACTIONconstant( *(yyvsp[(2) - (2)].tok) );
     
    55255516
    55265517/* Line 1806 of yacc.c  */
    5527 #line 490 "parser.yy"
     5518#line 492 "parser.yy"
    55285519    { (yyval.en) = (yyvsp[(1) - (1)].en); }
    55295520    break;
     
    55325523
    55335524/* Line 1806 of yacc.c  */
    5534 #line 492 "parser.yy"
     5525#line 494 "parser.yy"
    55355526    { (yyval.en) = new ExpressionNode( (yyvsp[(1) - (1)].constant) ); }
    55365527    break;
     
    55395530
    55405531/* Line 1806 of yacc.c  */
    5541 #line 494 "parser.yy"
     5532#line 496 "parser.yy"
    55425533    { (yyval.en) = (yyvsp[(2) - (2)].en)->set_extension( true ); }
    55435534    break;
     
    55465537
    55475538/* Line 1806 of yacc.c  */
    5548 #line 499 "parser.yy"
     5539#line 501 "parser.yy"
    55495540    {
    55505541                        switch ( (yyvsp[(1) - (2)].op) ) {
     
    55645555
    55655556/* Line 1806 of yacc.c  */
    5566 #line 512 "parser.yy"
     5557#line 514 "parser.yy"
    55675558    { (yyval.en) = new ExpressionNode( build_unary_val( (yyvsp[(1) - (2)].op), (yyvsp[(2) - (2)].en) ) ); }
    55685559    break;
     
    55715562
    55725563/* Line 1806 of yacc.c  */
    5573 #line 514 "parser.yy"
     5564#line 516 "parser.yy"
    55745565    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Incr, (yyvsp[(2) - (2)].en) ) ); }
    55755566    break;
     
    55785569
    55795570/* Line 1806 of yacc.c  */
    5580 #line 516 "parser.yy"
     5571#line 518 "parser.yy"
    55815572    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Decr, (yyvsp[(2) - (2)].en) ) ); }
    55825573    break;
     
    55855576
    55865577/* Line 1806 of yacc.c  */
    5587 #line 518 "parser.yy"
     5578#line 520 "parser.yy"
    55885579    { (yyval.en) = new ExpressionNode( build_sizeOfexpr( (yyvsp[(2) - (2)].en) ) ); }
    55895580    break;
     
    55925583
    55935584/* Line 1806 of yacc.c  */
    5594 #line 520 "parser.yy"
     5585#line 522 "parser.yy"
    55955586    { (yyval.en) = new ExpressionNode( build_sizeOftype( (yyvsp[(3) - (4)].decl) ) ); }
    55965587    break;
     
    55995590
    56005591/* Line 1806 of yacc.c  */
    5601 #line 522 "parser.yy"
     5592#line 524 "parser.yy"
    56025593    { (yyval.en) = new ExpressionNode( build_alignOfexpr( (yyvsp[(2) - (2)].en) ) ); }
    56035594    break;
     
    56065597
    56075598/* Line 1806 of yacc.c  */
    5608 #line 524 "parser.yy"
     5599#line 526 "parser.yy"
    56095600    { (yyval.en) = new ExpressionNode( build_alignOftype( (yyvsp[(3) - (4)].decl) ) ); }
    56105601    break;
     
    56135604
    56145605/* Line 1806 of yacc.c  */
    5615 #line 526 "parser.yy"
     5606#line 528 "parser.yy"
    56165607    { (yyval.en) = new ExpressionNode( build_offsetOf( (yyvsp[(3) - (6)].decl), build_varref( (yyvsp[(5) - (6)].tok) ) ) ); }
    56175608    break;
     
    56205611
    56215612/* Line 1806 of yacc.c  */
    5622 #line 528 "parser.yy"
     5613#line 530 "parser.yy"
    56235614    { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[(1) - (1)].tok) ), nullptr ) ); }
    56245615    break;
     
    56275618
    56285619/* Line 1806 of yacc.c  */
    5629 #line 530 "parser.yy"
     5620#line 532 "parser.yy"
    56305621    { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].en) ) ); }
    56315622    break;
     
    56345625
    56355626/* Line 1806 of yacc.c  */
    5636 #line 532 "parser.yy"
     5627#line 534 "parser.yy"
    56375628    { (yyval.en) = new ExpressionNode( build_attrtype( build_varref( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].decl) ) ); }
    56385629    break;
     
    56415632
    56425633/* Line 1806 of yacc.c  */
    5643 #line 538 "parser.yy"
     5634#line 540 "parser.yy"
    56445635    { (yyval.op) = OperKinds::PointTo; }
    56455636    break;
     
    56485639
    56495640/* Line 1806 of yacc.c  */
    5650 #line 539 "parser.yy"
     5641#line 541 "parser.yy"
    56515642    { (yyval.op) = OperKinds::AddressOf; }
    56525643    break;
     
    56555646
    56565647/* Line 1806 of yacc.c  */
    5657 #line 545 "parser.yy"
     5648#line 547 "parser.yy"
    56585649    { (yyval.op) = OperKinds::UnPlus; }
    56595650    break;
     
    56625653
    56635654/* Line 1806 of yacc.c  */
    5664 #line 546 "parser.yy"
     5655#line 548 "parser.yy"
    56655656    { (yyval.op) = OperKinds::UnMinus; }
    56665657    break;
     
    56695660
    56705661/* Line 1806 of yacc.c  */
    5671 #line 547 "parser.yy"
     5662#line 549 "parser.yy"
    56725663    { (yyval.op) = OperKinds::Neg; }
    56735664    break;
     
    56765667
    56775668/* Line 1806 of yacc.c  */
    5678 #line 548 "parser.yy"
     5669#line 550 "parser.yy"
    56795670    { (yyval.op) = OperKinds::BitNeg; }
    56805671    break;
     
    56835674
    56845675/* Line 1806 of yacc.c  */
    5685 #line 554 "parser.yy"
     5676#line 556 "parser.yy"
    56865677    { (yyval.en) = new ExpressionNode( build_cast( (yyvsp[(2) - (4)].decl), (yyvsp[(4) - (4)].en) ) ); }
    56875678    break;
     
    56905681
    56915682/* Line 1806 of yacc.c  */
    5692 #line 562 "parser.yy"
     5683#line 564 "parser.yy"
    56935684    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mul, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    56945685    break;
     
    56975688
    56985689/* Line 1806 of yacc.c  */
    5699 #line 564 "parser.yy"
     5690#line 566 "parser.yy"
    57005691    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Div, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    57015692    break;
     
    57045695
    57055696/* Line 1806 of yacc.c  */
    5706 #line 566 "parser.yy"
     5697#line 568 "parser.yy"
    57075698    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mod, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    57085699    break;
     
    57115702
    57125703/* Line 1806 of yacc.c  */
    5713 #line 572 "parser.yy"
     5704#line 574 "parser.yy"
    57145705    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Plus, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    57155706    break;
     
    57185709
    57195710/* Line 1806 of yacc.c  */
    5720 #line 574 "parser.yy"
     5711#line 576 "parser.yy"
    57215712    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Minus, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    57225713    break;
     
    57255716
    57265717/* Line 1806 of yacc.c  */
    5727 #line 580 "parser.yy"
     5718#line 582 "parser.yy"
    57285719    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LShift, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    57295720    break;
     
    57325723
    57335724/* Line 1806 of yacc.c  */
    5734 #line 582 "parser.yy"
     5725#line 584 "parser.yy"
    57355726    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::RShift, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    57365727    break;
     
    57395730
    57405731/* Line 1806 of yacc.c  */
    5741 #line 588 "parser.yy"
     5732#line 590 "parser.yy"
    57425733    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    57435734    break;
     
    57465737
    57475738/* Line 1806 of yacc.c  */
    5748 #line 590 "parser.yy"
     5739#line 592 "parser.yy"
    57495740    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    57505741    break;
     
    57535744
    57545745/* Line 1806 of yacc.c  */
    5755 #line 592 "parser.yy"
     5746#line 594 "parser.yy"
    57565747    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LEThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    57575748    break;
     
    57605751
    57615752/* Line 1806 of yacc.c  */
    5762 #line 594 "parser.yy"
     5753#line 596 "parser.yy"
    57635754    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GEThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    57645755    break;
     
    57675758
    57685759/* Line 1806 of yacc.c  */
    5769 #line 600 "parser.yy"
     5760#line 602 "parser.yy"
    57705761    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Eq, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    57715762    break;
     
    57745765
    57755766/* Line 1806 of yacc.c  */
    5776 #line 602 "parser.yy"
     5767#line 604 "parser.yy"
    57775768    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Neq, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    57785769    break;
     
    57815772
    57825773/* Line 1806 of yacc.c  */
    5783 #line 608 "parser.yy"
     5774#line 610 "parser.yy"
    57845775    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitAnd, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    57855776    break;
     
    57885779
    57895780/* Line 1806 of yacc.c  */
    5790 #line 614 "parser.yy"
     5781#line 616 "parser.yy"
    57915782    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Xor, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    57925783    break;
     
    57955786
    57965787/* Line 1806 of yacc.c  */
    5797 #line 620 "parser.yy"
     5788#line 622 "parser.yy"
    57985789    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitOr, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    57995790    break;
     
    58025793
    58035794/* Line 1806 of yacc.c  */
    5804 #line 626 "parser.yy"
     5795#line 628 "parser.yy"
    58055796    { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en), true ) ); }
    58065797    break;
     
    58095800
    58105801/* Line 1806 of yacc.c  */
    5811 #line 632 "parser.yy"
     5802#line 634 "parser.yy"
    58125803    { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en), false ) ); }
    58135804    break;
     
    58165807
    58175808/* Line 1806 of yacc.c  */
    5818 #line 638 "parser.yy"
     5809#line 640 "parser.yy"
    58195810    { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (5)].en), (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].en) ) ); }
    58205811    break;
     
    58235814
    58245815/* Line 1806 of yacc.c  */
    5825 #line 641 "parser.yy"
     5816#line 643 "parser.yy"
    58265817    { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (4)].en), (yyvsp[(1) - (4)].en), (yyvsp[(4) - (4)].en) ) ); }
    58275818    break;
     
    58305821
    58315822/* Line 1806 of yacc.c  */
    5832 #line 654 "parser.yy"
     5823#line 656 "parser.yy"
    58335824    { (yyval.en) = new ExpressionNode( build_binary_ptr( (yyvsp[(2) - (3)].op), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    58345825    break;
     
    58375828
    58385829/* Line 1806 of yacc.c  */
    5839 #line 661 "parser.yy"
     5830#line 663 "parser.yy"
    58405831    { (yyval.en) = nullptr; }
    58415832    break;
     
    58445835
    58455836/* Line 1806 of yacc.c  */
    5846 #line 666 "parser.yy"
     5837#line 668 "parser.yy"
    58475838    { (yyval.op) = OperKinds::Assign; }
    58485839    break;
     
    58515842
    58525843/* Line 1806 of yacc.c  */
    5853 #line 667 "parser.yy"
     5844#line 669 "parser.yy"
    58545845    { (yyval.op) = OperKinds::AtAssn; }
    58555846    break;
     
    58585849
    58595850/* Line 1806 of yacc.c  */
    5860 #line 668 "parser.yy"
     5851#line 670 "parser.yy"
    58615852    { (yyval.op) = OperKinds::MulAssn; }
    58625853    break;
     
    58655856
    58665857/* Line 1806 of yacc.c  */
    5867 #line 669 "parser.yy"
     5858#line 671 "parser.yy"
    58685859    { (yyval.op) = OperKinds::DivAssn; }
    58695860    break;
     
    58725863
    58735864/* Line 1806 of yacc.c  */
    5874 #line 670 "parser.yy"
     5865#line 672 "parser.yy"
    58755866    { (yyval.op) = OperKinds::ModAssn; }
    58765867    break;
     
    58795870
    58805871/* Line 1806 of yacc.c  */
    5881 #line 671 "parser.yy"
     5872#line 673 "parser.yy"
    58825873    { (yyval.op) = OperKinds::PlusAssn; }
    58835874    break;
     
    58865877
    58875878/* Line 1806 of yacc.c  */
    5888 #line 672 "parser.yy"
     5879#line 674 "parser.yy"
    58895880    { (yyval.op) = OperKinds::MinusAssn; }
    58905881    break;
     
    58935884
    58945885/* Line 1806 of yacc.c  */
    5895 #line 673 "parser.yy"
     5886#line 675 "parser.yy"
    58965887    { (yyval.op) = OperKinds::LSAssn; }
    58975888    break;
     
    59005891
    59015892/* Line 1806 of yacc.c  */
    5902 #line 674 "parser.yy"
     5893#line 676 "parser.yy"
    59035894    { (yyval.op) = OperKinds::RSAssn; }
    59045895    break;
     
    59075898
    59085899/* Line 1806 of yacc.c  */
    5909 #line 675 "parser.yy"
     5900#line 677 "parser.yy"
    59105901    { (yyval.op) = OperKinds::AndAssn; }
    59115902    break;
     
    59145905
    59155906/* Line 1806 of yacc.c  */
    5916 #line 676 "parser.yy"
     5907#line 678 "parser.yy"
    59175908    { (yyval.op) = OperKinds::ERAssn; }
    59185909    break;
     
    59215912
    59225913/* Line 1806 of yacc.c  */
    5923 #line 677 "parser.yy"
     5914#line 679 "parser.yy"
    59245915    { (yyval.op) = OperKinds::OrAssn; }
    59255916    break;
     
    59285919
    59295920/* Line 1806 of yacc.c  */
    5930 #line 688 "parser.yy"
     5921#line 690 "parser.yy"
    59315922    { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(new ExpressionNode( nullptr ) )->set_last( (yyvsp[(4) - (6)].en) ) ) ); }
    59325923    break;
     
    59355926
    59365927/* Line 1806 of yacc.c  */
    5937 #line 690 "parser.yy"
     5928#line 692 "parser.yy"
    59385929    { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(yyvsp[(3) - (7)].en)->set_last( (yyvsp[(5) - (7)].en) ) ) ); }
    59395930    break;
     
    59425933
    59435934/* Line 1806 of yacc.c  */
    5944 #line 696 "parser.yy"
     5935#line 698 "parser.yy"
    59455936    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); }
    59465937    break;
     
    59495940
    59505941/* Line 1806 of yacc.c  */
    5951 #line 702 "parser.yy"
     5942#line 704 "parser.yy"
    59525943    { (yyval.en) = new ExpressionNode( build_comma( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    59535944    break;
     
    59565947
    59575948/* Line 1806 of yacc.c  */
    5958 #line 707 "parser.yy"
     5949#line 709 "parser.yy"
    59595950    { (yyval.en) = nullptr; }
    59605951    break;
     
    59635954
    59645955/* Line 1806 of yacc.c  */
    5965 #line 716 "parser.yy"
     5956#line 718 "parser.yy"
    59665957    { (yyval.sn) = (yyvsp[(1) - (1)].sn); }
    59675958    break;
     
    59705961
    59715962/* Line 1806 of yacc.c  */
    5972 #line 723 "parser.yy"
     5963#line 725 "parser.yy"
    59735964    {
    59745965                        Token fn;
     
    59815972
    59825973/* Line 1806 of yacc.c  */
    5983 #line 733 "parser.yy"
     5974#line 735 "parser.yy"
    59845975    {
    59855976                        (yyval.sn) = (yyvsp[(4) - (4)].sn)->add_label( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].decl) );
     
    59905981
    59915982/* Line 1806 of yacc.c  */
    5992 #line 740 "parser.yy"
     5983#line 742 "parser.yy"
    59935984    { (yyval.sn) = new StatementNode( build_compound( (StatementNode *)0 ) ); }
    59945985    break;
     
    59975988
    59985989/* Line 1806 of yacc.c  */
    5999 #line 748 "parser.yy"
     5990#line 750 "parser.yy"
    60005991    { (yyval.sn) = new StatementNode( build_compound( (yyvsp[(5) - (7)].sn) ) ); }
    60015992    break;
     
    60045995
    60055996/* Line 1806 of yacc.c  */
    6006 #line 754 "parser.yy"
     5997#line 756 "parser.yy"
    60075998    { if ( (yyvsp[(1) - (3)].sn) != 0 ) { (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(3) - (3)].sn) ); (yyval.sn) = (yyvsp[(1) - (3)].sn); } }
    60085999    break;
     
    60116002
    60126003/* Line 1806 of yacc.c  */
    6013 #line 759 "parser.yy"
     6004#line 761 "parser.yy"
    60146005    { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
    60156006    break;
     
    60186009
    60196010/* Line 1806 of yacc.c  */
    6020 #line 761 "parser.yy"
     6011#line 763 "parser.yy"
    60216012    {
    60226013                        distExt( (yyvsp[(2) - (2)].decl) );
     
    60286019
    60296020/* Line 1806 of yacc.c  */
    6030 #line 766 "parser.yy"
     6021#line 768 "parser.yy"
    60316022    { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
    60326023    break;
     
    60356026
    60366027/* Line 1806 of yacc.c  */
    6037 #line 768 "parser.yy"
     6028#line 770 "parser.yy"
    60386029    {
    60396030                        distExt( (yyvsp[(2) - (2)].decl) );
     
    60456036
    60466037/* Line 1806 of yacc.c  */
    6047 #line 778 "parser.yy"
     6038#line 780 "parser.yy"
    60486039    { if ( (yyvsp[(1) - (2)].sn) != 0 ) { (yyvsp[(1) - (2)].sn)->set_last( (yyvsp[(2) - (2)].sn) ); (yyval.sn) = (yyvsp[(1) - (2)].sn); } }
    60496040    break;
     
    60526043
    60536044/* Line 1806 of yacc.c  */
    6054 #line 783 "parser.yy"
     6045#line 785 "parser.yy"
    60556046    { (yyval.sn) = new StatementNode( build_expr( (yyvsp[(1) - (2)].en) ) ); }
    60566047    break;
     
    60596050
    60606051/* Line 1806 of yacc.c  */
    6061 #line 789 "parser.yy"
     6052#line 791 "parser.yy"
    60626053    { (yyval.sn) = new StatementNode( build_if( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn), nullptr ) ); }
    60636054    break;
     
    60666057
    60676058/* Line 1806 of yacc.c  */
    6068 #line 791 "parser.yy"
     6059#line 793 "parser.yy"
    60696060    { (yyval.sn) = new StatementNode( build_if( (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].sn), (yyvsp[(7) - (7)].sn) ) ); }
    60706061    break;
     
    60736064
    60746065/* Line 1806 of yacc.c  */
    6075 #line 793 "parser.yy"
     6066#line 795 "parser.yy"
    60766067    { (yyval.sn) = new StatementNode( build_switch( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
    60776068    break;
     
    60806071
    60816072/* Line 1806 of yacc.c  */
    6082 #line 795 "parser.yy"
     6073#line 797 "parser.yy"
    60836074    {
    60846075                        StatementNode *sw = new StatementNode( build_switch( (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ) );
     
    60956086
    60966087/* Line 1806 of yacc.c  */
    6097 #line 805 "parser.yy"
     6088#line 807 "parser.yy"
    60986089    { (yyval.sn) = new StatementNode( build_switch( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
    60996090    break;
     
    61026093
    61036094/* Line 1806 of yacc.c  */
    6104 #line 807 "parser.yy"
     6095#line 809 "parser.yy"
    61056096    {
    61066097                        StatementNode *sw = new StatementNode( build_switch( (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ) );
     
    61126103
    61136104/* Line 1806 of yacc.c  */
    6114 #line 817 "parser.yy"
     6105#line 819 "parser.yy"
    61156106    { (yyval.en) = (yyvsp[(1) - (1)].en); }
    61166107    break;
     
    61196110
    61206111/* Line 1806 of yacc.c  */
    6121 #line 819 "parser.yy"
     6112#line 821 "parser.yy"
    61226113    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    61236114    break;
     
    61266117
    61276118/* Line 1806 of yacc.c  */
    6128 #line 824 "parser.yy"
     6119#line 826 "parser.yy"
    61296120    { (yyval.sn) = new StatementNode( build_case( (yyvsp[(1) - (1)].en) ) ); }
    61306121    break;
     
    61336124
    61346125/* Line 1806 of yacc.c  */
    6135 #line 826 "parser.yy"
     6126#line 828 "parser.yy"
    61366127    { (yyval.sn) = (StatementNode *)((yyvsp[(1) - (3)].sn)->set_last( new StatementNode( build_case( (yyvsp[(3) - (3)].en) ) ) ) ); }
    61376128    break;
     
    61406131
    61416132/* Line 1806 of yacc.c  */
    6142 #line 830 "parser.yy"
     6133#line 832 "parser.yy"
    61436134    { (yyval.sn) = (yyvsp[(2) - (3)].sn); }
    61446135    break;
     
    61476138
    61486139/* Line 1806 of yacc.c  */
    6149 #line 831 "parser.yy"
     6140#line 833 "parser.yy"
    61506141    { (yyval.sn) = new StatementNode( build_default() ); }
    61516142    break;
     
    61546145
    61556146/* Line 1806 of yacc.c  */
    6156 #line 837 "parser.yy"
     6147#line 839 "parser.yy"
    61576148    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (2)].sn)->set_last( (yyvsp[(2) - (2)].sn) )); }
    61586149    break;
     
    61616152
    61626153/* Line 1806 of yacc.c  */
    6163 #line 841 "parser.yy"
     6154#line 843 "parser.yy"
    61646155    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(2) - (2)].sn) ) ) ); }
    61656156    break;
     
    61686159
    61696160/* Line 1806 of yacc.c  */
    6170 #line 846 "parser.yy"
     6161#line 848 "parser.yy"
    61716162    { (yyval.sn) = nullptr; }
    61726163    break;
     
    61756166
    61766167/* Line 1806 of yacc.c  */
    6177 #line 852 "parser.yy"
     6168#line 854 "parser.yy"
    61786169    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(2) - (2)].sn) ) ) ); }
    61796170    break;
     
    61826173
    61836174/* Line 1806 of yacc.c  */
    6184 #line 854 "parser.yy"
     6175#line 856 "parser.yy"
    61856176    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(2) - (3)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(3) - (3)].sn) ) ) ) ) ); }
    61866177    break;
     
    61896180
    61906181/* Line 1806 of yacc.c  */
    6191 #line 859 "parser.yy"
     6182#line 861 "parser.yy"
    61926183    { (yyval.sn) = nullptr; }
    61936184    break;
     
    61966187
    61976188/* Line 1806 of yacc.c  */
    6198 #line 865 "parser.yy"
     6189#line 867 "parser.yy"
    61996190    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
    62006191    break;
     
    62036194
    62046195/* Line 1806 of yacc.c  */
    6205 #line 867 "parser.yy"
     6196#line 869 "parser.yy"
    62066197    { (yyval.sn) = (yyvsp[(1) - (3)].sn)->append_last_case( new StatementNode( build_compound( (StatementNode *)(yyvsp[(2) - (3)].sn)->set_last( (yyvsp[(3) - (3)].sn) ) ) ) ); }
    62076198    break;
     
    62106201
    62116202/* Line 1806 of yacc.c  */
    6212 #line 869 "parser.yy"
     6203#line 871 "parser.yy"
    62136204    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); }
    62146205    break;
     
    62176208
    62186209/* Line 1806 of yacc.c  */
    6219 #line 871 "parser.yy"
     6210#line 873 "parser.yy"
    62206211    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (4)].sn)->set_last( (yyvsp[(2) - (4)].sn)->append_last_case( new StatementNode( build_compound( (StatementNode *)(yyvsp[(3) - (4)].sn)->set_last( (yyvsp[(4) - (4)].sn) ) ) ) ) ) ); }
    62216212    break;
     
    62246215
    62256216/* Line 1806 of yacc.c  */
    6226 #line 876 "parser.yy"
     6217#line 878 "parser.yy"
    62276218    { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Break ) ); }
    62286219    break;
    62296220
    62306221  case 186:
    6231 
    6232 /* Line 1806 of yacc.c  */
    6233 #line 882 "parser.yy"
    6234     { (yyval.sn) = nullptr; }
    6235     break;
    6236 
    6237   case 187:
    62386222
    62396223/* Line 1806 of yacc.c  */
     
    62426226    break;
    62436227
     6228  case 187:
     6229
     6230/* Line 1806 of yacc.c  */
     6231#line 886 "parser.yy"
     6232    { (yyval.sn) = nullptr; }
     6233    break;
     6234
    62446235  case 188:
    62456236
    62466237/* Line 1806 of yacc.c  */
    6247 #line 889 "parser.yy"
     6238#line 891 "parser.yy"
    62486239    { (yyval.sn) = new StatementNode( build_while( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
    62496240    break;
     
    62526243
    62536244/* Line 1806 of yacc.c  */
    6254 #line 891 "parser.yy"
     6245#line 893 "parser.yy"
    62556246    { (yyval.sn) = new StatementNode( build_while( (yyvsp[(5) - (7)].en), (yyvsp[(2) - (7)].sn), true ) ); }
    62566247    break;
     
    62596250
    62606251/* Line 1806 of yacc.c  */
    6261 #line 893 "parser.yy"
     6252#line 895 "parser.yy"
    62626253    { (yyval.sn) = new StatementNode( build_for( (yyvsp[(4) - (6)].fctl), (yyvsp[(6) - (6)].sn) ) ); }
    62636254    break;
     
    62666257
    62676258/* Line 1806 of yacc.c  */
    6268 #line 898 "parser.yy"
     6259#line 900 "parser.yy"
    62696260    { (yyval.fctl) = new ForCtl( (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].en) ); }
    62706261    break;
     
    62736264
    62746265/* Line 1806 of yacc.c  */
    6275 #line 900 "parser.yy"
     6266#line 902 "parser.yy"
    62766267    { (yyval.fctl) = new ForCtl( (yyvsp[(1) - (4)].decl), (yyvsp[(2) - (4)].en), (yyvsp[(4) - (4)].en) ); }
    62776268    break;
     
    62806271
    62816272/* Line 1806 of yacc.c  */
    6282 #line 905 "parser.yy"
     6273#line 907 "parser.yy"
    62836274    { (yyval.sn) = new StatementNode( build_branch( (yyvsp[(2) - (3)].tok), BranchStmt::Goto ) ); }
    62846275    break;
     
    62876278
    62886279/* Line 1806 of yacc.c  */
    6289 #line 909 "parser.yy"
     6280#line 911 "parser.yy"
    62906281    { (yyval.sn) = new StatementNode( build_computedgoto( (yyvsp[(3) - (4)].en) ) ); }
    62916282    break;
     
    62946285
    62956286/* Line 1806 of yacc.c  */
    6296 #line 912 "parser.yy"
     6287#line 914 "parser.yy"
    62976288    { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Continue ) ); }
    62986289    break;
     
    63016292
    63026293/* Line 1806 of yacc.c  */
    6303 #line 916 "parser.yy"
     6294#line 918 "parser.yy"
    63046295    { (yyval.sn) = new StatementNode( build_branch( (yyvsp[(2) - (3)].tok), BranchStmt::Continue ) ); }
    63056296    break;
     
    63086299
    63096300/* Line 1806 of yacc.c  */
    6310 #line 919 "parser.yy"
     6301#line 921 "parser.yy"
    63116302    { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Break ) ); }
    63126303    break;
     
    63156306
    63166307/* Line 1806 of yacc.c  */
    6317 #line 923 "parser.yy"
     6308#line 925 "parser.yy"
    63186309    { (yyval.sn) = new StatementNode( build_branch( (yyvsp[(2) - (3)].tok), BranchStmt::Break ) ); }
    63196310    break;
     
    63226313
    63236314/* Line 1806 of yacc.c  */
    6324 #line 925 "parser.yy"
     6315#line 927 "parser.yy"
    63256316    { (yyval.sn) = new StatementNode( build_return( (yyvsp[(2) - (3)].en) ) ); }
    63266317    break;
    63276318
    63286319  case 200:
    6329 
    6330 /* Line 1806 of yacc.c  */
    6331 #line 927 "parser.yy"
    6332     { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (3)].en) ) ); }
    6333     break;
    6334 
    6335   case 201:
    63366320
    63376321/* Line 1806 of yacc.c  */
     
    63406324    break;
    63416325
     6326  case 201:
     6327
     6328/* Line 1806 of yacc.c  */
     6329#line 931 "parser.yy"
     6330    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (3)].en) ) ); }
     6331    break;
     6332
    63426333  case 202:
    63436334
    63446335/* Line 1806 of yacc.c  */
    6345 #line 931 "parser.yy"
     6336#line 933 "parser.yy"
    63466337    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (5)].en) ) ); }
    63476338    break;
     
    63506341
    63516342/* Line 1806 of yacc.c  */
    6352 #line 936 "parser.yy"
     6343#line 938 "parser.yy"
    63536344    { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (3)].sn), (yyvsp[(3) - (3)].sn), 0 ) ); }
    63546345    break;
     
    63576348
    63586349/* Line 1806 of yacc.c  */
    6359 #line 938 "parser.yy"
     6350#line 940 "parser.yy"
    63606351    { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (3)].sn), 0, (yyvsp[(3) - (3)].sn) ) ); }
    63616352    break;
     
    63646355
    63656356/* Line 1806 of yacc.c  */
    6366 #line 940 "parser.yy"
     6357#line 942 "parser.yy"
    63676358    { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (4)].sn), (yyvsp[(3) - (4)].sn), (yyvsp[(4) - (4)].sn) ) ); }
    63686359    break;
     
    63716362
    63726363/* Line 1806 of yacc.c  */
    6373 #line 947 "parser.yy"
     6364#line 949 "parser.yy"
    63746365    { (yyval.sn) = new StatementNode( build_catch( 0, (yyvsp[(5) - (5)].sn), true ) ); }
    63756366    break;
     
    63786369
    63796370/* Line 1806 of yacc.c  */
    6380 #line 949 "parser.yy"
     6371#line 951 "parser.yy"
    63816372    { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (6)].sn)->set_last( new StatementNode( build_catch( 0, (yyvsp[(6) - (6)].sn), true ) ) ); }
    63826373    break;
     
    63856376
    63866377/* Line 1806 of yacc.c  */
    6387 #line 951 "parser.yy"
     6378#line 953 "parser.yy"
    63886379    { (yyval.sn) = new StatementNode( build_catch( 0, (yyvsp[(5) - (5)].sn), true ) ); }
    63896380    break;
     
    63926383
    63936384/* Line 1806 of yacc.c  */
    6394 #line 953 "parser.yy"
     6385#line 955 "parser.yy"
    63956386    { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (6)].sn)->set_last( new StatementNode( build_catch( 0, (yyvsp[(6) - (6)].sn), true ) ) ); }
    63966387    break;
     
    63996390
    64006391/* Line 1806 of yacc.c  */
    6401 #line 958 "parser.yy"
     6392#line 960 "parser.yy"
    64026393    { (yyval.sn) = new StatementNode( build_catch( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ) ); }
    64036394    break;
     
    64066397
    64076398/* Line 1806 of yacc.c  */
    6408 #line 960 "parser.yy"
     6399#line 962 "parser.yy"
    64096400    { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (10)].sn)->set_last( new StatementNode( build_catch( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ) ); }
    64106401    break;
     
    64136404
    64146405/* Line 1806 of yacc.c  */
    6415 #line 962 "parser.yy"
     6406#line 964 "parser.yy"
    64166407    { (yyval.sn) = new StatementNode( build_catch( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ) ); }
    64176408    break;
     
    64206411
    64216412/* Line 1806 of yacc.c  */
    6422 #line 964 "parser.yy"
     6413#line 966 "parser.yy"
    64236414    { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (10)].sn)->set_last( new StatementNode( build_catch( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ) ); }
    64246415    break;
     
    64276418
    64286419/* Line 1806 of yacc.c  */
    6429 #line 969 "parser.yy"
     6420#line 971 "parser.yy"
    64306421    {
    64316422                        (yyval.sn) = new StatementNode( build_finally( (yyvsp[(2) - (2)].sn) ) );
     
    64366427
    64376428/* Line 1806 of yacc.c  */
    6438 #line 978 "parser.yy"
     6429#line 980 "parser.yy"
    64396430    {
    64406431                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    64466437
    64476438/* Line 1806 of yacc.c  */
    6448 #line 983 "parser.yy"
     6439#line 985 "parser.yy"
    64496440    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    64506441    break;
     
    64536444
    64546445/* Line 1806 of yacc.c  */
    6455 #line 985 "parser.yy"
     6446#line 987 "parser.yy"
    64566447    {
    64576448                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    64636454
    64646455/* Line 1806 of yacc.c  */
    6465 #line 994 "parser.yy"
     6456#line 996 "parser.yy"
    64666457    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (6)].flag), (yyvsp[(4) - (6)].constant), 0 ) ); }
    64676458    break;
     
    64706461
    64716462/* Line 1806 of yacc.c  */
    6472 #line 996 "parser.yy"
     6463#line 998 "parser.yy"
    64736464    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (8)].flag), (yyvsp[(4) - (8)].constant), (yyvsp[(6) - (8)].en) ) ); }
    64746465    break;
     
    64776468
    64786469/* Line 1806 of yacc.c  */
    6479 #line 998 "parser.yy"
     6470#line 1000 "parser.yy"
    64806471    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (10)].flag), (yyvsp[(4) - (10)].constant), (yyvsp[(6) - (10)].en), (yyvsp[(8) - (10)].en) ) ); }
    64816472    break;
     
    64846475
    64856476/* Line 1806 of yacc.c  */
    6486 #line 1000 "parser.yy"
     6477#line 1002 "parser.yy"
    64876478    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (12)].flag), (yyvsp[(4) - (12)].constant), (yyvsp[(6) - (12)].en), (yyvsp[(8) - (12)].en), (yyvsp[(10) - (12)].en) ) ); }
    64886479    break;
     
    64916482
    64926483/* Line 1806 of yacc.c  */
    6493 #line 1002 "parser.yy"
     6484#line 1004 "parser.yy"
    64946485    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (14)].flag), (yyvsp[(5) - (14)].constant), 0, (yyvsp[(8) - (14)].en), (yyvsp[(10) - (14)].en), (yyvsp[(12) - (14)].label) ) ); }
    64956486    break;
     
    64986489
    64996490/* Line 1806 of yacc.c  */
    6500 #line 1007 "parser.yy"
     6491#line 1009 "parser.yy"
    65016492    { (yyval.flag) = false; }
    65026493    break;
     
    65056496
    65066497/* Line 1806 of yacc.c  */
    6507 #line 1009 "parser.yy"
     6498#line 1011 "parser.yy"
    65086499    { (yyval.flag) = true; }
    65096500    break;
     
    65126503
    65136504/* Line 1806 of yacc.c  */
    6514 #line 1014 "parser.yy"
     6505#line 1016 "parser.yy"
    65156506    { (yyval.en) = nullptr; }
    65166507    break;
     
    65196510
    65206511/* Line 1806 of yacc.c  */
    6521 #line 1021 "parser.yy"
     6512#line 1023 "parser.yy"
    65226513    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); }
    65236514    break;
     
    65266517
    65276518/* Line 1806 of yacc.c  */
    6528 #line 1026 "parser.yy"
     6519#line 1028 "parser.yy"
    65296520    { (yyval.en) = new ExpressionNode( build_asmexpr( 0, (yyvsp[(1) - (4)].constant), (yyvsp[(3) - (4)].en) ) ); }
    65306521    break;
     
    65336524
    65346525/* Line 1806 of yacc.c  */
    6535 #line 1028 "parser.yy"
     6526#line 1030 "parser.yy"
    65366527    { (yyval.en) = new ExpressionNode( build_asmexpr( (yyvsp[(2) - (7)].en), (yyvsp[(4) - (7)].constant), (yyvsp[(6) - (7)].en) ) ); }
    65376528    break;
     
    65406531
    65416532/* Line 1806 of yacc.c  */
    6542 #line 1033 "parser.yy"
     6533#line 1035 "parser.yy"
    65436534    { (yyval.en) = nullptr; }
    65446535    break;
     
    65476538
    65486539/* Line 1806 of yacc.c  */
    6549 #line 1035 "parser.yy"
     6540#line 1037 "parser.yy"
    65506541    { (yyval.en) = new ExpressionNode( (yyvsp[(1) - (1)].constant) ); }
    65516542    break;
     
    65546545
    65556546/* Line 1806 of yacc.c  */
    6556 #line 1038 "parser.yy"
     6547#line 1040 "parser.yy"
    65576548    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( new ExpressionNode( (yyvsp[(3) - (3)].constant) ) ); }
    65586549    break;
     
    65616552
    65626553/* Line 1806 of yacc.c  */
    6563 #line 1043 "parser.yy"
     6554#line 1045 "parser.yy"
    65646555    {
    65656556                        (yyval.label) = new LabelNode(); (yyval.label)->labels.push_back( *(yyvsp[(1) - (1)].tok) );
     
    65716562
    65726563/* Line 1806 of yacc.c  */
    6573 #line 1048 "parser.yy"
     6564#line 1050 "parser.yy"
    65746565    {
    65756566                        (yyval.label) = (yyvsp[(1) - (3)].label); (yyvsp[(1) - (3)].label)->labels.push_back( *(yyvsp[(3) - (3)].tok) );
     
    65816572
    65826573/* Line 1806 of yacc.c  */
    6583 #line 1058 "parser.yy"
     6574#line 1060 "parser.yy"
    65846575    { (yyval.decl) = nullptr; }
    65856576    break;
     
    65886579
    65896580/* Line 1806 of yacc.c  */
    6590 #line 1065 "parser.yy"
     6581#line 1067 "parser.yy"
    65916582    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    65926583    break;
     
    65956586
    65966587/* Line 1806 of yacc.c  */
    6597 #line 1070 "parser.yy"
     6588#line 1072 "parser.yy"
    65986589    { (yyval.decl) = nullptr; }
    65996590    break;
     
    66026593
    66036594/* Line 1806 of yacc.c  */
    6604 #line 1077 "parser.yy"
     6595#line 1079 "parser.yy"
    66056596    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    66066597    break;
     
    66096600
    66106601/* Line 1806 of yacc.c  */
    6611 #line 1091 "parser.yy"
     6602#line 1093 "parser.yy"
    66126603    {}
    66136604    break;
     
    66166607
    66176608/* Line 1806 of yacc.c  */
    6618 #line 1092 "parser.yy"
     6609#line 1094 "parser.yy"
    66196610    {}
    66206611    break;
     
    66236614
    66246615/* Line 1806 of yacc.c  */
    6625 #line 1121 "parser.yy"
     6616#line 1123 "parser.yy"
    66266617    {
    66276618                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    66336624
    66346625/* Line 1806 of yacc.c  */
    6635 #line 1128 "parser.yy"
     6626#line 1130 "parser.yy"
    66366627    {
    66376628                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    66436634
    66446635/* Line 1806 of yacc.c  */
    6645 #line 1133 "parser.yy"
     6636#line 1135 "parser.yy"
    66466637    {
    66476638                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (6)].tok), TypedefTable::ID );
     
    66536644
    66546645/* Line 1806 of yacc.c  */
    6655 #line 1143 "parser.yy"
     6646#line 1145 "parser.yy"
    66566647    {
    66576648                        typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
     
    66636654
    66646655/* Line 1806 of yacc.c  */
    6665 #line 1148 "parser.yy"
     6656#line 1150 "parser.yy"
    66666657    {
    66676658                        typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
     
    66736664
    66746665/* Line 1806 of yacc.c  */
    6675 #line 1153 "parser.yy"
     6666#line 1155 "parser.yy"
    66766667    {
    66776668                        typedefTable.setNextIdentifier( *(yyvsp[(3) - (4)].tok) );
     
    66836674
    66846675/* Line 1806 of yacc.c  */
    6685 #line 1161 "parser.yy"
     6676#line 1163 "parser.yy"
    66866677    {
    66876678                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    66936684
    66946685/* Line 1806 of yacc.c  */
    6695 #line 1166 "parser.yy"
     6686#line 1168 "parser.yy"
    66966687    {
    66976688                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    67036694
    67046695/* Line 1806 of yacc.c  */
    6705 #line 1171 "parser.yy"
     6696#line 1173 "parser.yy"
    67066697    {
    67076698                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    67136704
    67146705/* Line 1806 of yacc.c  */
    6715 #line 1176 "parser.yy"
     6706#line 1178 "parser.yy"
    67166707    {
    67176708                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    67236714
    67246715/* Line 1806 of yacc.c  */
    6725 #line 1181 "parser.yy"
     6716#line 1183 "parser.yy"
    67266717    {
    67276718                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
     
    67336724
    67346725/* Line 1806 of yacc.c  */
    6735 #line 1212 "parser.yy"
     6726#line 1214 "parser.yy"
    67366727    {
    67376728                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
     
    67426733
    67436734/* Line 1806 of yacc.c  */
    6744 #line 1216 "parser.yy"
     6735#line 1218 "parser.yy"
    67456736    {
    67466737                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
     
    67516742
    67526743/* Line 1806 of yacc.c  */
    6753 #line 1223 "parser.yy"
     6744#line 1225 "parser.yy"
    67546745    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
    67556746    break;
     
    67586749
    67596750/* Line 1806 of yacc.c  */
    6760 #line 1227 "parser.yy"
     6751#line 1229 "parser.yy"
    67616752    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (9)].decl)->appendList( (yyvsp[(7) - (9)].decl) ) ); }
    67626753    break;
     
    67656756
    67666757/* Line 1806 of yacc.c  */
    6767 #line 1232 "parser.yy"
     6758#line 1234 "parser.yy"
    67686759    {
    67696760                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    67756766
    67766767/* Line 1806 of yacc.c  */
    6777 #line 1237 "parser.yy"
     6768#line 1239 "parser.yy"
    67786769    {
    67796770                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    67856776
    67866777/* Line 1806 of yacc.c  */
    6787 #line 1242 "parser.yy"
     6778#line 1244 "parser.yy"
    67886779    {
    67896780                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::TD );
     
    67956786
    67966787/* Line 1806 of yacc.c  */
    6797 #line 1253 "parser.yy"
     6788#line 1255 "parser.yy"
    67986789    {
    67996790                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    68056796
    68066797/* Line 1806 of yacc.c  */
    6807 #line 1258 "parser.yy"
     6798#line 1260 "parser.yy"
    68086799    {
    68096800                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    68156806
    68166807/* Line 1806 of yacc.c  */
    6817 #line 1263 "parser.yy"
     6808#line 1265 "parser.yy"
    68186809    {
    68196810                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    68256816
    68266817/* Line 1806 of yacc.c  */
    6827 #line 1268 "parser.yy"
     6818#line 1270 "parser.yy"
    68286819    {
    68296820                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    68356826
    68366827/* Line 1806 of yacc.c  */
    6837 #line 1273 "parser.yy"
     6828#line 1275 "parser.yy"
    68386829    {
    68396830                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    68456836
    68466837/* Line 1806 of yacc.c  */
    6847 #line 1282 "parser.yy"
     6838#line 1284 "parser.yy"
    68486839    {
    68496840                        typedefTable.addToEnclosingScope( *(yyvsp[(2) - (4)].tok), TypedefTable::TD );
     
    68556846
    68566847/* Line 1806 of yacc.c  */
    6857 #line 1287 "parser.yy"
     6848#line 1289 "parser.yy"
    68586849    {
    68596850                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (7)].tok), TypedefTable::TD );
     
    68656856
    68666857/* Line 1806 of yacc.c  */
    6867 #line 1317 "parser.yy"
     6858#line 1319 "parser.yy"
    68686859    {
    68696860                        (yyval.decl) = distAttr( (yyvsp[(1) - (4)].decl), (yyvsp[(2) - (4)].decl) );
     
    68746865
    68756866/* Line 1806 of yacc.c  */
    6876 #line 1329 "parser.yy"
     6867#line 1331 "parser.yy"
    68776868    {
    68786869                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    68846875
    68856876/* Line 1806 of yacc.c  */
    6886 #line 1334 "parser.yy"
     6877#line 1336 "parser.yy"
    68876878    {
    68886879                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    68946885
    68956886/* Line 1806 of yacc.c  */
    6896 #line 1380 "parser.yy"
     6887#line 1382 "parser.yy"
    68976888    { (yyval.decl) = nullptr; }
    68986889    break;
     
    69016892
    69026893/* Line 1806 of yacc.c  */
    6903 #line 1392 "parser.yy"
     6894#line 1394 "parser.yy"
    69046895    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    69056896    break;
     
    69086899
    69096900/* Line 1806 of yacc.c  */
    6910 #line 1402 "parser.yy"
     6901#line 1404 "parser.yy"
    69116902    { (yyval.decl) = DeclarationNode::newTypeQualifier( DeclarationNode::Const ); }
    69126903    break;
     
    69156906
    69166907/* Line 1806 of yacc.c  */
    6917 #line 1404 "parser.yy"
     6908#line 1406 "parser.yy"
    69186909    { (yyval.decl) = DeclarationNode::newTypeQualifier( DeclarationNode::Restrict ); }
    69196910    break;
     
    69226913
    69236914/* Line 1806 of yacc.c  */
    6924 #line 1406 "parser.yy"
     6915#line 1408 "parser.yy"
    69256916    { (yyval.decl) = DeclarationNode::newTypeQualifier( DeclarationNode::Volatile ); }
    69266917    break;
     
    69296920
    69306921/* Line 1806 of yacc.c  */
    6931 #line 1408 "parser.yy"
     6922#line 1410 "parser.yy"
    69326923    { (yyval.decl) = DeclarationNode::newTypeQualifier( DeclarationNode::Lvalue ); }
    69336924    break;
     
    69366927
    69376928/* Line 1806 of yacc.c  */
    6938 #line 1410 "parser.yy"
     6929#line 1412 "parser.yy"
     6930    { (yyval.decl) = DeclarationNode::newTypeQualifier( DeclarationNode::Mutex ); }
     6931    break;
     6932
     6933  case 318:
     6934
     6935/* Line 1806 of yacc.c  */
     6936#line 1414 "parser.yy"
    69396937    { (yyval.decl) = DeclarationNode::newTypeQualifier( DeclarationNode::Atomic ); }
    69406938    break;
    69416939
    6942   case 318:
    6943 
    6944 /* Line 1806 of yacc.c  */
    6945 #line 1412 "parser.yy"
     6940  case 319:
     6941
     6942/* Line 1806 of yacc.c  */
     6943#line 1416 "parser.yy"
    69466944    {
    69476945                        typedefTable.enterScope();
     
    69496947    break;
    69506948
    6951   case 319:
    6952 
    6953 /* Line 1806 of yacc.c  */
    6954 #line 1416 "parser.yy"
     6949  case 320:
     6950
     6951/* Line 1806 of yacc.c  */
     6952#line 1420 "parser.yy"
    69556953    {
    69566954                        typedefTable.leaveScope();
     
    69596957    break;
    69606958
    6961   case 321:
    6962 
    6963 /* Line 1806 of yacc.c  */
    6964 #line 1425 "parser.yy"
     6959  case 322:
     6960
     6961/* Line 1806 of yacc.c  */
     6962#line 1429 "parser.yy"
    69656963    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    69666964    break;
    69676965
    6968   case 322:
    6969 
    6970 /* Line 1806 of yacc.c  */
    6971 #line 1427 "parser.yy"
     6966  case 323:
     6967
     6968/* Line 1806 of yacc.c  */
     6969#line 1431 "parser.yy"
    69726970    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    69736971    break;
    69746972
    6975   case 324:
    6976 
    6977 /* Line 1806 of yacc.c  */
    6978 #line 1438 "parser.yy"
     6973  case 325:
     6974
     6975/* Line 1806 of yacc.c  */
     6976#line 1442 "parser.yy"
    69796977    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    69806978    break;
    69816979
    6982   case 325:
    6983 
    6984 /* Line 1806 of yacc.c  */
    6985 #line 1443 "parser.yy"
     6980  case 326:
     6981
     6982/* Line 1806 of yacc.c  */
     6983#line 1447 "parser.yy"
    69866984    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Extern ); }
    69876985    break;
    69886986
    6989   case 326:
    6990 
    6991 /* Line 1806 of yacc.c  */
    6992 #line 1445 "parser.yy"
     6987  case 327:
     6988
     6989/* Line 1806 of yacc.c  */
     6990#line 1449 "parser.yy"
    69936991    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Static ); }
    69946992    break;
    69956993
    6996   case 327:
    6997 
    6998 /* Line 1806 of yacc.c  */
    6999 #line 1447 "parser.yy"
     6994  case 328:
     6995
     6996/* Line 1806 of yacc.c  */
     6997#line 1451 "parser.yy"
    70006998    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); }
    70016999    break;
    70027000
    7003   case 328:
    7004 
    7005 /* Line 1806 of yacc.c  */
    7006 #line 1449 "parser.yy"
     7001  case 329:
     7002
     7003/* Line 1806 of yacc.c  */
     7004#line 1453 "parser.yy"
    70077005    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Register ); }
    70087006    break;
    70097007
    7010   case 329:
    7011 
    7012 /* Line 1806 of yacc.c  */
    7013 #line 1451 "parser.yy"
     7008  case 330:
     7009
     7010/* Line 1806 of yacc.c  */
     7011#line 1455 "parser.yy"
    70147012    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); }
    70157013    break;
    70167014
    7017   case 330:
    7018 
    7019 /* Line 1806 of yacc.c  */
    7020 #line 1454 "parser.yy"
     7015  case 331:
     7016
     7017/* Line 1806 of yacc.c  */
     7018#line 1458 "parser.yy"
    70217019    { (yyval.decl) = DeclarationNode::newFuncSpecifier( DeclarationNode::Inline ); }
    70227020    break;
    70237021
    7024   case 331:
    7025 
    7026 /* Line 1806 of yacc.c  */
    7027 #line 1456 "parser.yy"
     7022  case 332:
     7023
     7024/* Line 1806 of yacc.c  */
     7025#line 1460 "parser.yy"
    70287026    { (yyval.decl) = DeclarationNode::newFuncSpecifier( DeclarationNode::Fortran ); }
    70297027    break;
    70307028
    7031   case 332:
    7032 
    7033 /* Line 1806 of yacc.c  */
    7034 #line 1458 "parser.yy"
     7029  case 333:
     7030
     7031/* Line 1806 of yacc.c  */
     7032#line 1462 "parser.yy"
    70357033    { (yyval.decl) = DeclarationNode::newFuncSpecifier( DeclarationNode::Noreturn ); }
    70367034    break;
    70377035
    7038   case 333:
    7039 
    7040 /* Line 1806 of yacc.c  */
    7041 #line 1463 "parser.yy"
     7036  case 334:
     7037
     7038/* Line 1806 of yacc.c  */
     7039#line 1467 "parser.yy"
    70427040    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Char ); }
    70437041    break;
    70447042
    7045   case 334:
    7046 
    7047 /* Line 1806 of yacc.c  */
    7048 #line 1465 "parser.yy"
     7043  case 335:
     7044
     7045/* Line 1806 of yacc.c  */
     7046#line 1469 "parser.yy"
    70497047    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Double ); }
    70507048    break;
    70517049
    7052   case 335:
    7053 
    7054 /* Line 1806 of yacc.c  */
    7055 #line 1467 "parser.yy"
     7050  case 336:
     7051
     7052/* Line 1806 of yacc.c  */
     7053#line 1471 "parser.yy"
    70567054    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Float ); }
    70577055    break;
    70587056
    7059   case 336:
    7060 
    7061 /* Line 1806 of yacc.c  */
    7062 #line 1469 "parser.yy"
     7057  case 337:
     7058
     7059/* Line 1806 of yacc.c  */
     7060#line 1473 "parser.yy"
    70637061    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Int ); }
    70647062    break;
    70657063
    7066   case 337:
    7067 
    7068 /* Line 1806 of yacc.c  */
    7069 #line 1471 "parser.yy"
     7064  case 338:
     7065
     7066/* Line 1806 of yacc.c  */
     7067#line 1475 "parser.yy"
    70707068    { (yyval.decl) = DeclarationNode::newLength( DeclarationNode::Long ); }
    70717069    break;
    70727070
    7073   case 338:
    7074 
    7075 /* Line 1806 of yacc.c  */
    7076 #line 1473 "parser.yy"
     7071  case 339:
     7072
     7073/* Line 1806 of yacc.c  */
     7074#line 1477 "parser.yy"
    70777075    { (yyval.decl) = DeclarationNode::newLength( DeclarationNode::Short ); }
    70787076    break;
    70797077
    7080   case 339:
    7081 
    7082 /* Line 1806 of yacc.c  */
    7083 #line 1475 "parser.yy"
     7078  case 340:
     7079
     7080/* Line 1806 of yacc.c  */
     7081#line 1479 "parser.yy"
    70847082    { (yyval.decl) = DeclarationNode::newSignedNess( DeclarationNode::Signed ); }
    70857083    break;
    70867084
    7087   case 340:
    7088 
    7089 /* Line 1806 of yacc.c  */
    7090 #line 1477 "parser.yy"
     7085  case 341:
     7086
     7087/* Line 1806 of yacc.c  */
     7088#line 1481 "parser.yy"
    70917089    { (yyval.decl) = DeclarationNode::newSignedNess( DeclarationNode::Unsigned ); }
    70927090    break;
    70937091
    7094   case 341:
    7095 
    7096 /* Line 1806 of yacc.c  */
    7097 #line 1479 "parser.yy"
     7092  case 342:
     7093
     7094/* Line 1806 of yacc.c  */
     7095#line 1483 "parser.yy"
    70987096    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Void ); }
    70997097    break;
    71007098
    7101   case 342:
    7102 
    7103 /* Line 1806 of yacc.c  */
    7104 #line 1481 "parser.yy"
     7099  case 343:
     7100
     7101/* Line 1806 of yacc.c  */
     7102#line 1485 "parser.yy"
    71057103    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Bool ); }
    71067104    break;
    71077105
    7108   case 343:
    7109 
    7110 /* Line 1806 of yacc.c  */
    7111 #line 1483 "parser.yy"
     7106  case 344:
     7107
     7108/* Line 1806 of yacc.c  */
     7109#line 1487 "parser.yy"
    71127110    { (yyval.decl) = DeclarationNode::newComplexType( DeclarationNode::Complex ); }
    71137111    break;
    71147112
    7115   case 344:
    7116 
    7117 /* Line 1806 of yacc.c  */
    7118 #line 1485 "parser.yy"
     7113  case 345:
     7114
     7115/* Line 1806 of yacc.c  */
     7116#line 1489 "parser.yy"
    71197117    { (yyval.decl) = DeclarationNode::newComplexType( DeclarationNode::Imaginary ); }
    71207118    break;
    71217119
    7122   case 345:
    7123 
    7124 /* Line 1806 of yacc.c  */
    7125 #line 1487 "parser.yy"
     7120  case 346:
     7121
     7122/* Line 1806 of yacc.c  */
     7123#line 1491 "parser.yy"
    71267124    { (yyval.decl) = DeclarationNode::newBuiltinType( DeclarationNode::Valist ); }
    71277125    break;
    71287126
    7129   case 346:
    7130 
    7131 /* Line 1806 of yacc.c  */
    7132 #line 1489 "parser.yy"
     7127  case 347:
     7128
     7129/* Line 1806 of yacc.c  */
     7130#line 1493 "parser.yy"
    71337131    { (yyval.decl) = DeclarationNode::newBuiltinType( DeclarationNode::Zero ); }
    71347132    break;
    71357133
    7136   case 347:
    7137 
    7138 /* Line 1806 of yacc.c  */
    7139 #line 1491 "parser.yy"
     7134  case 348:
     7135
     7136/* Line 1806 of yacc.c  */
     7137#line 1495 "parser.yy"
    71407138    { (yyval.decl) = DeclarationNode::newBuiltinType( DeclarationNode::One ); }
    71417139    break;
    71427140
    7143   case 349:
    7144 
    7145 /* Line 1806 of yacc.c  */
    7146 #line 1498 "parser.yy"
     7141  case 350:
     7142
     7143/* Line 1806 of yacc.c  */
     7144#line 1502 "parser.yy"
    71477145    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    71487146    break;
    71497147
    7150   case 350:
    7151 
    7152 /* Line 1806 of yacc.c  */
    7153 #line 1500 "parser.yy"
     7148  case 351:
     7149
     7150/* Line 1806 of yacc.c  */
     7151#line 1504 "parser.yy"
    71547152    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    71557153    break;
    71567154
    7157   case 351:
    7158 
    7159 /* Line 1806 of yacc.c  */
    7160 #line 1502 "parser.yy"
     7155  case 352:
     7156
     7157/* Line 1806 of yacc.c  */
     7158#line 1506 "parser.yy"
    71617159    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    71627160    break;
    71637161
    7164   case 352:
    7165 
    7166 /* Line 1806 of yacc.c  */
    7167 #line 1504 "parser.yy"
     7162  case 353:
     7163
     7164/* Line 1806 of yacc.c  */
     7165#line 1508 "parser.yy"
    71687166    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addType( (yyvsp[(1) - (3)].decl) ); }
    71697167    break;
    71707168
    7171   case 354:
    7172 
    7173 /* Line 1806 of yacc.c  */
    7174 #line 1510 "parser.yy"
     7169  case 355:
     7170
     7171/* Line 1806 of yacc.c  */
     7172#line 1514 "parser.yy"
    71757173    { (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    71767174    break;
    71777175
    7178   case 356:
    7179 
    7180 /* Line 1806 of yacc.c  */
    7181 #line 1517 "parser.yy"
     7176  case 357:
     7177
     7178/* Line 1806 of yacc.c  */
     7179#line 1521 "parser.yy"
    71827180    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    71837181    break;
    71847182
    7185   case 357:
    7186 
    7187 /* Line 1806 of yacc.c  */
    7188 #line 1519 "parser.yy"
     7183  case 358:
     7184
     7185/* Line 1806 of yacc.c  */
     7186#line 1523 "parser.yy"
    71897187    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    71907188    break;
    71917189
    7192   case 358:
    7193 
    7194 /* Line 1806 of yacc.c  */
    7195 #line 1521 "parser.yy"
     7190  case 359:
     7191
     7192/* Line 1806 of yacc.c  */
     7193#line 1525 "parser.yy"
    71967194    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addType( (yyvsp[(2) - (2)].decl) ); }
    71977195    break;
    71987196
    7199   case 359:
    7200 
    7201 /* Line 1806 of yacc.c  */
    7202 #line 1526 "parser.yy"
     7197  case 360:
     7198
     7199/* Line 1806 of yacc.c  */
     7200#line 1530 "parser.yy"
    72037201    { (yyval.decl) = (yyvsp[(3) - (4)].decl); }
    72047202    break;
    72057203
    7206   case 360:
    7207 
    7208 /* Line 1806 of yacc.c  */
    7209 #line 1528 "parser.yy"
     7204  case 361:
     7205
     7206/* Line 1806 of yacc.c  */
     7207#line 1532 "parser.yy"
    72107208    { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[(3) - (4)].en) ); }
    72117209    break;
    72127210
    7213   case 361:
    7214 
    7215 /* Line 1806 of yacc.c  */
    7216 #line 1530 "parser.yy"
     7211  case 362:
     7212
     7213/* Line 1806 of yacc.c  */
     7214#line 1534 "parser.yy"
    72177215    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].decl) ); }
    72187216    break;
    72197217
    7220   case 362:
    7221 
    7222 /* Line 1806 of yacc.c  */
    7223 #line 1532 "parser.yy"
     7218  case 363:
     7219
     7220/* Line 1806 of yacc.c  */
     7221#line 1536 "parser.yy"
    72247222    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
    72257223    break;
    72267224
    7227   case 364:
    7228 
    7229 /* Line 1806 of yacc.c  */
    7230 #line 1538 "parser.yy"
     7225  case 365:
     7226
     7227/* Line 1806 of yacc.c  */
     7228#line 1542 "parser.yy"
    72317229    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    72327230    break;
    72337231
    7234   case 365:
    7235 
    7236 /* Line 1806 of yacc.c  */
    7237 #line 1540 "parser.yy"
     7232  case 366:
     7233
     7234/* Line 1806 of yacc.c  */
     7235#line 1544 "parser.yy"
    72387236    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    72397237    break;
    72407238
    7241   case 366:
    7242 
    7243 /* Line 1806 of yacc.c  */
    7244 #line 1542 "parser.yy"
     7239  case 367:
     7240
     7241/* Line 1806 of yacc.c  */
     7242#line 1546 "parser.yy"
    72457243    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    72467244    break;
    72477245
    7248   case 368:
    7249 
    7250 /* Line 1806 of yacc.c  */
    7251 #line 1548 "parser.yy"
     7246  case 369:
     7247
     7248/* Line 1806 of yacc.c  */
     7249#line 1552 "parser.yy"
    72527250    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    72537251    break;
    72547252
    7255   case 369:
    7256 
    7257 /* Line 1806 of yacc.c  */
    7258 #line 1550 "parser.yy"
     7253  case 370:
     7254
     7255/* Line 1806 of yacc.c  */
     7256#line 1554 "parser.yy"
    72597257    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    72607258    break;
    72617259
    7262   case 371:
    7263 
    7264 /* Line 1806 of yacc.c  */
    7265 #line 1556 "parser.yy"
     7260  case 372:
     7261
     7262/* Line 1806 of yacc.c  */
     7263#line 1560 "parser.yy"
    72667264    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    72677265    break;
    72687266
    7269   case 372:
    7270 
    7271 /* Line 1806 of yacc.c  */
    7272 #line 1558 "parser.yy"
     7267  case 373:
     7268
     7269/* Line 1806 of yacc.c  */
     7270#line 1562 "parser.yy"
    72737271    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    72747272    break;
    72757273
    7276   case 373:
    7277 
    7278 /* Line 1806 of yacc.c  */
    7279 #line 1560 "parser.yy"
     7274  case 374:
     7275
     7276/* Line 1806 of yacc.c  */
     7277#line 1564 "parser.yy"
    72807278    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    72817279    break;
    72827280
    7283   case 375:
    7284 
    7285 /* Line 1806 of yacc.c  */
    7286 #line 1566 "parser.yy"
     7281  case 376:
     7282
     7283/* Line 1806 of yacc.c  */
     7284#line 1570 "parser.yy"
    72877285    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    72887286    break;
    72897287
    7290   case 376:
    7291 
    7292 /* Line 1806 of yacc.c  */
    7293 #line 1568 "parser.yy"
     7288  case 377:
     7289
     7290/* Line 1806 of yacc.c  */
     7291#line 1572 "parser.yy"
    72947292    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    72957293    break;
    72967294
    7297   case 378:
    7298 
    7299 /* Line 1806 of yacc.c  */
    7300 #line 1574 "parser.yy"
     7295  case 379:
     7296
     7297/* Line 1806 of yacc.c  */
     7298#line 1578 "parser.yy"
    73017299    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    73027300    break;
    73037301
    7304   case 379:
    7305 
    7306 /* Line 1806 of yacc.c  */
    7307 #line 1576 "parser.yy"
     7302  case 380:
     7303
     7304/* Line 1806 of yacc.c  */
     7305#line 1580 "parser.yy"
    73087306    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    73097307    break;
    73107308
    7311   case 380:
    7312 
    7313 /* Line 1806 of yacc.c  */
    7314 #line 1578 "parser.yy"
     7309  case 381:
     7310
     7311/* Line 1806 of yacc.c  */
     7312#line 1582 "parser.yy"
    73157313    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    73167314    break;
    73177315
    7318   case 381:
    7319 
    7320 /* Line 1806 of yacc.c  */
    7321 #line 1583 "parser.yy"
     7316  case 382:
     7317
     7318/* Line 1806 of yacc.c  */
     7319#line 1587 "parser.yy"
    73227320    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(1) - (1)].tok) ); }
    73237321    break;
    73247322
    7325   case 382:
    7326 
    7327 /* Line 1806 of yacc.c  */
    7328 #line 1585 "parser.yy"
     7323  case 383:
     7324
     7325/* Line 1806 of yacc.c  */
     7326#line 1589 "parser.yy"
    73297327    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(2) - (2)].tok) )->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    73307328    break;
    73317329
    7332   case 383:
    7333 
    7334 /* Line 1806 of yacc.c  */
    7335 #line 1587 "parser.yy"
     7330  case 384:
     7331
     7332/* Line 1806 of yacc.c  */
     7333#line 1591 "parser.yy"
    73367334    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    73377335    break;
    73387336
    7339   case 388:
    7340 
    7341 /* Line 1806 of yacc.c  */
    7342 #line 1602 "parser.yy"
     7337  case 389:
     7338
     7339/* Line 1806 of yacc.c  */
     7340#line 1606 "parser.yy"
    73437341    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (5)].aggKey), nullptr, nullptr, (yyvsp[(4) - (5)].decl), true )->addQualifiers( (yyvsp[(2) - (5)].decl) ); }
    73447342    break;
    73457343
    7346   case 389:
    7347 
    7348 /* Line 1806 of yacc.c  */
    7349 #line 1604 "parser.yy"
     7344  case 390:
     7345
     7346/* Line 1806 of yacc.c  */
     7347#line 1608 "parser.yy"
    73507348    { typedefTable.makeTypedef( *(yyvsp[(3) - (3)].tok) ); }
    73517349    break;
    73527350
    7353   case 390:
    7354 
    7355 /* Line 1806 of yacc.c  */
    7356 #line 1606 "parser.yy"
     7351  case 391:
     7352
     7353/* Line 1806 of yacc.c  */
     7354#line 1610 "parser.yy"
    73577355    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), (yyvsp[(3) - (7)].tok), nullptr, (yyvsp[(6) - (7)].decl), true )->addQualifiers( (yyvsp[(2) - (7)].decl) ); }
    73587356    break;
    73597357
    7360   case 391:
    7361 
    7362 /* Line 1806 of yacc.c  */
    7363 #line 1608 "parser.yy"
     7358  case 392:
     7359
     7360/* Line 1806 of yacc.c  */
     7361#line 1612 "parser.yy"
    73647362    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (8)].aggKey), nullptr, (yyvsp[(4) - (8)].en), (yyvsp[(7) - (8)].decl), false )->addQualifiers( (yyvsp[(2) - (8)].decl) ); }
    73657363    break;
    73667364
    7367   case 393:
    7368 
    7369 /* Line 1806 of yacc.c  */
    7370 #line 1614 "parser.yy"
     7365  case 394:
     7366
     7367/* Line 1806 of yacc.c  */
     7368#line 1618 "parser.yy"
    73717369    {
    73727370                        typedefTable.makeTypedef( *(yyvsp[(3) - (3)].tok) );
     
    73757373    break;
    73767374
    7377   case 394:
    7378 
    7379 /* Line 1806 of yacc.c  */
    7380 #line 1619 "parser.yy"
     7375  case 395:
     7376
     7377/* Line 1806 of yacc.c  */
     7378#line 1623 "parser.yy"
    73817379    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) ); }
    73827380    break;
    73837381
    7384   case 395:
    7385 
    7386 /* Line 1806 of yacc.c  */
    7387 #line 1624 "parser.yy"
     7382  case 396:
     7383
     7384/* Line 1806 of yacc.c  */
     7385#line 1628 "parser.yy"
    73887386    { (yyval.aggKey) = DeclarationNode::Struct; }
    73897387    break;
    73907388
    7391   case 396:
    7392 
    7393 /* Line 1806 of yacc.c  */
    7394 #line 1626 "parser.yy"
     7389  case 397:
     7390
     7391/* Line 1806 of yacc.c  */
     7392#line 1630 "parser.yy"
    73957393    { (yyval.aggKey) = DeclarationNode::Union; }
    73967394    break;
    73977395
    7398   case 397:
    7399 
    7400 /* Line 1806 of yacc.c  */
    7401 #line 1631 "parser.yy"
     7396  case 398:
     7397
     7398/* Line 1806 of yacc.c  */
     7399#line 1635 "parser.yy"
    74027400    { (yyval.decl) = nullptr; }
    74037401    break;
    74047402
    7405   case 398:
    7406 
    7407 /* Line 1806 of yacc.c  */
    7408 #line 1633 "parser.yy"
     7403  case 399:
     7404
     7405/* Line 1806 of yacc.c  */
     7406#line 1637 "parser.yy"
    74097407    { (yyval.decl) = (yyvsp[(1) - (2)].decl) ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
    74107408    break;
    74117409
    7412   case 400:
    7413 
    7414 /* Line 1806 of yacc.c  */
    7415 #line 1639 "parser.yy"
     7410  case 401:
     7411
     7412/* Line 1806 of yacc.c  */
     7413#line 1643 "parser.yy"
    74167414    {
    74177415                        distExt( (yyvsp[(2) - (3)].decl) );                                                             // mark all fields in list
     
    74207418    break;
    74217419
    7422   case 401:
    7423 
    7424 /* Line 1806 of yacc.c  */
    7425 #line 1644 "parser.yy"
     7420  case 402:
     7421
     7422/* Line 1806 of yacc.c  */
     7423#line 1648 "parser.yy"
    74267424    {
    74277425                        (yyval.decl) = distAttr( (yyvsp[(1) - (3)].decl), (yyvsp[(2) - (3)].decl) ); }
    74287426    break;
    74297427
    7430   case 402:
    7431 
    7432 /* Line 1806 of yacc.c  */
    7433 #line 1647 "parser.yy"
     7428  case 403:
     7429
     7430/* Line 1806 of yacc.c  */
     7431#line 1651 "parser.yy"
    74347432    {
    74357433                        distExt( (yyvsp[(3) - (4)].decl) );                                                             // mark all fields in list
     
    74387436    break;
    74397437
    7440   case 404:
    7441 
    7442 /* Line 1806 of yacc.c  */
    7443 #line 1656 "parser.yy"
     7438  case 405:
     7439
     7440/* Line 1806 of yacc.c  */
     7441#line 1660 "parser.yy"
    74447442    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) ); }
    74457443    break;
    74467444
    7447   case 405:
    7448 
    7449 /* Line 1806 of yacc.c  */
    7450 #line 1658 "parser.yy"
     7445  case 406:
     7446
     7447/* Line 1806 of yacc.c  */
     7448#line 1662 "parser.yy"
    74517449    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(1) - (3)].decl)->cloneType( (yyvsp[(3) - (3)].tok) ) ); }
    74527450    break;
    74537451
    7454   case 406:
    7455 
    7456 /* Line 1806 of yacc.c  */
    7457 #line 1660 "parser.yy"
     7452  case 407:
     7453
     7454/* Line 1806 of yacc.c  */
     7455#line 1664 "parser.yy"
    74587456    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(1) - (2)].decl)->cloneType( 0 ) ); }
    74597457    break;
    74607458
    7461   case 408:
    7462 
    7463 /* Line 1806 of yacc.c  */
    7464 #line 1666 "parser.yy"
     7459  case 409:
     7460
     7461/* Line 1806 of yacc.c  */
     7462#line 1670 "parser.yy"
    74657463    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(4) - (4)].decl)->addQualifiers( (yyvsp[(3) - (4)].decl) ) ); }
    74667464    break;
    74677465
    7468   case 409:
    7469 
    7470 /* Line 1806 of yacc.c  */
    7471 #line 1671 "parser.yy"
     7466  case 410:
     7467
     7468/* Line 1806 of yacc.c  */
     7469#line 1675 "parser.yy"
    74727470    { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ }
    74737471    break;
    74747472
    7475   case 410:
    7476 
    7477 /* Line 1806 of yacc.c  */
    7478 #line 1673 "parser.yy"
     7473  case 411:
     7474
     7475/* Line 1806 of yacc.c  */
     7476#line 1677 "parser.yy"
    74797477    { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[(1) - (1)].en) ); }
    74807478    break;
    74817479
    7482   case 411:
    7483 
    7484 /* Line 1806 of yacc.c  */
    7485 #line 1676 "parser.yy"
     7480  case 412:
     7481
     7482/* Line 1806 of yacc.c  */
     7483#line 1680 "parser.yy"
    74867484    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
    74877485    break;
    74887486
    7489   case 412:
    7490 
    7491 /* Line 1806 of yacc.c  */
    7492 #line 1679 "parser.yy"
     7487  case 413:
     7488
     7489/* Line 1806 of yacc.c  */
     7490#line 1683 "parser.yy"
    74937491    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
    74947492    break;
    74957493
    7496   case 414:
    7497 
    7498 /* Line 1806 of yacc.c  */
    7499 #line 1685 "parser.yy"
     7494  case 415:
     7495
     7496/* Line 1806 of yacc.c  */
     7497#line 1689 "parser.yy"
    75007498    { (yyval.en) = nullptr; }
    75017499    break;
    75027500
    7503   case 415:
    7504 
    7505 /* Line 1806 of yacc.c  */
    7506 #line 1687 "parser.yy"
     7501  case 416:
     7502
     7503/* Line 1806 of yacc.c  */
     7504#line 1691 "parser.yy"
    75077505    { (yyval.en) = (yyvsp[(1) - (1)].en); }
    75087506    break;
    75097507
    7510   case 416:
    7511 
    7512 /* Line 1806 of yacc.c  */
    7513 #line 1692 "parser.yy"
     7508  case 417:
     7509
     7510/* Line 1806 of yacc.c  */
     7511#line 1696 "parser.yy"
    75147512    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    75157513    break;
    75167514
    7517   case 417:
    7518 
    7519 /* Line 1806 of yacc.c  */
    7520 #line 1697 "parser.yy"
     7515  case 418:
     7516
     7517/* Line 1806 of yacc.c  */
     7518#line 1701 "parser.yy"
    75217519    { (yyval.decl) = DeclarationNode::newEnum( nullptr, (yyvsp[(4) - (6)].decl), true )->addQualifiers( (yyvsp[(2) - (6)].decl) ); }
    75227520    break;
    75237521
    7524   case 418:
    7525 
    7526 /* Line 1806 of yacc.c  */
    7527 #line 1699 "parser.yy"
     7522  case 419:
     7523
     7524/* Line 1806 of yacc.c  */
     7525#line 1703 "parser.yy"
    75287526    { typedefTable.makeTypedef( *(yyvsp[(3) - (3)].tok) ); }
    75297527    break;
    75307528
    7531   case 419:
    7532 
    7533 /* Line 1806 of yacc.c  */
    7534 #line 1701 "parser.yy"
     7529  case 420:
     7530
     7531/* Line 1806 of yacc.c  */
     7532#line 1705 "parser.yy"
    75357533    { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(3) - (8)].tok), (yyvsp[(6) - (8)].decl), true )->addQualifiers( (yyvsp[(2) - (8)].decl) ); }
    75367534    break;
    75377535
    7538   case 421:
    7539 
    7540 /* Line 1806 of yacc.c  */
    7541 #line 1707 "parser.yy"
     7536  case 422:
     7537
     7538/* Line 1806 of yacc.c  */
     7539#line 1711 "parser.yy"
    75427540    {
    75437541                        typedefTable.makeTypedef( *(yyvsp[(3) - (3)].tok) );
     
    75467544    break;
    75477545
    7548   case 422:
    7549 
    7550 /* Line 1806 of yacc.c  */
    7551 #line 1715 "parser.yy"
     7546  case 423:
     7547
     7548/* Line 1806 of yacc.c  */
     7549#line 1719 "parser.yy"
    75527550    { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[(1) - (2)].tok), (yyvsp[(2) - (2)].en) ); }
    75537551    break;
    75547552
    7555   case 423:
    7556 
    7557 /* Line 1806 of yacc.c  */
    7558 #line 1717 "parser.yy"
     7553  case 424:
     7554
     7555/* Line 1806 of yacc.c  */
     7556#line 1721 "parser.yy"
    75597557    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[(3) - (4)].tok), (yyvsp[(4) - (4)].en) ) ); }
    75607558    break;
    75617559
    7562   case 424:
    7563 
    7564 /* Line 1806 of yacc.c  */
    7565 #line 1722 "parser.yy"
     7560  case 425:
     7561
     7562/* Line 1806 of yacc.c  */
     7563#line 1726 "parser.yy"
    75667564    { (yyval.en) = nullptr; }
    75677565    break;
    75687566
    7569   case 425:
    7570 
    7571 /* Line 1806 of yacc.c  */
    7572 #line 1724 "parser.yy"
     7567  case 426:
     7568
     7569/* Line 1806 of yacc.c  */
     7570#line 1728 "parser.yy"
    75737571    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    75747572    break;
    75757573
    7576   case 426:
    7577 
    7578 /* Line 1806 of yacc.c  */
    7579 #line 1731 "parser.yy"
     7574  case 427:
     7575
     7576/* Line 1806 of yacc.c  */
     7577#line 1735 "parser.yy"
    75807578    { (yyval.decl) = nullptr; }
    75817579    break;
    75827580
    7583   case 430:
    7584 
    7585 /* Line 1806 of yacc.c  */
    7586 #line 1739 "parser.yy"
     7581  case 431:
     7582
     7583/* Line 1806 of yacc.c  */
     7584#line 1743 "parser.yy"
    75877585    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    75887586    break;
    75897587
    7590   case 431:
    7591 
    7592 /* Line 1806 of yacc.c  */
    7593 #line 1741 "parser.yy"
     7588  case 432:
     7589
     7590/* Line 1806 of yacc.c  */
     7591#line 1745 "parser.yy"
    75947592    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    75957593    break;
    75967594
    7597   case 432:
    7598 
    7599 /* Line 1806 of yacc.c  */
    7600 #line 1743 "parser.yy"
     7595  case 433:
     7596
     7597/* Line 1806 of yacc.c  */
     7598#line 1747 "parser.yy"
    76017599    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    76027600    break;
    76037601
    7604   case 434:
    7605 
    7606 /* Line 1806 of yacc.c  */
    7607 #line 1751 "parser.yy"
     7602  case 435:
     7603
     7604/* Line 1806 of yacc.c  */
     7605#line 1755 "parser.yy"
    76087606    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    76097607    break;
    76107608
    7611   case 435:
    7612 
    7613 /* Line 1806 of yacc.c  */
    7614 #line 1753 "parser.yy"
     7609  case 436:
     7610
     7611/* Line 1806 of yacc.c  */
     7612#line 1757 "parser.yy"
    76157613    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    76167614    break;
    76177615
    7618   case 436:
    7619 
    7620 /* Line 1806 of yacc.c  */
    7621 #line 1755 "parser.yy"
     7616  case 437:
     7617
     7618/* Line 1806 of yacc.c  */
     7619#line 1759 "parser.yy"
    76227620    { (yyval.decl) = (yyvsp[(1) - (9)].decl)->appendList( (yyvsp[(5) - (9)].decl) )->appendList( (yyvsp[(9) - (9)].decl) ); }
    76237621    break;
    76247622
    7625   case 438:
    7626 
    7627 /* Line 1806 of yacc.c  */
    7628 #line 1761 "parser.yy"
     7623  case 439:
     7624
     7625/* Line 1806 of yacc.c  */
     7626#line 1765 "parser.yy"
    76297627    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    76307628    break;
    76317629
    7632   case 439:
    7633 
    7634 /* Line 1806 of yacc.c  */
    7635 #line 1766 "parser.yy"
     7630  case 440:
     7631
     7632/* Line 1806 of yacc.c  */
     7633#line 1770 "parser.yy"
    76367634    { (yyval.decl) = nullptr; }
    76377635    break;
    76387636
    7639   case 442:
    7640 
    7641 /* Line 1806 of yacc.c  */
    7642 #line 1773 "parser.yy"
     7637  case 443:
     7638
     7639/* Line 1806 of yacc.c  */
     7640#line 1777 "parser.yy"
    76437641    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    76447642    break;
    76457643
    7646   case 445:
    7647 
    7648 /* Line 1806 of yacc.c  */
    7649 #line 1780 "parser.yy"
     7644  case 446:
     7645
     7646/* Line 1806 of yacc.c  */
     7647#line 1784 "parser.yy"
    76507648    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    76517649    break;
    76527650
    7653   case 446:
    7654 
    7655 /* Line 1806 of yacc.c  */
    7656 #line 1782 "parser.yy"
     7651  case 447:
     7652
     7653/* Line 1806 of yacc.c  */
     7654#line 1786 "parser.yy"
    76577655    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    76587656    break;
    76597657
    7660   case 448:
    7661 
    7662 /* Line 1806 of yacc.c  */
    7663 #line 1791 "parser.yy"
     7658  case 449:
     7659
     7660/* Line 1806 of yacc.c  */
     7661#line 1795 "parser.yy"
    76647662    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
    76657663    break;
    76667664
    7667   case 449:
    7668 
    7669 /* Line 1806 of yacc.c  */
    7670 #line 1794 "parser.yy"
     7665  case 450:
     7666
     7667/* Line 1806 of yacc.c  */
     7668#line 1798 "parser.yy"
    76717669    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
    76727670    break;
    76737671
    7674   case 450:
    7675 
    7676 /* Line 1806 of yacc.c  */
    7677 #line 1796 "parser.yy"
     7672  case 451:
     7673
     7674/* Line 1806 of yacc.c  */
     7675#line 1800 "parser.yy"
    76787676    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addName( (yyvsp[(3) - (4)].tok) )->addQualifiers( (yyvsp[(1) - (4)].decl) ); }
    76797677    break;
    76807678
    7681   case 455:
    7682 
    7683 /* Line 1806 of yacc.c  */
    7684 #line 1806 "parser.yy"
     7679  case 456:
     7680
     7681/* Line 1806 of yacc.c  */
     7682#line 1810 "parser.yy"
    76857683    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    76867684    break;
    76877685
    7688   case 457:
    7689 
    7690 /* Line 1806 of yacc.c  */
    7691 #line 1813 "parser.yy"
     7686  case 458:
     7687
     7688/* Line 1806 of yacc.c  */
     7689#line 1817 "parser.yy"
    76927690    {
    76937691                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    76967694    break;
    76977695
    7698   case 458:
    7699 
    7700 /* Line 1806 of yacc.c  */
    7701 #line 1818 "parser.yy"
     7696  case 459:
     7697
     7698/* Line 1806 of yacc.c  */
     7699#line 1822 "parser.yy"
    77027700    {
    77037701                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    77067704    break;
    77077705
    7708   case 459:
    7709 
    7710 /* Line 1806 of yacc.c  */
    7711 #line 1826 "parser.yy"
     7706  case 460:
     7707
     7708/* Line 1806 of yacc.c  */
     7709#line 1830 "parser.yy"
    77127710    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addInitializer( (yyvsp[(2) - (2)].en) ? new InitializerNode( (yyvsp[(2) - (2)].en) ) : nullptr ); }
    77137711    break;
    77147712
    7715   case 460:
    7716 
    7717 /* Line 1806 of yacc.c  */
    7718 #line 1828 "parser.yy"
     7713  case 461:
     7714
     7715/* Line 1806 of yacc.c  */
     7716#line 1832 "parser.yy"
    77197717    { (yyval.decl) = (yyvsp[(2) - (3)].decl)->addType( (yyvsp[(1) - (3)].decl) )->addInitializer( (yyvsp[(3) - (3)].en) ? new InitializerNode( (yyvsp[(3) - (3)].en) ) : nullptr ); }
    77207718    break;
    77217719
    7722   case 461:
    7723 
    7724 /* Line 1806 of yacc.c  */
    7725 #line 1837 "parser.yy"
     7720  case 462:
     7721
     7722/* Line 1806 of yacc.c  */
     7723#line 1841 "parser.yy"
    77267724    { (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) ); }
    77277725    break;
    77287726
    7729   case 462:
    7730 
    7731 /* Line 1806 of yacc.c  */
    7732 #line 1839 "parser.yy"
     7727  case 463:
     7728
     7729/* Line 1806 of yacc.c  */
     7730#line 1843 "parser.yy"
    77337731    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( DeclarationNode::newName( (yyvsp[(3) - (3)].tok) ) ); }
    77347732    break;
    77357733
    7736   case 474:
    7737 
    7738 /* Line 1806 of yacc.c  */
    7739 #line 1864 "parser.yy"
     7734  case 475:
     7735
     7736/* Line 1806 of yacc.c  */
     7737#line 1868 "parser.yy"
    77407738    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    77417739    break;
    77427740
    7743   case 477:
    7744 
    7745 /* Line 1806 of yacc.c  */
    7746 #line 1874 "parser.yy"
     7741  case 478:
     7742
     7743/* Line 1806 of yacc.c  */
     7744#line 1878 "parser.yy"
    77477745    { (yyval.in) = nullptr; }
    77487746    break;
    77497747
    7750   case 478:
    7751 
    7752 /* Line 1806 of yacc.c  */
    7753 #line 1876 "parser.yy"
     7748  case 479:
     7749
     7750/* Line 1806 of yacc.c  */
     7751#line 1880 "parser.yy"
    77547752    { (yyval.in) = (yyvsp[(2) - (2)].in); }
    77557753    break;
    77567754
    7757   case 479:
    7758 
    7759 /* Line 1806 of yacc.c  */
    7760 #line 1878 "parser.yy"
     7755  case 480:
     7756
     7757/* Line 1806 of yacc.c  */
     7758#line 1882 "parser.yy"
    77617759    { (yyval.in) = (yyvsp[(2) - (2)].in)->set_maybeConstructed( false ); }
    77627760    break;
    77637761
    7764   case 480:
    7765 
    7766 /* Line 1806 of yacc.c  */
    7767 #line 1882 "parser.yy"
     7762  case 481:
     7763
     7764/* Line 1806 of yacc.c  */
     7765#line 1886 "parser.yy"
    77687766    { (yyval.in) = new InitializerNode( (yyvsp[(1) - (1)].en) ); }
    77697767    break;
    77707768
    7771   case 481:
    7772 
    7773 /* Line 1806 of yacc.c  */
    7774 #line 1883 "parser.yy"
     7769  case 482:
     7770
     7771/* Line 1806 of yacc.c  */
     7772#line 1887 "parser.yy"
    77757773    { (yyval.in) = new InitializerNode( (yyvsp[(2) - (4)].in), true ); }
    77767774    break;
    77777775
    7778   case 482:
    7779 
    7780 /* Line 1806 of yacc.c  */
    7781 #line 1888 "parser.yy"
     7776  case 483:
     7777
     7778/* Line 1806 of yacc.c  */
     7779#line 1892 "parser.yy"
    77827780    { (yyval.in) = nullptr; }
    77837781    break;
    77847782
    7785   case 484:
    7786 
    7787 /* Line 1806 of yacc.c  */
    7788 #line 1890 "parser.yy"
     7783  case 485:
     7784
     7785/* Line 1806 of yacc.c  */
     7786#line 1894 "parser.yy"
    77897787    { (yyval.in) = (yyvsp[(2) - (2)].in)->set_designators( (yyvsp[(1) - (2)].en) ); }
    77907788    break;
    77917789
    7792   case 485:
    7793 
    7794 /* Line 1806 of yacc.c  */
    7795 #line 1891 "parser.yy"
     7790  case 486:
     7791
     7792/* Line 1806 of yacc.c  */
     7793#line 1895 "parser.yy"
    77967794    { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (3)].in)->set_last( (yyvsp[(3) - (3)].in) ) ); }
    77977795    break;
    77987796
    7799   case 486:
    7800 
    7801 /* Line 1806 of yacc.c  */
    7802 #line 1893 "parser.yy"
     7797  case 487:
     7798
     7799/* Line 1806 of yacc.c  */
     7800#line 1897 "parser.yy"
    78037801    { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (4)].in)->set_last( (yyvsp[(4) - (4)].in)->set_designators( (yyvsp[(3) - (4)].en) ) ) ); }
    78047802    break;
    78057803
    7806   case 488:
    7807 
    7808 /* Line 1806 of yacc.c  */
    7809 #line 1909 "parser.yy"
     7804  case 489:
     7805
     7806/* Line 1806 of yacc.c  */
     7807#line 1913 "parser.yy"
    78107808    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (2)].tok) ) ); }
    78117809    break;
    78127810
    7813   case 490:
    7814 
    7815 /* Line 1806 of yacc.c  */
    7816 #line 1915 "parser.yy"
     7811  case 491:
     7812
     7813/* Line 1806 of yacc.c  */
     7814#line 1919 "parser.yy"
    78177815    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (2)].en)->set_last( (yyvsp[(2) - (2)].en) ) ); }
    78187816    break;
    78197817
    7820   case 491:
    7821 
    7822 /* Line 1806 of yacc.c  */
    7823 #line 1921 "parser.yy"
     7818  case 492:
     7819
     7820/* Line 1806 of yacc.c  */
     7821#line 1925 "parser.yy"
    78247822    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(2) - (2)].tok) ) ); }
    78257823    break;
    78267824
    7827   case 492:
    7828 
    7829 /* Line 1806 of yacc.c  */
    7830 #line 1924 "parser.yy"
     7825  case 493:
     7826
     7827/* Line 1806 of yacc.c  */
     7828#line 1928 "parser.yy"
    78317829    { (yyval.en) = (yyvsp[(3) - (5)].en); }
    78327830    break;
    78337831
    7834   case 493:
    7835 
    7836 /* Line 1806 of yacc.c  */
    7837 #line 1926 "parser.yy"
     7832  case 494:
     7833
     7834/* Line 1806 of yacc.c  */
     7835#line 1930 "parser.yy"
    78387836    { (yyval.en) = (yyvsp[(3) - (5)].en); }
    78397837    break;
    78407838
    7841   case 494:
    7842 
    7843 /* Line 1806 of yacc.c  */
    7844 #line 1928 "parser.yy"
     7839  case 495:
     7840
     7841/* Line 1806 of yacc.c  */
     7842#line 1932 "parser.yy"
    78457843    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].en) ) ); }
    78467844    break;
    78477845
    7848   case 495:
    7849 
    7850 /* Line 1806 of yacc.c  */
    7851 #line 1930 "parser.yy"
     7846  case 496:
     7847
     7848/* Line 1806 of yacc.c  */
     7849#line 1934 "parser.yy"
    78527850    { (yyval.en) = (yyvsp[(4) - (6)].en); }
    78537851    break;
    78547852
    7855   case 497:
    7856 
    7857 /* Line 1806 of yacc.c  */
    7858 #line 1954 "parser.yy"
     7853  case 498:
     7854
     7855/* Line 1806 of yacc.c  */
     7856#line 1958 "parser.yy"
    78597857    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    78607858    break;
    78617859
    7862   case 498:
    7863 
    7864 /* Line 1806 of yacc.c  */
    7865 #line 1956 "parser.yy"
     7860  case 499:
     7861
     7862/* Line 1806 of yacc.c  */
     7863#line 1960 "parser.yy"
    78667864    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    78677865    break;
    78687866
    7869   case 499:
    7870 
    7871 /* Line 1806 of yacc.c  */
    7872 #line 1958 "parser.yy"
     7867  case 500:
     7868
     7869/* Line 1806 of yacc.c  */
     7870#line 1962 "parser.yy"
    78737871    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    78747872    break;
    78757873
    7876   case 501:
    7877 
    7878 /* Line 1806 of yacc.c  */
    7879 #line 1964 "parser.yy"
     7874  case 502:
     7875
     7876/* Line 1806 of yacc.c  */
     7877#line 1968 "parser.yy"
    78807878    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    78817879    break;
    78827880
    7883   case 502:
    7884 
    7885 /* Line 1806 of yacc.c  */
    7886 #line 1966 "parser.yy"
     7881  case 503:
     7882
     7883/* Line 1806 of yacc.c  */
     7884#line 1970 "parser.yy"
    78877885    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    78887886    break;
    78897887
    7890   case 503:
    7891 
    7892 /* Line 1806 of yacc.c  */
    7893 #line 1971 "parser.yy"
     7888  case 504:
     7889
     7890/* Line 1806 of yacc.c  */
     7891#line 1975 "parser.yy"
    78947892    { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
    78957893    break;
    78967894
    7897   case 505:
    7898 
    7899 /* Line 1806 of yacc.c  */
    7900 #line 1977 "parser.yy"
     7895  case 506:
     7896
     7897/* Line 1806 of yacc.c  */
     7898#line 1981 "parser.yy"
    79017899    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(3) - (4)].decl) ); }
    79027900    break;
    79037901
    7904   case 506:
    7905 
    7906 /* Line 1806 of yacc.c  */
    7907 #line 1982 "parser.yy"
     7902  case 507:
     7903
     7904/* Line 1806 of yacc.c  */
     7905#line 1986 "parser.yy"
    79087906    { typedefTable.addToEnclosingScope( *(yyvsp[(2) - (2)].tok), TypedefTable::TD ); }
    79097907    break;
    79107908
    7911   case 507:
    7912 
    7913 /* Line 1806 of yacc.c  */
    7914 #line 1984 "parser.yy"
     7909  case 508:
     7910
     7911/* Line 1806 of yacc.c  */
     7912#line 1988 "parser.yy"
    79157913    { (yyval.decl) = DeclarationNode::newTypeParam( (yyvsp[(1) - (4)].tclass), (yyvsp[(2) - (4)].tok) )->addAssertions( (yyvsp[(4) - (4)].decl) ); }
    79167914    break;
    79177915
    7918   case 509:
    7919 
    7920 /* Line 1806 of yacc.c  */
    7921 #line 1990 "parser.yy"
     7916  case 510:
     7917
     7918/* Line 1806 of yacc.c  */
     7919#line 1994 "parser.yy"
    79227920    { (yyval.tclass) = DeclarationNode::Otype; }
    79237921    break;
    79247922
    7925   case 510:
    7926 
    7927 /* Line 1806 of yacc.c  */
    7928 #line 1992 "parser.yy"
     7923  case 511:
     7924
     7925/* Line 1806 of yacc.c  */
     7926#line 1996 "parser.yy"
    79297927    { (yyval.tclass) = DeclarationNode::Dtype; }
    79307928    break;
    79317929
    7932   case 511:
    7933 
    7934 /* Line 1806 of yacc.c  */
    7935 #line 1994 "parser.yy"
     7930  case 512:
     7931
     7932/* Line 1806 of yacc.c  */
     7933#line 1998 "parser.yy"
    79367934    { (yyval.tclass) = DeclarationNode::Ftype; }
    79377935    break;
    79387936
    7939   case 512:
    7940 
    7941 /* Line 1806 of yacc.c  */
    7942 #line 1996 "parser.yy"
     7937  case 513:
     7938
     7939/* Line 1806 of yacc.c  */
     7940#line 2000 "parser.yy"
    79437941    { (yyval.tclass) = DeclarationNode::Ttype; }
    79447942    break;
    79457943
    7946   case 513:
    7947 
    7948 /* Line 1806 of yacc.c  */
    7949 #line 2001 "parser.yy"
     7944  case 514:
     7945
     7946/* Line 1806 of yacc.c  */
     7947#line 2005 "parser.yy"
    79507948    { (yyval.decl) = nullptr; }
    79517949    break;
    79527950
    7953   case 514:
    7954 
    7955 /* Line 1806 of yacc.c  */
    7956 #line 2003 "parser.yy"
     7951  case 515:
     7952
     7953/* Line 1806 of yacc.c  */
     7954#line 2007 "parser.yy"
    79577955    { (yyval.decl) = (yyvsp[(1) - (2)].decl) ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
    79587956    break;
    79597957
    7960   case 515:
    7961 
    7962 /* Line 1806 of yacc.c  */
    7963 #line 2008 "parser.yy"
     7958  case 516:
     7959
     7960/* Line 1806 of yacc.c  */
     7961#line 2012 "parser.yy"
    79647962    {
    79657963                        typedefTable.openTrait( *(yyvsp[(2) - (5)].tok) );
     
    79687966    break;
    79697967
    7970   case 516:
    7971 
    7972 /* Line 1806 of yacc.c  */
    7973 #line 2013 "parser.yy"
     7968  case 517:
     7969
     7970/* Line 1806 of yacc.c  */
     7971#line 2017 "parser.yy"
    79747972    { (yyval.decl) = (yyvsp[(4) - (5)].decl); }
    79757973    break;
    79767974
    7977   case 517:
    7978 
    7979 /* Line 1806 of yacc.c  */
    7980 #line 2015 "parser.yy"
     7975  case 518:
     7976
     7977/* Line 1806 of yacc.c  */
     7978#line 2019 "parser.yy"
    79817979    { (yyval.decl) = nullptr; }
    79827980    break;
    79837981
    7984   case 518:
    7985 
    7986 /* Line 1806 of yacc.c  */
    7987 #line 2020 "parser.yy"
     7982  case 519:
     7983
     7984/* Line 1806 of yacc.c  */
     7985#line 2024 "parser.yy"
    79887986    { (yyval.en) = new ExpressionNode( build_typevalue( (yyvsp[(1) - (1)].decl) ) ); }
    79897987    break;
    79907988
    7991   case 520:
    7992 
    7993 /* Line 1806 of yacc.c  */
    7994 #line 2023 "parser.yy"
     7989  case 521:
     7990
     7991/* Line 1806 of yacc.c  */
     7992#line 2027 "parser.yy"
    79957993    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( new ExpressionNode( build_typevalue( (yyvsp[(3) - (3)].decl) ) ) ) ); }
    79967994    break;
    79977995
    7998   case 521:
    7999 
    8000 /* Line 1806 of yacc.c  */
    8001 #line 2025 "parser.yy"
     7996  case 522:
     7997
     7998/* Line 1806 of yacc.c  */
     7999#line 2029 "parser.yy"
    80028000    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) )); }
    80038001    break;
    80048002
    8005   case 522:
    8006 
    8007 /* Line 1806 of yacc.c  */
    8008 #line 2030 "parser.yy"
     8003  case 523:
     8004
     8005/* Line 1806 of yacc.c  */
     8006#line 2034 "parser.yy"
    80098007    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    80108008    break;
    80118009
    8012   case 523:
    8013 
    8014 /* Line 1806 of yacc.c  */
    8015 #line 2032 "parser.yy"
     8010  case 524:
     8011
     8012/* Line 1806 of yacc.c  */
     8013#line 2036 "parser.yy"
    80168014    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); }
    80178015    break;
    80188016
    8019   case 524:
    8020 
    8021 /* Line 1806 of yacc.c  */
    8022 #line 2034 "parser.yy"
    8023     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl)->copyStorageClasses( (yyvsp[(1) - (3)].decl) ) ); }
    8024     break;
    8025 
    80268017  case 525:
    80278018
    80288019/* Line 1806 of yacc.c  */
    8029 #line 2039 "parser.yy"
     8020#line 2038 "parser.yy"
     8021    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl)->copySpecifiers( (yyvsp[(1) - (3)].decl) ) ); }
     8022    break;
     8023
     8024  case 526:
     8025
     8026/* Line 1806 of yacc.c  */
     8027#line 2043 "parser.yy"
    80308028    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addAssertions( (yyvsp[(2) - (2)].decl) ); }
    80318029    break;
    80328030
    8033   case 526:
    8034 
    8035 /* Line 1806 of yacc.c  */
    8036 #line 2041 "parser.yy"
     8031  case 527:
     8032
     8033/* Line 1806 of yacc.c  */
     8034#line 2045 "parser.yy"
    80378035    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addAssertions( (yyvsp[(2) - (4)].decl) )->addType( (yyvsp[(4) - (4)].decl) ); }
    80388036    break;
    80398037
    8040   case 527:
    8041 
    8042 /* Line 1806 of yacc.c  */
    8043 #line 2046 "parser.yy"
     8038  case 528:
     8039
     8040/* Line 1806 of yacc.c  */
     8041#line 2050 "parser.yy"
    80448042    {
    80458043                        typedefTable.addToEnclosingScope( *(yyvsp[(1) - (1)].tok), TypedefTable::TD );
     
    80488046    break;
    80498047
    8050   case 528:
    8051 
    8052 /* Line 1806 of yacc.c  */
    8053 #line 2051 "parser.yy"
     8048  case 529:
     8049
     8050/* Line 1806 of yacc.c  */
     8051#line 2055 "parser.yy"
    80548052    {
    80558053                        typedefTable.addToEnclosingScope( *(yyvsp[(1) - (6)].tok), TypedefTable::TG );
     
    80588056    break;
    80598057
    8060   case 529:
    8061 
    8062 /* Line 1806 of yacc.c  */
    8063 #line 2059 "parser.yy"
     8058  case 530:
     8059
     8060/* Line 1806 of yacc.c  */
     8061#line 2063 "parser.yy"
    80648062    {
    80658063                        typedefTable.addToEnclosingScope( *(yyvsp[(2) - (9)].tok), TypedefTable::ID );
     
    80688066    break;
    80698067
    8070   case 530:
    8071 
    8072 /* Line 1806 of yacc.c  */
    8073 #line 2064 "parser.yy"
     8068  case 531:
     8069
     8070/* Line 1806 of yacc.c  */
     8071#line 2068 "parser.yy"
    80748072    {
    80758073                        typedefTable.enterTrait( *(yyvsp[(2) - (8)].tok) );
     
    80788076    break;
    80798077
    8080   case 531:
    8081 
    8082 /* Line 1806 of yacc.c  */
    8083 #line 2069 "parser.yy"
     8078  case 532:
     8079
     8080/* Line 1806 of yacc.c  */
     8081#line 2073 "parser.yy"
    80848082    {
    80858083                        typedefTable.leaveTrait();
     
    80898087    break;
    80908088
    8091   case 533:
    8092 
    8093 /* Line 1806 of yacc.c  */
    8094 #line 2079 "parser.yy"
     8089  case 534:
     8090
     8091/* Line 1806 of yacc.c  */
     8092#line 2083 "parser.yy"
    80958093    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    80968094    break;
    80978095
    8098   case 536:
    8099 
    8100 /* Line 1806 of yacc.c  */
    8101 #line 2089 "parser.yy"
     8096  case 537:
     8097
     8098/* Line 1806 of yacc.c  */
     8099#line 2093 "parser.yy"
    81028100    {
    81038101                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    81068104    break;
    81078105
    8108   case 537:
    8109 
    8110 /* Line 1806 of yacc.c  */
    8111 #line 2094 "parser.yy"
     8106  case 538:
     8107
     8108/* Line 1806 of yacc.c  */
     8109#line 2098 "parser.yy"
    81128110    {
    81138111                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    81168114    break;
    81178115
    8118   case 538:
    8119 
    8120 /* Line 1806 of yacc.c  */
    8121 #line 2099 "parser.yy"
     8116  case 539:
     8117
     8118/* Line 1806 of yacc.c  */
     8119#line 2103 "parser.yy"
    81228120    {
    81238121                        typedefTable.addToEnclosingScope2( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
     
    81268124    break;
    81278125
    8128   case 539:
    8129 
    8130 /* Line 1806 of yacc.c  */
    8131 #line 2107 "parser.yy"
     8126  case 540:
     8127
     8128/* Line 1806 of yacc.c  */
     8129#line 2111 "parser.yy"
    81328130    {
    81338131                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    81368134    break;
    81378135
    8138   case 540:
    8139 
    8140 /* Line 1806 of yacc.c  */
    8141 #line 2112 "parser.yy"
     8136  case 541:
     8137
     8138/* Line 1806 of yacc.c  */
     8139#line 2116 "parser.yy"
    81428140    {
    81438141                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    81468144    break;
    81478145
    8148   case 541:
    8149 
    8150 /* Line 1806 of yacc.c  */
    8151 #line 2122 "parser.yy"
     8146  case 542:
     8147
     8148/* Line 1806 of yacc.c  */
     8149#line 2126 "parser.yy"
    81528150    {}
    81538151    break;
    81548152
    8155   case 542:
    8156 
    8157 /* Line 1806 of yacc.c  */
    8158 #line 2124 "parser.yy"
     8153  case 543:
     8154
     8155/* Line 1806 of yacc.c  */
     8156#line 2128 "parser.yy"
    81598157    { parseTree = parseTree ? parseTree->appendList( (yyvsp[(1) - (1)].decl) ) : (yyvsp[(1) - (1)].decl);       }
    81608158    break;
    81618159
    8162   case 544:
    8163 
    8164 /* Line 1806 of yacc.c  */
    8165 #line 2130 "parser.yy"
     8160  case 545:
     8161
     8162/* Line 1806 of yacc.c  */
     8163#line 2134 "parser.yy"
    81668164    { (yyval.decl) = (yyvsp[(1) - (3)].decl) ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); }
    81678165    break;
    81688166
    8169   case 545:
    8170 
    8171 /* Line 1806 of yacc.c  */
    8172 #line 2135 "parser.yy"
     8167  case 546:
     8168
     8169/* Line 1806 of yacc.c  */
     8170#line 2139 "parser.yy"
    81738171    { (yyval.decl) = nullptr; }
    81748172    break;
    81758173
    8176   case 549:
    8177 
    8178 /* Line 1806 of yacc.c  */
    8179 #line 2143 "parser.yy"
     8174  case 550:
     8175
     8176/* Line 1806 of yacc.c  */
     8177#line 2147 "parser.yy"
    81808178    {
    81818179                        (yyval.decl) = DeclarationNode::newAsmStmt( new StatementNode( build_asmstmt( false, (yyvsp[(3) - (5)].constant), 0 ) ) );
     
    81838181    break;
    81848182
    8185   case 550:
    8186 
    8187 /* Line 1806 of yacc.c  */
    8188 #line 2147 "parser.yy"
     8183  case 551:
     8184
     8185/* Line 1806 of yacc.c  */
     8186#line 2151 "parser.yy"
    81898187    {
    81908188                        linkageStack.push( linkage );                           // handle nested extern "C"/"Cforall"
     
    81938191    break;
    81948192
    8195   case 551:
    8196 
    8197 /* Line 1806 of yacc.c  */
    8198 #line 2152 "parser.yy"
     8193  case 552:
     8194
     8195/* Line 1806 of yacc.c  */
     8196#line 2156 "parser.yy"
    81998197    {
    82008198                        linkage = linkageStack.top();
     
    82048202    break;
    82058203
    8206   case 552:
    8207 
    8208 /* Line 1806 of yacc.c  */
    8209 #line 2158 "parser.yy"
     8204  case 553:
     8205
     8206/* Line 1806 of yacc.c  */
     8207#line 2162 "parser.yy"
    82108208    {
    82118209                        distExt( (yyvsp[(2) - (2)].decl) );                                                             // mark all fields in list
     
    82148212    break;
    82158213
    8216   case 554:
    8217 
    8218 /* Line 1806 of yacc.c  */
    8219 #line 2172 "parser.yy"
     8214  case 555:
     8215
     8216/* Line 1806 of yacc.c  */
     8217#line 2176 "parser.yy"
    82208218    {
    82218219                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    82258223    break;
    82268224
    8227   case 555:
    8228 
    8229 /* Line 1806 of yacc.c  */
    8230 #line 2178 "parser.yy"
     8225  case 556:
     8226
     8227/* Line 1806 of yacc.c  */
     8228#line 2182 "parser.yy"
    82318229    {
    82328230                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    82368234    break;
    82378235
    8238   case 556:
    8239 
    8240 /* Line 1806 of yacc.c  */
    8241 #line 2187 "parser.yy"
     8236  case 557:
     8237
     8238/* Line 1806 of yacc.c  */
     8239#line 2191 "parser.yy"
    82428240    {
    82438241                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    82478245    break;
    82488246
    8249   case 557:
    8250 
    8251 /* Line 1806 of yacc.c  */
    8252 #line 2193 "parser.yy"
     8247  case 558:
     8248
     8249/* Line 1806 of yacc.c  */
     8250#line 2197 "parser.yy"
    82538251    {
    82548252                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    82588256    break;
    82598257
    8260   case 558:
    8261 
    8262 /* Line 1806 of yacc.c  */
    8263 #line 2199 "parser.yy"
     8258  case 559:
     8259
     8260/* Line 1806 of yacc.c  */
     8261#line 2203 "parser.yy"
    82648262    {
    82658263                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    82698267    break;
    82708268
    8271   case 559:
    8272 
    8273 /* Line 1806 of yacc.c  */
    8274 #line 2205 "parser.yy"
     8269  case 560:
     8270
     8271/* Line 1806 of yacc.c  */
     8272#line 2209 "parser.yy"
    82758273    {
    82768274                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    82808278    break;
    82818279
    8282   case 560:
    8283 
    8284 /* Line 1806 of yacc.c  */
    8285 #line 2211 "parser.yy"
     8280  case 561:
     8281
     8282/* Line 1806 of yacc.c  */
     8283#line 2215 "parser.yy"
    82868284    {
    82878285                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    82918289    break;
    82928290
    8293   case 561:
    8294 
    8295 /* Line 1806 of yacc.c  */
    8296 #line 2219 "parser.yy"
     8291  case 562:
     8292
     8293/* Line 1806 of yacc.c  */
     8294#line 2223 "parser.yy"
    82978295    {
    82988296                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    83028300    break;
    83038301
    8304   case 562:
    8305 
    8306 /* Line 1806 of yacc.c  */
    8307 #line 2225 "parser.yy"
     8302  case 563:
     8303
     8304/* Line 1806 of yacc.c  */
     8305#line 2229 "parser.yy"
    83088306    {
    83098307                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    83138311    break;
    83148312
    8315   case 563:
    8316 
    8317 /* Line 1806 of yacc.c  */
    8318 #line 2233 "parser.yy"
     8313  case 564:
     8314
     8315/* Line 1806 of yacc.c  */
     8316#line 2237 "parser.yy"
    83198317    {
    83208318                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    83248322    break;
    83258323
    8326   case 564:
    8327 
    8328 /* Line 1806 of yacc.c  */
    8329 #line 2239 "parser.yy"
     8324  case 565:
     8325
     8326/* Line 1806 of yacc.c  */
     8327#line 2243 "parser.yy"
    83308328    {
    83318329                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    83358333    break;
    83368334
    8337   case 568:
    8338 
    8339 /* Line 1806 of yacc.c  */
    8340 #line 2254 "parser.yy"
     8335  case 569:
     8336
     8337/* Line 1806 of yacc.c  */
     8338#line 2258 "parser.yy"
    83418339    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    83428340    break;
    83438341
    8344   case 569:
    8345 
    8346 /* Line 1806 of yacc.c  */
    8347 #line 2259 "parser.yy"
     8342  case 570:
     8343
     8344/* Line 1806 of yacc.c  */
     8345#line 2263 "parser.yy"
    83488346    { (yyval.decl) = nullptr; }
    83498347    break;
    83508348
    8351   case 570:
    8352 
    8353 /* Line 1806 of yacc.c  */
    8354 #line 2261 "parser.yy"
     8349  case 571:
     8350
     8351/* Line 1806 of yacc.c  */
     8352#line 2265 "parser.yy"
    83558353    {
    83568354                        DeclarationNode * name = new DeclarationNode();
     
    83608358    break;
    83618359
    8362   case 571:
    8363 
    8364 /* Line 1806 of yacc.c  */
    8365 #line 2270 "parser.yy"
     8360  case 572:
     8361
     8362/* Line 1806 of yacc.c  */
     8363#line 2274 "parser.yy"
    83668364    { (yyval.decl) = nullptr; }
    83678365    break;
    83688366
    8369   case 574:
    8370 
    8371 /* Line 1806 of yacc.c  */
    8372 #line 2277 "parser.yy"
     8367  case 575:
     8368
     8369/* Line 1806 of yacc.c  */
     8370#line 2281 "parser.yy"
    83738371    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    83748372    break;
    83758373
    8376   case 575:
    8377 
    8378 /* Line 1806 of yacc.c  */
    8379 #line 2282 "parser.yy"
     8374  case 576:
     8375
     8376/* Line 1806 of yacc.c  */
     8377#line 2286 "parser.yy"
    83808378    { (yyval.decl) = (yyvsp[(4) - (6)].decl); }
    83818379    break;
    83828380
    8383   case 577:
    8384 
    8385 /* Line 1806 of yacc.c  */
    8386 #line 2288 "parser.yy"
     8381  case 578:
     8382
     8383/* Line 1806 of yacc.c  */
     8384#line 2292 "parser.yy"
    83878385    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); }
    83888386    break;
    83898387
    8390   case 578:
    8391 
    8392 /* Line 1806 of yacc.c  */
    8393 #line 2293 "parser.yy"
     8388  case 579:
     8389
     8390/* Line 1806 of yacc.c  */
     8391#line 2297 "parser.yy"
    83948392    { (yyval.decl) = nullptr; }
    83958393    break;
    83968394
    8397   case 579:
    8398 
    8399 /* Line 1806 of yacc.c  */
    8400 #line 2295 "parser.yy"
     8395  case 580:
     8396
     8397/* Line 1806 of yacc.c  */
     8398#line 2299 "parser.yy"
    84018399    { (yyval.decl) = DeclarationNode::newAttribute( (yyvsp[(1) - (1)].tok) ); }
    84028400    break;
    84038401
    8404   case 580:
    8405 
    8406 /* Line 1806 of yacc.c  */
    8407 #line 2297 "parser.yy"
     8402  case 581:
     8403
     8404/* Line 1806 of yacc.c  */
     8405#line 2301 "parser.yy"
    84088406    { (yyval.decl) = DeclarationNode::newAttribute( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
    84098407    break;
    84108408
    8411   case 584:
    8412 
    8413 /* Line 1806 of yacc.c  */
    8414 #line 2305 "parser.yy"
     8409  case 585:
     8410
     8411/* Line 1806 of yacc.c  */
     8412#line 2309 "parser.yy"
    84158413    { (yyval.tok) = Token{ new string( "__const__" ) }; }
    84168414    break;
    84178415
    8418   case 585:
    8419 
    8420 /* Line 1806 of yacc.c  */
    8421 #line 2340 "parser.yy"
     8416  case 586:
     8417
     8418/* Line 1806 of yacc.c  */
     8419#line 2344 "parser.yy"
    84228420    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    84238421    break;
    84248422
    8425   case 587:
    8426 
    8427 /* Line 1806 of yacc.c  */
    8428 #line 2343 "parser.yy"
     8423  case 588:
     8424
     8425/* Line 1806 of yacc.c  */
     8426#line 2347 "parser.yy"
    84298427    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    84308428    break;
    84318429
    8432   case 588:
    8433 
    8434 /* Line 1806 of yacc.c  */
    8435 #line 2345 "parser.yy"
     8430  case 589:
     8431
     8432/* Line 1806 of yacc.c  */
     8433#line 2349 "parser.yy"
    84368434    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    84378435    break;
    84388436
    8439   case 589:
    8440 
    8441 /* Line 1806 of yacc.c  */
    8442 #line 2350 "parser.yy"
     8437  case 590:
     8438
     8439/* Line 1806 of yacc.c  */
     8440#line 2354 "parser.yy"
    84438441    {
    84448442                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    84478445    break;
    84488446
    8449   case 590:
    8450 
    8451 /* Line 1806 of yacc.c  */
    8452 #line 2355 "parser.yy"
     8447  case 591:
     8448
     8449/* Line 1806 of yacc.c  */
     8450#line 2359 "parser.yy"
    84538451    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    84548452    break;
    84558453
    8456   case 591:
    8457 
    8458 /* Line 1806 of yacc.c  */
    8459 #line 2360 "parser.yy"
     8454  case 592:
     8455
     8456/* Line 1806 of yacc.c  */
     8457#line 2364 "parser.yy"
    84608458    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    84618459    break;
    84628460
    8463   case 592:
    8464 
    8465 /* Line 1806 of yacc.c  */
    8466 #line 2362 "parser.yy"
     8461  case 593:
     8462
     8463/* Line 1806 of yacc.c  */
     8464#line 2366 "parser.yy"
    84678465    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    84688466    break;
    84698467
    8470   case 593:
    8471 
    8472 /* Line 1806 of yacc.c  */
    8473 #line 2364 "parser.yy"
     8468  case 594:
     8469
     8470/* Line 1806 of yacc.c  */
     8471#line 2368 "parser.yy"
    84748472    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addQualifiers( (yyvsp[(4) - (4)].decl) ); }
    84758473    break;
    84768474
    8477   case 594:
    8478 
    8479 /* Line 1806 of yacc.c  */
    8480 #line 2369 "parser.yy"
     8475  case 595:
     8476
     8477/* Line 1806 of yacc.c  */
     8478#line 2373 "parser.yy"
    84818479    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    84828480    break;
    84838481
    8484   case 595:
    8485 
    8486 /* Line 1806 of yacc.c  */
    8487 #line 2371 "parser.yy"
     8482  case 596:
     8483
     8484/* Line 1806 of yacc.c  */
     8485#line 2375 "parser.yy"
    84888486    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    84898487    break;
    84908488
    8491   case 596:
    8492 
    8493 /* Line 1806 of yacc.c  */
    8494 #line 2373 "parser.yy"
     8489  case 597:
     8490
     8491/* Line 1806 of yacc.c  */
     8492#line 2377 "parser.yy"
    84958493    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    84968494    break;
    84978495
    8498   case 597:
    8499 
    8500 /* Line 1806 of yacc.c  */
    8501 #line 2375 "parser.yy"
     8496  case 598:
     8497
     8498/* Line 1806 of yacc.c  */
     8499#line 2379 "parser.yy"
    85028500    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    85038501    break;
    85048502
    8505   case 598:
    8506 
    8507 /* Line 1806 of yacc.c  */
    8508 #line 2380 "parser.yy"
     8503  case 599:
     8504
     8505/* Line 1806 of yacc.c  */
     8506#line 2384 "parser.yy"
    85098507    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    85108508    break;
    85118509
    8512   case 599:
    8513 
    8514 /* Line 1806 of yacc.c  */
    8515 #line 2382 "parser.yy"
     8510  case 600:
     8511
     8512/* Line 1806 of yacc.c  */
     8513#line 2386 "parser.yy"
    85168514    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    85178515    break;
    85188516
    8519   case 600:
    8520 
    8521 /* Line 1806 of yacc.c  */
    8522 #line 2391 "parser.yy"
     8517  case 601:
     8518
     8519/* Line 1806 of yacc.c  */
     8520#line 2395 "parser.yy"
    85238521    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    85248522    break;
    85258523
    8526   case 602:
    8527 
    8528 /* Line 1806 of yacc.c  */
    8529 #line 2394 "parser.yy"
     8524  case 603:
     8525
     8526/* Line 1806 of yacc.c  */
     8527#line 2398 "parser.yy"
    85308528    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    85318529    break;
    85328530
    8533   case 603:
    8534 
    8535 /* Line 1806 of yacc.c  */
    8536 #line 2399 "parser.yy"
     8531  case 604:
     8532
     8533/* Line 1806 of yacc.c  */
     8534#line 2403 "parser.yy"
    85378535    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    85388536    break;
    85398537
    8540   case 604:
    8541 
    8542 /* Line 1806 of yacc.c  */
    8543 #line 2401 "parser.yy"
     8538  case 605:
     8539
     8540/* Line 1806 of yacc.c  */
     8541#line 2405 "parser.yy"
    85448542    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    85458543    break;
    85468544
    8547   case 605:
    8548 
    8549 /* Line 1806 of yacc.c  */
    8550 #line 2403 "parser.yy"
     8545  case 606:
     8546
     8547/* Line 1806 of yacc.c  */
     8548#line 2407 "parser.yy"
    85518549    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    85528550    break;
    85538551
    8554   case 606:
    8555 
    8556 /* Line 1806 of yacc.c  */
    8557 #line 2408 "parser.yy"
     8552  case 607:
     8553
     8554/* Line 1806 of yacc.c  */
     8555#line 2412 "parser.yy"
    85588556    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    85598557    break;
    85608558
    8561   case 607:
    8562 
    8563 /* Line 1806 of yacc.c  */
    8564 #line 2410 "parser.yy"
     8559  case 608:
     8560
     8561/* Line 1806 of yacc.c  */
     8562#line 2414 "parser.yy"
    85658563    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    85668564    break;
    85678565
    8568   case 608:
    8569 
    8570 /* Line 1806 of yacc.c  */
    8571 #line 2412 "parser.yy"
     8566  case 609:
     8567
     8568/* Line 1806 of yacc.c  */
     8569#line 2416 "parser.yy"
    85728570    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    85738571    break;
    85748572
    8575   case 609:
    8576 
    8577 /* Line 1806 of yacc.c  */
    8578 #line 2417 "parser.yy"
     8573  case 610:
     8574
     8575/* Line 1806 of yacc.c  */
     8576#line 2421 "parser.yy"
    85798577    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    85808578    break;
    85818579
    8582   case 610:
    8583 
    8584 /* Line 1806 of yacc.c  */
    8585 #line 2419 "parser.yy"
     8580  case 611:
     8581
     8582/* Line 1806 of yacc.c  */
     8583#line 2423 "parser.yy"
    85868584    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    85878585    break;
    85888586
    8589   case 611:
    8590 
    8591 /* Line 1806 of yacc.c  */
    8592 #line 2421 "parser.yy"
     8587  case 612:
     8588
     8589/* Line 1806 of yacc.c  */
     8590#line 2425 "parser.yy"
    85938591    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    85948592    break;
    85958593
    8596   case 615:
    8597 
    8598 /* Line 1806 of yacc.c  */
    8599 #line 2439 "parser.yy"
     8594  case 616:
     8595
     8596/* Line 1806 of yacc.c  */
     8597#line 2443 "parser.yy"
    86008598    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); }
    86018599    break;
    86028600
    8603   case 616:
    8604 
    8605 /* Line 1806 of yacc.c  */
    8606 #line 2441 "parser.yy"
     8601  case 617:
     8602
     8603/* Line 1806 of yacc.c  */
     8604#line 2445 "parser.yy"
    86078605    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    86088606    break;
    86098607
    8610   case 617:
    8611 
    8612 /* Line 1806 of yacc.c  */
    8613 #line 2443 "parser.yy"
     8608  case 618:
     8609
     8610/* Line 1806 of yacc.c  */
     8611#line 2447 "parser.yy"
    86148612    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    86158613    break;
    86168614
    8617   case 618:
    8618 
    8619 /* Line 1806 of yacc.c  */
    8620 #line 2448 "parser.yy"
     8615  case 619:
     8616
     8617/* Line 1806 of yacc.c  */
     8618#line 2452 "parser.yy"
    86218619    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    86228620    break;
    86238621
    8624   case 619:
    8625 
    8626 /* Line 1806 of yacc.c  */
    8627 #line 2450 "parser.yy"
     8622  case 620:
     8623
     8624/* Line 1806 of yacc.c  */
     8625#line 2454 "parser.yy"
    86288626    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    86298627    break;
    86308628
    8631   case 620:
    8632 
    8633 /* Line 1806 of yacc.c  */
    8634 #line 2452 "parser.yy"
     8629  case 621:
     8630
     8631/* Line 1806 of yacc.c  */
     8632#line 2456 "parser.yy"
    86358633    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    86368634    break;
    86378635
    8638   case 621:
    8639 
    8640 /* Line 1806 of yacc.c  */
    8641 #line 2457 "parser.yy"
     8636  case 622:
     8637
     8638/* Line 1806 of yacc.c  */
     8639#line 2461 "parser.yy"
    86428640    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    86438641    break;
    86448642
    8645   case 622:
    8646 
    8647 /* Line 1806 of yacc.c  */
    8648 #line 2459 "parser.yy"
     8643  case 623:
     8644
     8645/* Line 1806 of yacc.c  */
     8646#line 2463 "parser.yy"
    86498647    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    86508648    break;
    86518649
    8652   case 623:
    8653 
    8654 /* Line 1806 of yacc.c  */
    8655 #line 2461 "parser.yy"
     8650  case 624:
     8651
     8652/* Line 1806 of yacc.c  */
     8653#line 2465 "parser.yy"
    86568654    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    86578655    break;
    86588656
    8659   case 624:
    8660 
    8661 /* Line 1806 of yacc.c  */
    8662 #line 2476 "parser.yy"
     8657  case 625:
     8658
     8659/* Line 1806 of yacc.c  */
     8660#line 2480 "parser.yy"
    86638661    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    86648662    break;
    86658663
    8666   case 626:
    8667 
    8668 /* Line 1806 of yacc.c  */
    8669 #line 2479 "parser.yy"
     8664  case 627:
     8665
     8666/* Line 1806 of yacc.c  */
     8667#line 2483 "parser.yy"
    86708668    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    86718669    break;
    86728670
    8673   case 627:
    8674 
    8675 /* Line 1806 of yacc.c  */
    8676 #line 2481 "parser.yy"
     8671  case 628:
     8672
     8673/* Line 1806 of yacc.c  */
     8674#line 2485 "parser.yy"
    86778675    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    86788676    break;
    86798677
    8680   case 629:
    8681 
    8682 /* Line 1806 of yacc.c  */
    8683 #line 2487 "parser.yy"
     8678  case 630:
     8679
     8680/* Line 1806 of yacc.c  */
     8681#line 2491 "parser.yy"
    86848682    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    86858683    break;
    86868684
    8687   case 630:
    8688 
    8689 /* Line 1806 of yacc.c  */
    8690 #line 2492 "parser.yy"
     8685  case 631:
     8686
     8687/* Line 1806 of yacc.c  */
     8688#line 2496 "parser.yy"
    86918689    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    86928690    break;
    86938691
    8694   case 631:
    8695 
    8696 /* Line 1806 of yacc.c  */
    8697 #line 2494 "parser.yy"
     8692  case 632:
     8693
     8694/* Line 1806 of yacc.c  */
     8695#line 2498 "parser.yy"
    86988696    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    86998697    break;
    87008698
    8701   case 632:
    8702 
    8703 /* Line 1806 of yacc.c  */
    8704 #line 2496 "parser.yy"
     8699  case 633:
     8700
     8701/* Line 1806 of yacc.c  */
     8702#line 2500 "parser.yy"
    87058703    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addQualifiers( (yyvsp[(4) - (4)].decl) ); }
    87068704    break;
    87078705
    8708   case 633:
    8709 
    8710 /* Line 1806 of yacc.c  */
    8711 #line 2501 "parser.yy"
     8706  case 634:
     8707
     8708/* Line 1806 of yacc.c  */
     8709#line 2505 "parser.yy"
    87128710    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    87138711    break;
    87148712
    8715   case 634:
    8716 
    8717 /* Line 1806 of yacc.c  */
    8718 #line 2503 "parser.yy"
     8713  case 635:
     8714
     8715/* Line 1806 of yacc.c  */
     8716#line 2507 "parser.yy"
    87198717    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    87208718    break;
    87218719
    8722   case 635:
    8723 
    8724 /* Line 1806 of yacc.c  */
    8725 #line 2505 "parser.yy"
     8720  case 636:
     8721
     8722/* Line 1806 of yacc.c  */
     8723#line 2509 "parser.yy"
    87268724    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    87278725    break;
    87288726
    8729   case 636:
    8730 
    8731 /* Line 1806 of yacc.c  */
    8732 #line 2507 "parser.yy"
     8727  case 637:
     8728
     8729/* Line 1806 of yacc.c  */
     8730#line 2511 "parser.yy"
    87338731    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    87348732    break;
    87358733
    8736   case 637:
    8737 
    8738 /* Line 1806 of yacc.c  */
    8739 #line 2512 "parser.yy"
     8734  case 638:
     8735
     8736/* Line 1806 of yacc.c  */
     8737#line 2516 "parser.yy"
    87408738    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    87418739    break;
    87428740
    8743   case 638:
    8744 
    8745 /* Line 1806 of yacc.c  */
    8746 #line 2514 "parser.yy"
     8741  case 639:
     8742
     8743/* Line 1806 of yacc.c  */
     8744#line 2518 "parser.yy"
    87478745    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    87488746    break;
    87498747
    8750   case 639:
    8751 
    8752 /* Line 1806 of yacc.c  */
    8753 #line 2516 "parser.yy"
     8748  case 640:
     8749
     8750/* Line 1806 of yacc.c  */
     8751#line 2520 "parser.yy"
    87548752    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    87558753    break;
    87568754
    8757   case 640:
    8758 
    8759 /* Line 1806 of yacc.c  */
    8760 #line 2526 "parser.yy"
     8755  case 641:
     8756
     8757/* Line 1806 of yacc.c  */
     8758#line 2530 "parser.yy"
    87618759    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    87628760    break;
    87638761
    8764   case 642:
    8765 
    8766 /* Line 1806 of yacc.c  */
    8767 #line 2529 "parser.yy"
     8762  case 643:
     8763
     8764/* Line 1806 of yacc.c  */
     8765#line 2533 "parser.yy"
    87688766    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    87698767    break;
    87708768
    8771   case 643:
    8772 
    8773 /* Line 1806 of yacc.c  */
    8774 #line 2531 "parser.yy"
     8769  case 644:
     8770
     8771/* Line 1806 of yacc.c  */
     8772#line 2535 "parser.yy"
    87758773    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    87768774    break;
    87778775
    8778   case 644:
    8779 
    8780 /* Line 1806 of yacc.c  */
    8781 #line 2536 "parser.yy"
     8776  case 645:
     8777
     8778/* Line 1806 of yacc.c  */
     8779#line 2540 "parser.yy"
    87828780    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    87838781    break;
    87848782
    8785   case 645:
    8786 
    8787 /* Line 1806 of yacc.c  */
    8788 #line 2538 "parser.yy"
     8783  case 646:
     8784
     8785/* Line 1806 of yacc.c  */
     8786#line 2542 "parser.yy"
    87898787    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    87908788    break;
    87918789
    8792   case 646:
    8793 
    8794 /* Line 1806 of yacc.c  */
    8795 #line 2540 "parser.yy"
     8790  case 647:
     8791
     8792/* Line 1806 of yacc.c  */
     8793#line 2544 "parser.yy"
    87968794    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addQualifiers( (yyvsp[(4) - (4)].decl) ); }
    87978795    break;
    87988796
    8799   case 647:
    8800 
    8801 /* Line 1806 of yacc.c  */
    8802 #line 2545 "parser.yy"
     8797  case 648:
     8798
     8799/* Line 1806 of yacc.c  */
     8800#line 2549 "parser.yy"
    88038801    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    88048802    break;
    88058803
    8806   case 648:
    8807 
    8808 /* Line 1806 of yacc.c  */
    8809 #line 2547 "parser.yy"
     8804  case 649:
     8805
     8806/* Line 1806 of yacc.c  */
     8807#line 2551 "parser.yy"
    88108808    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    88118809    break;
    88128810
    8813   case 649:
    8814 
    8815 /* Line 1806 of yacc.c  */
    8816 #line 2549 "parser.yy"
     8811  case 650:
     8812
     8813/* Line 1806 of yacc.c  */
     8814#line 2553 "parser.yy"
    88178815    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    88188816    break;
    88198817
    8820   case 650:
    8821 
    8822 /* Line 1806 of yacc.c  */
    8823 #line 2551 "parser.yy"
     8818  case 651:
     8819
     8820/* Line 1806 of yacc.c  */
     8821#line 2555 "parser.yy"
    88248822    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    88258823    break;
    88268824
    8827   case 651:
    8828 
    8829 /* Line 1806 of yacc.c  */
    8830 #line 2556 "parser.yy"
     8825  case 652:
     8826
     8827/* Line 1806 of yacc.c  */
     8828#line 2560 "parser.yy"
    88318829    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    88328830    break;
    88338831
    8834   case 652:
    8835 
    8836 /* Line 1806 of yacc.c  */
    8837 #line 2558 "parser.yy"
     8832  case 653:
     8833
     8834/* Line 1806 of yacc.c  */
     8835#line 2562 "parser.yy"
    88388836    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    88398837    break;
    88408838
    8841   case 653:
    8842 
    8843 /* Line 1806 of yacc.c  */
    8844 #line 2560 "parser.yy"
     8839  case 654:
     8840
     8841/* Line 1806 of yacc.c  */
     8842#line 2564 "parser.yy"
    88458843    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    88468844    break;
    88478845
    8848   case 654:
    8849 
    8850 /* Line 1806 of yacc.c  */
    8851 #line 2573 "parser.yy"
     8846  case 655:
     8847
     8848/* Line 1806 of yacc.c  */
     8849#line 2577 "parser.yy"
    88528850    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    88538851    break;
    88548852
    8855   case 656:
    8856 
    8857 /* Line 1806 of yacc.c  */
    8858 #line 2576 "parser.yy"
     8853  case 657:
     8854
     8855/* Line 1806 of yacc.c  */
     8856#line 2580 "parser.yy"
    88598857    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    88608858    break;
    88618859
    8862   case 657:
    8863 
    8864 /* Line 1806 of yacc.c  */
    8865 #line 2578 "parser.yy"
     8860  case 658:
     8861
     8862/* Line 1806 of yacc.c  */
     8863#line 2582 "parser.yy"
    88668864    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    88678865    break;
    88688866
    8869   case 658:
    8870 
    8871 /* Line 1806 of yacc.c  */
    8872 #line 2583 "parser.yy"
     8867  case 659:
     8868
     8869/* Line 1806 of yacc.c  */
     8870#line 2587 "parser.yy"
    88738871    {
    88748872                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    88778875    break;
    88788876
    8879   case 659:
    8880 
    8881 /* Line 1806 of yacc.c  */
    8882 #line 2588 "parser.yy"
     8877  case 660:
     8878
     8879/* Line 1806 of yacc.c  */
     8880#line 2592 "parser.yy"
    88838881    {
    88848882                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    88878885    break;
    88888886
    8889   case 660:
    8890 
    8891 /* Line 1806 of yacc.c  */
    8892 #line 2596 "parser.yy"
     8887  case 661:
     8888
     8889/* Line 1806 of yacc.c  */
     8890#line 2600 "parser.yy"
    88938891    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    88948892    break;
    88958893
    8896   case 661:
    8897 
    8898 /* Line 1806 of yacc.c  */
    8899 #line 2598 "parser.yy"
     8894  case 662:
     8895
     8896/* Line 1806 of yacc.c  */
     8897#line 2602 "parser.yy"
    89008898    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    89018899    break;
    89028900
    8903   case 662:
    8904 
    8905 /* Line 1806 of yacc.c  */
    8906 #line 2600 "parser.yy"
     8901  case 663:
     8902
     8903/* Line 1806 of yacc.c  */
     8904#line 2604 "parser.yy"
    89078905    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addQualifiers( (yyvsp[(4) - (4)].decl) ); }
    89088906    break;
    89098907
    8910   case 663:
    8911 
    8912 /* Line 1806 of yacc.c  */
    8913 #line 2605 "parser.yy"
     8908  case 664:
     8909
     8910/* Line 1806 of yacc.c  */
     8911#line 2609 "parser.yy"
    89148912    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    89158913    break;
    89168914
    8917   case 664:
    8918 
    8919 /* Line 1806 of yacc.c  */
    8920 #line 2607 "parser.yy"
     8915  case 665:
     8916
     8917/* Line 1806 of yacc.c  */
     8918#line 2611 "parser.yy"
    89218919    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    89228920    break;
    89238921
    8924   case 665:
    8925 
    8926 /* Line 1806 of yacc.c  */
    8927 #line 2612 "parser.yy"
     8922  case 666:
     8923
     8924/* Line 1806 of yacc.c  */
     8925#line 2616 "parser.yy"
    89288926    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    89298927    break;
    89308928
    8931   case 666:
    8932 
    8933 /* Line 1806 of yacc.c  */
    8934 #line 2614 "parser.yy"
     8929  case 667:
     8930
     8931/* Line 1806 of yacc.c  */
     8932#line 2618 "parser.yy"
    89358933    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    89368934    break;
    89378935
    8938   case 668:
    8939 
    8940 /* Line 1806 of yacc.c  */
    8941 #line 2632 "parser.yy"
     8936  case 669:
     8937
     8938/* Line 1806 of yacc.c  */
     8939#line 2636 "parser.yy"
    89428940    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    89438941    break;
    89448942
    8945   case 669:
    8946 
    8947 /* Line 1806 of yacc.c  */
    8948 #line 2634 "parser.yy"
     8943  case 670:
     8944
     8945/* Line 1806 of yacc.c  */
     8946#line 2638 "parser.yy"
    89498947    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    89508948    break;
    89518949
    8952   case 670:
    8953 
    8954 /* Line 1806 of yacc.c  */
    8955 #line 2639 "parser.yy"
     8950  case 671:
     8951
     8952/* Line 1806 of yacc.c  */
     8953#line 2643 "parser.yy"
    89568954    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    89578955    break;
    89588956
    8959   case 671:
    8960 
    8961 /* Line 1806 of yacc.c  */
    8962 #line 2641 "parser.yy"
     8957  case 672:
     8958
     8959/* Line 1806 of yacc.c  */
     8960#line 2645 "parser.yy"
    89638961    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    89648962    break;
    89658963
    8966   case 672:
    8967 
    8968 /* Line 1806 of yacc.c  */
    8969 #line 2643 "parser.yy"
     8964  case 673:
     8965
     8966/* Line 1806 of yacc.c  */
     8967#line 2647 "parser.yy"
    89708968    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    89718969    break;
    89728970
    8973   case 673:
    8974 
    8975 /* Line 1806 of yacc.c  */
    8976 #line 2645 "parser.yy"
     8971  case 674:
     8972
     8973/* Line 1806 of yacc.c  */
     8974#line 2649 "parser.yy"
    89778975    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    89788976    break;
    89798977
    8980   case 674:
    8981 
    8982 /* Line 1806 of yacc.c  */
    8983 #line 2647 "parser.yy"
     8978  case 675:
     8979
     8980/* Line 1806 of yacc.c  */
     8981#line 2651 "parser.yy"
    89848982    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addQualifiers( (yyvsp[(4) - (4)].decl) ); }
    89858983    break;
    89868984
    8987   case 676:
    8988 
    8989 /* Line 1806 of yacc.c  */
    8990 #line 2653 "parser.yy"
     8985  case 677:
     8986
     8987/* Line 1806 of yacc.c  */
     8988#line 2657 "parser.yy"
    89918989    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    89928990    break;
    89938991
    8994   case 677:
    8995 
    8996 /* Line 1806 of yacc.c  */
    8997 #line 2655 "parser.yy"
     8992  case 678:
     8993
     8994/* Line 1806 of yacc.c  */
     8995#line 2659 "parser.yy"
    89988996    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    89998997    break;
    90008998
    9001   case 678:
    9002 
    9003 /* Line 1806 of yacc.c  */
    9004 #line 2657 "parser.yy"
     8999  case 679:
     9000
     9001/* Line 1806 of yacc.c  */
     9002#line 2661 "parser.yy"
    90059003    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    90069004    break;
    90079005
    9008   case 679:
    9009 
    9010 /* Line 1806 of yacc.c  */
    9011 #line 2662 "parser.yy"
     9006  case 680:
     9007
     9008/* Line 1806 of yacc.c  */
     9009#line 2666 "parser.yy"
    90129010    { (yyval.decl) = DeclarationNode::newFunction( nullptr, nullptr, (yyvsp[(3) - (5)].decl), nullptr ); }
    90139011    break;
    90149012
    9015   case 680:
    9016 
    9017 /* Line 1806 of yacc.c  */
    9018 #line 2664 "parser.yy"
     9013  case 681:
     9014
     9015/* Line 1806 of yacc.c  */
     9016#line 2668 "parser.yy"
    90199017    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    90209018    break;
    90219019
    9022   case 681:
    9023 
    9024 /* Line 1806 of yacc.c  */
    9025 #line 2666 "parser.yy"
     9020  case 682:
     9021
     9022/* Line 1806 of yacc.c  */
     9023#line 2670 "parser.yy"
    90269024    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    90279025    break;
    90289026
    9029   case 682:
    9030 
    9031 /* Line 1806 of yacc.c  */
    9032 #line 2672 "parser.yy"
     9027  case 683:
     9028
     9029/* Line 1806 of yacc.c  */
     9030#line 2676 "parser.yy"
    90339031    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
    90349032    break;
    90359033
    9036   case 683:
    9037 
    9038 /* Line 1806 of yacc.c  */
    9039 #line 2674 "parser.yy"
     9034  case 684:
     9035
     9036/* Line 1806 of yacc.c  */
     9037#line 2678 "parser.yy"
    90409038    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(3) - (3)].decl) ); }
    90419039    break;
    90429040
    9043   case 685:
    9044 
    9045 /* Line 1806 of yacc.c  */
    9046 #line 2680 "parser.yy"
     9041  case 686:
     9042
     9043/* Line 1806 of yacc.c  */
     9044#line 2684 "parser.yy"
    90479045    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); }
    90489046    break;
    90499047
    9050   case 686:
    9051 
    9052 /* Line 1806 of yacc.c  */
    9053 #line 2682 "parser.yy"
     9048  case 687:
     9049
     9050/* Line 1806 of yacc.c  */
     9051#line 2686 "parser.yy"
    90549052    { (yyval.decl) = DeclarationNode::newVarArray( 0 ); }
    90559053    break;
    90569054
    9057   case 687:
    9058 
    9059 /* Line 1806 of yacc.c  */
    9060 #line 2684 "parser.yy"
     9055  case 688:
     9056
     9057/* Line 1806 of yacc.c  */
     9058#line 2688 "parser.yy"
    90619059    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); }
    90629060    break;
    90639061
    9064   case 688:
    9065 
    9066 /* Line 1806 of yacc.c  */
    9067 #line 2686 "parser.yy"
     9062  case 689:
     9063
     9064/* Line 1806 of yacc.c  */
     9065#line 2690 "parser.yy"
    90689066    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); }
    90699067    break;
    90709068
    9071   case 690:
    9072 
    9073 /* Line 1806 of yacc.c  */
    9074 #line 2721 "parser.yy"
     9069  case 691:
     9070
     9071/* Line 1806 of yacc.c  */
     9072#line 2725 "parser.yy"
    90759073    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    90769074    break;
    90779075
    9078   case 691:
    9079 
    9080 /* Line 1806 of yacc.c  */
    9081 #line 2723 "parser.yy"
     9076  case 692:
     9077
     9078/* Line 1806 of yacc.c  */
     9079#line 2727 "parser.yy"
    90829080    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    90839081    break;
    90849082
    9085   case 692:
    9086 
    9087 /* Line 1806 of yacc.c  */
    9088 #line 2728 "parser.yy"
     9083  case 693:
     9084
     9085/* Line 1806 of yacc.c  */
     9086#line 2732 "parser.yy"
    90899087    { (yyval.decl) = DeclarationNode::newPointer( nullptr ); }
    90909088    break;
    90919089
    9092   case 693:
    9093 
    9094 /* Line 1806 of yacc.c  */
    9095 #line 2730 "parser.yy"
     9090  case 694:
     9091
     9092/* Line 1806 of yacc.c  */
     9093#line 2734 "parser.yy"
    90969094    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    90979095    break;
    90989096
    9099   case 694:
    9100 
    9101 /* Line 1806 of yacc.c  */
    9102 #line 2732 "parser.yy"
     9097  case 695:
     9098
     9099/* Line 1806 of yacc.c  */
     9100#line 2736 "parser.yy"
    91039101    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( nullptr ) ); }
    91049102    break;
    91059103
    9106   case 695:
    9107 
    9108 /* Line 1806 of yacc.c  */
    9109 #line 2734 "parser.yy"
     9104  case 696:
     9105
     9106/* Line 1806 of yacc.c  */
     9107#line 2738 "parser.yy"
    91109108    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    91119109    break;
    91129110
    9113   case 696:
    9114 
    9115 /* Line 1806 of yacc.c  */
    9116 #line 2736 "parser.yy"
     9111  case 697:
     9112
     9113/* Line 1806 of yacc.c  */
     9114#line 2740 "parser.yy"
    91179115    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addQualifiers( (yyvsp[(4) - (4)].decl) ); }
    91189116    break;
    91199117
    9120   case 698:
    9121 
    9122 /* Line 1806 of yacc.c  */
    9123 #line 2742 "parser.yy"
     9118  case 699:
     9119
     9120/* Line 1806 of yacc.c  */
     9121#line 2746 "parser.yy"
    91249122    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    91259123    break;
    91269124
    9127   case 699:
    9128 
    9129 /* Line 1806 of yacc.c  */
    9130 #line 2744 "parser.yy"
     9125  case 700:
     9126
     9127/* Line 1806 of yacc.c  */
     9128#line 2748 "parser.yy"
    91319129    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    91329130    break;
    91339131
    9134   case 700:
    9135 
    9136 /* Line 1806 of yacc.c  */
    9137 #line 2746 "parser.yy"
     9132  case 701:
     9133
     9134/* Line 1806 of yacc.c  */
     9135#line 2750 "parser.yy"
    91389136    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    91399137    break;
    91409138
    9141   case 701:
    9142 
    9143 /* Line 1806 of yacc.c  */
    9144 #line 2751 "parser.yy"
     9139  case 702:
     9140
     9141/* Line 1806 of yacc.c  */
     9142#line 2755 "parser.yy"
    91459143    { (yyval.decl) = DeclarationNode::newFunction( nullptr, nullptr, (yyvsp[(3) - (5)].decl), nullptr ); }
    91469144    break;
    91479145
    9148   case 702:
    9149 
    9150 /* Line 1806 of yacc.c  */
    9151 #line 2753 "parser.yy"
     9146  case 703:
     9147
     9148/* Line 1806 of yacc.c  */
     9149#line 2757 "parser.yy"
    91529150    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    91539151    break;
    91549152
    9155   case 703:
    9156 
    9157 /* Line 1806 of yacc.c  */
    9158 #line 2755 "parser.yy"
     9153  case 704:
     9154
     9155/* Line 1806 of yacc.c  */
     9156#line 2759 "parser.yy"
    91599157    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    91609158    break;
    91619159
    9162   case 705:
    9163 
    9164 /* Line 1806 of yacc.c  */
    9165 #line 2762 "parser.yy"
     9160  case 706:
     9161
     9162/* Line 1806 of yacc.c  */
     9163#line 2766 "parser.yy"
    91669164    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    91679165    break;
    91689166
    9169   case 707:
    9170 
    9171 /* Line 1806 of yacc.c  */
    9172 #line 2773 "parser.yy"
     9167  case 708:
     9168
     9169/* Line 1806 of yacc.c  */
     9170#line 2777 "parser.yy"
    91739171    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
    91749172    break;
    91759173
    9176   case 708:
    9177 
    9178 /* Line 1806 of yacc.c  */
    9179 #line 2776 "parser.yy"
     9174  case 709:
     9175
     9176/* Line 1806 of yacc.c  */
     9177#line 2780 "parser.yy"
    91809178    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
    91819179    break;
    91829180
    9183   case 709:
    9184 
    9185 /* Line 1806 of yacc.c  */
    9186 #line 2778 "parser.yy"
     9181  case 710:
     9182
     9183/* Line 1806 of yacc.c  */
     9184#line 2782 "parser.yy"
    91879185    { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); }
    91889186    break;
    91899187
    9190   case 710:
    9191 
    9192 /* Line 1806 of yacc.c  */
    9193 #line 2781 "parser.yy"
     9188  case 711:
     9189
     9190/* Line 1806 of yacc.c  */
     9191#line 2785 "parser.yy"
    91949192    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
    91959193    break;
    91969194
    9197   case 711:
    9198 
    9199 /* Line 1806 of yacc.c  */
    9200 #line 2783 "parser.yy"
     9195  case 712:
     9196
     9197/* Line 1806 of yacc.c  */
     9198#line 2787 "parser.yy"
    92019199    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); }
    92029200    break;
    92039201
    9204   case 712:
    9205 
    9206 /* Line 1806 of yacc.c  */
    9207 #line 2785 "parser.yy"
     9202  case 713:
     9203
     9204/* Line 1806 of yacc.c  */
     9205#line 2789 "parser.yy"
    92089206    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); }
    92099207    break;
    92109208
    9211   case 714:
    9212 
    9213 /* Line 1806 of yacc.c  */
    9214 #line 2800 "parser.yy"
     9209  case 715:
     9210
     9211/* Line 1806 of yacc.c  */
     9212#line 2804 "parser.yy"
    92159213    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    92169214    break;
    92179215
    9218   case 715:
    9219 
    9220 /* Line 1806 of yacc.c  */
    9221 #line 2802 "parser.yy"
     9216  case 716:
     9217
     9218/* Line 1806 of yacc.c  */
     9219#line 2806 "parser.yy"
    92229220    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    92239221    break;
    92249222
    9225   case 716:
    9226 
    9227 /* Line 1806 of yacc.c  */
    9228 #line 2807 "parser.yy"
     9223  case 717:
     9224
     9225/* Line 1806 of yacc.c  */
     9226#line 2811 "parser.yy"
    92299227    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    92309228    break;
    92319229
    9232   case 717:
    9233 
    9234 /* Line 1806 of yacc.c  */
    9235 #line 2809 "parser.yy"
     9230  case 718:
     9231
     9232/* Line 1806 of yacc.c  */
     9233#line 2813 "parser.yy"
    92369234    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    92379235    break;
    92389236
    9239   case 718:
    9240 
    9241 /* Line 1806 of yacc.c  */
    9242 #line 2811 "parser.yy"
     9237  case 719:
     9238
     9239/* Line 1806 of yacc.c  */
     9240#line 2815 "parser.yy"
    92439241    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    92449242    break;
    92459243
    9246   case 719:
    9247 
    9248 /* Line 1806 of yacc.c  */
    9249 #line 2813 "parser.yy"
     9244  case 720:
     9245
     9246/* Line 1806 of yacc.c  */
     9247#line 2817 "parser.yy"
    92509248    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    92519249    break;
    92529250
    9253   case 720:
    9254 
    9255 /* Line 1806 of yacc.c  */
    9256 #line 2815 "parser.yy"
     9251  case 721:
     9252
     9253/* Line 1806 of yacc.c  */
     9254#line 2819 "parser.yy"
    92579255    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addQualifiers( (yyvsp[(4) - (4)].decl) ); }
    92589256    break;
    92599257
    9260   case 722:
    9261 
    9262 /* Line 1806 of yacc.c  */
    9263 #line 2821 "parser.yy"
     9258  case 723:
     9259
     9260/* Line 1806 of yacc.c  */
     9261#line 2825 "parser.yy"
    92649262    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    92659263    break;
    92669264
    9267   case 723:
    9268 
    9269 /* Line 1806 of yacc.c  */
    9270 #line 2823 "parser.yy"
     9265  case 724:
     9266
     9267/* Line 1806 of yacc.c  */
     9268#line 2827 "parser.yy"
    92719269    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    92729270    break;
    92739271
    9274   case 724:
    9275 
    9276 /* Line 1806 of yacc.c  */
    9277 #line 2825 "parser.yy"
     9272  case 725:
     9273
     9274/* Line 1806 of yacc.c  */
     9275#line 2829 "parser.yy"
    92789276    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    92799277    break;
    92809278
    9281   case 725:
    9282 
    9283 /* Line 1806 of yacc.c  */
    9284 #line 2830 "parser.yy"
     9279  case 726:
     9280
     9281/* Line 1806 of yacc.c  */
     9282#line 2834 "parser.yy"
    92859283    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    92869284    break;
    92879285
    9288   case 726:
    9289 
    9290 /* Line 1806 of yacc.c  */
    9291 #line 2832 "parser.yy"
     9286  case 727:
     9287
     9288/* Line 1806 of yacc.c  */
     9289#line 2836 "parser.yy"
    92929290    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    92939291    break;
    92949292
    9295   case 729:
    9296 
    9297 /* Line 1806 of yacc.c  */
    9298 #line 2842 "parser.yy"
     9293  case 730:
     9294
     9295/* Line 1806 of yacc.c  */
     9296#line 2846 "parser.yy"
    92999297    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    93009298    break;
    93019299
    9302   case 732:
    9303 
    9304 /* Line 1806 of yacc.c  */
    9305 #line 2853 "parser.yy"
    9306     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    9307     break;
    9308 
    93099300  case 733:
    9310 
    9311 /* Line 1806 of yacc.c  */
    9312 #line 2855 "parser.yy"
    9313     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    9314     break;
    9315 
    9316   case 734:
    93179301
    93189302/* Line 1806 of yacc.c  */
     
    93219305    break;
    93229306
    9323   case 735:
     9307  case 734:
    93249308
    93259309/* Line 1806 of yacc.c  */
     
    93289312    break;
    93299313
    9330   case 736:
     9314  case 735:
    93319315
    93329316/* Line 1806 of yacc.c  */
     
    93359319    break;
    93369320
    9337   case 737:
     9321  case 736:
    93389322
    93399323/* Line 1806 of yacc.c  */
     
    93429326    break;
    93439327
     9328  case 737:
     9329
     9330/* Line 1806 of yacc.c  */
     9331#line 2865 "parser.yy"
     9332    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     9333    break;
     9334
    93449335  case 738:
    93459336
    93469337/* Line 1806 of yacc.c  */
    9347 #line 2870 "parser.yy"
     9338#line 2867 "parser.yy"
     9339    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     9340    break;
     9341
     9342  case 739:
     9343
     9344/* Line 1806 of yacc.c  */
     9345#line 2874 "parser.yy"
    93489346    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    93499347    break;
    93509348
    9351   case 739:
    9352 
    9353 /* Line 1806 of yacc.c  */
    9354 #line 2872 "parser.yy"
     9349  case 740:
     9350
     9351/* Line 1806 of yacc.c  */
     9352#line 2876 "parser.yy"
    93559353    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    93569354    break;
    93579355
    9358   case 740:
    9359 
    9360 /* Line 1806 of yacc.c  */
    9361 #line 2874 "parser.yy"
     9356  case 741:
     9357
     9358/* Line 1806 of yacc.c  */
     9359#line 2878 "parser.yy"
    93629360    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    93639361    break;
    93649362
    9365   case 741:
    9366 
    9367 /* Line 1806 of yacc.c  */
    9368 #line 2876 "parser.yy"
     9363  case 742:
     9364
     9365/* Line 1806 of yacc.c  */
     9366#line 2880 "parser.yy"
    93699367    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
    93709368    break;
    93719369
    9372   case 742:
    9373 
    9374 /* Line 1806 of yacc.c  */
    9375 #line 2878 "parser.yy"
     9370  case 743:
     9371
     9372/* Line 1806 of yacc.c  */
     9373#line 2882 "parser.yy"
    93769374    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    93779375    break;
    93789376
    9379   case 743:
    9380 
    9381 /* Line 1806 of yacc.c  */
    9382 #line 2881 "parser.yy"
     9377  case 744:
     9378
     9379/* Line 1806 of yacc.c  */
     9380#line 2885 "parser.yy"
    93839381    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    93849382    break;
    93859383
    9386   case 744:
    9387 
    9388 /* Line 1806 of yacc.c  */
    9389 #line 2883 "parser.yy"
     9384  case 745:
     9385
     9386/* Line 1806 of yacc.c  */
     9387#line 2887 "parser.yy"
    93909388    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    93919389    break;
    93929390
    9393   case 745:
    9394 
    9395 /* Line 1806 of yacc.c  */
    9396 #line 2885 "parser.yy"
     9391  case 746:
     9392
     9393/* Line 1806 of yacc.c  */
     9394#line 2889 "parser.yy"
    93979395    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    93989396    break;
    93999397
    9400   case 746:
    9401 
    9402 /* Line 1806 of yacc.c  */
    9403 #line 2887 "parser.yy"
     9398  case 747:
     9399
     9400/* Line 1806 of yacc.c  */
     9401#line 2891 "parser.yy"
    94049402    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
    94059403    break;
    94069404
    9407   case 747:
    9408 
    9409 /* Line 1806 of yacc.c  */
    9410 #line 2889 "parser.yy"
     9405  case 748:
     9406
     9407/* Line 1806 of yacc.c  */
     9408#line 2893 "parser.yy"
    94119409    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    94129410    break;
    94139411
    9414   case 748:
    9415 
    9416 /* Line 1806 of yacc.c  */
    9417 #line 2894 "parser.yy"
     9412  case 749:
     9413
     9414/* Line 1806 of yacc.c  */
     9415#line 2898 "parser.yy"
    94189416    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
    94199417    break;
    94209418
    9421   case 749:
    9422 
    9423 /* Line 1806 of yacc.c  */
    9424 #line 2896 "parser.yy"
     9419  case 750:
     9420
     9421/* Line 1806 of yacc.c  */
     9422#line 2900 "parser.yy"
    94259423    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
    94269424    break;
    94279425
    9428   case 750:
    9429 
    9430 /* Line 1806 of yacc.c  */
    9431 #line 2901 "parser.yy"
     9426  case 751:
     9427
     9428/* Line 1806 of yacc.c  */
     9429#line 2905 "parser.yy"
    94329430    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); }
    94339431    break;
    94349432
    9435   case 751:
    9436 
    9437 /* Line 1806 of yacc.c  */
    9438 #line 2903 "parser.yy"
     9433  case 752:
     9434
     9435/* Line 1806 of yacc.c  */
     9436#line 2907 "parser.yy"
    94399437    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); }
    94409438    break;
    94419439
    9442   case 753:
    9443 
    9444 /* Line 1806 of yacc.c  */
    9445 #line 2930 "parser.yy"
     9440  case 754:
     9441
     9442/* Line 1806 of yacc.c  */
     9443#line 2934 "parser.yy"
    94469444    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    94479445    break;
    94489446
    9449   case 757:
    9450 
    9451 /* Line 1806 of yacc.c  */
    9452 #line 2941 "parser.yy"
    9453     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    9454     break;
    9455 
    94569447  case 758:
    9457 
    9458 /* Line 1806 of yacc.c  */
    9459 #line 2943 "parser.yy"
    9460     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    9461     break;
    9462 
    9463   case 759:
    94649448
    94659449/* Line 1806 of yacc.c  */
     
    94689452    break;
    94699453
    9470   case 760:
     9454  case 759:
    94719455
    94729456/* Line 1806 of yacc.c  */
     
    94759459    break;
    94769460
    9477   case 761:
     9461  case 760:
    94789462
    94799463/* Line 1806 of yacc.c  */
     
    94829466    break;
    94839467
    9484   case 762:
     9468  case 761:
    94859469
    94869470/* Line 1806 of yacc.c  */
     
    94899473    break;
    94909474
     9475  case 762:
     9476
     9477/* Line 1806 of yacc.c  */
     9478#line 2953 "parser.yy"
     9479    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     9480    break;
     9481
    94919482  case 763:
    94929483
    94939484/* Line 1806 of yacc.c  */
    9494 #line 2958 "parser.yy"
     9485#line 2955 "parser.yy"
     9486    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     9487    break;
     9488
     9489  case 764:
     9490
     9491/* Line 1806 of yacc.c  */
     9492#line 2962 "parser.yy"
    94959493    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
    94969494    break;
    94979495
    9498   case 764:
    9499 
    9500 /* Line 1806 of yacc.c  */
    9501 #line 2960 "parser.yy"
     9496  case 765:
     9497
     9498/* Line 1806 of yacc.c  */
     9499#line 2964 "parser.yy"
    95029500    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
    95039501    break;
    95049502
    9505   case 765:
    9506 
    9507 /* Line 1806 of yacc.c  */
    9508 #line 2962 "parser.yy"
     9503  case 766:
     9504
     9505/* Line 1806 of yacc.c  */
     9506#line 2966 "parser.yy"
    95099507    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    95109508    break;
    95119509
    9512   case 766:
    9513 
    9514 /* Line 1806 of yacc.c  */
    9515 #line 2964 "parser.yy"
     9510  case 767:
     9511
     9512/* Line 1806 of yacc.c  */
     9513#line 2968 "parser.yy"
    95169514    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
    95179515    break;
    95189516
    9519   case 767:
    9520 
    9521 /* Line 1806 of yacc.c  */
    9522 #line 2966 "parser.yy"
     9517  case 768:
     9518
     9519/* Line 1806 of yacc.c  */
     9520#line 2970 "parser.yy"
    95239521    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
    95249522    break;
    95259523
    9526   case 768:
    9527 
    9528 /* Line 1806 of yacc.c  */
    9529 #line 2968 "parser.yy"
     9524  case 769:
     9525
     9526/* Line 1806 of yacc.c  */
     9527#line 2972 "parser.yy"
    95309528    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    95319529    break;
    95329530
    9533   case 769:
    9534 
    9535 /* Line 1806 of yacc.c  */
    9536 #line 2973 "parser.yy"
     9531  case 770:
     9532
     9533/* Line 1806 of yacc.c  */
     9534#line 2977 "parser.yy"
    95379535    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
    95389536    break;
    95399537
    9540   case 770:
    9541 
    9542 /* Line 1806 of yacc.c  */
    9543 #line 2980 "parser.yy"
     9538  case 771:
     9539
     9540/* Line 1806 of yacc.c  */
     9541#line 2984 "parser.yy"
    95449542    { (yyval.decl) = DeclarationNode::newFunction( nullptr, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), nullptr ); }
    95459543    break;
    95469544
    9547   case 771:
    9548 
    9549 /* Line 1806 of yacc.c  */
    9550 #line 2982 "parser.yy"
     9545  case 772:
     9546
     9547/* Line 1806 of yacc.c  */
     9548#line 2986 "parser.yy"
    95519549    { (yyval.decl) = DeclarationNode::newFunction( nullptr, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), nullptr ); }
    95529550    break;
    95539551
    9554   case 774:
    9555 
    9556 /* Line 1806 of yacc.c  */
    9557 #line 3006 "parser.yy"
     9552  case 775:
     9553
     9554/* Line 1806 of yacc.c  */
     9555#line 3010 "parser.yy"
    95589556    { (yyval.en) = nullptr; }
    95599557    break;
    95609558
    9561   case 775:
    9562 
    9563 /* Line 1806 of yacc.c  */
    9564 #line 3008 "parser.yy"
     9559  case 776:
     9560
     9561/* Line 1806 of yacc.c  */
     9562#line 3012 "parser.yy"
    95659563    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    95669564    break;
     
    95699567
    95709568/* Line 1806 of yacc.c  */
    9571 #line 9572 "Parser/parser.cc"
     9569#line 9570 "Parser/parser.cc"
    95729570      default: break;
    95739571    }
     
    98009798
    98019799/* Line 2067 of yacc.c  */
    9802 #line 3011 "parser.yy"
     9800#line 3015 "parser.yy"
    98039801
    98049802// ----end of grammar----
  • src/Parser/parser.h

    r7fe2498 ra7c90d4  
    3939   enum yytokentype {
    4040     TYPEDEF = 258,
    41      AUTO = 259,
    42      EXTERN = 260,
    43      REGISTER = 261,
    44      STATIC = 262,
    45      INLINE = 263,
    46      FORTRAN = 264,
    47      CONST = 265,
    48      VOLATILE = 266,
    49      RESTRICT = 267,
    50      FORALL = 268,
    51      LVALUE = 269,
    52      VOID = 270,
    53      CHAR = 271,
    54      SHORT = 272,
    55      INT = 273,
    56      LONG = 274,
    57      FLOAT = 275,
    58      DOUBLE = 276,
    59      SIGNED = 277,
    60      UNSIGNED = 278,
    61      ZERO_T = 279,
    62      ONE_T = 280,
    63      VALIST = 281,
    64      BOOL = 282,
    65      COMPLEX = 283,
    66      IMAGINARY = 284,
    67      TYPEOF = 285,
    68      LABEL = 286,
    69      ENUM = 287,
    70      STRUCT = 288,
    71      UNION = 289,
    72      OTYPE = 290,
    73      FTYPE = 291,
    74      DTYPE = 292,
    75      TTYPE = 293,
    76      TRAIT = 294,
    77      SIZEOF = 295,
    78      OFFSETOF = 296,
    79      ATTRIBUTE = 297,
    80      EXTENSION = 298,
    81      IF = 299,
    82      ELSE = 300,
    83      SWITCH = 301,
    84      CASE = 302,
    85      DEFAULT = 303,
    86      DO = 304,
    87      WHILE = 305,
    88      FOR = 306,
    89      BREAK = 307,
    90      CONTINUE = 308,
    91      GOTO = 309,
    92      RETURN = 310,
    93      CHOOSE = 311,
    94      DISABLE = 312,
    95      ENABLE = 313,
    96      FALLTHRU = 314,
    97      TRY = 315,
    98      CATCH = 316,
    99      CATCHRESUME = 317,
    100      FINALLY = 318,
    101      THROW = 319,
    102      THROWRESUME = 320,
    103      AT = 321,
    104      ASM = 322,
    105      ALIGNAS = 323,
    106      ALIGNOF = 324,
    107      ATOMIC = 325,
    108      GENERIC = 326,
    109      NORETURN = 327,
    110      STATICASSERT = 328,
    111      THREADLOCAL = 329,
    112      IDENTIFIER = 330,
    113      QUOTED_IDENTIFIER = 331,
    114      TYPEDEFname = 332,
    115      TYPEGENname = 333,
    116      ATTR_IDENTIFIER = 334,
    117      ATTR_TYPEDEFname = 335,
    118      ATTR_TYPEGENname = 336,
    119      INTEGERconstant = 337,
    120      CHARACTERconstant = 338,
    121      STRINGliteral = 339,
    122      REALDECIMALconstant = 340,
    123      REALFRACTIONconstant = 341,
    124      FLOATINGconstant = 342,
    125      ZERO = 343,
    126      ONE = 344,
    127      ARROW = 345,
    128      ICR = 346,
    129      DECR = 347,
    130      LS = 348,
    131      RS = 349,
    132      LE = 350,
    133      GE = 351,
    134      EQ = 352,
    135      NE = 353,
    136      ANDAND = 354,
    137      OROR = 355,
    138      ELLIPSIS = 356,
    139      MULTassign = 357,
    140      DIVassign = 358,
    141      MODassign = 359,
    142      PLUSassign = 360,
    143      MINUSassign = 361,
    144      LSassign = 362,
    145      RSassign = 363,
    146      ANDassign = 364,
    147      ERassign = 365,
    148      ORassign = 366,
    149      ATassign = 367,
    150      THEN = 368
     41     EXTERN = 259,
     42     STATIC = 260,
     43     AUTO = 261,
     44     REGISTER = 262,
     45     THREADLOCAL = 263,
     46     INLINE = 264,
     47     FORTRAN = 265,
     48     NORETURN = 266,
     49     CONST = 267,
     50     VOLATILE = 268,
     51     RESTRICT = 269,
     52     ATOMIC = 270,
     53     FORALL = 271,
     54     LVALUE = 272,
     55     MUTEX = 273,
     56     VOID = 274,
     57     CHAR = 275,
     58     SHORT = 276,
     59     INT = 277,
     60     LONG = 278,
     61     FLOAT = 279,
     62     DOUBLE = 280,
     63     SIGNED = 281,
     64     UNSIGNED = 282,
     65     ZERO_T = 283,
     66     ONE_T = 284,
     67     VALIST = 285,
     68     BOOL = 286,
     69     COMPLEX = 287,
     70     IMAGINARY = 288,
     71     TYPEOF = 289,
     72     LABEL = 290,
     73     ENUM = 291,
     74     STRUCT = 292,
     75     UNION = 293,
     76     OTYPE = 294,
     77     FTYPE = 295,
     78     DTYPE = 296,
     79     TTYPE = 297,
     80     TRAIT = 298,
     81     SIZEOF = 299,
     82     OFFSETOF = 300,
     83     ATTRIBUTE = 301,
     84     EXTENSION = 302,
     85     IF = 303,
     86     ELSE = 304,
     87     SWITCH = 305,
     88     CASE = 306,
     89     DEFAULT = 307,
     90     DO = 308,
     91     WHILE = 309,
     92     FOR = 310,
     93     BREAK = 311,
     94     CONTINUE = 312,
     95     GOTO = 313,
     96     RETURN = 314,
     97     CHOOSE = 315,
     98     DISABLE = 316,
     99     ENABLE = 317,
     100     FALLTHRU = 318,
     101     TRY = 319,
     102     CATCH = 320,
     103     CATCHRESUME = 321,
     104     FINALLY = 322,
     105     THROW = 323,
     106     THROWRESUME = 324,
     107     AT = 325,
     108     ASM = 326,
     109     ALIGNAS = 327,
     110     ALIGNOF = 328,
     111     GENERIC = 329,
     112     STATICASSERT = 330,
     113     IDENTIFIER = 331,
     114     QUOTED_IDENTIFIER = 332,
     115     TYPEDEFname = 333,
     116     TYPEGENname = 334,
     117     ATTR_IDENTIFIER = 335,
     118     ATTR_TYPEDEFname = 336,
     119     ATTR_TYPEGENname = 337,
     120     INTEGERconstant = 338,
     121     CHARACTERconstant = 339,
     122     STRINGliteral = 340,
     123     REALDECIMALconstant = 341,
     124     REALFRACTIONconstant = 342,
     125     FLOATINGconstant = 343,
     126     ZERO = 344,
     127     ONE = 345,
     128     ARROW = 346,
     129     ICR = 347,
     130     DECR = 348,
     131     LS = 349,
     132     RS = 350,
     133     LE = 351,
     134     GE = 352,
     135     EQ = 353,
     136     NE = 354,
     137     ANDAND = 355,
     138     OROR = 356,
     139     ELLIPSIS = 357,
     140     MULTassign = 358,
     141     DIVassign = 359,
     142     MODassign = 360,
     143     PLUSassign = 361,
     144     MINUSassign = 362,
     145     LSassign = 363,
     146     RSassign = 364,
     147     ANDassign = 365,
     148     ERassign = 366,
     149     ORassign = 367,
     150     ATassign = 368,
     151     THEN = 369
    151152   };
    152153#endif
    153154/* Tokens.  */
    154155#define TYPEDEF 258
    155 #define AUTO 259
    156 #define EXTERN 260
    157 #define REGISTER 261
    158 #define STATIC 262
    159 #define INLINE 263
    160 #define FORTRAN 264
    161 #define CONST 265
    162 #define VOLATILE 266
    163 #define RESTRICT 267
    164 #define FORALL 268
    165 #define LVALUE 269
    166 #define VOID 270
    167 #define CHAR 271
    168 #define SHORT 272
    169 #define INT 273
    170 #define LONG 274
    171 #define FLOAT 275
    172 #define DOUBLE 276
    173 #define SIGNED 277
    174 #define UNSIGNED 278
    175 #define ZERO_T 279
    176 #define ONE_T 280
    177 #define VALIST 281
    178 #define BOOL 282
    179 #define COMPLEX 283
    180 #define IMAGINARY 284
    181 #define TYPEOF 285
    182 #define LABEL 286
    183 #define ENUM 287
    184 #define STRUCT 288
    185 #define UNION 289
    186 #define OTYPE 290
    187 #define FTYPE 291
    188 #define DTYPE 292
    189 #define TTYPE 293
    190 #define TRAIT 294
    191 #define SIZEOF 295
    192 #define OFFSETOF 296
    193 #define ATTRIBUTE 297
    194 #define EXTENSION 298
    195 #define IF 299
    196 #define ELSE 300
    197 #define SWITCH 301
    198 #define CASE 302
    199 #define DEFAULT 303
    200 #define DO 304
    201 #define WHILE 305
    202 #define FOR 306
    203 #define BREAK 307
    204 #define CONTINUE 308
    205 #define GOTO 309
    206 #define RETURN 310
    207 #define CHOOSE 311
    208 #define DISABLE 312
    209 #define ENABLE 313
    210 #define FALLTHRU 314
    211 #define TRY 315
    212 #define CATCH 316
    213 #define CATCHRESUME 317
    214 #define FINALLY 318
    215 #define THROW 319
    216 #define THROWRESUME 320
    217 #define AT 321
    218 #define ASM 322
    219 #define ALIGNAS 323
    220 #define ALIGNOF 324
    221 #define ATOMIC 325
    222 #define GENERIC 326
    223 #define NORETURN 327
    224 #define STATICASSERT 328
    225 #define THREADLOCAL 329
    226 #define IDENTIFIER 330
    227 #define QUOTED_IDENTIFIER 331
    228 #define TYPEDEFname 332
    229 #define TYPEGENname 333
    230 #define ATTR_IDENTIFIER 334
    231 #define ATTR_TYPEDEFname 335
    232 #define ATTR_TYPEGENname 336
    233 #define INTEGERconstant 337
    234 #define CHARACTERconstant 338
    235 #define STRINGliteral 339
    236 #define REALDECIMALconstant 340
    237 #define REALFRACTIONconstant 341
    238 #define FLOATINGconstant 342
    239 #define ZERO 343
    240 #define ONE 344
    241 #define ARROW 345
    242 #define ICR 346
    243 #define DECR 347
    244 #define LS 348
    245 #define RS 349
    246 #define LE 350
    247 #define GE 351
    248 #define EQ 352
    249 #define NE 353
    250 #define ANDAND 354
    251 #define OROR 355
    252 #define ELLIPSIS 356
    253 #define MULTassign 357
    254 #define DIVassign 358
    255 #define MODassign 359
    256 #define PLUSassign 360
    257 #define MINUSassign 361
    258 #define LSassign 362
    259 #define RSassign 363
    260 #define ANDassign 364
    261 #define ERassign 365
    262 #define ORassign 366
    263 #define ATassign 367
    264 #define THEN 368
     156#define EXTERN 259
     157#define STATIC 260
     158#define AUTO 261
     159#define REGISTER 262
     160#define THREADLOCAL 263
     161#define INLINE 264
     162#define FORTRAN 265
     163#define NORETURN 266
     164#define CONST 267
     165#define VOLATILE 268
     166#define RESTRICT 269
     167#define ATOMIC 270
     168#define FORALL 271
     169#define LVALUE 272
     170#define MUTEX 273
     171#define VOID 274
     172#define CHAR 275
     173#define SHORT 276
     174#define INT 277
     175#define LONG 278
     176#define FLOAT 279
     177#define DOUBLE 280
     178#define SIGNED 281
     179#define UNSIGNED 282
     180#define ZERO_T 283
     181#define ONE_T 284
     182#define VALIST 285
     183#define BOOL 286
     184#define COMPLEX 287
     185#define IMAGINARY 288
     186#define TYPEOF 289
     187#define LABEL 290
     188#define ENUM 291
     189#define STRUCT 292
     190#define UNION 293
     191#define OTYPE 294
     192#define FTYPE 295
     193#define DTYPE 296
     194#define TTYPE 297
     195#define TRAIT 298
     196#define SIZEOF 299
     197#define OFFSETOF 300
     198#define ATTRIBUTE 301
     199#define EXTENSION 302
     200#define IF 303
     201#define ELSE 304
     202#define SWITCH 305
     203#define CASE 306
     204#define DEFAULT 307
     205#define DO 308
     206#define WHILE 309
     207#define FOR 310
     208#define BREAK 311
     209#define CONTINUE 312
     210#define GOTO 313
     211#define RETURN 314
     212#define CHOOSE 315
     213#define DISABLE 316
     214#define ENABLE 317
     215#define FALLTHRU 318
     216#define TRY 319
     217#define CATCH 320
     218#define CATCHRESUME 321
     219#define FINALLY 322
     220#define THROW 323
     221#define THROWRESUME 324
     222#define AT 325
     223#define ASM 326
     224#define ALIGNAS 327
     225#define ALIGNOF 328
     226#define GENERIC 329
     227#define STATICASSERT 330
     228#define IDENTIFIER 331
     229#define QUOTED_IDENTIFIER 332
     230#define TYPEDEFname 333
     231#define TYPEGENname 334
     232#define ATTR_IDENTIFIER 335
     233#define ATTR_TYPEDEFname 336
     234#define ATTR_TYPEGENname 337
     235#define INTEGERconstant 338
     236#define CHARACTERconstant 339
     237#define STRINGliteral 340
     238#define REALDECIMALconstant 341
     239#define REALFRACTIONconstant 342
     240#define FLOATINGconstant 343
     241#define ZERO 344
     242#define ONE 345
     243#define ARROW 346
     244#define ICR 347
     245#define DECR 348
     246#define LS 349
     247#define RS 350
     248#define LE 351
     249#define GE 352
     250#define EQ 353
     251#define NE 354
     252#define ANDAND 355
     253#define OROR 356
     254#define ELLIPSIS 357
     255#define MULTassign 358
     256#define DIVassign 359
     257#define MODassign 360
     258#define PLUSassign 361
     259#define MINUSassign 362
     260#define LSassign 363
     261#define RSassign 364
     262#define ANDassign 365
     263#define ERassign 366
     264#define ORassign 367
     265#define ATassign 368
     266#define THEN 369
    265267
    266268
     
    272274
    273275/* Line 2068 of yacc.c  */
    274 #line 139 "parser.yy"
     276#line 141 "parser.yy"
    275277
    276278        Token tok;
     
    292294
    293295/* Line 2068 of yacc.c  */
    294 #line 295 "Parser/parser.h"
     296#line 297 "Parser/parser.h"
    295297} YYSTYPE;
    296298# define YYSTYPE_IS_TRIVIAL 1
  • src/Parser/parser.yy

    r7fe2498 ra7c90d4  
    1010// Created On       : Sat Sep  1 20:22:55 2001
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Mar  3 21:35:28 2017
    13 // Update Count     : 2222
     12// Last Modified On : Sun Mar  5 15:48:24 2017
     13// Update Count     : 2227
    1414//
    1515
     
    9191// keywords
    9292%token TYPEDEF
    93 %token AUTO EXTERN REGISTER STATIC
    94 %token INLINE                                                                                   // C99
    95 %token FORTRAN                                                                                  // C99, extension ISO/IEC 9899:1999 Section J.5.9(1)
     93%token EXTERN STATIC AUTO REGISTER
     94%token THREADLOCAL                                                                              // C11
     95%token INLINE FORTRAN                                                                   // C99, extension ISO/IEC 9899:1999 Section J.5.9(1)
     96%token NORETURN                                                                                 // C11
    9697%token CONST VOLATILE
    9798%token RESTRICT                                                                                 // C99
    98 %token FORALL LVALUE                                                                    // CFA
     99%token ATOMIC                                                                                   // C11
     100%token FORALL LVALUE MUTEX                                                              // CFA
    99101%token VOID CHAR SHORT INT LONG FLOAT DOUBLE SIGNED UNSIGNED ZERO_T ONE_T
    100102%token VALIST                                                                                   // GCC
     
    102104%token TYPEOF LABEL                                                                             // GCC
    103105%token ENUM STRUCT UNION
    104 %token OTYPE FTYPE DTYPE TTYPE TRAIT                                                    // CFA
     106%token OTYPE FTYPE DTYPE TTYPE TRAIT                                    // CFA
    105107%token SIZEOF OFFSETOF
    106108%token ATTRIBUTE EXTENSION                                                              // GCC
     
    108110%token CHOOSE DISABLE ENABLE FALLTHRU TRY CATCH CATCHRESUME FINALLY THROW THROWRESUME AT        // CFA
    109111%token ASM                                                                                              // C99, extension ISO/IEC 9899:1999 Section J.5.10(1)
    110 %token ALIGNAS ALIGNOF ATOMIC GENERIC NORETURN STATICASSERT THREADLOCAL // C11
     112%token ALIGNAS ALIGNOF GENERIC STATICASSERT                             // C11
    111113
    112114// names and constants: lexer differentiates between identifier and typedef names
     
    14071409        | LVALUE                                                                                        // CFA
    14081410                { $$ = DeclarationNode::newTypeQualifier( DeclarationNode::Lvalue ); }
     1411        | MUTEX
     1412                { $$ = DeclarationNode::newTypeQualifier( DeclarationNode::Mutex ); }
    14091413        | ATOMIC
    14101414                { $$ = DeclarationNode::newTypeQualifier( DeclarationNode::Atomic ); }
     
    20322036                { $$ = $3->addQualifiers( $1 ); }
    20332037        | type_declaring_list ',' type_declarator
    2034                 { $$ = $1->appendList( $3->copyStorageClasses( $1 ) ); }
     2038                { $$ = $1->appendList( $3->copySpecifiers( $1 ) ); }
    20352039        ;
    20362040
  • src/ResolvExpr/Unify.cc

    r7fe2498 ra7c90d4  
    1010// Created On       : Sun May 17 12:27:10 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Mar  2 17:37:05 2016
    13 // Update Count     : 37
     12// Last Modified On : Mon Mar  6 23:37:38 2017
     13// Update Count     : 39
    1414//
    1515
     
    541541                        flatten( dcl->get_type(), back_inserter( types ) );
    542542                        for ( Type * t : types ) {
    543                                 dst.push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::C, nullptr, t, nullptr ) );
     543                                dst.push_back( new ObjectDecl( "", DeclarationNode::StorageClasses(), LinkageSpec::C, nullptr, t, nullptr ) );
    544544                        }
    545545                        delete dcl;
  • src/SymTab/Autogen.cc

    r7fe2498 ra7c90d4  
    1010// Created On       : Thu Mar 03 15:45:56 2016
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Mar  3 22:00:55 2017
    13 // Update Count     : 30
     12// Last Modified On : Tue Mar  7 07:42:44 2017
     13// Update Count     : 51
    1414//
    1515
     
    125125        FunctionType * genDefaultType( Type * paramType ) {
    126126                FunctionType *ftype = new FunctionType( Type::Qualifiers(), false );
    127                 ObjectDecl *dstParam = new ObjectDecl( "_dst", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, nullptr, new PointerType( Type::Qualifiers(), paramType->clone() ), nullptr );
     127                ObjectDecl *dstParam = new ObjectDecl( "_dst", DeclarationNode::StorageClasses(), LinkageSpec::Cforall, nullptr, new PointerType( Type::Qualifiers(), paramType->clone() ), nullptr );
    128128                ftype->get_parameters().push_back( dstParam );
    129129
     
    134134        FunctionType * genCopyType( Type * paramType ) {
    135135                FunctionType *ftype = genDefaultType( paramType );
    136                 ObjectDecl *srcParam = new ObjectDecl( "_src", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, nullptr, paramType->clone(), nullptr );
     136                ObjectDecl *srcParam = new ObjectDecl( "_src", DeclarationNode::StorageClasses(), LinkageSpec::Cforall, nullptr, paramType->clone(), nullptr );
    137137                ftype->get_parameters().push_back( srcParam );
    138138                return ftype;
     
    142142        FunctionType * genAssignType( Type * paramType ) {
    143143                FunctionType *ftype = genCopyType( paramType );
    144                 ObjectDecl *returnVal = new ObjectDecl( "_ret", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, nullptr, paramType->clone(), nullptr );
     144                ObjectDecl *returnVal = new ObjectDecl( "_ret", DeclarationNode::StorageClasses(), LinkageSpec::Cforall, nullptr, paramType->clone(), nullptr );
    145145                ftype->get_returnVals().push_back( returnVal );
    146146                return ftype;
     
    161161                // Routines at global scope marked "static" to prevent multiple definitions in separate translation units
    162162                // because each unit generates copies of the default routines for each aggregate.
    163                 DeclarationNode::StorageClass sc = functionNesting > 0 ? DeclarationNode::NoStorageClass : DeclarationNode::Static;
     163//              DeclarationNode::StorageClass sc = functionNesting > 0 ? DeclarationNode::NoStorageClass : DeclarationNode::Static;
     164                DeclarationNode::StorageClasses scs = functionNesting > 0 ? DeclarationNode::StorageClasses() : DeclarationNode::StorageClasses( DeclarationNode::StaticClass );
    164165                LinkageSpec::Spec spec = isIntrinsic ? LinkageSpec::Intrinsic : LinkageSpec::AutoGen;
    165                 FunctionDecl * decl = new FunctionDecl( fname, sc, spec, ftype, new CompoundStmt( noLabels ),
    166                                                                                                 std::list< Attribute * >(), DeclarationNode::FuncSpecifier( DeclarationNode::InlineSpec ) );
     166                FunctionDecl * decl = new FunctionDecl( fname, scs, spec, ftype, new CompoundStmt( noLabels ),
     167                                                                                                std::list< Attribute * >(), DeclarationNode::FuncSpecifiers( DeclarationNode::InlineSpec ) );
    167168                decl->fixUniqueId();
    168169                return decl;
     
    459460                                        continue;
    460461                                }
    461                                 memCtorType->get_parameters().push_back( new ObjectDecl( member->get_name(), DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, member->get_type()->clone(), 0 ) );
     462                                memCtorType->get_parameters().push_back( new ObjectDecl( member->get_name(), DeclarationNode::StorageClasses(), LinkageSpec::Cforall, 0, member->get_type()->clone(), 0 ) );
    462463                                FunctionDecl * ctor = genFunc( "?{}", memCtorType->clone(), functionNesting );
    463464                                makeStructFieldCtorBody( aggregateDecl->get_members().begin(), aggregateDecl->get_members().end(), ctor, isDynamicLayout );
     
    539540                for ( Declaration * member : aggregateDecl->get_members() ) {
    540541                        if ( DeclarationWithType * field = dynamic_cast< DeclarationWithType * >( member ) ) {
    541                                 ObjectDecl * srcParam = new ObjectDecl( "src", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, field->get_type()->clone(), 0 );
     542                                ObjectDecl * srcParam = new ObjectDecl( "src", DeclarationNode::StorageClasses(), LinkageSpec::Cforall, 0, field->get_type()->clone(), 0 );
    542543
    543544                                FunctionType * memCtorType = ctorType->clone();
     
    604605                TypeInstType *typeInst = new TypeInstType( Type::Qualifiers(), typeDecl->get_name(), false );
    605606                typeInst->set_baseType( typeDecl );
    606                 ObjectDecl *src = new ObjectDecl( "_src", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, nullptr, typeInst->clone(), nullptr );
    607                 ObjectDecl *dst = new ObjectDecl( "_dst", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, nullptr, new PointerType( Type::Qualifiers(), typeInst->clone() ), nullptr );
     607                ObjectDecl *src = new ObjectDecl( "_src", DeclarationNode::StorageClasses(), LinkageSpec::Cforall, nullptr, typeInst->clone(), nullptr );
     608                ObjectDecl *dst = new ObjectDecl( "_dst", DeclarationNode::StorageClasses(), LinkageSpec::Cforall, nullptr, new PointerType( Type::Qualifiers(), typeInst->clone() ), nullptr );
    608609
    609610                std::list< Statement * > stmts;
     
    617618                } // if
    618619                FunctionType *type = new FunctionType( Type::Qualifiers(), false );
    619                 type->get_returnVals().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, typeInst, 0 ) );
     620                type->get_returnVals().push_back( new ObjectDecl( "", DeclarationNode::StorageClasses(), LinkageSpec::Cforall, 0, typeInst, 0 ) );
    620621                type->get_parameters().push_back( dst );
    621622                type->get_parameters().push_back( src );
     
    716717                        if ( TypeInstType * ty = dynamic_cast< TypeInstType * >( t ) ) {
    717718                                if ( ! done.count( ty->get_baseType() ) ) {
    718                                         TypeDecl * newDecl = new TypeDecl( ty->get_baseType()->get_name(), DeclarationNode::NoStorageClass, nullptr, TypeDecl::Any );
     719                                        TypeDecl * newDecl = new TypeDecl( ty->get_baseType()->get_name(), DeclarationNode::StorageClasses(), nullptr, TypeDecl::Any );
    719720                                        TypeInstType * inst = new TypeInstType( Type::Qualifiers(), newDecl->get_name(), newDecl );
    720                                         newDecl->get_assertions().push_back( new FunctionDecl( "?=?", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, genAssignType( inst ), nullptr,
    721                                                                                                                                                    std::list< Attribute * >(), DeclarationNode::FuncSpec( DeclarationNode::InlineSpec ) ) );
    722                                         newDecl->get_assertions().push_back( new FunctionDecl( "?{}", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, genDefaultType( inst ), nullptr,
    723                                                                                                                                                    std::list< Attribute * >(), DeclarationNode::FuncSpec( DeclarationNode::InlineSpec ) ) );
    724                                         newDecl->get_assertions().push_back( new FunctionDecl( "?{}", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, genCopyType( inst ), nullptr,
    725                                                                                                                                                    std::list< Attribute * >(), DeclarationNode::FuncSpec( DeclarationNode::InlineSpec ) ) );
    726                                         newDecl->get_assertions().push_back( new FunctionDecl( "^?{}", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, genDefaultType( inst ), nullptr,
    727                                                                                                                                                    std::list< Attribute * >(), DeclarationNode::FuncSpec( DeclarationNode::InlineSpec ) ) );
     721                                        newDecl->get_assertions().push_back( new FunctionDecl( "?=?", DeclarationNode::StorageClasses(), LinkageSpec::Cforall, genAssignType( inst ), nullptr,
     722                                                                                                                                                   std::list< Attribute * >(), DeclarationNode::FuncSpecifiers( DeclarationNode::InlineSpec ) ) );
     723                                        newDecl->get_assertions().push_back( new FunctionDecl( "?{}", DeclarationNode::StorageClasses(), LinkageSpec::Cforall, genDefaultType( inst ), nullptr,
     724                                                                                                                                                   std::list< Attribute * >(), DeclarationNode::FuncSpecifiers( DeclarationNode::InlineSpec ) ) );
     725                                        newDecl->get_assertions().push_back( new FunctionDecl( "?{}", DeclarationNode::StorageClasses(), LinkageSpec::Cforall, genCopyType( inst ), nullptr,
     726                                                                                                                                                   std::list< Attribute * >(), DeclarationNode::FuncSpecifiers( DeclarationNode::InlineSpec ) ) );
     727                                        newDecl->get_assertions().push_back( new FunctionDecl( "^?{}", DeclarationNode::StorageClasses(), LinkageSpec::Cforall, genDefaultType( inst ), nullptr,
     728                                                                                                                                                   std::list< Attribute * >(), DeclarationNode::FuncSpecifiers( DeclarationNode::InlineSpec ) ) );
    728729                                        typeParams.push_back( newDecl );
    729730                                        done.insert( ty->get_baseType() );
  • src/SymTab/Autogen.h

    r7fe2498 ra7c90d4  
    1010// Created On       : Sun May 17 21:53:34 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Feb  1 16:31:00 2017
    13 // Update Count     : 2
     12// Last Modified On : Mon Mar  6 23:33:01 2017
     13// Update Count     : 4
    1414//
    1515
     
    102102                }
    103103
    104                 ObjectDecl *index = new ObjectDecl( indexName.newName(), DeclarationNode::NoStorageClass, LinkageSpec::C, 0, new BasicType( Type::Qualifiers(), BasicType::SignedInt ), new SingleInit( begin, std::list<Expression*>() ) );
     104                ObjectDecl *index = new ObjectDecl( indexName.newName(), DeclarationNode::StorageClasses(), LinkageSpec::C, 0, new BasicType( Type::Qualifiers(), BasicType::SignedInt ), new SingleInit( begin, std::list<Expression*>() ) );
    105105
    106106                UntypedExpr *cond = new UntypedExpr( cmp );
  • src/SymTab/FixFunction.cc

    r7fe2498 ra7c90d4  
    1010// Created On       : Sun May 17 16:19:49 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Mar  2 17:31:10 2016
    13 // Update Count     : 3
     12// Last Modified On : Mon Mar  6 23:36:59 2017
     13// Update Count     : 6
    1414//
    1515
     
    2121
    2222namespace SymTab {
    23         FixFunction::FixFunction() : isVoid( false ) {
    24         }
     23        FixFunction::FixFunction() : isVoid( false ) {}
    2524
    2625        DeclarationWithType * FixFunction::mutate(FunctionDecl *functionDecl) {
    27                 ObjectDecl *pointer = new ObjectDecl( functionDecl->get_name(), functionDecl->get_storageClass(), functionDecl->get_linkage(), 0, new PointerType( Type::Qualifiers(), functionDecl->get_type()->clone() ), 0, functionDecl->get_attributes() );
     26                ObjectDecl *pointer = new ObjectDecl( functionDecl->get_name(), functionDecl->get_storageClasses(), functionDecl->get_linkage(), 0, new PointerType( Type::Qualifiers(), functionDecl->get_type()->clone() ), 0, functionDecl->get_attributes() );
    2827                functionDecl->get_attributes().clear();
    2928                delete functionDecl;
  • src/SymTab/Indexer.cc

    r7fe2498 ra7c90d4  
    1010// Created On       : Sun May 17 21:37:33 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Feb 16 14:59:19 2017
    13 // Update Count     : 13
     12// Last Modified On : Tue Mar  7 07:45:32 2017
     13// Update Count     : 16
    1414//
    1515
     
    738738                                ObjectDecl *newobj = dynamic_cast< ObjectDecl* >( added );
    739739                                ObjectDecl *oldobj = dynamic_cast< ObjectDecl* >( existing );
    740                                 if ( newobj->get_storageClass() != DeclarationNode::Extern && oldobj->get_storageClass() != DeclarationNode::Extern ) {
     740                                if ( ! newobj->get_storageClasses()[ DeclarationNode::Extern ] && ! oldobj->get_storageClasses()[ DeclarationNode::Extern ] ) {
    741741                                        throw SemanticError( "duplicate object definition for ", added );
    742742                                } // if
  • src/SymTab/Validate.cc

    r7fe2498 ra7c90d4  
    1010// Created On       : Sun May 17 21:50:04 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Mar  3 21:02:23 2017
    13 // Update Count     : 332
     12// Last Modified On : Tue Mar  7 07:51:36 2017
     13// Update Count     : 349
    1414//
    1515
     
    9797        class ReturnTypeFixer final : public Visitor {
    9898          public:
    99 
    10099                typedef Visitor Parent;
    101100                using Parent::visit;
     
    104103
    105104                virtual void visit( FunctionDecl * functionDecl );
    106 
    107105                virtual void visit( FunctionType * ftype );
    108106        };
     
    161159          private:
    162160                virtual void visit( FunctionDecl * functionDecl );
    163 
    164161                virtual void visit( ReturnStmt * returnStmt );
    165162
     
    211208
    212209        class CompoundLiteral final : public GenPoly::DeclMutator {
    213                 DeclarationNode::StorageClass storageclass = DeclarationNode::NoStorageClass;
     210                DeclarationNode::StorageClasses storageClasses;
    214211
    215212                using GenPoly::DeclMutator::mutate;
     
    694691                if ( FunctionType *funtype = dynamic_cast<FunctionType *>( ret->get_type() ) ) { // function type?
    695692                        // replace the current object declaration with a function declaration
    696                         FunctionDecl * newDecl = new FunctionDecl( ret->get_name(), ret->get_storageClass(), ret->get_linkage(), funtype, 0, objDecl->get_attributes(), ret->get_funcSpec() );
     693                        FunctionDecl * newDecl = new FunctionDecl( ret->get_name(), ret->get_storageClasses(), ret->get_linkage(), funtype, 0, objDecl->get_attributes(), ret->get_funcSpec() );
    697694                        objDecl->get_attributes().clear();
    698695                        objDecl->set_type( nullptr );
     
    757754                                type = new EnumInstType( Type::Qualifiers(), newDeclEnumDecl->get_name() );
    758755                        } // if
    759                         TypedefDeclPtr tyDecl( new TypedefDecl( aggDecl->get_name(), DeclarationNode::NoStorageClass, type ) );
     756                        TypedefDeclPtr tyDecl( new TypedefDecl( aggDecl->get_name(), DeclarationNode::StorageClasses(), type ) );
    760757                        typedefNames[ aggDecl->get_name() ] = std::make_pair( std::move( tyDecl ), scopeLevel );
    761758                } // if
     
    811808
    812809        DeclarationWithType * CompoundLiteral::mutate( ObjectDecl *objectDecl ) {
    813                 storageclass = objectDecl->get_storageClass();
     810                storageClasses = objectDecl->get_storageClasses();
    814811                DeclarationWithType * temp = Mutator::mutate( objectDecl );
    815                 storageclass = DeclarationNode::NoStorageClass;
    816812                return temp;
    817813        }
     
    822818                static UniqueName indexName( "_compLit" );
    823819
    824                 ObjectDecl *tempvar = new ObjectDecl( indexName.newName(), storageclass, LinkageSpec::C, 0, compLitExpr->get_type(), compLitExpr->get_initializer() );
     820                ObjectDecl *tempvar = new ObjectDecl( indexName.newName(), storageClasses, LinkageSpec::C, 0, compLitExpr->get_type(), compLitExpr->get_initializer() );
    825821                compLitExpr->set_type( 0 );
    826822                compLitExpr->set_initializer( 0 );
     
    861857                        TupleType * tupleType = safe_dynamic_cast< TupleType * >( ResolvExpr::extractResultType( ftype ) );
    862858                        // ensure return value is not destructed by explicitly creating an empty ListInit node wherein maybeConstruct is false.
    863                         ObjectDecl * newRet = new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, tupleType, new ListInit( std::list<Initializer*>(), noDesignators, false ) );
     859                        ObjectDecl * newRet = new ObjectDecl( "", DeclarationNode::StorageClasses(), LinkageSpec::Cforall, 0, tupleType, new ListInit( std::list<Initializer*>(), noDesignators, false ) );
    864860                        deleteAll( retVals );
    865861                        retVals.clear();
  • src/SynTree/AggregateDecl.cc

    r7fe2498 ra7c90d4  
    1010// Created On       : Sun May 17 23:56:39 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Feb  6 15:31:23 2017
    13 // Update Count     : 17
     12// Last Modified On : Tue Mar  7 07:31:47 2017
     13// Update Count     : 19
    1414//
    1515
     
    2020
    2121
    22 AggregateDecl::AggregateDecl( const std::string &name, const std::list< Attribute * > & attributes ) : Parent( name, DeclarationNode::NoStorageClass, LinkageSpec::Cforall ), body( false ), attributes( attributes ) {
     22AggregateDecl::AggregateDecl( const std::string &name, const std::list< Attribute * > & attributes ) : Parent( name, DeclarationNode::StorageClasses(), LinkageSpec::Cforall ), body( false ), attributes( attributes ) {
    2323}
    2424
  • src/SynTree/Declaration.cc

    r7fe2498 ra7c90d4  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Mar  1 20:11:57 2017
    13 // Update Count     : 17
     12// Last Modified On : Tue Mar  7 07:31:11 2017
     13// Update Count     : 23
    1414//
    1515
     
    2727static IdMapType idMap;
    2828
    29 Declaration::Declaration( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Spec linkage )
    30                 : name( name ), storageClass( sc ), linkage( linkage ), uniqueId( 0 ) {
     29Declaration::Declaration( const std::string &name, DeclarationNode::StorageClasses scs, LinkageSpec::Spec linkage )
     30                : name( name ), storageClasses( scs ), linkage( linkage ), uniqueId( 0 ) {
    3131}
    3232
    3333Declaration::Declaration( const Declaration &other )
    34         : name( other.name ), storageClass( other.storageClass ), linkage( other.linkage ), uniqueId( other.uniqueId ) {
     34        : name( other.name ), storageClasses( other.storageClasses ), linkage( other.linkage ), uniqueId( other.uniqueId ) {
    3535}
    3636
     
    6666
    6767
    68 AsmDecl::AsmDecl( AsmStmt *stmt ) : Declaration( "", DeclarationNode::NoStorageClass, LinkageSpec::C ), stmt( stmt ) {
     68AsmDecl::AsmDecl( AsmStmt *stmt ) : Declaration( "", DeclarationNode::StorageClasses(), LinkageSpec::C ), stmt( stmt ) {
    6969}
    7070
  • src/SynTree/Declaration.h

    r7fe2498 ra7c90d4  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Mar  3 20:59:27 2017
    13 // Update Count     : 96
     12// Last Modified On : Tue Mar  7 07:40:42 2017
     13// Update Count     : 113
    1414//
    1515
     
    2828class Declaration : public BaseSyntaxNode {
    2929  public:
    30         Declaration( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Spec linkage );
     30        Declaration( const std::string &name, DeclarationNode::StorageClasses scs, LinkageSpec::Spec linkage );
    3131        Declaration( const Declaration &other );
    3232        virtual ~Declaration();
     
    3434        const std::string &get_name() const { return name; }
    3535        void set_name( std::string newValue ) { name = newValue; }
    36         DeclarationNode::StorageClass get_storageClass() const { return storageClass; }
    37         void set_storageClass( DeclarationNode::StorageClass newValue ) { storageClass = newValue; }
     36
     37        DeclarationNode::StorageClasses get_storageClasses() const { return storageClasses; }
     38
    3839        LinkageSpec::Spec get_linkage() const { return linkage; }
    3940        void set_linkage( LinkageSpec::Spec newValue ) { linkage = newValue; }
     41
    4042        UniqueId get_uniqueId() const { return uniqueId; }
     43
    4144        bool get_extension() const { return extension; }
    4245        Declaration *set_extension( bool exten ) { extension = exten; return this; }
     
    5356  private:
    5457        std::string name;
    55         DeclarationNode::StorageClass storageClass;
     58        DeclarationNode::StorageClasses storageClasses;
    5659        LinkageSpec::Spec linkage;
    5760        UniqueId uniqueId;
     
    6164class DeclarationWithType : public Declaration {
    6265  public:
    63         DeclarationWithType( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Spec linkage, const std::list< Attribute * > & attributes, DeclarationNode::FuncSpec fs = DeclarationNode::FuncSpec() );
     66        DeclarationWithType( const std::string &name, DeclarationNode::StorageClasses scs, LinkageSpec::Spec linkage, const std::list< Attribute * > & attributes, DeclarationNode::FuncSpecifiers fs );
    6467        DeclarationWithType( const DeclarationWithType &other );
    6568        virtual ~DeclarationWithType();
     
    7982        const std::list< Attribute * >& get_attributes() const { return attributes; }
    8083
    81         DeclarationNode::FuncSpec get_funcSpec() const { return fs; }
    82         void set_functionSpecifiers( DeclarationNode::FuncSpec newValue ) { fs = newValue; }
     84        DeclarationNode::FuncSpecifiers get_funcSpec() const { return fs; }
     85        //void set_functionSpecifiers( DeclarationNode::FuncSpecifiers newValue ) { fs = newValue; }
    8386
    8487        virtual DeclarationWithType *clone() const = 0;
     
    9598        ConstantExpr *asmName;
    9699        std::list< Attribute * > attributes;
    97         DeclarationNode::FuncSpec fs;
     100        DeclarationNode::FuncSpecifiers fs;
    98101};
    99102
     
    101104        typedef DeclarationWithType Parent;
    102105  public:
    103         ObjectDecl( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Spec linkage, Expression *bitfieldWidth, Type *type, Initializer *init,
    104                                 const std::list< Attribute * > attributes = std::list< Attribute * >(), DeclarationNode::FuncSpec fs = DeclarationNode::FuncSpec() );
     106        ObjectDecl( const std::string &name, DeclarationNode::StorageClasses scs, LinkageSpec::Spec linkage, Expression *bitfieldWidth, Type *type, Initializer *init,
     107                                const std::list< Attribute * > attributes = std::list< Attribute * >(), DeclarationNode::FuncSpecifiers fs = DeclarationNode::FuncSpecifiers() );
    105108        ObjectDecl( const ObjectDecl &other );
    106109        virtual ~ObjectDecl();
     
    129132        typedef DeclarationWithType Parent;
    130133  public:
    131         FunctionDecl( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Spec linkage, FunctionType *type, CompoundStmt *statements,
    132                                   const std::list< Attribute * > attributes = std::list< Attribute * >(), DeclarationNode::FuncSpec fs = DeclarationNode::FuncSpec() );
     134        FunctionDecl( const std::string &name, DeclarationNode::StorageClasses scs, LinkageSpec::Spec linkage, FunctionType *type, CompoundStmt *statements,
     135                                  const std::list< Attribute * > attributes = std::list< Attribute * >(), DeclarationNode::FuncSpecifiers fs = DeclarationNode::FuncSpecifiers() );
    133136        FunctionDecl( const FunctionDecl &other );
    134137        virtual ~FunctionDecl();
     
    155158        typedef Declaration Parent;
    156159  public:
    157         NamedTypeDecl( const std::string &name, DeclarationNode::StorageClass sc, Type *type );
     160        NamedTypeDecl( const std::string &name, DeclarationNode::StorageClasses scs, Type *type );
    158161        NamedTypeDecl( const NamedTypeDecl &other );
    159162        virtual ~NamedTypeDecl();
     
    190193        };
    191194
    192         TypeDecl( const std::string &name, DeclarationNode::StorageClass sc, Type *type, Kind kind );
     195        TypeDecl( const std::string &name, DeclarationNode::StorageClasses scs, Type *type, Kind kind );
    193196        TypeDecl( const TypeDecl &other );
    194197
     
    211214        typedef NamedTypeDecl Parent;
    212215  public:
    213         TypedefDecl( const std::string &name, DeclarationNode::StorageClass sc, Type *type ) : Parent( name, sc, type ) {}
     216        TypedefDecl( const std::string &name, DeclarationNode::StorageClasses scs, Type *type ) : Parent( name, scs, type ) {}
    214217        TypedefDecl( const TypedefDecl &other ) : Parent( other ) {}
    215218
  • src/SynTree/DeclarationWithType.cc

    r7fe2498 ra7c90d4  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Mar  3 20:59:28 2017
    13 // Update Count     : 19
     12// Last Modified On : Tue Mar  7 07:32:14 2017
     13// Update Count     : 23
    1414//
    1515
     
    1919#include "Common/utility.h"
    2020
    21 DeclarationWithType::DeclarationWithType( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Spec linkage, const std::list< Attribute * > & attributes, DeclarationNode::FuncSpec fs )
    22         : Declaration( name, sc, linkage ), asmName( nullptr ), attributes( attributes ), fs( fs ) {
     21DeclarationWithType::DeclarationWithType( const std::string &name, DeclarationNode::StorageClasses scs, LinkageSpec::Spec linkage, const std::list< Attribute * > & attributes, DeclarationNode::FuncSpecifiers fs )
     22        : Declaration( name, scs, linkage ), asmName( nullptr ), attributes( attributes ), fs( fs ) {
    2323}
    2424
    2525DeclarationWithType::DeclarationWithType( const DeclarationWithType &other )
    26         : Declaration( other ), mangleName( other.mangleName ), scopeLevel( other.scopeLevel ), fs( other.fs ) {
     26                : Declaration( other ), mangleName( other.mangleName ), scopeLevel( other.scopeLevel ), fs( other.fs ) {
    2727        cloneAll( other.attributes, attributes );
    2828        asmName = maybeClone( other.asmName );
  • src/SynTree/FunctionDecl.cc

    r7fe2498 ra7c90d4  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Mar  3 21:29:41 2017
    13 // Update Count     : 55
     12// Last Modified On : Tue Mar  7 07:54:58 2017
     13// Update Count     : 68
    1414//
    1515
     
    2626extern bool translation_unit_nomain;
    2727
    28 FunctionDecl::FunctionDecl( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Spec linkage, FunctionType *type, CompoundStmt *statements, std::list< Attribute * > attributes, DeclarationNode::FuncSpec fs )
    29                 : Parent( name, sc, linkage, attributes, fs ), type( type ), statements( statements ) {
    30         set_functionSpecifiers( fs );
    31 
     28FunctionDecl::FunctionDecl( const std::string &name, DeclarationNode::StorageClasses scs, LinkageSpec::Spec linkage, FunctionType *type, CompoundStmt *statements, std::list< Attribute * > attributes, DeclarationNode::FuncSpecifiers fs )
     29        : Parent( name, scs, linkage, attributes, fs ), type( type ), statements( statements ) {
    3230        // hack forcing the function "main" to have Cforall linkage to replace main even if it is inside an extern
    3331        if ( name == "main" ) {
     
    3735
    3836FunctionDecl::FunctionDecl( const FunctionDecl &other )
    39         : Parent( other ), type( maybeClone( other.type ) ), statements( maybeClone( other.statements ) ) {
     37                : Parent( other ), type( maybeClone( other.type ) ), statements( maybeClone( other.statements ) ) {
    4038}
    4139
     
    6765        printAll( get_attributes(), os, indent );
    6866
    69         if ( get_storageClass() != DeclarationNode::NoStorageClass ) {
    70                 os << DeclarationNode::storageClassNames[ get_storageClass() ] << ' ';
    71         } // if
     67        DeclarationNode::print_StorageClass( os, get_storageClasses() );
    7268        DeclarationNode::print_FuncSpec( os, get_funcSpec() );
    7369
     
    9591        // xxx - should printShort print attributes?
    9692
    97         if ( get_storageClass() != DeclarationNode::NoStorageClass ) {
    98                 os << DeclarationNode::storageClassNames[ get_storageClass() ] << ' ';
    99         } // if
     93        DeclarationNode::print_StorageClass( os, get_storageClasses() );
    10094        DeclarationNode::print_FuncSpec( os, get_funcSpec() );
    10195
  • src/SynTree/NamedTypeDecl.cc

    r7fe2498 ra7c90d4  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Feb 28 16:13:24 2017
    13 // Update Count     : 4
     12// Last Modified On : Tue Mar  7 07:39:41 2017
     13// Update Count     : 10
    1414//
    1515
     
    1818#include "Common/utility.h"
    1919
    20 NamedTypeDecl::NamedTypeDecl( const std::string &name, DeclarationNode::StorageClass sc, Type *base )
    21         : Parent( name, sc, LinkageSpec::Cforall ), base( base ) {}
     20NamedTypeDecl::NamedTypeDecl( const std::string &name, DeclarationNode::StorageClasses scs, Type *base )
     21        : Parent( name, scs, LinkageSpec::Cforall ), base( base ) {}
    2222
    2323NamedTypeDecl::NamedTypeDecl( const NamedTypeDecl &other )
     
    3939                os << get_name() << ": ";
    4040        } // if
    41         if ( get_storageClass() != DeclarationNode::NoStorageClass ) {
    42                 os << DeclarationNode::storageClassNames[ get_storageClass() ] << ' ';
    43         } // if
     41        DeclarationNode::print_StorageClass( os, get_storageClasses() );
    4442        os << typeString();
    4543        if ( base ) {
     
    6361                os << get_name() << ": ";
    6462        } // if
    65         if ( get_storageClass() != DeclarationNode::NoStorageClass ) {
    66                 os << DeclarationNode::storageClassNames[ get_storageClass() ] << ' ';
    67         } // if
     63        DeclarationNode::print_StorageClass( os, get_storageClasses() );
    6864        os << typeString();
    6965        if ( base ) {
  • src/SynTree/ObjectDecl.cc

    r7fe2498 ra7c90d4  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Mar  3 20:59:27 2017
    13 // Update Count     : 45
     12// Last Modified On : Tue Mar  7 07:55:24 2017
     13// Update Count     : 54
    1414//
    1515
     
    2222#include "Statement.h"
    2323
    24 ObjectDecl::ObjectDecl( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Spec linkage, Expression *bitfieldWidth, Type *type, Initializer *init, const std::list< Attribute * > attributes, DeclarationNode::FuncSpec fs )
    25         : Parent( name, sc, linkage, attributes, fs ), type( type ), init( init ), bitfieldWidth( bitfieldWidth ) {
    26         set_functionSpecifiers( fs );
     24ObjectDecl::ObjectDecl( const std::string &name, DeclarationNode::StorageClasses scs, LinkageSpec::Spec linkage, Expression *bitfieldWidth, Type *type, Initializer *init, const std::list< Attribute * > attributes, DeclarationNode::FuncSpecifiers fs )
     25        : Parent( name, scs, linkage, attributes, fs ), type( type ), init( init ), bitfieldWidth( bitfieldWidth ) {
    2726}
    2827
     
    4847        printAll( get_attributes(), os, indent );
    4948
    50         if ( get_storageClass() != DeclarationNode::NoStorageClass ) {
    51                 os << DeclarationNode::storageClassNames[ get_storageClass() ] << ' ';
    52         } // if
     49        DeclarationNode::print_StorageClass( os, get_storageClasses() );
    5350
    5451        if ( get_type() ) {
     
    8481        // xxx - should printShort print attributes?
    8582
    86         if ( get_storageClass() != DeclarationNode::NoStorageClass ) {
    87                 os << DeclarationNode::storageClassNames[ get_storageClass() ] << ' ';
    88         } // if
     83        DeclarationNode::print_StorageClass( os, get_storageClasses() );
    8984
    9085        if ( get_type() ) {
  • src/SynTree/TypeDecl.cc

    r7fe2498 ra7c90d4  
    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:14:35 2015
    13 // Update Count     : 2
     12// Last Modified On : Tue Mar  7 07:39:09 2017
     13// Update Count     : 4
    1414//
    1515
     
    1818#include "Common/utility.h"
    1919
    20 TypeDecl::TypeDecl( const std::string &name, DeclarationNode::StorageClass sc, Type *type, Kind kind ) : Parent( name, sc, type ), kind( kind ), sized( kind == Any || kind == Ttype ) {
     20TypeDecl::TypeDecl( const std::string &name, DeclarationNode::StorageClasses scs, Type *type, Kind kind ) : Parent( name, scs, type ), kind( kind ), sized( kind == Any || kind == Ttype ) {
    2121}
    2222
  • src/Tuples/TupleAssignment.cc

    r7fe2498 ra7c90d4  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Feb  1 16:40:16 2017
    13 // Update Count     : 3
     12// Last Modified On : Mon Mar  6 23:40:14 2017
     13// Update Count     : 5
    1414//
    1515
     
    240240        ObjectDecl * TupleAssignSpotter::Matcher::newObject( UniqueName & namer, Expression * expr ) {
    241241                assert( expr->has_result() && ! expr->get_result()->isVoid() );
    242                 ObjectDecl * ret = new ObjectDecl( namer.newName(), DeclarationNode::NoStorageClass, LinkageSpec::Cforall, nullptr, expr->get_result()->clone(), new SingleInit( expr->clone() ) );
     242                ObjectDecl * ret = new ObjectDecl( namer.newName(), DeclarationNode::StorageClasses(), LinkageSpec::Cforall, nullptr, expr->get_result()->clone(), new SingleInit( expr->clone() ) );
    243243                ConstructorInit * ctorInit = InitTweak::genCtorInit( ret );
    244244                ret->set_init( ctorInit );
  • src/Tuples/TupleExpansion.cc

    r7fe2498 ra7c90d4  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Feb  1 16:40:40 2017
    13 // Update Count     : 3
     12// Last Modified On : Tue Mar  7 07:43:56 2017
     13// Update Count     : 12
    1414//
    1515
     
    187187                        }
    188188                        BasicType * boolType = new BasicType( Type::Qualifiers(), BasicType::Bool );
    189                         ObjectDecl * finished = new ObjectDecl( toString( "_unq_expr_finished_", id ), DeclarationNode::NoStorageClass, LinkageSpec::Cforall, nullptr, new BasicType( Type::Qualifiers(), BasicType::Bool ), new SingleInit( new ConstantExpr( Constant( boolType->clone(), "0" ) ), noDesignators ) );
     189                        ObjectDecl * finished = new ObjectDecl( toString( "_unq_expr_finished_", id ), DeclarationNode::StorageClasses(), LinkageSpec::Cforall, nullptr, new BasicType( Type::Qualifiers(), BasicType::Bool ), new SingleInit( new ConstantExpr( Constant( boolType->clone(), "0" ) ), noDesignators ) );
    190190                        addDeclaration( finished );
    191191                        // (finished ? _unq_expr_N : (_unq_expr_N = <unqExpr->get_expr()>, finished = 1, _unq_expr_N))
     
    221221                        decl->set_body( true );
    222222                        for ( size_t i = 0; i < tupleSize; ++i ) {
    223                                 TypeDecl * tyParam = new TypeDecl( toString("tuple_param_", i), DeclarationNode::NoStorageClass, nullptr, TypeDecl::Any );
    224                                 decl->get_members().push_back( new ObjectDecl( toString("field_", i), DeclarationNode::NoStorageClass, LinkageSpec::C, nullptr, new TypeInstType( Type::Qualifiers(), tyParam->get_name(), tyParam ), nullptr ) );
     223                                TypeDecl * tyParam = new TypeDecl( toString( "tuple_param_", i ), DeclarationNode::StorageClasses(), nullptr, TypeDecl::Any );
     224                                decl->get_members().push_back( new ObjectDecl( toString("field_", i ), DeclarationNode::StorageClasses(), LinkageSpec::C, nullptr, new TypeInstType( Type::Qualifiers(), tyParam->get_name(), tyParam ), nullptr ) );
    225225                                decl->get_parameters().push_back( tyParam );
    226226                        }
    227227                        if ( tupleSize == 0 ) {
    228228                                // empty structs are not standard C. Add a dummy field to empty tuples to silence warnings when a compound literal Tuple0 is created.
    229                                 decl->get_members().push_back( new ObjectDecl( "dummy", DeclarationNode::NoStorageClass, LinkageSpec::C, nullptr, new BasicType( Type::Qualifiers(), BasicType::SignedInt ), nullptr ) );
     229                                decl->get_members().push_back( new ObjectDecl( "dummy", DeclarationNode::StorageClasses(), LinkageSpec::C, nullptr, new BasicType( Type::Qualifiers(), BasicType::SignedInt ), nullptr ) );
    230230                        }
    231231                        typeMap[tupleSize] = decl;
Note: See TracChangeset for help on using the changeset viewer.